Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Cliff Escrow
Compiler Version
vyper:0.4.3
Contract Source Code (Vyper Json-Input format)
# @version 0.4.3
"""
@title Cliff Escrow
@author Yield Basis
@license MIT
@notice Limits what one can do with received tokens before the cliff time is over
"""
from ethereum.ercs import IERC20
interface VotingEscrow:
def create_lock(_value: uint256, _unlock_time: uint256): nonpayable
def increase_amount(_value: uint256): nonpayable
def increase_unlock_time(_unlock_time: uint256): nonpayable
def withdraw(): nonpayable
def transferFrom(owner: address, to: address, token_id: uint256): nonpayable
def infinite_lock_toggle(): nonpayable
interface GaugeController:
def vote_for_gauge_weights(_gauge_addrs: DynArray[address, 50], _user_weights: DynArray[uint256, 50]): nonpayable
interface AragonDAO:
def vote(_proposalId: uint256, _voteOption: uint8, _tryEarlyExecution: bool): nonpayable
event TokenRecovered:
token: indexed(address)
to: address
amount: uint256
GC: public(immutable(GaugeController))
YB: public(immutable(IERC20))
VE: public(immutable(VotingEscrow))
unlock_time: public(uint256)
recipient: public(address)
@deploy
def __init__(token: IERC20, ve: VotingEscrow, gc: GaugeController):
"""
@param token Token to be distributed by the CliffEscrow
@param ve VotingEscrow (ve-locker)
@param gc GaugeController
"""
YB = token
VE = ve
GC = gc
self.recipient = self
@external
def initialize(recipient: address, unlock_time: uint256) -> bool:
"""
@notice Initialize an instance created by a factory contract
@param recipient Recipient of the tokens (one per contract!)
@param unlock_time When all the tokens can be released (cliff time)
"""
assert recipient != empty(address), "Empty recipient"
assert self.recipient == empty(address), "Already initialized"
assert unlock_time > block.timestamp
self.recipient = recipient
self.unlock_time = unlock_time
extcall YB.approve(VE.address, max_value(uint256))
return True
@internal
def _access():
assert msg.sender == self.recipient, "Not authorized"
@internal
def _cliff():
assert block.timestamp >= self.unlock_time, "Cliff still applies"
@external
@nonreentrant
def create_lock(_value: uint256, _unlock_time: uint256):
"""
@notice Create a ve-lock while affected by the cliff
@param _value Amount to ve-lock
@param _unlock_time Time for ve-lock to end
"""
self._access()
extcall VE.create_lock(_value, _unlock_time)
@external
@nonreentrant
def increase_amount(_value: uint256):
"""
@notice Increase amount in the ve-lock
@param _value Number of tokens to add to ve-lock
"""
self._access()
extcall VE.increase_amount(_value)
@external
@nonreentrant
def increase_unlock_time(_unlock_time: uint256):
"""
@notice Increase the duration of ve-lock
@param _unlock_time New unlock timestamp (seconds)
"""
self._access()
extcall VE.increase_unlock_time(_unlock_time)
@external
@nonreentrant
def withdraw():
"""
@notice Withdraw all tokens from expired ve-lock back to the CliffEscrow contract
"""
self._access()
extcall VE.withdraw()
@external
@nonreentrant
def transferFrom(owner: address, to: address, token_id: uint256):
"""
@notice Transfer ve-locked NFT which the CliffEscrow has access to anywhere - only after cliff is finished
"""
self._access()
self._cliff()
extcall VE.transferFrom(owner, to, token_id)
@external
@nonreentrant
def vote_for_gauge_weights(_gauge_addrs: DynArray[address, 50], _user_weights: DynArray[uint256, 50]):
"""
@notice Vote for gauge weights from inside the CliffEscrow with a ve-lock we created
@param _gauge_addrs Gauges to vote for
@param _user_weights Voting weights of the gauges
"""
self._access()
extcall GC.vote_for_gauge_weights(_gauge_addrs, _user_weights)
@external
@nonreentrant
def aragon_vote(dao: AragonDAO, proposal_id: uint256, vote_option: uint8, early_execution: bool):
"""
@notice Perform an Aragon vote using ve-lock we have inside CliffEscrow
@param dao Aragon DAO voting plugin address
@param proposal_id Proposal to vote for
@param vote_option Option to choose when voting
@param early_execution Early execution parameter
"""
self._access()
extcall dao.vote(proposal_id, vote_option, early_execution)
@external
@nonreentrant
def infinite_lock_toggle():
"""
@notice Make ve-lock automatically relocking or remove this setting
"""
self._access()
extcall VE.infinite_lock_toggle()
@external
@nonreentrant
def transfer(to: address, amount: uint256):
"""
@notice Transfer the token (not ve-lock!) anywhere. Requires cliff to be finished.
Recipient of CliffEscrow can transfer anywhere, but everyone else only to recipient.
"""
assert self.recipient in [msg.sender, to], "Not authorized"
# If msg.sender is recipient - they can transfer anywhere
# If msg.sender is NOT recipient - they can transfer only to recipient
self._cliff()
extcall YB.transfer(to, amount)
@external
@nonreentrant
def approve(_for: address, amount: uint256):
"""
@notice Approve the cliff-affected tokens for transfering out. Only after cliff is finished.
@param _for Address which can take our tokens
@param amount Amount approved
"""
self._access()
self._cliff()
extcall YB.approve(_for, amount)
@external
@nonreentrant
def recover_token(token: IERC20, to: address, amount: uint256):
"""
@notice Recover (send) any token not affected by cliff
@param token Token to recover
@param to Address to send to
@param amount Amount of token to send
"""
self._access()
assert token != YB, "Cannot recover YB"
assert extcall token.transfer(to, amount, default_return_value=True)
log TokenRecovered(token=token.address, to=to, amount=amount){
"outputSelection": {
"contracts/dao/CliffEscrow.vy": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
},
"search_paths": [
"."
]
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenRecovered","type":"event"},{"inputs":[{"name":"recipient","type":"address"},{"name":"unlock_time","type":"uint256"}],"name":"initialize","outputs":[{"name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_value","type":"uint256"},{"name":"_unlock_time","type":"uint256"}],"name":"create_lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_value","type":"uint256"}],"name":"increase_amount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_unlock_time","type":"uint256"}],"name":"increase_unlock_time","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"owner","type":"address"},{"name":"to","type":"address"},{"name":"token_id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_gauge_addrs","type":"address[]"},{"name":"_user_weights","type":"uint256[]"}],"name":"vote_for_gauge_weights","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"dao","type":"address"},{"name":"proposal_id","type":"uint256"},{"name":"vote_option","type":"uint8"},{"name":"early_execution","type":"bool"}],"name":"aragon_vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"infinite_lock_toggle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_for","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"token","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}],"name":"recover_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GC","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"YB","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VE","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock_time","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recipient","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"token","type":"address"},{"name":"ve","type":"address"},{"name":"gc","type":"address"}],"outputs":[],"stateMutability":"nonpayable","type":"constructor"}]Contract Creation Code
610be4515034610070576020610c505f395f518060a01c610070576040526020610c705f395f518060a01c610070576060526020610c905f395f518060a01c61007057608052604051610bc452606051610be452608051610ba45230600155610ba461007461000039610c04610000f35b5f80fd5f3560e01c6002600e820660011b610b8801601e395f51565b63cd6dc68781186101ca57604436103417610b84576004358060a01c610b84576040526040516100b35760208060c052600f6060527f456d70747920726563697069656e74000000000000000000000000000000000060805260608160c001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6001541561012c5760208060c05260136060527f416c726561647920696e697469616c697a65640000000000000000000000000060805260608160c001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b426024351115610b84576040516001556024355f556020610bc45f395f5163095ea7b36060526020610be46080397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60a052602060606044607c5f855af1610196573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011610b84576060518060011c610b845760c0525060c05050600160605260206060f35b6365fc3873811861023457604436103417610b84575f5c600114610b845760015f5d6101f4610a8b565b6020610be45f395f516365fc3873610100526040600461012037803b15610b84575f610100604461011c5f855af161022e573d5f5f3e3d5ffd5b505f5f5d005b630f388b4f8118610a875734610b84575f5460405260206040f35b634957677c8118610a8757602436103417610b84575f5c600114610b845760015f5d610279610a8b565b6020610be45f395f51634957677c6101005260043561012052803b15610b84575f610100602461011c5f855af16102b2573d5f5f3e3d5ffd5b505f5f5d005b63eff7a6128118610a8757602436103417610b84575f5c600114610b845760015f5d6102e2610a8b565b6020610be45f395f5163eff7a6126101005260043561012052803b15610b84575f610100602461011c5f855af161031b573d5f5f3e3d5ffd5b505f5f5d005b633ccfd60b8118610a875734610b84575f5c600114610b845760015f5d610346610a8b565b6020610be45f395f51633ccfd60b61010052803b15610b84575f610100600461011c5f855af1610378573d5f5f3e3d5ffd5b505f5f5d005b6323b872dd811861041657606436103417610b84576004358060a01c610b8457610100526024358060a01c610b8457610120525f5c600114610b845760015f5d6103c6610a8b565b6103ce610b08565b6020610be45f395f516323b872dd6101405260406101006101605e6044356101a052803b15610b84575f610140606461015c5f855af1610410573d5f5f3e3d5ffd5b505f5f5d005b63b25ec6458118610a875734610b84575f5c600114610b845760015f5d61043b610a8b565b6020610be45f395f5163b25ec64561010052803b15610b84575f610100600461011c5f855af161046d573d5f5f3e3d5ffd5b505f5f5d005b63f1443a918118610a8757604436103417610b84576004356004016032813511610b845780355f8160328111610b845780156104d157905b8060051b6020850101358060a01c610b84578160051b61012001526001018181186104ab575b5050806101005250506024356004016032813511610b8457803560208160051b018083610760375050505f5c600114610b845760015f5d610510610a8b565b6020610ba45f395f5163f1443a91610dc052604080610de05280610de0015f610100518083528060051b5f8260328111610b8457801561056a57905b8060051b61012001518160051b60208801015260010181811861054c575b5050820160200191505090508101905080610e005280610de0015f610760518083528060051b5f8260328111610b845780156105c057905b8060051b61078001518160051b6020880101526001018181186105a2575b50508201602001915050905081015050803b15610b84575f610dc0610d04610ddc5f855af16105f1573d5f5f3e3d5ffd5b505f5f5d005b639dca59aa811861069157608436103417610b84576004358060a01c610b8457610100526044358060081c610b8457610120526064358060011c610b8457610140525f5c600114610b845760015f5d61064e610a8b565b6101005163ce6366c4610160526024356101805260406101206101a05e803b15610b84575f610160606461017c5f855af161068b573d5f5f3e3d5ffd5b505f5f5d005b6366d003ac8118610a875734610b845760015460405260206040f35b63a9059cbb81186107eb57604436103417610b84576004358060a01c610b8457610100525f5c600114610b845760015f5d6001543381186106ef5760016106f7565b610100518118155b9050610775576020806101a052600e610140527f4e6f7420617574686f72697a656400000000000000000000000000000000000061016052610140816101a001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b61077d610b08565b6020610bc45f395f5163a9059cbb610120526101005161014052602435610160526020610120604461013c5f855af16107b8573d5f5f3e3d5ffd5b3d602081183d6020100218806101200161014011610b8457610120518060011c610b8457610180525061018050505f5f5d005b631de8b63181186108095734610b84576020610bc460403960206040f35b63c863657d8118610a875734610b84576020610be460403960206040f35b63095ea7b38118610a8757604436103417610b84576004358060a01c610b8457610100525f5c600114610b845760015f5d610860610a8b565b610868610b08565b6020610bc45f395f5163095ea7b3610120526101005161014052602435610160526020610120604461013c5f855af16108a3573d5f5f3e3d5ffd5b3d602081183d6020100218806101200161014011610b8457610120518060011c610b8457610180525061018050505f5f5d005b63b7c18c168118610a8757606436103417610b84576004358060a01c610b8457610100526024358060a01c610b8457610120525f5c600114610b845760015f5d61091e610a8b565b6020610bc45f395f5161010051186109a8576020806101a0526011610140527f43616e6e6f74207265636f76657220594200000000000000000000000000000061016052610140816101a001603182825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b6101005163a9059cbb610140526101205161016052604435610180526020610140604461015c5f855af16109de573d5f5f3e3d5ffd5b3d6109f557803b15610b845760016101a052610a1f565b3d602081183d6020100218806101400161016011610b8457610140518060011c610b84576101a052505b6101a090505115610b8457610100517f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90966101205161014052604435610160526040610140a25f5f5d005b6309dba0838118610a875734610b84576020610ba460403960206040f35b5f5ffd5b600154331815610b065760208060a052600e6040527f4e6f7420617574686f72697a656400000000000000000000000000000000000060605260408160a001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f54421015610b825760208060a05260136040527f436c696666207374696c6c206170706c6965730000000000000000000000000060605260408160a001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f80fd0a87082705f706ad0a870473024f0a6902b8037e08d603210a8700188558206657bdffa020673fd39906ce3cd7223b038553ae931cb19e82b6a4f977dd86e5190ba481181c1860a165767970657283000403003800000000000000000000000001791f726b4103694969820be083196cc7c045ff0000000000000000000000008235c179e9e84688fbd8b12295efc26834dac2110000000000000000000000001be14811a3a06f6af4fa64310a636e1df04c1c21
Deployed Bytecode
0x5f3560e01c6002600e820660011b610b8801601e395f51565b63cd6dc68781186101ca57604436103417610b84576004358060a01c610b84576040526040516100b35760208060c052600f6060527f456d70747920726563697069656e74000000000000000000000000000000000060805260608160c001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b6001541561012c5760208060c05260136060527f416c726561647920696e697469616c697a65640000000000000000000000000060805260608160c001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060a0528060040160bcfd5b426024351115610b84576040516001556024355f556020610bc45f395f5163095ea7b36060526020610be46080397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60a052602060606044607c5f855af1610196573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011610b84576060518060011c610b845760c0525060c05050600160605260206060f35b6365fc3873811861023457604436103417610b84575f5c600114610b845760015f5d6101f4610a8b565b6020610be45f395f516365fc3873610100526040600461012037803b15610b84575f610100604461011c5f855af161022e573d5f5f3e3d5ffd5b505f5f5d005b630f388b4f8118610a875734610b84575f5460405260206040f35b634957677c8118610a8757602436103417610b84575f5c600114610b845760015f5d610279610a8b565b6020610be45f395f51634957677c6101005260043561012052803b15610b84575f610100602461011c5f855af16102b2573d5f5f3e3d5ffd5b505f5f5d005b63eff7a6128118610a8757602436103417610b84575f5c600114610b845760015f5d6102e2610a8b565b6020610be45f395f5163eff7a6126101005260043561012052803b15610b84575f610100602461011c5f855af161031b573d5f5f3e3d5ffd5b505f5f5d005b633ccfd60b8118610a875734610b84575f5c600114610b845760015f5d610346610a8b565b6020610be45f395f51633ccfd60b61010052803b15610b84575f610100600461011c5f855af1610378573d5f5f3e3d5ffd5b505f5f5d005b6323b872dd811861041657606436103417610b84576004358060a01c610b8457610100526024358060a01c610b8457610120525f5c600114610b845760015f5d6103c6610a8b565b6103ce610b08565b6020610be45f395f516323b872dd6101405260406101006101605e6044356101a052803b15610b84575f610140606461015c5f855af1610410573d5f5f3e3d5ffd5b505f5f5d005b63b25ec6458118610a875734610b84575f5c600114610b845760015f5d61043b610a8b565b6020610be45f395f5163b25ec64561010052803b15610b84575f610100600461011c5f855af161046d573d5f5f3e3d5ffd5b505f5f5d005b63f1443a918118610a8757604436103417610b84576004356004016032813511610b845780355f8160328111610b845780156104d157905b8060051b6020850101358060a01c610b84578160051b61012001526001018181186104ab575b5050806101005250506024356004016032813511610b8457803560208160051b018083610760375050505f5c600114610b845760015f5d610510610a8b565b6020610ba45f395f5163f1443a91610dc052604080610de05280610de0015f610100518083528060051b5f8260328111610b8457801561056a57905b8060051b61012001518160051b60208801015260010181811861054c575b5050820160200191505090508101905080610e005280610de0015f610760518083528060051b5f8260328111610b845780156105c057905b8060051b61078001518160051b6020880101526001018181186105a2575b50508201602001915050905081015050803b15610b84575f610dc0610d04610ddc5f855af16105f1573d5f5f3e3d5ffd5b505f5f5d005b639dca59aa811861069157608436103417610b84576004358060a01c610b8457610100526044358060081c610b8457610120526064358060011c610b8457610140525f5c600114610b845760015f5d61064e610a8b565b6101005163ce6366c4610160526024356101805260406101206101a05e803b15610b84575f610160606461017c5f855af161068b573d5f5f3e3d5ffd5b505f5f5d005b6366d003ac8118610a875734610b845760015460405260206040f35b63a9059cbb81186107eb57604436103417610b84576004358060a01c610b8457610100525f5c600114610b845760015f5d6001543381186106ef5760016106f7565b610100518118155b9050610775576020806101a052600e610140527f4e6f7420617574686f72697a656400000000000000000000000000000000000061016052610140816101a001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b61077d610b08565b6020610bc45f395f5163a9059cbb610120526101005161014052602435610160526020610120604461013c5f855af16107b8573d5f5f3e3d5ffd5b3d602081183d6020100218806101200161014011610b8457610120518060011c610b8457610180525061018050505f5f5d005b631de8b63181186108095734610b84576020610bc460403960206040f35b63c863657d8118610a875734610b84576020610be460403960206040f35b63095ea7b38118610a8757604436103417610b84576004358060a01c610b8457610100525f5c600114610b845760015f5d610860610a8b565b610868610b08565b6020610bc45f395f5163095ea7b3610120526101005161014052602435610160526020610120604461013c5f855af16108a3573d5f5f3e3d5ffd5b3d602081183d6020100218806101200161014011610b8457610120518060011c610b8457610180525061018050505f5f5d005b63b7c18c168118610a8757606436103417610b84576004358060a01c610b8457610100526024358060a01c610b8457610120525f5c600114610b845760015f5d61091e610a8b565b6020610bc45f395f5161010051186109a8576020806101a0526011610140527f43616e6e6f74207265636f76657220594200000000000000000000000000000061016052610140816101a001603182825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b6101005163a9059cbb610140526101205161016052604435610180526020610140604461015c5f855af16109de573d5f5f3e3d5ffd5b3d6109f557803b15610b845760016101a052610a1f565b3d602081183d6020100218806101400161016011610b8457610140518060011c610b84576101a052505b6101a090505115610b8457610100517f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90966101205161014052604435610160526040610140a25f5f5d005b6309dba0838118610a875734610b84576020610ba460403960206040f35b5f5ffd5b600154331815610b065760208060a052600e6040527f4e6f7420617574686f72697a656400000000000000000000000000000000000060605260408160a001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f54421015610b825760208060a05260136040527f436c696666207374696c6c206170706c6965730000000000000000000000000060605260408160a001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f80fd0a87082705f706ad0a870473024f0a6902b8037e08d603210a8700180000000000000000000000001be14811a3a06f6af4fa64310a636e1df04c1c2100000000000000000000000001791f726b4103694969820be083196cc7c045ff0000000000000000000000008235c179e9e84688fbd8b12295efc26834dac211
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000001791f726b4103694969820be083196cc7c045ff0000000000000000000000008235c179e9e84688fbd8b12295efc26834dac2110000000000000000000000001be14811a3a06f6af4fa64310a636e1df04c1c21
-----Decoded View---------------
Arg [0] : token (address): 0x01791F726B4103694969820be083196cC7c045fF
Arg [1] : ve (address): 0x8235c179E9e84688FBd8B12295EfC26834dAC211
Arg [2] : gc (address): 0x1Be14811A3a06F6aF4fA64310a636e1Df04c1c21
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000001791f726b4103694969820be083196cc7c045ff
Arg [1] : 0000000000000000000000008235c179e9e84688fbd8b12295efc26834dac211
Arg [2] : 0000000000000000000000001be14811a3a06f6af4fa64310a636e1df04c1c21
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.