Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x634b0273...9DE50fA1f The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.12
Contract Source Code (Vyper language format)
# @version 0.2.12 """ @title Unagii Token @author stakewith.us @license AGPL-3.0-or-later """ VERSION: constant(String[28]) = "0.1.1" from vyper.interfaces import ERC20 implements: ERC20 interface DetailedERC20: def name() -> String[42]: view def symbol() -> String[20]: view # Vyper does not support uint8 def decimals() -> uint256: view event Transfer: sender: indexed(address) receiver: indexed(address) value: uint256 event Approval: owner: indexed(address) spender: indexed(address) value: uint256 event SetNextTimeLock: timeLock: address event AcceptTimeLock: timeLock: address event SetMinter: minter: address name: public(String[64]) symbol: public(String[32]) # Vyper does not support uint8 decimals: public(uint256) balanceOf: public(HashMap[address, uint256]) allowance: public(HashMap[address, HashMap[address, uint256]]) totalSupply: public(uint256) # EIP 2612 # # https://eips.ethereum.org/EIPS/eip-2612 # `nonces` track `permit` approvals with signature. nonces: public(HashMap[address, uint256]) DOMAIN_SEPARATOR: public(bytes32) DOMAIN_TYPE_HASH: constant(bytes32) = keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ) PERMIT_TYPE_HASH: constant(bytes32) = keccak256( "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" ) timeLock: public(address) nextTimeLock: public(address) minter: public(address) token: public(ERC20) # placeholder address used when token ETH ETH: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE # last block number balance of msg.sender was changed (mint, burn, transfer, transferFrom) lastBlock: public(HashMap[address, uint256]) @external def __init__(token: address): self.timeLock = msg.sender self.token = ERC20(token) if token == ETH: self.name = "unagii_ETH_v2" self.symbol = "uETHv2" self.decimals = 18 else: self.name = concat("unagii_", DetailedERC20(token).name(), "_v2") self.symbol = concat("u", DetailedERC20(token).symbol(), "v2") self.decimals = DetailedERC20(token).decimals() self.DOMAIN_SEPARATOR = keccak256( concat( DOMAIN_TYPE_HASH, keccak256(convert("unagii", Bytes[6])), keccak256(convert(VERSION, Bytes[28])), convert(chain.id, bytes32), convert(self, bytes32), ) ) @internal @view def _getDomainSeparator() -> bytes32: return keccak256( concat( DOMAIN_TYPE_HASH, keccak256(convert("unagii", Bytes[6])), keccak256(convert(VERSION, Bytes[28])), convert(chain.id, bytes32), convert(self, bytes32), ) ) @external def setName(name: String[42]): assert msg.sender == self.timeLock, "!time lock" self.name = name @external def setSymbol(symbol: String[20]): assert msg.sender == self.timeLock, "!time lock" self.symbol = symbol @external def setNextTimeLock(nextTimeLock: address): """ @notice Set next time lock @param nextTimeLock Address of next time lock """ assert msg.sender == self.timeLock, "!time lock" # allow next time lock = zero address (cancel next time lock) self.nextTimeLock = nextTimeLock log SetNextTimeLock(nextTimeLock) @external def acceptTimeLock(): """ @notice Accept time lock @dev Only `nextTimeLock` can claim time lock """ assert msg.sender == self.nextTimeLock, "!next time lock" self.timeLock = msg.sender self.nextTimeLock = ZERO_ADDRESS log AcceptTimeLock(msg.sender) @external def setMinter(minter: address): """ @notice Set minter @param minter Address of minter """ assert msg.sender == self.timeLock, "!time lock" # allow minter = zero address self.minter = minter log SetMinter(minter) @internal def _transfer(_from: address, _to: address, amount: uint256): assert _to not in [self, ZERO_ADDRESS], "invalid receiver" # track lastest tx self.lastBlock[_from] = block.number self.lastBlock[_to] = block.number self.balanceOf[_from] -= amount self.balanceOf[_to] += amount log Transfer(_from, _to, amount) @external def transfer(_to: address, amount: uint256) -> bool: self._transfer(msg.sender, _to, amount) return True @external def transferFrom(_from: address, _to: address, amount: uint256) -> bool: # skip if unlimited approval if self.allowance[_from][msg.sender] < MAX_UINT256: self.allowance[_from][msg.sender] -= amount log Approval(_from, msg.sender, self.allowance[_from][msg.sender]) self._transfer(_from, _to, amount) return True @external def approve(spender: address, amount: uint256) -> bool: self.allowance[msg.sender][spender] = amount log Approval(msg.sender, spender, amount) return True @external def increaseAllowance(spender: address, amount: uint256) -> bool: self.allowance[msg.sender][spender] += amount log Approval(msg.sender, spender, self.allowance[msg.sender][spender]) return True @external def decreaseAllowance(spender: address, amount: uint256) -> bool: self.allowance[msg.sender][spender] -= amount log Approval(msg.sender, spender, self.allowance[msg.sender][spender]) return True @internal @view def _recover(digest: bytes32, v: uint256, r: bytes32, s: bytes32) -> address: """ @dev ECDSA signature malleability. Code ported from Solidity https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0/contracts/cryptography/ECDSA.sol#L53 """ _r: uint256 = convert(r, uint256) _s: uint256 = convert(s, uint256) # 0x7FF... is intentionally not stored as constant(uint256) so that code is # compared with OpenZeppelin's Solidity code assert _s <= convert(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, uint256), "invalid signature s" assert v == 27 or v == 28, "invalid signature v" return ecrecover(digest, v, _r, _s) @external def permit( owner: address, spender: address, amount: uint256, deadline: uint256, v: uint256, r: bytes32, s: bytes32, ): """ @notice Approves spender by owner's signature to expend owner's tokens. https://eips.ethereum.org/EIPS/eip-2612 @dev Vyper does not have `uint8`, so replace `v: uint8` with `v: uint256` """ assert owner != ZERO_ADDRESS, "owner = 0 address" assert deadline >= block.timestamp, "expired" digest: bytes32 = keccak256( concat( b"\x19\x01", self._getDomainSeparator(), # chain id may be different after fork, recompute domain separator keccak256( concat( PERMIT_TYPE_HASH, convert(owner, bytes32), convert(spender, bytes32), convert(amount, bytes32), convert(self.nonces[owner], bytes32), convert(deadline, bytes32), ) ), ) ) # owner cannot = ZERO_ADDRESS from check above # this will fail if _recover() returns ZERO_ADDRESS assert self._recover(digest, v, r, s) == owner, "invalid signature" self.nonces[owner] += 1 self.allowance[owner][spender] = amount log Approval(owner, spender, amount) @external def mint(_to: address, amount: uint256): assert msg.sender == self.minter, "!minter" assert _to not in [self, ZERO_ADDRESS], "invalid receiver" # track lastest tx self.lastBlock[_to] = block.number self.totalSupply += amount self.balanceOf[_to] += amount log Transfer(ZERO_ADDRESS, _to, amount) @external def burn(_from: address, amount: uint256): assert msg.sender == self.minter, "!minter" assert _from != ZERO_ADDRESS, "from = 0" # track lastest tx self.lastBlock[_from] = block.number self.totalSupply -= amount self.balanceOf[_from] -= amount log Transfer(_from, ZERO_ADDRESS, amount)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Transfer","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true},{"name":"spender","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetNextTimeLock","inputs":[{"name":"timeLock","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"AcceptTimeLock","inputs":[{"name":"timeLock","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetMinter","inputs":[{"name":"minter","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"token","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"setName","inputs":[{"name":"name","type":"string"}],"outputs":[],"gas":108313},{"stateMutability":"nonpayable","type":"function","name":"setSymbol","inputs":[{"name":"symbol","type":"string"}],"outputs":[],"gas":73163},{"stateMutability":"nonpayable","type":"function","name":"setNextTimeLock","inputs":[{"name":"nextTimeLock","type":"address"}],"outputs":[],"gas":38981},{"stateMutability":"nonpayable","type":"function","name":"acceptTimeLock","inputs":[],"outputs":[],"gas":58909},{"stateMutability":"nonpayable","type":"function","name":"setMinter","inputs":[{"name":"minter","type":"address"}],"outputs":[],"gas":39041},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":149013},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":193476},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":37941},{"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":42582},{"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"bool"}],"gas":42606},{"stateMutability":"nonpayable","type":"function","name":"permit","inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"},{"name":"amount","type":"uint256"},{"name":"deadline","type":"uint256"},{"name":"v","type":"uint256"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"outputs":[],"gas":86176},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"_to","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[],"gas":115368},{"stateMutability":"nonpayable","type":"function","name":"burn","inputs":[{"name":"_from","type":"address"},{"name":"amount","type":"uint256"}],"outputs":[],"gas":114962},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":13080},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":10833},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2838},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3083},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3328},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2928},{"stateMutability":"view","type":"function","name":"nonces","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3173},{"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32"}],"gas":2988},{"stateMutability":"view","type":"function","name":"timeLock","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3018},{"stateMutability":"view","type":"function","name":"nextTimeLock","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3048},{"stateMutability":"view","type":"function","name":"minter","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3078},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3108},{"stateMutability":"view","type":"function","name":"lastBlock","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3353}]
Deployed Bytecode
0x600436101561000d576110e6565b600035601c52600051341561002157600080fd5b63c47f00278114156100f957604a60043560040161014037602a60043560040135111561004d57600080fd5b6008543314151561009d576308c379a06101c05260206101e052600a610200527f2174696d65206c6f636b00000000000000000000000000000000000000000000610220526102005060646101dcfd5b61014080600060c052602060c020602082510161012060006003818352015b826101205160200211156100cf576100f1565b61012051602002850151610120518501555b81516001018083528114156100bc575b505050505050005b63b84c82468114156101d157603460043560040161014037601460043560040135111561012557600080fd5b60085433141515610175576308c379a06101a05260206101c052600a6101e0527f2174696d65206c6f636b00000000000000000000000000000000000000000000610200526101e05060646101bcfd5b61014080600160c052602060c020602082510161012060006002818352015b826101205160200211156101a7576101c9565b61012051602002850151610120518501555b8151600101808352811415610194575b505050505050005b6347a02a448114156102735760043560a01c156101ed57600080fd5b6008543314151561023d576308c379a061014052602061016052600a610180527f2174696d65206c6f636b000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435600955600435610140527f5c06d5a6f95a574bb95a214c88933831c63fcd6f6c5d1d61a21efb92be19bc2c6020610140a1005b631e39831e81141561030657600954331415156102cf576308c379a061014052602061016052600f610180527f216e6578742074696d65206c6f636b00000000000000000000000000000000006101a05261018050606461015cfd5b33600855600060095533610140527f77b69635186d51fb2d031f67a7995795c8384acb800219c7d30861125d154f026020610140a1005b63fca3b5aa8114156103a85760043560a01c1561032257600080fd5b60085433141515610372576308c379a061014052602061016052600a610180527f2174696d65206c6f636b000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600435600a55600435610140527fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c6020610140a1005b63a9059cbb8114156103fa5760043560a01c156103c457600080fd5b33610140526004356101605260243561018052610180516101605161014051600658016111ed565b600050600160005260206000f35b6323b872dd8114156105275760043560a01c1561041657600080fd5b60243560a01c1561042657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460043560e05260c052604060c0203360e05260c052604060c0205410156104ef57600460043560e05260c052604060c0203360e05260c052604060c02080546044358082101561049857600080fd5b80820390509050815550600460043560e05260c052604060c0203360e05260c052604060c0205461014052336004357f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a35b600435610140526024356101605260443561018052610180516101605161014051600658016111ed565b600050600160005260206000f35b63095ea7b38114156105a05760043560a01c1561054357600080fd5b60243560043360e05260c052604060c02060043560e05260c052604060c0205560243561014052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f35b633950935181141561064d5760043560a01c156105bc57600080fd5b60043360e05260c052604060c02060043560e05260c052604060c02080546024358181830110156105ec57600080fd5b8082019050905081555060043360e05260c052604060c02060043560e05260c052604060c0205461014052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f35b63a457c2d78114156106f85760043560a01c1561066957600080fd5b60043360e05260c052604060c02060043560e05260c052604060c02080546024358082101561069757600080fd5b8082039050905081555060043360e05260c052604060c02060043560e05260c052604060c0205461014052600435337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610140a3600160005260206000f35b6312d7a2bc811415610b0b5760043560a01c1561071457600080fd5b60243560a01c1561072457600080fd5b600060043514151515610776576308c379a0610140526020610160526011610180527f6f776e6572203d203020616464726573730000000000000000000000000000006101a05261018050606461015cfd5b42606435101515156107c7576308c379a0610140526020610160526007610180527f65787069726564000000000000000000000000000000000000000000000000006101a05261018050606461015cfd5b60006002610480527f19010000000000000000000000000000000000000000000000000000000000006104a05261048060028060208461070001018260208501600060045af15050805182019150506101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c051600658016110ec565b6104e0526104c0526104a05261048052610460526104405261042052610400526103e0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526104e05160208261070001015260208101905060007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9602082610600010152602081019050600435602082610600010152602081019050602435602082610600010152602081019050604435602082610600010152602081019050600660043560e05260c052604060c020546020826106000101526020810190506064356020826106000101526020810190508061060052610600905080516020820120905060208261070001015260208101905080610700526107009050805160208201209050610140526004356101405161014051610160526084356101805260a4356101a05260c4356101c0526101c0516101a051610180516101605160065801611360565b610220526101405261022051141515610a86576308c379a0610240526020610260526011610280527f696e76616c6964207369676e61747572650000000000000000000000000000006102a05261028050606461025cfd5b600660043560e05260c052604060c02080546001818183011015610aa957600080fd5b80820190509050815550604435600460043560e05260c052604060c02060243560e05260c052604060c02055604435610160526024356004357f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610160a3005b6340c10f19811415610cad5760043560a01c15610b2757600080fd5b600a5433141515610b77576308c379a0610140526020610160526007610180527f216d696e746572000000000000000000000000000000000000000000000000006101a05261018050606461015cfd5b306101605260006101805260006101405261014061012060006002818352015b6101205160200261016001516004351415610bb55760018352610bc5565b8151600101808352811415610b97575b50505061014051151515610c18576308c379a06101a05260206101c05260106101e0527f696e76616c696420726563656976657200000000000000000000000000000000610200526101e05060646101bcfd5b43600c60043560e05260c052604060c0205560058054602435818183011015610c4057600080fd5b80820190509050815550600360043560e05260c052604060c0208054602435818183011015610c6e57600080fd5b808201905090508155506024356101405260043560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3005b639dc29fac811415610dfc5760043560a01c15610cc957600080fd5b600a5433141515610d19576308c379a0610140526020610160526007610180527f216d696e746572000000000000000000000000000000000000000000000000006101a05261018050606461015cfd5b600060043514151515610d6b576308c379a0610140526020610160526008610180527f66726f6d203d20300000000000000000000000000000000000000000000000006101a05261018050606461015cfd5b43600c60043560e05260c052604060c020556005805460243580821015610d9157600080fd5b80820390509050815550600360043560e05260c052604060c020805460243580821015610dbd57600080fd5b808203905090508155506024356101405260006004357fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610140a3005b6306fdde03811415610ea15760008060c052602060c020610180602082540161012060006003818352015b82610120516020021115610e3a57610e5c565b61012051850154610120516020028501525b8151600101808352811415610e27575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b41811415610f465760018060c052602060c020610180602082540161012060006002818352015b82610120516020021115610edf57610f01565b61012051850154610120516020028501525b8151600101808352811415610ecc575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce567811415610f5e5760025460005260206000f35b6370a08231811415610f945760043560a01c15610f7a57600080fd5b600360043560e05260c052604060c0205460005260206000f35b63dd62ed3e811415610fe85760043560a01c15610fb057600080fd5b60243560a01c15610fc057600080fd5b600460043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b6318160ddd8114156110005760055460005260206000f35b637ecebe008114156110365760043560a01c1561101c57600080fd5b600660043560e05260c052604060c0205460005260206000f35b633644e51581141561104e5760075460005260206000f35b63d085835a8114156110665760085460005260206000f35b63b127df8781141561107e5760095460005260206000f35b630754617281141561109657600a5460005260206000f35b63fc0c546a8114156110ae57600b5460005260206000f35b63952ca92c8114156110e45760043560a01c156110ca57600080fd5b600c60043560e05260c052604060c0205460005260206000f35b505b60006000fd5b6101405260007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020826105400101526020810190506006610420527f756e6167696900000000000000000000000000000000000000000000000000006104405261042080516020820120905060208261054001015260208101905060056104e0527f302e312e31000000000000000000000000000000000000000000000000000000610500526104e080516020820120905060208261054001015260208101905046602082610540010152602081019050306020826105400101526020810190508061054052610540905080516020820120905060005260005161014051565b6101a052610140526101605261018052306101e05260006102005260006101c0526101c061012060006002818352015b610120516020026101e0015161016051141561123c576001835261124c565b815160010180835281141561121d575b5050506101c05115151561129f576308c379a0610220526020610240526010610260527f696e76616c6964207265636569766572000000000000000000000000000000006102805261026050606461023cfd5b43600c6101405160e05260c052604060c0205543600c6101605160e05260c052604060c0205560036101405160e05260c052604060c020805461018051808210156112e957600080fd5b8082039050905081555060036101605160e05260c052604060c02080546101805181818301101561131957600080fd5b80820190509050815550610180516101c05261016051610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101c0a36101a051565b6101c0526101405261016052610180526101a052610180516101e0526101a051610200527f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a061020051111515156113f6576308c379a0610220526020610240526013610260527f696e76616c6964207369676e61747572652073000000000000000000000000006102805261026050606461023cfd5b601b610160511415611409576001611411565b601c61016051145b151561145c576308c379a0610220526020610240526013610260527f696e76616c6964207369676e61747572652076000000000000000000000000006102805261026050606461023cfd5b610140516102205261016051610240526101e051610260526102005161028052602060c0608061022060015afa5060c0516000526000516101c05156
Loading...
Loading
Loading...
Loading
OVERVIEW
The automated DeFi yield platform with staking services. All the convenience and none of the hassles for smarter access to DeFi yields.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.