Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions configs/dev/pools.json
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,11 @@
"contract_def": "LoansCore",
"key": "usdc.loans_core"
},
"renting_vault_core": {
"contract": "0x6fA1aAc979537C9BAE26507588A118e74655f017",
"contract_def": "CollateralVaultCoreV2",
"key": "renting_vault_core"
},
"token": {
"contract": "0x741D86951a8b99159be52644e60de7826033Ee44",
"contract_def": "WETH9Mock",
Expand Down Expand Up @@ -493,6 +498,11 @@
"contract_def": "LoansCore",
"key": "weth.loans_core"
},
"renting_vault_core": {
"contract": "0x6fA1aAc979537C9BAE26507588A118e74655f017",
"contract_def": "CollateralVaultCoreV2",
"key": "renting_vault_core"
},
"token": {
"contract": "0xFb7C5F938835aE34aF48c278C6763E134907Acdb",
"contract_def": "WETH9Mock",
Expand Down
2 changes: 0 additions & 2 deletions contracts/CollateralVaultCoreV2.vy
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

# Interfaces

from vyper.interfaces import ERC165 as IERC165
from vyper.interfaces import ERC721 as IERC721

interface IDelegationRegistry:
Expand Down Expand Up @@ -51,7 +50,6 @@ def _setDelegation(_wallet: address, _collateralAddress: address, _tokenId: uint
@view
@internal
def _collateralOwner(_collateralAddress: address, _tokenId: uint256) -> address:
assert IERC165(_collateralAddress).supportsInterface(0x80ac58cd), "collat addr is not a ERC721"
return IERC721(_collateralAddress).ownerOf(_tokenId)

##### EXTERNAL METHODS - VIEW #####
Expand Down
24 changes: 4 additions & 20 deletions contracts/CollateralVaultOTC.vy
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
# Interfaces


from vyper.interfaces import ERC165 as IERC165
from vyper.interfaces import ERC721 as IERC721

interface CryptoPunksMarket:
Expand Down Expand Up @@ -138,12 +137,6 @@ def _is_punk(_collateralAddress: address) -> bool:
return _collateralAddress == cryptoPunksMarketAddress.address


@view
@internal
def _is_erc721(_collateralAddress: address) -> bool:
return IERC165(_collateralAddress).supportsInterface(0x80ac58cd)


@view
@internal
def _punk_owner(_collateralAddress: address, _tokenId: uint256) -> address:
Expand Down Expand Up @@ -179,10 +172,7 @@ def _is_erc721_approved_for_vault(_borrower: address, _collateralAddress: addres
def _vault_owns_collateral(_collateralAddress: address, _tokenId: uint256) -> bool:
if self._is_punk(_collateralAddress):
return self._punk_owner(_collateralAddress, _tokenId) == self
elif self._is_erc721(_collateralAddress):
return self._erc721_owner(_collateralAddress, _tokenId) == self
else:
return False
return self._erc721_owner(_collateralAddress, _tokenId) == self



Expand Down Expand Up @@ -231,10 +221,8 @@ def _transfer_collateral(_wallet: address, _collateralAddress: address, _tokenId

if self._is_punk(_collateralAddress):
self._transfer_punk(_wallet, _collateralAddress, _tokenId)
elif self._is_erc721(_collateralAddress):
self._transfer_erc721(_wallet, _collateralAddress, _tokenId)
else:
raise "address not supported by vault"
self._transfer_erc721(_wallet, _collateralAddress, _tokenId)

self._setDelegation(_delegateWallet, _collateralAddress, _tokenId, False)

Expand All @@ -259,10 +247,8 @@ def isCollateralInVault(_collateralAddress: address, _tokenId: uint256) -> bool:
def isCollateralApprovedForVault(_borrower: address, _collateralAddress: address, _tokenId: uint256) -> bool:
if self._is_punk(_collateralAddress):
return self._is_punk_approved_for_vault(_borrower, _collateralAddress, _tokenId)
elif self._is_erc721(_collateralAddress):
return self._is_erc721_approved_for_vault(_borrower, _collateralAddress, _tokenId)
else:
raise "address not supported by vault"
return self._is_erc721_approved_for_vault(_borrower, _collateralAddress, _tokenId)


@view
Expand Down Expand Up @@ -371,13 +357,11 @@ def storeCollateral(_wallet: address, _collateralAddress: address, _tokenId: uin
assert self._is_punk_approved_for_vault(_wallet, _collateralAddress, _tokenId), "transfer is not approved"
self._store_punk(_wallet, _collateralAddress, _tokenId)

elif self._is_erc721(_collateralAddress):
else:
assert self._erc721_owner(_collateralAddress, _tokenId) == _wallet, "collateral not owned by wallet"
assert self._is_erc721_approved_for_vault(_wallet, _collateralAddress, _tokenId), "transfer is not approved"
self._store_erc721(_wallet, _collateralAddress, _tokenId)

else:
raise "address not supported by vault"

if _createDelegation:
self._setDelegation(_wallet, _collateralAddress, _tokenId, True)
Expand Down
3 changes: 0 additions & 3 deletions contracts/CollateralVaultPeripheral.vy
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@

# Interfaces

from vyper.interfaces import ERC165 as IERC165
from vyper.interfaces import ERC721 as IERC721

interface ILegacyVault:
def setCollateralVaultPeripheralAddress(_address: address): nonpayable
def storeCollateral(_wallet: address, _collateralAddress: address, _tokenId: uint256): nonpayable
Expand Down
1 change: 0 additions & 1 deletion contracts/Loans.vy
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

# Interfaces

from vyper.interfaces import ERC165 as IERC165
from vyper.interfaces import ERC721 as IERC721
from vyper.interfaces import ERC20 as IERC20

Expand Down
1 change: 0 additions & 1 deletion contracts/LoansOTC.vy
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

# Interfaces

from vyper.interfaces import ERC165 as IERC165
from vyper.interfaces import ERC721 as IERC721
from vyper.interfaces import ERC20 as IERC20

Expand Down
22 changes: 22 additions & 0 deletions scripts/_helpers/contracts.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,28 @@ def config_dependencies(self, context: DeploymentContext) -> dict[str, Callable]
return {context[pool, "collateral_vault_peripheral"]: with_pool(Transaction.punksvault_set_cvperiph, pool) for pool in self.pools}


@dataclass
class RentingVaultCoreContract(InternalContract):

def __init__(self, scope: str, pools: list[str], contract: Optional[ContractInstance] = None):
super().__init__(
"renting_vault_core",
contract,
project.CollateralVaultCoreV2,
scope=scope,
pools=pools,
container_name="CollateralVaultCoreV2",
deployment_deps={"delegation_registry"},
config_deps={
f"{scope}.collateral_vault_peripheral": partial(Transaction.rentingvault_set_cvperiph, scope=scope),
},
deployment_args_contracts=["delegation_registry"],
)

def config_dependencies(self, context: DeploymentContext) -> dict[str, Callable]:
return {context[pool, "collateral_vault_peripheral"]: with_pool(Transaction.rentingvault_set_cvperiph, pool) for pool in self.pools}


@dataclass
class CollateralVaultPeripheralContract(InternalContract):

Expand Down
5 changes: 4 additions & 1 deletion scripts/_helpers/deployment.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,15 @@
LoansOTCImplContract,
LoansOTCPunksFixedImplContract,
LoansPeripheralContract,
RentingVaultCoreContract,
USDCMockContract,
WETH9MockContract,
)

ENV = Environment[os.environ.get("ENV", "local")]

if ENV == Environment.dev:
POOLS = ["weth", "usdc", "eth-grails", "swimming", "deadpool"]
POOLS = ["weth", "usdc", "eth-grails", "swimming", "deadpool", "eth-meta4"]
elif ENV == Environment.int:
POOLS = ["weth", "usdc", "eth-grails", "swimming", "usdc-tailored1", "eth-meta4"]
else:
Expand All @@ -75,6 +76,7 @@ def contract_instances(env: Environment) -> dict:
CryptoPunksVaultCoreContract(scope=None, pools=["weth", "usdc"]),
LiquidationsCoreContract(scope=None, pools=["weth", "usdc"]),
LiquidationsPeripheralContract(scope=None, pools=["weth", "usdc"]),
RentingVaultCoreContract(scope=None, pools=["weth", "usdc"]),

## WETH
LendingPoolPeripheralContract(scope="weth", pools=["weth"]),
Expand Down Expand Up @@ -178,6 +180,7 @@ def contract_instances(env: Environment) -> dict:
LendingPoolOTCContract(impl="lending_pool_eth_otc_impl", scope="eth-keyrock", pools=["eth-keyrock"]),
LiquidationsOTCContract(scope="eth-keyrock", pools=["eth-keyrock"]),
LoansOTCContract(scope="eth-keyrock", pools=["eth-keyrock"]),
]

if "usdc-sgdao" in POOLS:
contracts += [
Expand Down
10 changes: 10 additions & 0 deletions scripts/_helpers/transactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,16 @@ def punksvault_set_cvperiph(context: DeploymentContext, dryrun: bool = False, po
dryrun=dryrun
)

@staticmethod
def rentingvault_set_cvperiph(context: DeploymentContext, dryrun: bool = False, pool: Optional[str] = None):
execute(
context,
context[pool, "renting_vault_core"],
"setCollateralVaultPeripheralAddress",
context[pool, "collateral_vault_peripheral"],
dryrun=dryrun
)

@staticmethod
def cvperiph_add_loansperiph(context: DeploymentContext, dryrun: bool = False, pool: Optional[str] = None):
execute(
Expand Down