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.

Atención: llamada a FundMe.getVersion falló: error de ejecución en VM. Revertido 0x.

¿Cómo puedo solucionar este problema?

La dirección 0x5f4e… codificada en duro en tu función getVersion() no tiene ningún contrato inteligente en la red de prueba Kovan (enlace). Aunque tiene un contrato desplegado en la red principal, estos entornos están separados.
Cuando no hay un contrato inteligente en la dirección, no hay nada que enviar como respuesta a la llamada interna. Tu código espera una respuesta uint256 de la llamada a version(), para que pueda devolverlo desde getVersion().

Cuando no recibe la respuesta esperada, lanza una excepción, revirtiendo efectivamente la llamada “principal”.

/ SPDX-License-Identifier: MIT

pragma solidity >=0.6.6 <0.9.0;

interface AggregatorV3Interface {
  function decimals()
    external view returns (
        uint8
    );

  function description()
    external view returns (
        string memory
    );

  function version()
    external view returns (
      uint256
    );

  function getRoundData(
    uint80 _roundId
  )
    external view returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  function latestRoundData()
    external view returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );
}

contract FundMe {
  mapping(address => uint256) public addressToAmountFunded;

  function fund() public payable {
    addressToAmountFunded[msg.sender] += msg.value;
    //¿Cuál es la tasa de conversión eth -- > usd?
  }

  function getVersion() public view returns (uint256) {
    AggregatorV3Interface priceFeed = AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e);
    return priceFeed.version();
  }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema es que la función getVersion() espera una respuesta de la función version() del contrato AggregatorV3Interface desplegado en la dirección 0x8A753747A1Fa494EC906cE90E9f37563A8AF630e. Sin embargo, parece que no hay ningún contrato inteligente desplegado en esa dirección en la red de prueba Kovan.

    Para solucionar el problema, debes desplegar el contrato AggregatorV3Interface en la red de prueba Kovan y obtener la dirección del contrato desplegado. Luego, actualiza la función getVersion() para utilizar la nueva dirección del contrato desplegado en la red de prueba Kovan.

    Alternativamente, si solo necesitas probar el contrato FundMe en la red de prueba Kovan y no necesitas la funcionalidad del contrato AggregatorV3Interface, puedes reemplazar la función getVersion() con una simple declaración return que devuelva un valor uint256 codificado en duro.

Comments are closed.