质押挖矿合约逻辑解析(二)

项目开发中还有另一种收益产生的情况,不是每个块或者每秒产出固定的数量,而是每次打进质押合约一笔 就加权平分一笔,这时质押算rewardPerTokenStored数值方法就得做更改,只要理解算法是用的每个阶段的挖矿产量一切迎刃而解。

项目开发中还有另一种收益产生的情况,不是每个块或者每秒产出固定的数量,而是每次打进质押合约一笔 就加权平分一笔,这时质押算rewardPerTokenStored数值方法就得做更改,只要理解算法是用的每个阶段的挖矿产量一切迎刃而解。

实现质押挖矿采用了以下算法

(此阶段产量/ A) + (此阶段产量/ A+B)+ (此阶段产量/ A+B+C)+ ......

实际上是算的是每个阶段每个币挖矿数量的之和。

我们通过代码来讲解

以前的
uint256  public lastUpdateTime;
要换成
uint256 public lastBlance;
还要加一个 
uint256 public haveTakeAmount;
来计算已经领取了多少代币

这里计算getCurBlance要把领取的代币加上这才是当前总奖励


function getCurBlance () public view returns(uint){
return IERC20Upgradeable(rewardsToken).balanceOf(address(this)) + haveTakeAmount;

function rewardPerToken() pu...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 2
分享
10 订阅 7 篇文章

0 条评论

请先 登录 后评论
合约开发
合约开发
0x16A8...8B62
5年合约开发经验, 60个以上合约项目开发,区块链项目商业合作加微信15550915501