Estoy intentando usar un método de contrato en la red de prueba (ropsten), pero falla debido a este error:
razón: 'no se puede estimar el gas; la transacción puede fallar o puede requerir un límite de gas manual', código: 'UNPREDICTABLE_GAS_LIMIT'
Creé una instancia del contrato inteligente y quería llamarlo método de registro:
const registrationContract = new ethers.Contract(ADDRESS, abi, signer); const hashedDomain = utils.keccak256(utils.toUtf8Bytes(domain)); const register = await registrationContract.register(hashedDomain, walletAddress);¿ Ethers.js proporciona una función para establecer el límite en el contrato? ¿O se puede hacer esto de otra manera? No encontré uno en la documentación .
Puede establecer el límite de gas con un objeto como último argumento, para una transacción de transferencia simple, podría hacer algo como esto:
const tx = { to: toAddress, value: ethers.utils.parseEther(value), gasLimit: 50000, nonce: nonce || undefined, }; await signer.sendTransaction(tx);Si está realizando una transacción a un contrato inteligente, la idea es la misma, pero asegúrese de configurar el último parámetro en uno de sus métodos abi, por ejemplo:
const tx = await contract.safeTransferFrom(from, to, tokenId, amount, [], { gasLimit: 100000, nonce: nonce || undefined, });Esto puede corregir el error UNPREDICTABLE_GAS_LIMIT, ya que al informarlo manualmente, los éteres saltan una llamada al método rpc al proveedor que solicita el gas_limit calculado.