Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 4 from a total of 4 transactions
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.16
Contract Source Code (Vyper language format)
# @version 0.2.16 """ @title Vesting Escrow Factory @author Curve Finance, Yearn Finance @license MIT @notice Stores and distributes ERC20 tokens by deploying `VestingEscrowSimple` contracts """ from vyper.interfaces import ERC20 interface VestingEscrowSimple: def initialize( admin: address, token: address, recipient: address, amount: uint256, start_time: uint256, end_time: uint256, cliff_length: uint256, ) -> bool: nonpayable event VestingEscrowCreated: funder: indexed(address) token: indexed(address) recipient: indexed(address) escrow: address amount: uint256 vesting_start: uint256 vesting_duration: uint256 cliff_length: uint256 target: public(address) @external def __init__(target: address): """ @notice Contract constructor @dev Prior to deployment you must deploy one copy of `VestingEscrowSimple` which is used as a library for vesting contracts deployed by this factory @param target `VestingEscrowSimple` contract address """ self.target = target @external def deploy_vesting_contract( token: address, recipient: address, amount: uint256, vesting_duration: uint256, vesting_start: uint256 = block.timestamp, cliff_length: uint256 = 0, ) -> address: """ @notice Deploy a new vesting contract @param token Address of the ERC20 token being distributed @param recipient Address to vest tokens for @param amount Amount of tokens being vested for `recipient` @param vesting_duration Time period over which tokens are released @param vesting_start Epoch time when tokens begin to vest """ assert cliff_length <= vesting_duration # dev: incorrect vesting cliff escrow: address = create_forwarder_to(self.target) assert ERC20(token).transferFrom(msg.sender, self, amount) # dev: funding failed assert ERC20(token).approve(escrow, amount) # dev: approve failed VestingEscrowSimple(escrow).initialize( msg.sender, token, recipient, amount, vesting_start, vesting_start + vesting_duration, cliff_length, ) log VestingEscrowCreated(msg.sender, token, recipient, escrow, amount, vesting_start, vesting_duration, cliff_length) return escrow
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"VestingEscrowCreated","inputs":[{"name":"funder","type":"address","indexed":true},{"name":"token","type":"address","indexed":true},{"name":"recipient","type":"address","indexed":true},{"name":"escrow","type":"address","indexed":false},{"name":"amount","type":"uint256","indexed":false},{"name":"vesting_start","type":"uint256","indexed":false},{"name":"vesting_duration","type":"uint256","indexed":false},{"name":"cliff_length","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"target","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deploy_vesting_contract","inputs":[{"name":"token","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"vesting_duration","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"deploy_vesting_contract","inputs":[{"name":"token","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"vesting_duration","type":"uint256"},{"name":"vesting_start","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"deploy_vesting_contract","inputs":[{"name":"token","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"vesting_duration","type":"uint256"},{"name":"vesting_start","type":"uint256"},{"name":"cliff_length","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"target","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2418}]
Contract Creation Code
60206102e56101403960206102e560c03960c05160a01c6102e057610140516000556102c856600436101561000d57610297565b600035601c526000513461029d57630551ebac811415610037574261014052600061016052610082565b63ab5eea59811415610059576000610160526020608461014037600050610082565b63c367cc8081141561007d576020608461014037602060a461016037600050610082565b61027d565b60043560a01c61029d5760243560a01c61029d57606435610160511161029d577f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101a05260005460601b6101b3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006101c75260366101a06000f061018052602061026060646323b872dd6101a052336101c052306101e052604435610200526101bc60006004355af11561029d57601f3d111561029d57600050610260511561029d576020610240604463095ea7b36101a052610180516101c0526044356101e0526101bc60006004355af11561029d57601f3d111561029d57600050610240511561029d5760206102e060e4632b4656c86101a052336101c052606060046101e037610140516102405261014051606435818183011061029d57808201905090506102605261016051610280526101bc6000610180515af11561029d57601f3d111561029d576000506102e050602435600435337f4d924f2be6d90da83be47ca6bc3c90e0f5c5e365d7e9797faeb4b9f823505a786101a08080806101805181525050602081019050808060443581525050602081019050808061014051815250506020810190508080606435815250506020810190508080610160518152505060a0905090506101a0a46101805160005260206000f35b63d4b839928114156102955760005460005260206000f35b505b60006000fd5b600080fd5b6100266102c8036100266000396100266102c8036000f35b600080fd000000000000000000000000ab080a16007dc2e34b99f269a0217b4e96f88813
Deployed Bytecode
0x600436101561000d57610297565b600035601c526000513461029d57630551ebac811415610037574261014052600061016052610082565b63ab5eea59811415610059576000610160526020608461014037600050610082565b63c367cc8081141561007d576020608461014037602060a461016037600050610082565b61027d565b60043560a01c61029d5760243560a01c61029d57606435610160511161029d577f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101a05260005460601b6101b3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006101c75260366101a06000f061018052602061026060646323b872dd6101a052336101c052306101e052604435610200526101bc60006004355af11561029d57601f3d111561029d57600050610260511561029d576020610240604463095ea7b36101a052610180516101c0526044356101e0526101bc60006004355af11561029d57601f3d111561029d57600050610240511561029d5760206102e060e4632b4656c86101a052336101c052606060046101e037610140516102405261014051606435818183011061029d57808201905090506102605261016051610280526101bc6000610180515af11561029d57601f3d111561029d576000506102e050602435600435337f4d924f2be6d90da83be47ca6bc3c90e0f5c5e365d7e9797faeb4b9f823505a786101a08080806101805181525050602081019050808060443581525050602081019050808061014051815250506020810190508080606435815250506020810190508080610160518152505060a0905090506101a0a46101805160005260206000f35b63d4b839928114156102955760005460005260206000f35b505b60006000fd5b600080fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ab080a16007dc2e34b99f269a0217b4e96f88813
-----Decoded View---------------
Arg [0] : target (address): 0xaB080A16007DC2E34b99F269a0217B4e96f88813
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ab080a16007dc2e34b99f269a0217b4e96f88813
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
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.