Uso Geth 1.3.6 y una red de prueba Morden. Estoy tratando de probar la API de Oraclize para mis contratos inteligentes de Ethereum.
Primero, compilé e implementé los contratos inteligentes simples como DieselPricePeg.sol y PriceTicker.sol, también usando dev.oraclize.it/. No tengo ningún resultado correcto por consulta, incluso no obtengo una identificación por oraclize_query.
Uno de los dos contratos inteligentes se puede ver en el siguiente enlace: https://github.com/oraclize/ethereum-examples/blob/master/solidity/DieselPricePeg.sol
(Creo que el problema no está en el código de contrato inteligente).
¿Alguna sugerencia?
TL;DR: El contrato no tenía saldo suficiente para pagar la tarifa de Oraclize requerida después de la primera llamada a Oraclize.
Voy a explicar esta respuesta ya que nunca se explicó:
OP estaba intentando utilizar el siguiente contrato de demostración de Oraclize:
import "dev.oraclize.it/api.sol";
contract DieselPricePeg is usingOraclize {
uint public DieselPriceUSD;
function DieselPricePeg() {
oraclize_setProof(proofType_TLSNotary | proofStorage_IPFS);
update(0); // first check at contract creation
}
function __callback(bytes32 myid, string result, bytes proof) {
if (msg.sender != oraclize_cbAddress()) throw;
DieselPriceUSD = parseInt(result, 2); // let's save it as $ cents
// do something with the USD Diesel price
update(60*10); // schedule another check in 10 minutes
}
function update(uint delay) {
oraclize_query(delay, "URL", "xml(https://www.fueleconomy.gov/ws/rest/fuelprices).fuelPrices.diesel");
}
}
El constructor llama a update(0)
, que le dice oraclize_query
que devuelva el valor lo más rápido posible (simplemente inicializándolo). Cuando oraclize_query
llama __callback
, los datos se analizan y __callback
llaman update(60*10)
. La primera llamada a Oraclize desde cualquier contrato (en la constructora o no) es gratuita . Cualquier llamada adicional tiene un costo y requiere que el contrato (o cuenta) tenga un saldo. __callback
está llamando update(60*10)
, que no devolverá un valor si el contrato no lleva ningún saldo .
nick johnson
Fabiola
nick johnson
Tomas Bertani
Tomas Bertani
update(60*10)
tiene un costo .__callback
Fabiola
tjaden hess
ética