Skip to content

Latest commit

 

History

History
50 lines (44 loc) · 2.15 KB

ERC20WithTokenVesting.md

File metadata and controls

50 lines (44 loc) · 2.15 KB

MintCoin崔棉大师的花式发币法

分期释放合约

分期释放合约类似于锁仓合约,区别是被锁定的ERC20代币将按照合约布署时规定的时间周期逐步释放给受益人. 释放周期的计算方法为:在start开始时间之后计算,以秒为单位,直到cliffDuration断崖时间之后可以释放,在duration持续时间到达之后结束. 例如:锁仓4年,1年之后开始释放,这样就是start=now();cliffDuration=1 year;duration=4 year; 在cliffDuration之后的任何时间都可以调用释放方法,释放数额的计算方法为: 锁仓总数额 * ((当前时间 - 开始时间) / 持续时间) - 已释放数

Bilibili视频

合约文件: ERC20WithTokenVesting.sol

测试脚本: ERC20WithTokenVesting.js

布署脚本: 28_deploy_ERC20WithTokenVesting.js

在布署合约时定义以下变量

address beneficiary,        //受益人
uint256 start,              //开始时间
uint256 cliffDuration,      //断崖时间
uint256 duration,           //持续时间
bool revocable              //是否可撤销

布署合约之后执行

//在布署之后需要将锁仓的代币传送给分期释放合约
token.transfer(ERC20WithTokenVesting.address, SOME_TOKEN_AMOUNT);

调用方法

//返回受益人地址
beneficiary() public view returns (address)
//返回开始时间
start() public view returns (uint256)
//返回断崖时间
cliff() public view returns (uint256)
//返回持续时间
duration() public view returns (uint256)
//返回能否撤销
revocable() public view returns (bool)
//返回已经释放数量
released(address token) public view returns (uint256)
//返回是否撤销
revoked(address token) public view returns (bool)
//释放方法
release(IERC20 token) public
//撤销方法
revoke(IERC20 token) public onlyOwner