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

质押挖矿合约逻辑解析(一),第1张

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

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

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

我们根据代码来解析

uniswap 质押

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

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

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

function rewardPerToken() public view returns (uint256) {
        if (_totalSupply == 0) {
            return rewardPerTokenStored;
        }
        return
            rewardPerTokenStored.add(
             

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/926783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存