Vesting Contract
ARROW tokens are distributed to Arrow contributors as a reward for their contributions and investment in the project. These rewards are typically locked within vesting contracts, which release granted ARROW tokens over time after an initial cliff period.
These vesting contracts and tokens are distributed on the Optimism L2 network, with contributors free to bridge their tokens back to mainnet after vesting.
How To Create New Vesting Contracts
Bridge the amount of ARROW tokens required from the Arrow mainnet multisig over to the Arrow Optimism multisig.
- Check the latest Optimism deployment and use the
L1StandardBridge
contract at0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1
. - Approve the
L1StandardBridge
to spend the required number of ARROW tokens, callingapprove
on the ArrowToken contract at0x736609D310B5F925531B5ad895925CB0586F6241
. - Deposit ARROW tokens to the L2 Optimism multisig, calling
depositERC20To
on theL1StandardBridge
.
- Check the latest Optimism deployment and use the
Create a new vesting contract using the ArrowVestingFactory contract at
0x736609D310B5F925531B5ad895925CB0586F6241
, callingcreateVestingSchedule
.beneficiaryAddress
should be set to the wallet address of the contributor to be rewarded.startTimestamp
should be set to the UNIX timestamp at which tokens should start vesting. You can use unixtimestamp.com to calculate the UNIX timestamp representation of a specific future date.durationSeconds
should be set to the total time in seconds required for the vesting period to complete.- Tokens will begin to vest when time reaches
startTimestamp
, and will vest linearly until time reachesstartTimestamp + durationSeconds
.
Send ARROW tokens (or ETH or any ERC20) to the newly created vesting contract.
How To Release Vested Tokens From A Vesting Contract
- Find the address of the vesting contract.
- Check current vested token allowance in the contract, calling
vestedAmount(address token, uint64 timestamp)
with the ERC20 token address and the current timestamp. - Release vested ARROW tokens (or any ERC20) to
beneficiaryAddress
, callingrelease(address)
with the ERC20 token address.
How To Cancel Existing Vesting Contracts
Vesting contracts have the ability to be cancelled by the Arrow multisig, in cases of erroneous token distributions or if specific contributors become inactive.
Upon cancellation, any vested tokens will be distributed to the contributor, with any remaining un-vested tokens returned to the Arrow multisig.
In order to cancel an existing vesting contract:
- Find the vesting contract to be cancelled.
- Cancel the vesting contract, calling
cancel(address token)
from the Arrow Optimism multisig.