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

合约开发中遇到很多质押挖矿类的需求,单币质押、双币质押、算力挖矿等等,这些需求大多都是美秒产多少币(每个块产多少币),根据质押的量加权平分产出的币。如果中心化的程序很容易完成这个需求,但在区块链上没有定时器,不能实现大量循环。这些局限让我们体会了区块链的极简之美。

合约开发中遇到很多质押挖矿类的需求,单币质押、双币质押、算力挖矿等等,这些需求大多都是美秒产多少币(每个块产多少币),根据质押的量加权平分产出的币。如果中心化的程序很容易完成这个需求,但在区块链上没有定时器,不能实现大量循环。这些局限让我们体会了区块链的极简之美。为了实现质押挖矿采用了以下算法

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

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

我们根据代码来解析https://github.com/Uniswap/liquiditystaker/blob/master/contracts/StakingRewards.sol

uint256 public lastUpdateTime;
uint256 public rewardPerTokenStored;
uint256 private _totalSupply;

rewardPerTokenStored 全局变量 就是保存的上面算法的数据 lastUpdateTime 是上次结算的时间, 或者说是上阶段截止的时间 _totalSupply也就是质押的总量

这两个全局变量只要有用户调用合约写入方法 都会更新


function...

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

点赞 1
收藏 7
分享

1 条评论

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