简介
背景
挖矿服务是SUN.io平台数字金融衍生品之一,为加密数字资产持有用户提供稳定、安全、可靠的理财产品申购和赎回服务。智能挖矿V2又名定期挖矿,是SUN.io挖矿服务重要组成部分。其原理是根据存款用户质押金额和定期时长转换为虚拟质押金额,所有用户虚拟质押金额的总量作为虚拟总质押,根据用户的虚拟质押在虚拟总质押的占比分配奖励,且用户需在规定时间赎回相关资产。
原理简介
奖励分成
质押数量为amount的token,锁定时间为 满足。其中max为1080天,为30天,最大加速倍率为1400%(放大倍),获得的veToken计算公式:
其中为用户的虚拟质押金额。根据智能挖矿V1的奖励分成公式(2),用户的奖励公式如下:
其中 表示奖励代币的膨胀系数, 表示第i次变化, 表示到阶段时刻虚拟质押总额,表示用户在到阶段时刻的虚拟质押金额。
对应合约代码
function calculateBoostedBalance(uint256 amount, uint256 lockDuration) public view returns (uint256) {
if (lockDuration == 0) {
return amount;
}
uint256 boostWeight = lockDuration.mul(BOOST_WEIGHT).div(DURATION_FACTOR);
return amount.add(amount.mul(boostWeight).div(PRECISION_FACTOR));
}
定期赎回时间限制
锁定时间为,复投犹豫期,定期质押时间,当前时间,同时满足一下条件可以赎回:
总奖励rewards,已结算分成,结算时间未结算定投时间,其中超过且不满一个定投周期的时间,提取分成奖励公式:
对应合约代码
function overdueDuration(address account) public view returns (bool, uint256, uint256){
uint256 duration = userInfo[account].lockDuration;
if (duration == 0) {
return (true, 0, 0);
}
uint256 totalTime = block.timestamp.sub(userInfo[account].lockStartTime);
uint256 round = totalTime.div(duration);
uint256 overdue = totalTime.mod(duration);
if (round < 1 || overdue > maintenanceDuration || block.timestamp < userInfo[account].lastActionTime) {
return (false, 0, 0);
}
uint256 rewardsDuration = block.timestamp.sub(userInfo[account].lastActionTime);
return (true, rewardsDuration, overdue);
Last updated