DODO 文档中心

⛏ 流动性挖矿

DODO平台上的当前流动性挖矿合约包括两个版本的实现。以下将描述相应的合约接口,以及在每个网络下执行的挖矿项目。

DODOMineV1 #

挖矿合约的第一个版本可以灵活地添加和移除质押代币,并通过设置每个质押代币的权重来划分总的DODO代币奖励。此版本主要用于DODO V1标准池,该池为单个代币提供流动性,并分发DODO代币奖励。

写函数#

合约的主要写函数包括以下内容:用于质押的deposit,用于提取令牌的 withdrawwithdrawAll,以及用于提取奖励的 claimclaimAll

deposit#

质押功能 deposit 需要传入要质押的代币地址以及用户要质押的代币数量。在调用之前,请确保用户的质押代币已经被授权给挖矿合约,并且挖矿合约通过 transferFrom 方法从用户的账户中将质押代币内部转移至挖矿合约。当调用 deposit 时,合约还会自动提取并转移用户当前获得的奖励到用户的账户。

function deposit(address _lpToken, uint256 _amount) public;

withdraw 和 withdrawAll#

对于提取代币,合约提供了两种方法 withdrawwithdrawAll。 对于 withdraw 函数,您需要传入代币地址并指定要提取的代币数量。 对于 withdrawAll 函数,您只需要传入要提取的代币地址,合约将提取当前用户质押的所有代币到其账户中。 此外,通过调用这两个函数之一,合约将自动提取并将当前奖励转移至用户的账户。

function withdraw(address _lpToken, uint256 _amount) public;

function withdrawAll(address _lpToken) public;

claim 和 claimAll#

对于奖励提取,合约提供了函数 claimclaimAll。前者需要传入提取奖励代币的质押代币地址。后者会提取当前用户参与的所有挖矿项目的挖矿奖励。

请注意,claimAll 函数会消耗更多的燃气,请谨慎使用。

function claim(address _lpToken) public;

Solifunction claimAll() public;

读函数#

挖矿合约的第一个版本还涉及一些读函数,包括以下内容。

getUserLpBalance#

函数 getUserLpBalance 获取用户质押的代币数量,需要传入质押代币地址和用户地址。

function getUserLpBalance(
    address _lpToken, 
    address _user
) public view returns (uint256);

getPendingReward 和 getAllPendingReward#

这些函数返回当前用户所拥有的未领取奖励代币的数量。对于 getPendingReward,您需要传入质押代币地址和用户地址,以获取指定质押资产对应的用户奖励数量。 要运行 getAllPendingReward,您只需要传入用户的地址,函数将返回当前用户参与的所有挖矿项目的奖励代币总数。

function getPendingReward(address _lpToken, address _user) external view returns (uint256);

function getAllPendingReward(address _user) external view returns (uint256);

注意:在当前 V1 版本的挖矿活动中,奖励的调整更加灵活和可修改

当前使用 DODOMineV1 的挖矿项目#

质押代币流动性池权重
USDT DLPUSDT - USDC200
USDC DLPUSDT - USDC200