Interpreting Exchange Rates
const oneATokenInUnderlying = exchangeRateCurrent / (1 * 10 ^ (18 + underlyingDecimals - aTokenDecimals))const aTokenDecimals = 8; // all aTokens have 8 decimal places
const underlying = new web3.eth.Contract(erc20Abi, ethAddress);
const aToken = new web3.eth.Contract(aTokenAbi, aEthAddress);
const underlyingDecimals = await underlying.methods.decimals().call();
const exchangeRateCurrent = await aToken.methods.exchangeRateCurrent().call();
const mantissa = 18 + parseInt(underlyingDecimals) - aTokenDecimals;
const oneATokenInUnderlying = exchangeRateCurrent / Math.pow(10, mantissa);
console.log('1 aWETH can be redeemed for', oneATokenInUnderlying, 'WETH');const underlyingTokens = aTokenAmount * oneATokenInUnderlyingLast updated