Annex Docs

Searchâ€¦

Annex Docs

Interpreting Exchange Rates

The aToken Exchange Rate is scaled by the difference in decimals between the aToken and the underlying asset.

1

const oneSTokenInUnderlying = exchangeRateCurrent / (1 * 10 ^ (18 + underlyingDecimals - aTokenDecimals))

Copied!

Here is an example of finding the value of 1 cBAT in BAT with Web3.js JavaScript.

1

const aTokenDecimals = 8; // all aTokens have 8 decimal places

2

const underlying = new web3.eth.Contract(erc20Abi, batAddress);

3

const aToken = new web3.eth.Contract(aTokenAbi, sUsdcAddress);

4

const underlyingDecimals = await underlying.methods.decimals().call();

5

const exchangeRateCurrent = await aToken.methods.exchangeRateCurrent().call();

6

const mantissa = 18 + parseInt(underlyingDecimals) - aTokenDecimals;

7

const oneSTokenInUnderlying = exchangeRateCurrent / Math.pow(10, mantissa);

8

console.log('1 aUSDC can be redeemed for', oneSTokenInUnderlying, 'USDC');

Copied!

There is no underlying contract for ETH, so to do this with aBNB, set

`underlyingDecimals`

to 18.To find the number of underlying tokens that can be redeemed for aTokens, multiply the number of aTokens by the above value

`oneSTokenInUnderlying`

.1

const underlyingTokens = aTokenAmount * oneSTokenInUnderlying

Copied!

Last modified 10mo ago

Copy link