La API de Oracle no devuelve nada en la red de prueba de Morden

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?

Sin ver su contrato y sin más detalles sobre lo que está fallando (enlace a los ID de transacción, si puede), no hay forma de que alguien tenga suficiente información para responder.
Edité mi pregunta.
Aún debe brindarnos una descripción más detallada de lo que está haciendo, lo que sucede, lo que esperaba que sucediera, los mensajes de error que recibe (si los hay), etc. Esto puede ser útil: stackoverflow.com/help/how-to-ask
Thomas de Oracle aquí. Como han dicho otros, no está dando suficientes detalles, ¿puede revelar la dirección de ethereum en la que ha implementado su contrato? Le sugiero que venga a nuestro canal gitter para preguntas específicas de Oraclize, ya que esto sería mucho más interactivo y fácil de resolver.
Si está utilizando el contrato de ejemplo DieselPricePeg, debe comentar la línea o tener fondos suficientes en el saldo del contrato, ya que el segundo oraclize_query update(60*10)tiene un costo . __callback
Hola Tomás. En "nuestro canal gitter", encontré mi respuesta. Gracias. (Mi solución fue comentar la actualización de la línea (60*10))
Si encontró la respuesta, ¿podría publicar una respuesta con un resumen de lo que estaba mal y cómo lo arregló, para futuros interesados?
@ThomasBertani Dado que OP no ha publicado su respuesta, que suena exactamente como la suya, ¿le gustaría publicar/explicar la respuesta?

Respuestas (1)

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_queryque devuelva el valor lo más rápido posible (simplemente inicializándolo). Cuando oraclize_queryllama __callback, los datos se analizan y __callbackllaman 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. __callbackestá llamando update(60*10), que no devolverá un valor si el contrato no lleva ningún saldo .