Aura 풀에 대한 보상 토큰/보상 보기
풀을 선택하고 정보 탭으로 이동하여 이더스캔에서 Rewards Contract Address를 엽니다.
Screenshot 2022-11-01 at 10.53.01.png rewardRate
는 초당 생성되는 BAL 보상 비율입니다.extraRewards(N)
는 추가 보상을 위한 컨트랙트,주소입니다 (AURA, BAL, ie. LDO, bb-a-USD 제외)AURA는 누적된 BAL에 비례하여 발행됩니다.
BAL당 방출되는 AURA의 양을 결정하는 공식은 여기에서 확인할 수 있습니다: https://etherscan.io/token/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF#code#F1#L85
차트는 여기에서 확인할 수 있습니다: https://docs.google.com/spreadsheets/d/16VSvgp-ejkra03ykyh-2nlxeCMEDvBZ-LFjuaQo6Ym8/
TypeScript 구현은 여기에서 확인할 수 있습니다:
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); };
솔리디티 라이브러리 구현은 여기에서 확인할 수 있습니다 (AuraMining): https://etherscan.io/address/0x744Be650cea753de1e69BF6BAd3c98490A855f52
Last updated