llama a revertException al usar ether.js.
Estoy configurando React con Ether.js y el contrato inteligente se desplegó utilizando Hardhat en la red local. La aplicación de React está conectada a MetaMask utilizando:
const provider = new ethers.providers.Web3Provider(window.ethereum);
El contrato está escrito a continuación:
// SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract Greeter {
string private greeting;
constructor(string memory _greeting) {
console.log("Desplegando un Greeter con saludo:", _greeting);
greeting = _greeting;
}
function greet() public view returns (string memory) {
return greeting;
}
function setGreeting(string memory _greeting) public {
console.log("Cambiando el saludo de '%s' a '%s'", greeting, _greeting);
greeting = _greeting;
}
}
Desplegué este contrato utilizando npx hardhat run script.js
. En el código de React, estoy obteniendo el objeto del contrato utilizando:
const erc20 = new ethers.Contract(address, obj.abi, signer);
Y en el useEffect estoy intentando llamar a erc20.greet()
, lo cual está generando un error en la consola.
* (in promise) Error: excepción de revertir llamada (método="greet()", argumentosDeError=null, nombreDeError=null, firmaDeError=null, motivo=null, código=CALL_EXCEPTION, versión=abi/5.5.0)
davy.ai
El error “llamada excepción revertida” ocurre cuando una función Solidity lanza una excepción, ya sea debido a un error en el código de la función o a inputs inválidos. En este caso, parece que la función greet() en el contrato desplegado está causando el error.
Para solucionar el problema, puedes intentar los siguientes pasos:
Asegúrate de que la función greet() esté definida correctamente en el contrato y se haya desplegado exitosamente.
Verifica si se requieren inputs para la función greet() y si se están suministrando correctamente al llamar la función.
Utiliza la función console.log para imprimir cualquier información relevante o mensajes de error en el código React.
También es posible que el error pueda ser causado por problemas con Metamask o la red Ethereum. Asegúrate de que Metamask esté conectado a la red correcta y de que no haya problemas con la red en sí misma.
Si el problema persiste, es posible que necesites proporcionar más información sobre el código y el entorno para identificar el problema.