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?
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_query
Anruf __callback
werden die Daten geparst und __callback
angerufen 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. __callback
anruft update(60*10)
, die keinen Wert zurückgibt , wenn der Vertrag keinen Saldo enthält .
Nick Johnson
Fabiola
Nick Johnson
Thomas Bertani
Thomas Bertani
update(60*10)
im__callback
Vertragssaldo haben, da die zweite oraclize_query mit Kosten verbunden ist .Fabiola
Tjaden Hess
eth