项目开发中还有另一种收益产生的情况,不是每个块或者每秒产出固定的数量,而是每次打进质押合约一笔 就加权平分一笔,这时质押算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...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!