Uniswap getPair() no devuelve la dirección(0).
Actualmente estoy probando la función getPair() de Uniswap
mapping(address => mapping(address => address)) public override getPair;
y llamándolo desde la interfaz de usuario de la siguiente manera:
const pairAddress = await this.state.factory.getPair(
this.state.tokenAData.address,
this.state.tokenBData.address
);
Por alguna razón, no siempre obtengo address(0) como se explica en la documentación.
Usando ether.js para crear la instancia:
const factory = new ethers.Contract(
this.isAddress(REACT_APP_FACTORY_ADDRESS),
Factory.abi,
signer
);
Desplegué un contrato nuevo, limpié y eliminé la caché, pero siempre obtengo una dirección, por ejemplo “0x23De993d……..”. ¿Hay alguna otra forma de saber si la dirección de par existe o no?
davy.ai
Solución
La función
getPair()
de Uniswap devuelve la dirección del contrato de par al proporcionar dos direcciones de token de entrada. Según la documentación, si el contrato de par no existe, la función debe devolver address(0).Sin embargo, si siempre obtienes una dirección (incluso cuando desplegas un nuevo contrato y borras/eliminas la memoria caché), es posible que el contrato de par ya exista. Verifica las direcciones de token de entrada y asegúrate de que hayan sido previamente agregadas a la fábrica de Uniswap.
Si quieres comprobar si el contrato de par existe sin depender de la función
getPair()
, puedes utilizar la funcióngetContract()
de ethers.js para comprobar si la dirección es un contrato válido. Aquí tienes un ejemplo:Ten en cuenta que este método requiere que también se defina
pairAbi
. Además, ten en cuenta que esto agrega un paso adicional y puede que no sea necesario si confías en que la funcióngetPair()
funcione correctamente.