ANN Distribution Speeds
The "ANN speed" unique to each market is an unsigned integer that specifies the amount of ANN that is distributed, per block, to suppliers and borrowers in each market. This number can be changed for individual markets by calling the
_setAnnexSpeed
method through a successful Annex Governance proposal.The following is the formula for calculating the rate that ANN is distributed to each supported market.
utility = aTokenTotalBorrows * assetPrice
utilityFraction = utility / sumOfAllAnnexdMarketUtilities
marketAnnexSpeed = annexRate * utilityFraction
The Comptroller contract’s
annexRate
is an unsigned integer that indicates the rate at which the protocol distributes ANN to markets’ suppliers or borrowers, every Ethereum block. The value is the amount of ANN (in wei), per block, allocated for the markets. Note that not every market has ANN distributed to its participants (see Market Metadata).The annexRate indicates how much ANN goes to the suppliers or borrowers, so doubling this number shows how much ANN goes to all suppliers and borrowers combined. The code examples implement reading the amount of ANN distributed, per Ethereum block, to all markets.
Comptroller
uint public annexRate;
Solidity
Comptroller troll = Comptroller(0xABCD...);
// ANN issued per block to suppliers OR borrowers * (1 * 10 ^ 18)
uint annexRate = troll.annexRate();
// Approximate ANN issued per day to suppliers OR borrowers * (1 * 10 ^ 18)
uint annexRatePerDay = annexRate * 4 * 60 * 24;
// Approximate ANN issued per day to suppliers AND borrowers * (1 * 10 ^ 18)
uint annexRatePerDayTotal = annexRatePerDay * 2;
Web3 1.2.6
const comptroller = new web3.eth.Contract(comptrollerAbi, comptrollerAddress);
let annexRate = await comptroller.methods.annexRate().call();
annexRate = annexRate / 1e18;
// ANN issued to suppliers OR borrowers
const annexRatePerDay = annexRate * 4 * 60 * 24;
// ANN issued to suppliers AND borrowers
const annexRatePerDayTotal = annexRatePerDay * 2;
The Comptroller contract has a mapping called
annexSpeeds
. It maps aToken addresses to an integer of each market’s ANN distribution per Ethereum block. The integer indicates the rate at which the protocol distributes ANN to markets’ suppliers or borrowers. The value is the amount of ANN (in wei), per block, allocated for the market. Note that not every market has ANN distributed to its participants (see Market Metadata).The speed indicates how much ANN goes to the suppliers or the borrowers, so doubling this number shows how much ANN goes to market suppliers and borrowers combined. The code examples implement reading the amount of ANN distributed, per Ethereum block, to a single market.
Comptroller
mapping(address => uint) public annexSpeeds;
Solidity
Comptroller troll = Comptroller(0x123...);
address aToken = 0xabc...;
// ANN issued per block to suppliers OR borrowers * (1 * 10 ^ 18)
uint annexSpeed = troll.annexSpeeds(aToken);
// Approximate ANN issued per day to suppliers OR borrowers * (1 * 10 ^ 18)
uint annexSpeedPerDay = annexSpeed * 4 * 60 * 24;
// Approximate ANN issued per day to suppliers AND borrowers * (1 * 10 ^ 18)
uint annexSpeedPerDayTotal = annexSpeedPerDay * 2;
Web3 1.2.6
const aTokenAddress = '0xabc...';
const comptroller = new web3.eth.Contract(comptrollerAbi, comptrollerAddress);
let annexSpeed = await comptroller.methods.annexSpeeds(aTokenAddress).call();
annexSpeed = annexSpeed / 1e18;
// ANN issued to suppliers OR borrowers
const annexSpeedPerDay = annexSpeed * 4 * 60 * 24;
// ANN issued to suppliers AND borrowers
const annexSpeedPerDayTotal = annexSpeedPerDay * 2;
Last modified 1yr ago