# 池(Api3Pool.sol)

Table of Contents

API3池合约是API3代币持有者可以将他们的代币质押以获得DAO的投票权。 质押者获得API3代币的奖励,并可以选择将他们的投票权委托给另一个用户。

::: 提示

DAO池合约也将被用来从DAO池中支付保险索赔。 这个功能到目前为止还没有实现。

:::

查看 API3Pool.sol (opens new window) 合约代码,以了解合约的遗传结构。

  • TimelockUtils.sol
  • ClaimUtils.sol
  • StakeUtils.sol
  • TransferUtils.sol
  • DelegationUtils.sol
  • RewardUtils.sol
  • Getterutils.sol
  • StateUtils.sol

# 关键函数

# 存入、质押、解除质押和提币

签名 描述
depositRegular(uint256 amount) 将您的 API3 代币存入池中。 代币必须先存入才能质押。
stake(uint256 amount) 质押存入的API3代币。 质押的代币将获得奖励,授予投票权(如果在池子中有尚未执行的claim,则投票权可能会被取消)。
depositAndStake(address source, uint256 amount) 在一个交易中存入并质押API3代币。
scheduleUnstake(uint256 shares) 计划解除质押的代币。 为了解除API3代币的质押,成员必须先操作解除质押,并在代币解锁前等待预定的时间(目前是1周时间)。 操作解除质押的代币不再授予投票权或获得奖励。
unstake(address userAddress) returns(uint256) API3代币解锁后,允许它们从池中提币(解锁和提币是不同的步骤)。 只有在操作解除质押并等待预定的时间后才能调用。
withdrawRegular(uint256 amount) 从池合约中取出您的 API3 代币。
unstakeAndWithdraw(address destination) 在一个交易中解锁并提币。

# 时间锁

签名 描述
function deposit(address source, uint256 amount, address userAddress) 只能由 Timelock Manager 合约来调用。 为用户存入代币。
function depositWithVesting(address source, uint256 amount, address userAddress, uint256 releaseStart, uint256 releaseEnd) 只能由 Timelock Manager 合约来调用。 为用户按归属时间表存入代币。 这些存入的代币在归属之前不能被用户提取,但它们_可以_ 被质押。
function updateTimelockStatus(address userAddress, address timelockManagerAddress) 根据Timelock Manager合约中的时间表,更新用户存入的归属代币的归属状态(比如 解锁的代币)。

# 投票权

签名 描述
userVotingPowerAt(address userAddress, uint256 _block) 返回用户当前的投票能量(如果他们已经被委托投票权,0)。
delegateVotingPower(address delegate) 将一个成员的投票权委托转让给另一个地址,这是由他们在质押池中的份额决定的。 在转让到新地址之前,无需取消投票权。
undelegateVotingPower() 取消委托成员的投票权。

# 其他

签名 描述
mintReward() 将新的 API3 代币分发到质押池中,成员们可以在质押池中根据自己的份额解除质押和提币
payOutClaim(address recipient, uint256 amount) 仅可由经批准的claims manager合约才能调用的特殊功能,直接从质押池中支付索偿(claim)要求。
Last Updated: 5/9/2022, 3:28:29 PM