查看Aura池的奖励代币/收益

  • 选择池子,移至“Info”标签,然后在Etherscan上打开奖励合约地址“Rewards Contract Address”。

  • rewardRate 是每秒的BAL奖励产生率

  • extraRewards(N) 是额外奖励的合约地址 (AURA, BAL, ie. LDO, bb-a-USD 以外)

  • AURA会按照所累积的BAL进行按比例的铸造。

    export const getAuraMintAmount = (
      balEarned: number,
      global: Omit<Global, 'auraMinter' | 'auraMinterMinted'>,
    ) => {
      const reductionPerCliff = BigNumber.from(global.auraReductionPerCliff);
      const maxSupply = BigNumber.from(global.auraMaxSupply);
      const totalSupply = BigNumber.from(global.auraTotalSupply);
      const totalCliffs = BigNumber.from(global.auraTotalCliffs);
      const minterMinted = BigNumber.from(0);
     
      // e.g. emissionsMinted = 6e25 - 5e25 - 0 = 1e25;
      const emissionsMinted = totalSupply.sub(maxSupply).sub(minterMinted);
     
      // e.g. reductionPerCliff = 5e25 / 500 = 1e23
      // e.g. cliff = 1e25 / 1e23 = 100
      const cliff = emissionsMinted.div(reductionPerCliff);
     
      // e.g. 100 < 500
      if (cliff.lt(totalCliffs)) {
        // e.g. (new) reduction = (500 - 100) * 2.5 + 700 = 1700;
        // e.g. (new) reduction = (500 - 250) * 2.5 + 700 = 1325;
        // e.g. (new) reduction = (500 - 400) * 2.5 + 700 = 950;
        const reduction = totalCliffs.sub(cliff).mul(5).div(2).add(700);
        // e.g. (new) amount = 1e19 * 1700 / 500 =  34e18;
        // e.g. (new) amount = 1e19 * 1325 / 500 =  26.5e18;
        // e.g. (new) amount = 1e19 * 950 / 500  =  19e17;
        let amount = simpleToExact(balEarned).mul(reduction).div(totalCliffs);
     
        // e.g. amtTillMax = 5e25 - 1e25 = 4e25
        const amtTillMax = maxSupply.sub(emissionsMinted);
        if (amount.gt(amtTillMax)) {
          amount = amtTillMax;
        }
     
        return amount;
      }
     
      return BigNumber.from(0);
    };

请勿使用链上查询

在 AuraMinter.inflationProtectionTime() 过期之后,这个计算可能不再有效。

由以下连结查看 Solidity 库的实作(AuraMining): https://etherscan.io/address/0x744Be650cea753de1e69BF6BAd3c98490A855f52

最后更新于