¿Cómo ejecutar contratos con 'Oraclize' usando trufa?

Este es el código del contrato. He descargado la 'API de Oraclize' (oraclizeAPI_0.4.sol) del repositorio de github de Oraclize. He agregado este archivo a la carpeta de contratos de trufas y he cambiado el nombre del archivo a usingOraclize.sol. Y es importado en el contrato dado.

 pragma solidity ^0.4.0;

 import "./usingOraclize.sol";

 contract ApiCall is usingOraclize {

       uint public DieselPriceUSD;

       function DieselPrice() {

                OAR = OraclizeAddrResolverI(0x920cd3f7ed02c5d61e2556308d53a4d9d1e58bf2); 
       }

       function __callback(bytes32 myid, string result) {
                if (msg.sender != oraclize_cbAddress()) throw;
                       DieselPriceUSD = parseInt(result, 2); 
       }

      function update() payable {
                oraclize_query("URL", "xml(https://www.fueleconomy.gov/ws/rest/fuelprices).fuelPrices.diesel");
     }

}

He compilado y desplegado este contrato con éxito. Luego intenté llamar a los métodos disponibles usando lo siguiente.

  contract.getCall().then(console.log);

Pero devuelve el siguiente error.

Error: VM Exception while processing transaction: invalid JUMP at 7ed62a9ee27ba25842c0facef792865de53617fe32c09b7eb974a8bca5dd54c0/b8cd3e9aaf13b8823aa83f0f47f235943dac31c6:692

¿Cómo llamar a la función _callback en este contrato con los parámetros? ¿Qué significan estos parámetros en este _callback?

¿Cómo usar este _callback en index.js en truffle?

¿En qué red se implementó?
@Xavier Lepretre B9lab He usado testrpc y trufa para esto.
@Xavier Leprêtre B9lab ¿Cómo ejecutar la función _callback usando truffle? ¿No tenía idea de los parámetros pasados ​​en esta función _callback?

Respuestas (1)

Creo que tienes un problema aquí. Crees que tu constructor es function DieselPrice(), cuando en realidad no es tu constructor porque tu contrato se llama contract ApiCall.

Así que your OARes siempre nulo.

Además, las redes Ethereum de Oraclize son solo para la red de prueba y la red principal. No TestRPC por supuesto.

He corregido el constructor. Tengo que usar la función _callback en mi archivo javascript. Así que tengo que pasar los parámetros a la función _callback. ¿Cuáles son los parámetros en la función _callback?
Normalmente, Oraclize le devuelve la llamada __callback, eso es lo que hacen y por lo que les paga. ¿Por qué estás llamando __callback? ¿Es porque estás haciendo pruebas?
No tengo suficiente idea al respecto. Ahora obtuve el uso de la función _callback. Funcionó con éxito usando truffle y ethereum-bridge.