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

合约开发 发布于 2022-03-12 阅读 6287

项目开发中还有另一种收益产生的情况,不是每个块或者每秒产出固定的数量,而是每次打进质押合约一笔 就加权平分一笔,这时质押算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%的内容订阅专栏后可查看

该文章收录于
合约对接(前端/node.js)
11 订阅 8 篇内容

0 条评论