Después de la implementación del contrato, se obtiene el error: "Excepción de máquina virtual al procesar la transacción: revertir"

tengo un contrato simple

pragma solidity ^0.4.4;

contract Main {

function getValue() constant returns (bool){
  return true;
 }
}

Solo necesito crear una interfaz web que pueda obtener este valor para mí.

Desempaqué el paquete web en un repositorio vacío , eliminé >truffle unbox webpacklos contratos anteriores, cambié los archivos index.html y app.js , cambié 2_deploy_contracts.js en consecuencia, pero el error que recibo en la consola del navegador es:

Error no capturado (en promesa): Excepción de máquina virtual al procesar la transacción: revertir

Aquí está mi archivo index.html y app.js.

 <html>

   <head>
     <title>Truffle 3 Frontend Demo</title>
   </head>
   <body>
   </body>


   <script src="./app.js"></script>
   <script src="../node_modules/web3/dist/web3.js" type="text/javascript">       </script>
   <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" type="text/javascript"</script>
</html>

y mi archivo app.js es

import { default as Web3 } from 'web3'
import { default as contract } from 'truffle-contract'
import Main_artifact from '../../build/contracts/Main.json'

const TESTRPC_HOST = 'localhost'
const TESTRPC_PORT = '8545'

function component () {
  var element = document.createElement('div')
  console.error("hi");
  let provider = new Web3.providers.HttpProvider(`http://${TESTRPC_HOST}:${TESTRPC_PORT}`)
  let main = contract(Main_artifact)
  main.setProvider(provider)

  main.deployed().then(function(instance) {
      console.log(instance);

    var s = instance.getValue(); //instance.getValue.call() doesnt work either
    return s;
}).then(function(result){
    element.innerHTML = `value: ${result}`
    console.log(result)
});


  return element
}

document.body.appendChild(component());

Respuestas (1)

Creo que el problema es la constantpalabra clave en su función.

Según este problema en el repositorio de solidez:

la palabra clave constantno es válida en las funciones

Intente eliminar eso y volver a implementar el contrato.

Perdón por regresar tan tarde, lo eliminé y aún recibí un error, actualicé mi truffle a 4.0.4 desde 4.0.1 y sorprendentemente funcionó. No sé si trufa lo hizo o eliminó la palabra clave, pero funcionó. Gracias por ayudar.