SUN.io 中文文档
SUN.ioSunPump
  • SUN.io 简介
    • 入门指南(TRON)
      • 创建钱包
      • TRON 网络代币标准
      • 连接钱包
    • 风险
    • 白皮书
    • 服务条款
    • 隐私协议
    • 最新公告
  • 开始使用
    • 兑换
      • 代币兑换
        • 如何给token授权?
        • 如何兑换token?
        • 如何查看我最近的交易记录?
        • 如何查看交易对价格走势?
      • 稳定币兑换
        • 稳定币池介绍
        • 如何进行稳定币交易?
        • 如何提供稳定币池的流动性?
        • 如何提取稳定币池流动性?
        • 如何查看自己提供的流动性?
      • 智能路由
      • 交易手续费
        • 收取手续费奖励
      • 流动性资金池
        • 如何创建交易对
        • 如何增加流动性?
        • 如何删除流动性?
        • 增加/删除资金池的token比例是如何计算的?
        • 如何录入一个新的token?
        • 创建资金池初始价格是多少?
      • 代币列表
    • 矿池
      • SUN.io 平台挖矿细则
      • 如何参与LP挖矿?
      • 如何获取LP挖矿收益?
      • 如何退出LP挖矿?
      • 如何计算LP矿池加速倍数?
      • 如何锁定SUN?
      • 如何投票?
      • 如何重置投票?
      • 智能矿池
        • 如何参与 LP 矿池的定期质押?
        • 如何在 LP 矿池中追加定期质押?
        • 如何中途延长 LP 矿池定期质押锁定期?
        • 如何提前解锁 LP 矿池中定期质押的资产?
        • 如何领取 LP 矿池的定期质押奖励?
      • Farm
      • 历史矿池
    • SunPump
      • 🌞 怎么运行的?
      • 🚀 如何启动?
      • 💡代币详情
      • 👤 个人主页
      • 🏦 服务费
      • SunPump DLive Streaming 功能使用教程
    • SunPump Referral
      • 参与方式
      • 活动规则
      • FAQ
    • PSM
      • 如何使用 PSM 在 USDD 和其他稳定币之间进行 1:1 兑换?
    • 代币经济
      • SUN 代币经济模型
        • SUN 回购及销毁
      • veSUN
      • 空投
  • 治理
    • SUN DAO 治理
    • 参与治理
      • 提案
        • SUN DAO 论坛
        • 获得选票
        • 发起提案
        • 进行投票
        • SUN DAO 提案查看
      • DAO 权益
        • 矿池权重
        • veSUN
  • 开发者
    • 兑换
      • 稳定币兑换简介
      • SunSwap兑换简介
      • SunSwap v3兑换简介
      • 智能路由
    • 挖矿
      • 智能挖矿V1
      • 智能挖矿V2
      • 治理挖矿
    • Sunpump
      • Sunpump Contracts
    • Github
    • 相关合约及ABIs
  • FAQ
    • 如何在手机 TronLink APP中使用SUN.io?
    • 价格是由什么决定的?
    • 兑换支持哪些Token?
    • 为什么我的兑换会失败?
    • 关于 SUN.io 平台能量补贴的详细说明
Powered by GitBook
On this page
  • 背景
  • 原理简介
  • 矿池
  • 与合约交互
  • 执行交易
  1. 开发者
  2. 挖矿

治理挖矿

治理挖矿:一种增加用户对SUN.io治理权与收益的挖矿模式

Previous智能挖矿V2NextSunpump

Last updated 2 years ago

背景

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

原理简介

用户在治理矿池质押后,会生成相应的虚拟质押金额:

Suser=min(Luser,Luser∗0.4+Ltotal∗(veSunuserveSuntotal)∗0.6)(1)S_{user}=min(L_{user},L_{user}*0.4+L_{total}*(\frac{veSun_{user}}{veSun_{total}})*0.6)(1)Suser​=min(Luser​,Luser​∗0.4+Ltotal​∗(veSuntotal​veSunuser​​)∗0.6)(1)

其中LuserL_{user}Luser​表示用户真实质押金额,LtotalL_{total}Ltotal​表示矿池总质押,veSunuserveSun_{user}veSunuser​表示用户持有的vesun币的数量,veSuntotalveSun_{total}veSuntotal​表示SUN.io平台一共发行的veSun的数量。如公式(1)所示,用户持有的veSun足够多,用户的虚拟质押为LuserL_{user}Luser​,用户持有的veSun为0,用户的虚拟质押为Luser∗0.4L_{user}*0.4Luser​∗0.4,即持有veSun最大可放大2.5倍的分成收益。

V=Wgauge∗WtypeWtotal∗rt(2)V=\frac{W_{gauge}*W_{type}}{W_{total}}*r_t(2)V=Wtotal​Wgauge​∗Wtype​​∗rt​(2)

其中WgaugeW_{gauge}Wgauge​表示本周池子权重,WtypeW_{type}Wtype​表示池子类型权重,WtotalW_{total}Wtotal​表示本周池子总权重,rtr_trt​表示奖励代币的膨胀系数。根据智能挖矿V1的奖励分成公式(2),用户的奖励公式如下:

f(ti,tn)=∑i=1mSuser∑j=startiendi(ti−ti−1)VTi(3)f(t_i,t_n)= \sum_{i=1}^{m}S_{user} \sum_{j=start_i}^{end_i}\frac{(t_i-t_{i-1})V}{T_i}(3)f(ti​,tn​)=i=1∑m​Suser​j=starti​∑endi​​Ti​(ti​−ti−1​)V​(3)

其中 VVV表示奖励代币最终的膨胀系数, tit_iti​表示第i次变化, TiT_iTi​表示ti−1t_{i-1}ti−1​到tit_iti​阶段时刻虚拟质押总额,SuserS_{user}Suser​表示用户在ti−1t_{i-1}ti−1​到tit_iti​阶段时刻的虚拟质押金额。

对应合约代码

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

矿池

Old 3pool farm

主网合约地址:TCpu3GnK6PPZV9ama85mRP97YqRuVXdcSd

SUN-TRX farm

主网合约地址:TAkrcKsS5FW9f3ZfzvWy6Zvsz9uEjUxPoV

Old USDC farm

主网合约地址:TJ3Qnm9VhzJzhcxk49ZpHBRatD1bsD4xYq

USDT-SUN V2 farm

主网合约地址:TPx8BXTgiB1tiL9A9BZuz67bZBvFGYdJS8

BTT-USDT V2 farm

主网合约地址:TEULJy4MJeRUTMPGTTvsBkmDPM4PEsMBTw

USDT-TRX farm

主网合约地址:TSRhvs1R2hoNf5PuMG4nUrDa4XVBqBaKgF

USDJ-TRX farm

主网合约地址:TGJ8LcijTaLmzBhqtp2jWQ1DRCpCWPAmD1

TUSD-TRX farm

主网合约地址:TBPEX4Bu3rc8RAvv3qTBFVvSVAFNttinqe

USDC-TRX farm

主网合约地址:TDsuMrbQ8wHrM8cKpxFczBbaxhJwpmwRHr

WBTT-TRX farm

主网合约地址:TH1XkkkPa7aF1oi7xqFYuUdXR1UvTEd4Ld

BTT-TRX farm

主网合约地址:TVjuRFx5dUn4u386DJRJS8zxgWKKcPocXo

NFT-TRX farm

主网合约地址:TViH23SgGKWfX4EHB4Q7UMeo1wgvfSvyPS

WIN-TRX farm

主网合约地址:TBd8sxVK47adcaLZgbqvN5LTUQGEpawXnx

JST-TRX farm

主网合约地址:TFw58b9t55FsmFeZHjLooS3SkMYDKXZoW7

USDT-TRX V2 farm

主网合约地址:TUnkvMyZKt4HT2qGWaMwy35c9QTmjiMCWL

NFT-USDT V2 farm

主网合约地址:TSYJHJA5rDYhaiadNXDqA6Fk6sq1yqZKwT

WIN-USDT V2 farm

主网合约地址:TEHtYRLUTGLq4Z5Pyy5C7LYZBBVVcRuvUU

JST-USDT V2 farm

主网合约地址:TKAQajxhQscgakWaokd7uNeTxwBp97xhSD

USDD-USDT V2 farm

主网合约地址:TCkNadwxyik1D66qCGmavuneowDRXPgdkL

USDD-TRX farm

主网合约地址:TCpXumigVHd2iuSkotNgkSduKqksUfpcvc

3poolnew farm

主网合约地址:THZgwb6LTg9LydbLw6gT4YMdu9y4nA5dnp

Usdd2pool farm

主网合约地址:TBSRZYLZ2pguF3EqLz86Kt9hZ4eqKEQMSY

2pool farm

主网合约地址:TFpg63byqDwniXnyxVYpSzBfWGBwZExM9J

USDD_USDT LOCK V2 farm

主网合约地址:TY1mxnpL18oDP8hsSrrxNZgUMj71pcyFS8

2pool LOCK farm

主网合约地址:TJmn1bjmNfE2F1sw2x6P224i8sFQj5mnbg

与合约交互

我们利用TronWeb与合约交互, 初始化TronWeb实例后, 就能很方便的与线上合约交互。

初始化TronWeb实例
const TronWeb = require('tronweb')
const privateKey = process.env.PRIVATE_KEY
const apiKey = process.env.API_KEY

var tronWeb = new TronWeb({
	fullHost: "https://api.trongrid.io",
	headers: { "TRON-PRO-API-KEY": apiKey },
	privateKey: privateKey,
      })
     

执行交易

查看治理奖励

  • 函数名称:claimable_tokens(address)

  • 参数:用户地址

>>> let contract = await tronWeb.getContract('TJmn1bjmNfE2F1sw2x6P224i8sFQj5mnbg')
>>> await contract.methods.claimable_tokens('TF5MekHgFz6neU7zTpX4h2tha5miPDUj3z').send()

存款

  • 函数名称:deposit(uint256)

  • 参数:存款金额

>>> let contract = await tronWeb.getContract('TJmn1bjmNfE2F1sw2x6P224i8sFQj5mnbg')
>>> await contract.methods.deposit(1000000000000000000).send()

取款

  • 函数名称:withdraw(uint256)

  • 参数:取款金额

>>> let contract = await tronWeb.getContract('TJmn1bjmNfE2F1sw2x6P224i8sFQj5mnbg')
>>> await contract.methods.withdraw(1000000000000000000).send()