Skip to content

UiPoolDataProvider.getReservesHumanized: numeric overflow #620

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
klntsky opened this issue Feb 17, 2025 · 0 comments · May be fixed by #621
Open

UiPoolDataProvider.getReservesHumanized: numeric overflow #620

klntsky opened this issue Feb 17, 2025 · 0 comments · May be fixed by #621

Comments

@klntsky
Copy link

klntsky commented Feb 17, 2025

Bug Report

Package name / version

    "@aave/contract-helpers": "^1.32.1",
    "@aave/math-utils": "^1.32.1",

Description

getReservesData works, but getReservesHumanized fails with:

Error: overflow [ See: https://links.ethers.org/v5-errors-NUMERIC_FAULT-overflow ] (fault="overflow", operation="toNumber", value="20000000000000000000000000", code=NUMERIC_FAULT, version=bignumber/5.7.0)
    at Logger.Logger.makeError (/home/me/c/onchain-actions/node_modules/@ethersproject/logger/src.ts/index.ts:269:28)
    at Logger.Logger.throwError (/home/me/c/onchain-actions/node_modules/@ethersproject/logger/src.ts/index.ts:281:20)
    at throwFault (/home/me/c/onchain-actions/node_modules/@ethersproject/bignumber/src.ts/bignumber.ts:356:19)
    at BigNumber.BigNumber.toNumber (/home/me/c/onchain-actions/node_modules/@ethersproject/bignumber/src.ts/bignumber.ts:186:13)
    at <anonymous> (/home/me/c/onchain-actions/node_modules/@aave/contract-helpers/src/v3-UiPoolDataProvider-contract/index.ts:187:63)
    at Array.map (<anonymous>)
    at UiPoolDataProvider.getReservesHumanized (/home/me/c/onchain-actions/node_modules/@aave/contract-helpers/src/v3-UiPoolDataProvider-contract/index.ts:134:62)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async getPools (/home/me/c/onchain-actions/test/adapters/aave/index.ts:32:28)
    at async <anonymous> (/home/me/c/onchain-actions/test/adapters/aave/index.ts:45:13) {
  reason: 'overflow',
  code: 'NUMERIC_FAULT',
  fault: 'overflow',
  operation: 'toNumber',
  value: '20000000000000000000000000'
}

Steps to reproduce

Here's the complete reproducible example:

import { ethers } from 'ethers';
import {
  UiPoolDataProvider,
  ReserveDataHumanized,
} from '@aave/contract-helpers';

// sepolia setup
// https://search.onaave.com/?q=sepoloa
const sepolia_rpc = 'https://sepolia.drpc.org'
const sepolia_chain_id = 11155111;
const poolAddressesProvider = '0x012bAC54348C0E635dCAc9D5FB99f06F24136C9A'
const uiPoolDataProvider = '0x69529987FA4A075D0C00B0128fa848dc9ebbE9CE'

function getProvider() {
  return new ethers.providers.JsonRpcProvider(sepolia_rpc);
}

function getPoolDataProvider() {
  const provider = getProvider();
  return new UiPoolDataProvider({
    uiPoolDataProviderAddress: uiPoolDataProvider,
    provider,
    chainId: sepolia_chain_id,
  });
}


async function getPools(assets?: string[]): Promise<ReserveDataHumanized[]> {
  const poolDataProvider = getPoolDataProvider();
  const reservesResponse = await poolDataProvider.getReservesHumanized({
    lendingPoolAddressProvider: poolAddressesProvider,
  });
  let reserves = reservesResponse.reservesData;
  if (assets && assets.length > 0) {
    const normalizedAssets = assets.map(a => ethers.utils.getAddress(a));
    reserves = reserves.filter((r: any) =>
      normalizedAssets.includes(r.underlyingAsset)
    );
  }
  return reserves;
}

console.log(await getPools());

Specifically, it fails here:

          unbacked: reserveRaw.unbacked.toString(),
          isolationModeTotalDebt: reserveRaw.isolationModeTotalDebt.toString(),
 >       debtCeilingDecimals: reserveRaw.debtCeilingDecimals.toNumber(),
          isSiloedBorrowing: reserveRaw.isSiloedBorrowing,
          flashLoanEnabled: reserveRaw.flashLoanEnabled,

Expected behavior

There is no overflow. I checked very carefully if it is the same problem as #431, but it seems that it is not

Environment

  • OS: Linux
  • Node/npm version: node 22.13.1
klntsky added a commit to klntsky/aave-utilities that referenced this issue Feb 17, 2025
Prevents numeric overflow by representing the number as string
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant