es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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)
Tags:  , ,

Answer

  1. Avatar for 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:

    1. Verifica que la dirección del contrato y la ABI sean correctas al crear el objeto erc20.
    2. Asegúrate de que la función greet() esté definida correctamente en el contrato y se haya desplegado exitosamente.

    3. Verifica si se requieren inputs para la función greet() y si se están suministrando correctamente al llamar la función.

    4. 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.

Comments are closed.