diff --git a/app/lib/apy-calculations.ts b/app/lib/apy-calculations.ts index 4f1675a..a5480b0 100644 --- a/app/lib/apy-calculations.ts +++ b/app/lib/apy-calculations.ts @@ -1,4 +1,4 @@ -import { ethers } from "ethers"; +import { BigNumber, ethers } from "ethers"; import sampleCTokenAbi from "~/config/sample-ctoken-abi"; import { Token, cToken } from "~/types/global"; import { JsonRpcSigner } from "@ethersproject/providers"; @@ -12,18 +12,21 @@ function formatApy(apy: number): string { function calculateApy( underlyingAssetMantissa: number, ratePerBlock: number -): number { - const blocksPerDay = 6570; // 13.15 seconds per block - const daysPerYear = 365; - - const apy = - (Math.pow( - (ratePerBlock / underlyingAssetMantissa) * blocksPerDay + 1, - daysPerYear - ) - - 1) * - 100; +): BigNumber { + const blocksPerDay: BigNumber = BigNumber.from(6570); // 13.15 seconds per block + const daysPerYear = BigNumber.from(365); + const ratePerBlock2: BigNumber = BigNumber.from(ratePerBlock); + const underlyingAssetMantissa2: BigNumber = BigNumber.from( + underlyingAssetMantissa + ); + + const r = ratePerBlock2 + .div(underlyingAssetMantissa2) + .mul(blocksPerDay) + .add(1); + const apy = r.pow(daysPerYear); + // @ts-ignore return apy; } diff --git a/package-lock.json b/package-lock.json index 93bf6dd..e4350c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -435,9 +435,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.7.tgz", - "integrity": "sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -10578,9 +10578,9 @@ } }, "@babel/runtime": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.7.tgz", - "integrity": "sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA==", + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.8.tgz", + "integrity": "sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==", "requires": { "regenerator-runtime": "^0.13.4" }