Oraclize-API gibt im Morden-Testnetz nichts zurück

Ich verwende Geth 1.3.6 und ein Morden-Testnetz. Ich versuche, die Oraclize-API für meine Ethereum Smart Contracts zu testen.

Zuerst habe ich die einfachen Smart Contracts als DieselPricePeg.sol und PriceTicker.sol kompiliert und bereitgestellt, ebenfalls unter Verwendung von dev.oraclize.it/. Ich habe keine korrekte Ausgabe per Abfrage, auch wenn ich keine ID von oraclize_query bekomme.

Einer der beiden Smart Contracts ist unter folgendem Link sichtbar: https://github.com/oraclize/ethereum-examples/blob/master/solidity/DieselPricePeg.sol

(Ich denke, dass das Problem nicht im Code von Smart Contract liegt.)

Irgendwelche Vorschläge?

Ohne Ihren Vertrag zu sehen und ohne weitere Details darüber, was schief läuft (Link zu Transaktions-IDs, wenn Sie können), wird niemand genügend Informationen haben, um darauf zu antworten.
Ich habe meine Frage bearbeitet.
Sie müssen uns immer noch eine detailliertere Beschreibung dessen geben, was Sie tun, was passiert, was Sie erwartet haben, welche Fehlermeldungen Sie erhalten (falls vorhanden) und so weiter. Dies kann hilfreich sein: stackoverflow.com/help/how-to-ask
Thomas von Oraclize hier. Wie andere gesagt haben, geben Sie nicht genügend Details an. Können Sie die Ethereum-Adresse angeben, an die Sie Ihren Vertrag geliefert haben? Ich würde Ihnen vorschlagen, für Oraclize-spezifische Fragen zu unserem Gitter-Kanal zu kommen, da dies viel interaktiver und einfacher zu klären wäre.
Wenn Sie den Beispielvertrag DieselPricePeg verwenden, müssen Sie entweder die Zeile kommentieren oder genügend Guthaben update(60*10)im __callbackVertragssaldo haben, da die zweite oraclize_query mit Kosten verbunden ist .
Hallo Thomas. In "unserem Gitterkanal" fand ich meine Antwort. Vielen Dank. (Meine Lösung war, die Zeilenaktualisierung (60 * 10) zu kommentieren.)
Wenn Sie die Antwort gefunden haben, könnten Sie eine Antwort mit einer Zusammenfassung darüber posten, was falsch war und wie Sie es behoben haben, für zukünftige Fragesteller?
@ThomasBertani Da OP seine Antwort nicht gepostet hat, die genau wie Ihre klingt, möchten Sie die Antwort posten/erklären?

Antworten (1)

TL;DR: Der Vertrag hatte nicht genug Guthaben, um die Oraclize-Gebühr zu zahlen, die nach dem ersten Anruf bei Oraclize erforderlich war.

Ich werde diese Antwort erklären, da sie nie erklärt wurde:

OP hat versucht, den folgenden Oraclize-Demovertrag zu verwenden:

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");
    }

}

Der Konstruktor ruft auf update(0), der angibt oraclize_query, den Wert so schnell wie möglich zurückzugeben (es wird nur initialisiert). Beim oraclize_queryAnruf __callbackwerden die Daten geparst und __callbackangerufen update(60*10). Der erste Aufruf von Oraclize aus einem beliebigen Vertrag (im Konstruktor oder nicht) ist kostenlos . Alle weiteren Anrufe sind kostenpflichtig und erfordern, dass der Vertrag (oder das Konto) ein Guthaben aufweist. __callbackanruft update(60*10), die keinen Wert zurückgibt , wenn der Vertrag keinen Saldo enthält .