Ich habe angefangen, das Programmieren in Solidity zu lernen, und ich habe den folgenden Vertrag unter Verwendung der offiziellen Oraclize-Richtlinien geschrieben.
Wie muss ich meinen Code konfigurieren, um dieses Ergebnis zu erzielen?
pragma solidity ^0.4.18;
import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";
contract WolframAlpha is usingOraclize {
string public temperature;
mapping(bytes32=>bool) validIds;
event LogNewOraclizeQuery(string description);
event newTemperatureMeasure(string temperature);
function WolframAlpha() {
update();
}
function __callback(bytes32 myid, string result) {
require(validIds[myid] ==true);
require(msg.sender == oraclize_cbAddress());
temperature = result;
newTemperatureMeasure(temperature);
delete validIds[myid];
// do something with the temperature measure..
}
function update() payable {
if(oraclize_getPrice("WolframAlpha") > this.balance){
LogNewOraclizeQuery("Oraclize query was NOT sent, please add some ETH to cover for the query fee");
}
else{
LogNewOraclizeQuery("Oraclize query was sent, standing by for the answer..");
bytes32 queryId = oraclize_query(60,"WolframAlpha","Temperature in London");
validIds[queryId] =true;
}
}
}
FYI
Sie können die Ausführung der Abfrage wie folgt planen.
Aus der Oraclize-Dokumentation: -
Die Ausführung einer Abfrage kann für ein zukünftiges Datum geplant werden. Die Funktion oraclize_query
akzeptiert als Parameter die Verzögerung in Sekunden von der aktuellen Zeit oder den Zeitstempel in der Zukunft als erstes Argument.
// Relative time: get the result from the given URL 60 seconds from now
oraclize_query(60, "URL","json(https://api.kraken.com/0/public/Ticker?pair=ETHXBT).result.XETHXXBT.c.0")
// Absolute time: get the result from the given datasource at the specified UTC timestamp in the future
oraclize_query(scheduled_arrivaltime+3*3600,"WolframAlpha", strConcat("flight ", flight_number, " landed"));
Aus Ihrer Frage heraus müssen Sie die Update-Funktion für bestimmte Zeiträume aufrufen. Dazu müssen Sie den Aufruf mit JS planen. Bei jedem Anruf wird das Ereignis ausgegeben LogNewOraclizeQuery
. Sie können das Ereignis beobachten, um über das neueste Update benachrichtigt zu werden.
var num=contractInstance.Result({},{fromBlock: 0, toBlock: 'latest' });
num.watch(function(error,result){
});
kosnet2
kosnet2
Crissi Mariam Robert