Soy nuevo en el trabajo con blockchain y tengo problemas para obtener el contrato de Uniswap. He estado siguiendo sus documentos en V3 pero no puedo superar este error "abi.map no es una función". Cuando envío el ABI a la consola, parece que recupero el ABI correctamente, pero cuando trato de usarlo para inicializar el contrato, aparece este error.
import { ethers } from 'ethers' const ABI = require('@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json') console.log(ABI) const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/Your Address Here;p') const poolAddress = '0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8' const poolContract = new ethers.Contract(poolAddress, ABI, provider) interface Immutables { factory: string token0: string token1: string fee: number tickSpacing: number maxLiquidityPerTick: number } async function getPoolImmutables() { const [factory, token0, token1, fee, tickSpacing, maxLiquidityPerTick] = await Promise.all([ poolContract.factory(), poolContract.token0(), poolContract.token1(), poolContract.fee(), poolContract.tickSpacing(), poolContract.maxLiquidityPerTick(), ]) const immutables: Immutables = { factory, token0, token1, fee, tickSpacing, maxLiquidityPerTick, } return immutables } getPoolImmutables().then((result) => { console.log(result) })Este error desaparecerá si elimina todo en el abi hasta el primer corchete después de "abi". Entonces, para IUniswapV3Pool.json, en lugar de:
{ "_format": "hh-sol-artifact-1", "contractName": "IUniswapV3Pool", "sourceName": "contracts/interfaces/IUniswapV3Pool.sol", "abi": [ { "anonymous": false, "inputs": [ ...Debería ser:
[ { "anonymous": false, "inputs": [Y no olvide eliminar todo hasta el último corchete al final del archivo también.