简介
背景
挖矿服务是SUN.io平台数字金融衍生品之一,为加密数字资产持有用户提供稳定、安全、可靠的理财产品申购和赎回服务。治理挖矿是SUN.io挖矿服务重要组成部分。如下图所示,用户奖励分成与用户持有的veSun Token,池子投票权重紧密相关,且用户可以随时赎回相关资产。

原理简介
用户在治理矿池质押后,会生成相应的虚拟质押金额:
其中表示用户真实质押金额,表示矿池总质押,表示用户持有的vesun币的数量,表示SUN.io平台一共发行的veSun的数量。如公式(1)所示,用户持有的veSun足够多,用户的虚拟质押为,用户持有的veSun为0,用户的虚拟质押为,即持有veSun最大可放大2.5倍的分成收益。
其中表示本周池子权重,表示池子类型权重,表示本周池子总权重,表示奖励代币的膨胀系数。根据智能挖矿V1的奖励分成公式(2),用户的奖励公式如下:
其中 表示奖励代币最终的膨胀系数, 表示第i次变化, 表示到阶段时刻虚拟质押总额,表示用户在到阶段时刻的虚拟质押金额。
对应合约代码
def _checkpoint(addr: address):
Controller(_controller).checkpoint_gauge(convert(self.controller_key, bytes32))
_working_balance: uint256 = self.working_balances[addr]
_working_supply: uint256 = self.working_supply
if block.timestamp > _period_time:
prev_week_time: uint256 = _period_time
week_time: uint256 = min((_period_time + WEEK) / WEEK * WEEK, block.timestamp)
for i in range(500):
dt: uint256 = week_time - prev_week_time
w: uint256 = Controller(_controller).gauge_relative_weight(convert(self.controller_key, bytes32), prev_week_time / WEEK * WEEK)
if _working_supply > 0:
if prev_future_epoch >= prev_week_time and prev_future_epoch < week_time:
_integrate_inv_supply += rate * w * (prev_future_epoch - prev_week_time) / _working_supply
rate = new_rate
_integrate_inv_supply += rate * w * (week_time - prev_future_epoch) / _working_supply
else:
_integrate_inv_supply += rate * w * dt / _working_supply
if week_time == block.timestamp:
break
prev_week_time = week_time
week_time = min(week_time + WEEK, block.timestamp)
_period += 1
self.period = _period
self.period_timestamp[_period] = block.timestamp
self.integrate_inv_supply[_period] = _integrate_inv_supply
self.integrate_fraction[addr] += _working_balance * (_integrate_inv_supply - self.integrate_inv_supply_of[addr]) / 10 ** 18
self.integrate_inv_supply_of[addr] = _integrate_inv_supply
self.integrate_checkpoint_of[addr] = block.timestamp
Last updated