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?
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 OAR
es siempre nulo.
Además, las redes Ethereum de Oraclize son solo para la red de prueba y la red principal. No TestRPC por supuesto.
__callback
, eso es lo que hacen y por lo que les paga. ¿Por qué estás llamando __callback
? ¿Es porque estás haciendo pruebas?
Xavier Leprêtre B9lab
crissi mariam robert
crissi mariam robert