8000 UiPoolDataProvider.getReservesHumanized: numeric overflow · Issue #620 · aave/aave-utilities · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
UiPoolDataProvider.getReservesHumanized: numeric overflow #620
@klntsky

Description

@klntsky

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0