简介
背景
挖矿服务是SUN.io平台数字金融衍生品之一,为加密数字资产持有用户提供稳定、安全、可靠的理财产品申购和赎回服务。智能挖矿V1又名活期挖矿,是SUN.io挖矿服务重要组成部分。其原理是根据存款用户质押金额在整个矿池的质押金额占比分配奖励,且用户可以随时赎回相关资产。
原理简介
SUN.io挖矿奖励代币分成在一定时间窗口以均匀通货膨胀速度发行,如下图所示。

矿池在不同时间节点上发生质押总资金的变化都会引起个人奖励的变化。个人奖励公式:
其中 表示奖励代币的膨胀系数, 表示第i次变化, 表示到阶段时刻质押总金额,表示用户在到阶段时刻的质押金额。
根据以上公式,矿池一旦发生质押金额的变化都会影响其他用户的分成,为了避免checkpoint全量用户数据造成的燃料费开销过大,将上述公式进行变换如下:
在 和 时间范围内用户存款如未发生变化,当矿池质押总金额发生变化之后,只需checkpoint如下求和公式:
对应合约代码
modifier updateReward(address account) {
rewardPerTokenStored = rewardPerToken();
lastUpdateTime = lastTimeRewardApplicable();
if (canNext && block.timestamp > periodFinish && DURATION_NEXT > 0) {
rewardRate = rewardNext.div(DURATION_NEXT);
uint256 nextRound = (block.timestamp - periodFinish) / DURATION_NEXT + 1;
periodFinish = periodFinish.add(nextRound * DURATION_NEXT);
rewardPerTokenStored = rewardPerToken();
lastUpdateTime = lastTimeRewardApplicable();
rewardNow = rewardNext;
DURATION = DURATION_NEXT;
emit RewardAdded(nextRound * rewardNext);
}
if (account != address(0)) {
userInfo[account].rewards = earned(account);
userInfo[account].rewardPerTokenPaid = rewardPerTokenStored;
}
_;
}
Last updated