流动性挖矿

当前 DODO 平台下的流动性挖矿合约,包括两种版本实现。下面将会介绍相应的合约接口,以及在各个网络下进行的挖矿项目

DODOMineV1

第一版的挖矿合约,可以灵活添加删除质押代币,通过设置各个质押代币的权重,划分整体的 DODO 代币奖励,同时第一版合约主要是针对 DODO V1 类型的池子,对单币提供流动性的 LP,进行 DODO 代币奖励。
合约主要的写操作接口,包括质押 deposit, 提取 withdraw && withdrawAll, 提取奖励 claim && claimAll
对于质押函数 deposit,需要传入质押代币的地址,以及用户质押的数量。在调用前,需要确保用户的质押代币授权给挖矿合约,挖矿合约内部通过 transferFrom 方法将用户账户的质押代币转移至挖矿合约中。同时调用 deposit, 合约也会将用户当前已获得奖励自动提取并转移至用户账户内
function deposit(address _lpToken, uint256 _amount) public;
对于提取功能,合约包括两种实现方法 withdraw && withdrawAll。对于 withdraw 函数来说,需要传入提取的代币地址,以及指定提取的代币数量,而对于 withdrawAll 函数,只需要传入提取的代币地址即可,合约内部会将当前用户质押的全部代币提取至其账户下。同时,调用这两个函数,合约也会将用户当前已获得的奖励自动提取并转移至其账户内
function withdraw(address _lpToken, uint256 _amount) public;
function withdrawAll(address _lpToken) public;
对于提取奖励函数 claim && claimAll。前者需要传入提取奖励代币所对应的质押代币地址。而后者会将当前用户所参加的全部挖矿奖励提取出来,但该函数会消耗更多的 gas,请谨慎使用
function claim(address _lpToken) public;
function claimAll() public;
第一版挖矿合约还涉及到一些读函数,包括:
获取用户质押的代币数量函数 getUserLpBalance, 需要传入质押的代币地址以及用户地址
function getUserLpBalance(
address _lpToken,
address _user
) public view returns (uint256);
获取当前用户的奖励代币数量 getPendingReward && getAllPendingReward, 前者需要传入质押的代币地址以及用户地址,获取当前质押对应的用户奖励数量。后者只需要传入用户地址,返回当前用户参与的所有挖矿项目的代币奖励总和
function getPendingReward(address _lpToken, address _user) external view returns (uint256);
function getAllPendingReward(address _user) external view returns (uint256);
  • 需要注意:当前第一版的挖矿活动,奖励调整会较为灵活,并非不可修改 *
当前第一版合约进行的挖矿项目
流动性池
奖励(DODO/区块)
0.25
0.5
2.2
流动性池
奖励(DODO/区块)
0.44
0.1
流动性池
奖励(DODO/区块)
0.2
0.5
流动性池
奖励(DODO/区块)
0.32
流动性池
奖励(DODO/区块)
0.3
流动性池
奖励(WMOVR/区块)
0.0015

DODOMineV2

第二版挖矿合约,一个质押代币对应一个合约,并支持多挖。
合约主要的写操作接口,包括质押 deposit, 提取 withdraw, 提取挖矿奖励 claimReward && claimAllRewards
对于质押函数 deposit, 传入的参数为质押的代币数量,同时保证在质押前,用户的代币授权给当前挖矿合约,挖矿合约内部通过调用 transferFrom 函数将用户质押代币转移至挖矿合约内
function deposit(uint256 amount) external
对于提取质押代币函数 withdraw,传入提取的质押代币数量
function withdraw(uint256 amount) external
对于提取挖矿奖励函数 claimReward && claimAllRewards, 前者需要传入奖励代币对应的序号,只提取相应的奖励代币;后者会将多挖下的全部奖励代币提取出来
function claimReward(uint256 i) publicfunction claimAllRewards() external
第二版挖矿合约还涉及到一些读函数,包括:
获取用户未领取的奖励代币数量 getPendingReward && getPendingRewardByToken, 前者需要传入用户地址以及对应的奖励代币序号,后者传入用户地址以及奖励代币地址
function getPendingReward(address user, uint256 i) public view returns (uint256);
function getPendingRewardByToken(address user, address rewardToken) external view returns (uint256);
需要注意:当前第二版的挖矿活动,奖励调整会较为灵活,并非不可修改
当前第二版合约进行的挖矿项目
ETH
  • 质押代币 DAI-USDT DLP (0x3058ef90929cb8180174d74c507176cca6835d73)
  • 挖矿合约 0x1A4F8705E1C0428D020e1558A371b7E6134455A2
  • 奖励代币 DODO (每区块 1.25)
BSC
  • 质押代币 DODO-BNB DLP (0xd534fae679f7f02364d177e9d44f1d15963c0dd7)
  • 挖矿合约 0x322B43e406D1B4Df9Bc36d058317Dd1cd3b0385F
  • 奖励代币 DODO (每区块 0.3)
Arbitrum One
  • 质押代币 DODO-USDC DLP (0x6a58c68ff5c4e4d90eb6561449cc74a64f818da5)
  • 挖矿合约 0x38Dbb42C4972116c88E27edFacD2451cf1b14255
  • 奖励代币 DODO (每区块 0.15)
Aurora
  • 质押代币 DODO-USDC DLP (0xc7689e5315a8b237ac7ab62119df299dd8c4b6d5)
  • 挖矿合约 0x10353A2e2EeAE8369c685526FC724137002BBDF9
  • 奖励代币 DODO (每区块 0.02)
  • 奖励代币 NEAR (每区块 0.003)

Polygon

  • 质押代币 DODO-USDT DLP (0x581c7DB44F2616781C86C331d31c1F09db87A746)
  • 挖矿合约 0x738aba1389C5e37d24b5B669F07CBEa594c733E4
  • 奖励代币 DODO (每个区块 0.05)

Moonriver

  • 质押代币 DODO-USDC DLP (0x558a4aD0480840206012CE866c24eEF62BD11f82)
  • 挖矿合约 0x93AEa1647717cdc39D0dB4913C568421b60212eb
  • 奖励代币 WMOVR (每个区块 0.001)
  • 质押代币 WMOVR-USDC DLP (0x05D7c97bb346bd9f7DBE777096DDe6d9D040f63c)
  • 挖矿合约 0x8C50536225939B2619b722E1C304D04Ffe046B00
  • 奖励代币 DODO (每个区块 0.25)
  • 质押代币 ETH-WMOVR DLP (0xF5cEc162c7266f6C819AE14d2d1E01D327aBc01B)
  • 挖矿合约 0x470df91B14637b5afA3a3d54868f125D29673463
  • 奖励代币 DODO (每个区块 0.25)