Yearn Vesting Escrow
A modified version of Curve Vesting Escrow contracts with added functionality:
- An escrow can have a
start_date
in the past. - The first unlock can be delayed using
cliff_length
. - An ability to
claim
partial amounts or use a different beneficiary account. - An ability to terminate an escrow and clawback all the unvested tokens using
rug_pull
. The recipient is still entitled to the vested portion. - Factory admin controls removed, anyone can deploy escrows, funds are pulled instead of pushed.
- Factory emits an event which allows finding all the escrows deployed from it.
Contracts
VestingEscrowFactory
: Factory to deploy many simplified vesting contractsVestingEscrowSimple
: Simplified vesting contract that holds tokens for a single beneficiary
Usage
$ brownie console --network mainnet
funder = accounts.load(name)
factory = VestingEscrowFactory.at('0x98d3872b4025ABE58C4667216047Fe549378d90f', owner=funder)
factory.deploy_vesting_contract(token, recipient, amount, vesting_duration, vesting_start, cliff_length)
Ethereum mainnet deployment
v0.2.0
VestingEscrowFactory
: 0x98d3872b4025ABE58C4667216047Fe549378d90fVestingEscrowSimple
: 0xaB080A16007DC2E34b99F269a0217B4e96f88813
v0.1.0
renounce_ownership
on it.
VestingEscrowFactory
: 0xF124534bfa6Ac7b89483B401B4115Ec0d27cad6AVestingEscrowSimple
: 0x9c351CabC5d9e1393678d221F84E6EE3D05c016F
Ethereum Rinkeby testnet deployment
v0.1.0
VestingEscrowFactory
: 0x2836925b66345e1c118ec87bbe44fce2e5a558f6VestingEscrowSimple
: 0x8bb4edaf9269a3427ede1d1ad1885f6f9d5731f5
Ethereum Ropsten testnet deployment
v0.1.0
VestingEscrowFactory
: 0x8bb4edaf9269a3427ede1d1ad1885f6f9d5731f5VestingEscrowSimple
: 0xd887a875f4bc3b2aa5928e46607b7a06facfe3d0