Wie schließe ich Verträge mit 'Oraclize' mit Trüffel ab?

Dies ist der Vertragscode. Ich habe die „Oraclize-API“ (oraclizeAPI_0.4.sol) aus dem Oraclize-Github-Repo heruntergeladen. Ich habe diese Datei zum Ordner „Trüffelverträge“ hinzugefügt und die Datei in „using Oraclize.sol“ umbenannt. Und das ist es in den gegebenen Vertrag importiert.

 pragma solidity ^0.4.0;

 import "./usingOraclize.sol";

 contract ApiCall is usingOraclize {

       uint public DieselPriceUSD;

       function DieselPrice() {

                OAR = OraclizeAddrResolverI(0x920cd3f7ed02c5d61e2556308d53a4d9d1e58bf2); 
       }

       function __callback(bytes32 myid, string result) {
                if (msg.sender != oraclize_cbAddress()) throw;
                       DieselPriceUSD = parseInt(result, 2); 
       }

      function update() payable {
                oraclize_query("URL", "xml(https://www.fueleconomy.gov/ws/rest/fuelprices).fuelPrices.diesel");
     }

}

Ich habe diesen Vertrag erfolgreich zusammengestellt und bereitgestellt. Dann versucht, die verfügbaren Methoden mit dem folgenden aufzurufen.

  contract.getCall().then(console.log);

Aber es gibt den folgenden Fehler zurück.

Error: VM Exception while processing transaction: invalid JUMP at 7ed62a9ee27ba25842c0facef792865de53617fe32c09b7eb974a8bca5dd54c0/b8cd3e9aaf13b8823aa83f0f47f235943dac31c6:692

Wie rufe ich die _callback-Funktion in diesem Vertrag mit den Parametern auf? Was bedeuten diese Parameter in diesem _callback?

Wie verwende ich diesen _callback in index.js in Trüffel?

In welchem ​​Netzwerk haben Sie bereitgestellt?
@Xavier Lepretre B9lab Ich habe dafür testrpc und Trüffel verwendet.
@Xavier Leprêtre B9lab Wie führe ich die _callback-Funktion mit Truffle aus? Ich hatte keine Ahnung von den Parametern, die in dieser _callback-Funktion übergeben werden?

Antworten (1)

Ich glaube, Sie haben hier ein Problem. Sie glauben , dass Ihr Konstruktor es ist function DieselPrice(), obwohl es tatsächlich nicht Ihr Konstruktor ist , weil Ihr Vertrag aufgerufen wird contract ApiCall.

Ihr OARist also immer null.

Außerdem sind die Ethereum-Netzwerke von Oraclize nur für Testnetz und Hauptnetz. Nicht TestRPC natürlich.

Ich habe den Konstruktor korrigiert. Ich muss die _callback-Funktion in meiner Javascript-Datei verwenden. Also muss ich die Parameter an die _callback-Funktion übergeben. Was sind die Parameter in der _callback-Funktion?
Normalerweise ruft Oraclize Sie unter zurück __callback, das ist es, was sie tun und wofür Sie sie bezahlen. Warum rufst du an __callback? Liegt es daran, dass Sie Tests machen?
Ich habe nicht genug Ahnung davon. Jetzt habe ich die _callback-Funktion verwendet. Es funktionierte erfolgreich mit Truffle und Ethereum-Bridge.