ETH Price: $2,028.57 (-17.10%)
Gas: 9.48 Gwei

Contract

0xcf61782465Ff973638143d6492B51A85986aB347
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy_vesting_c...216382212025-01-16 16:24:3546 days ago1737044675IN
0xcf617824...5986aB347
0 ETH0.0052292813.73251387
Deploy_vesting_c...216357142025-01-16 8:00:2346 days ago1737014423IN
0xcf617824...5986aB347
0 ETH0.001193013.27930765
Deploy_vesting_c...214294422024-12-18 12:33:2375 days ago1734525203IN
0xcf617824...5986aB347
0 ETH0.007058120.82657073
Deploy_vesting_c...213139792024-12-02 9:37:5991 days ago1733132279IN
0xcf617824...5986aB347
0 ETH0.004202812.40136201
Deploy_vesting_c...213139162024-12-02 9:25:2391 days ago1733131523IN
0xcf617824...5986aB347
0 ETH0.0046954113.85441591
Deploy_vesting_c...212422582024-11-22 9:04:47101 days ago1732266287IN
0xcf617824...5986aB347
0 ETH0.0042028112.40093219
Deploy_vesting_c...212420872024-11-22 8:30:11101 days ago1732264211IN
0xcf617824...5986aB347
0 ETH0.0037064510.93635808
Deploy_vesting_c...211928552024-11-15 11:39:47108 days ago1731670787IN
0xcf617824...5986aB347
0 ETH0.0048460814.3
Deploy_vesting_c...210537022024-10-27 1:33:23128 days ago1729992803IN
0xcf617824...5986aB347
0 ETH0.001287313.63665815
Deploy_vesting_c...210536732024-10-27 1:27:35128 days ago1729992455IN
0xcf617824...5986aB347
0 ETH0.001239923.50276511
Deploy_vesting_c...210311602024-10-23 22:04:11131 days ago1729721051IN
0xcf617824...5986aB347
0 ETH0.0034140710.04947987
Deploy_vesting_c...210311142024-10-23 21:54:59131 days ago1729720499IN
0xcf617824...5986aB347
0 ETH0.00274238.07209679
Deploy_vesting_c...210310892024-10-23 21:49:59131 days ago1729720199IN
0xcf617824...5986aB347
0 ETH0.003126059.20166394
Deploy_vesting_c...210310792024-10-23 21:47:59131 days ago1729720079IN
0xcf617824...5986aB347
0 ETH0.002923498.60541418
Deploy_vesting_c...209914072024-10-18 8:59:23136 days ago1729241963IN
0xcf617824...5986aB347
0 ETH0.0091166225.75440139
Deploy_vesting_c...209791052024-10-16 15:45:59138 days ago1729093559IN
0xcf617824...5986aB347
0 ETH0.0060691216.87448729
Deploy_vesting_c...209790082024-10-16 15:25:47138 days ago1729092347IN
0xcf617824...5986aB347
0 ETH0.0061489418.09901376
Deploy_vesting_c...209789432024-10-16 15:12:47138 days ago1729091567IN
0xcf617824...5986aB347
0 ETH0.0066981419.71487826
Deploy_vesting_c...209789372024-10-16 15:11:35138 days ago1729091495IN
0xcf617824...5986aB347
0 ETH0.0070042320.61652446
Deploy_vesting_c...209788882024-10-16 15:01:47138 days ago1729090907IN
0xcf617824...5986aB347
0 ETH0.0081947224.12149021
Deploy_vesting_c...209350402024-10-10 11:54:11144 days ago1728561251IN
0xcf617824...5986aB347
0 ETH0.0040038911.73569554
Deploy_vesting_c...208929722024-10-04 15:11:23150 days ago1728054683IN
0xcf617824...5986aB347
0 ETH0.0036633710.83381422
Deploy_vesting_c...208222332024-09-24 18:25:23160 days ago1727202323IN
0xcf617824...5986aB347
0 ETH0.0118665234.9
Deploy_vesting_c...208222142024-09-24 18:21:35160 days ago1727202095IN
0xcf617824...5986aB347
0 ETH0.0127841137.6
Deploy_vesting_c...207724792024-09-17 19:41:35167 days ago1726602095IN
0xcf617824...5986aB347
0 ETH0.0062216218.53201749
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
219683552025-03-03 19:09:357 hrs ago1741028975
0xcf617824...5986aB347
 Contract Creation0 ETH
219683552025-03-03 19:09:357 hrs ago1741028975
0xcf617824...5986aB347
 Contract Creation0 ETH
219683552025-03-03 19:09:357 hrs ago1741028975
0xcf617824...5986aB347
 Contract Creation0 ETH
219683552025-03-03 19:09:357 hrs ago1741028975
0xcf617824...5986aB347
 Contract Creation0 ETH
219683552025-03-03 19:09:357 hrs ago1741028975
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
219468192025-02-28 19:04:473 days ago1740769487
0xcf617824...5986aB347
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vesting Escrow Factory

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license
# @version 0.3.10

"""
@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(
        owner: address,
        token: ERC20,
        recipient: address,
        amount: uint256,
        start_time: uint256,
        end_time: uint256,
        cliff_length: uint256,
        open_claim: bool,
    ) -> bool: nonpayable


event VestingEscrowCreated:
    funder: indexed(address)
    token: indexed(ERC20)
    recipient: indexed(address)
    escrow: address
    amount: uint256
    vesting_start: uint256
    vesting_duration: uint256
    cliff_length: uint256
    open_claim: bool


TARGET: public(immutable(address))
VYPER: public(immutable(address))
escrows_length: public(uint256)
escrows: public(address[1000000000000])


@external
def __init__(target: address, vyper_donate: 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
    @param vyper_donate Vyper Safe address for donations (vyperlang.eth on mainnet)
    """
    TARGET = target
    VYPER = vyper_donate


@external
def deploy_vesting_contract(
    token: ERC20,
    recipient: address,
    amount: uint256,
    vesting_duration: uint256,
    vesting_start: uint256 = block.timestamp,
    cliff_length: uint256 = 0,
    open_claim: bool = True,
    support_vyper: uint256 = 0,
    owner: address = msg.sender,
) -> address:
    """
    @notice Deploy a new vesting contract
    @dev Prior to deployment you must approve `amount` + `amount` * `support_vyper` / 10_000
         tokens
    @param token 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 (in seconds) over which tokens are released
    @param vesting_start Epoch time when tokens begin to vest
    @param open_claim Switch if anyone can claim for `recipient`
    @param support_vyper Donation percentage in bps, 0% by default
    @param owner Vesting contract owner
    """
    assert cliff_length <= vesting_duration  # dev: incorrect vesting cliff
    assert vesting_start + vesting_duration > block.timestamp  # dev: just use a transfer, dummy
    assert vesting_duration > 0  # dev: duration must be > 0
    assert recipient not in [self, empty(address), token.address, owner]  # dev: wrong recipient

    escrow: address = create_minimal_proxy_to(TARGET)

    VestingEscrowSimple(escrow).initialize(
        owner,
        token,
        recipient,
        amount,
        vesting_start,
        vesting_start + vesting_duration,
        cliff_length,
        open_claim,
    )
    # skip transferFrom and approve and send directly to escrow
    assert token.transferFrom(msg.sender, escrow, amount, default_return_value=True)  # dev: funding failed
    if support_vyper > 0:
        assert VYPER != empty(address)  # dev: lost donation
        assert token.transferFrom(
            msg.sender,
            VYPER,
            amount * support_vyper / 10_000,
            default_return_value=True
        )  # dev: donation failed

    self.escrows[self.escrows_length] = escrow
    self.escrows_length += 1
    log VestingEscrowCreated(
        msg.sender,
        token,
        recipient,
        escrow,
        amount,
        vesting_start,
        vesting_duration,
        cliff_length,
        open_claim,
    )
    return escrow

Contract Security Audit

Contract ABI

API
[{"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},{"name":"open_claim","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"target","type":"address"},{"name":"vyper_donate","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":"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"},{"name":"open_claim","type":"bool"}],"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"},{"name":"open_claim","type":"bool"},{"name":"support_vyper","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"},{"name":"open_claim","type":"bool"},{"name":"support_vyper","type":"uint256"},{"name":"owner","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"TARGET","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"VYPER","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"escrows_length","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"escrows","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]}]

61055f5150346100515760206105a95f395f518060a01c6100515760405260206105c95f395f518060a01c6100515760605260405161053f5260605161055f5261053f6100556100003961057f610000f35b5f80fd5f3560e01c6002600a820660011b61052b01601e395f51565b63cc1f2afa8118610523573461052757602061053f60403960206040f3610523565b636a81ec448118610523573461052757602061055f60403960206040f3610523565b63adf8e96381186100775734610527575f5460405260206040f35b63ab5eea5981186105235760a436103417610527576084356080525f60a052600160c0525f60e05233610100526101bf56610523565b63012f52ee81186100de576024361034176105275760043564e8d4a50fff8111610527576001015460405260206040f35b630551ebac81186105235760843610341761052757426080525f60a052600160c0525f60e05233610100526101bf56610523565b63c367cc8081186105235760c4361034176105275760406084608037600160c0525f60e05233610100526101bf56610523565b63e7eba643811861017d5760e436103417610527576040608460803760c4358060011c6105275760c0525f60e05233610100526101bf565b63babce1b981186105235761012436103417610527576040608460803760c4358060011c6105275760c05260e43560e052610104358060a01c61052757610100525b6004358060a01c610527576040526024358060a01c6105275760605260643560a0511161052757426080516064358082018281106105275790509050111561052757606435156105275760605130811461023a57801561023457604051811461022e576101005181141561023c565b5f61023c565b5f61023c565b5f5b905015610527577f602d3d8160093d39f3363d3d373d3d3d363d730000000000000000000000000061014052602061053f5f395f5160601b610153527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006101675260366101405ff0801561052757610120526101205163f586c19f610140526101005161016052604051610180526060516101a0526044356101c0526080516101e05260805160643580820182811061052757905090506102005260a0516102205260c05161024052602061014061010461015c5f855af1610320573d5f5f3e3d5ffd5b60203d1061052757610140518060011c610527576102605261026050506040516323b872dd61014052336101605261012051610180526044356101a0526020610140606461015c5f855af1610377573d5f5f3e3d5ffd5b3d61038e57803b156105275760016101c0526103a7565b60203d1061052757610140518060011c610527576101c0525b6101c0905051156105275760e0511561045d57602061055f5f395f5115610527576040516323b872dd610140523361016052602061055f6101803960443560e0518082028115838383041417156105275790509050612710810490506101a0526020610140606461015c5f855af1610421573d5f5f3e3d5ffd5b3d61043857803b156105275760016101c052610451565b60203d1061052757610140518060011c610527576101c0525b6101c090505115610527575b610120515f5464e8d4a50fff811161052757600101555f54600181018181106105275790505f55606051604051337f99fd02dbc65944923f77d3e5d3e77e8c4c1b4026201be5445a8e827183e993e2610120516101405260443561016052608051610180526064356101a05260a0516101c05260c0516101e05260c0610140a46020610120f3610523565b6373c258a981186105235761010436103417610527576040608460803760c4358060011c6105275760c05260e43560e05233610100526101bf565b5f5ffd5b5f80fd011204e80018005c003a05230523052300ad01458419053f81141840a16576797065728300030a00150000000000000000000000009dd5cf263327e2d6a608da8c30368eb27514bad20000000000000000000000009e282c47e7238493735a9264400559bb837bcadc

Deployed Bytecode

0x5f3560e01c6002600a820660011b61052b01601e395f51565b63cc1f2afa8118610523573461052757602061053f60403960206040f3610523565b636a81ec448118610523573461052757602061055f60403960206040f3610523565b63adf8e96381186100775734610527575f5460405260206040f35b63ab5eea5981186105235760a436103417610527576084356080525f60a052600160c0525f60e05233610100526101bf56610523565b63012f52ee81186100de576024361034176105275760043564e8d4a50fff8111610527576001015460405260206040f35b630551ebac81186105235760843610341761052757426080525f60a052600160c0525f60e05233610100526101bf56610523565b63c367cc8081186105235760c4361034176105275760406084608037600160c0525f60e05233610100526101bf56610523565b63e7eba643811861017d5760e436103417610527576040608460803760c4358060011c6105275760c0525f60e05233610100526101bf565b63babce1b981186105235761012436103417610527576040608460803760c4358060011c6105275760c05260e43560e052610104358060a01c61052757610100525b6004358060a01c610527576040526024358060a01c6105275760605260643560a0511161052757426080516064358082018281106105275790509050111561052757606435156105275760605130811461023a57801561023457604051811461022e576101005181141561023c565b5f61023c565b5f61023c565b5f5b905015610527577f602d3d8160093d39f3363d3d373d3d3d363d730000000000000000000000000061014052602061053f5f395f5160601b610153527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006101675260366101405ff0801561052757610120526101205163f586c19f610140526101005161016052604051610180526060516101a0526044356101c0526080516101e05260805160643580820182811061052757905090506102005260a0516102205260c05161024052602061014061010461015c5f855af1610320573d5f5f3e3d5ffd5b60203d1061052757610140518060011c610527576102605261026050506040516323b872dd61014052336101605261012051610180526044356101a0526020610140606461015c5f855af1610377573d5f5f3e3d5ffd5b3d61038e57803b156105275760016101c0526103a7565b60203d1061052757610140518060011c610527576101c0525b6101c0905051156105275760e0511561045d57602061055f5f395f5115610527576040516323b872dd610140523361016052602061055f6101803960443560e0518082028115838383041417156105275790509050612710810490506101a0526020610140606461015c5f855af1610421573d5f5f3e3d5ffd5b3d61043857803b156105275760016101c052610451565b60203d1061052757610140518060011c610527576101c0525b6101c090505115610527575b610120515f5464e8d4a50fff811161052757600101555f54600181018181106105275790505f55606051604051337f99fd02dbc65944923f77d3e5d3e77e8c4c1b4026201be5445a8e827183e993e2610120516101405260443561016052608051610180526064356101a05260a0516101c05260c0516101e05260c0610140a46020610120f3610523565b6373c258a981186105235761010436103417610527576040608460803760c4358060011c6105275760c05260e43560e05233610100526101bf565b5f5ffd5b5f80fd011204e80018005c003a05230523052300ad01450000000000000000000000009dd5cf263327e2d6a608da8c30368eb27514bad20000000000000000000000009e282c47e7238493735a9264400559bb837bcadc

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000009dd5cf263327e2d6a608da8c30368eb27514bad20000000000000000000000009e282c47e7238493735a9264400559bb837bcadc

-----Decoded View---------------
Arg [0] : target (address): 0x9dd5cF263327e2D6a608da8c30368Eb27514bAD2
Arg [1] : vyper_donate (address): 0x9e282C47e7238493735a9264400559Bb837BCAdC

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009dd5cf263327e2d6a608da8c30368eb27514bad2
Arg [1] : 0000000000000000000000009e282c47e7238493735a9264400559bb837bcadc


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.