Keine Antwort beim Abrufen des aktuellen ETH-zu-USD-Kurses?

Ich versuche, den aktuellen Kurs von Ethereum zu USD über den folgenden Link abzurufen: https://api.infura.io/v1/ticker/ethusd

Das ist mein Codeschnipsel

pragma solidity ^0.4.11;
import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";

contract ExampleContract is usingOraclize {
string public ETHUSD;
event LogConstructorInitiated(string nextStep);
event LogPriceUpdated(string price);
event LogNewOraclizeQuery(string description);

function ExampleContract() payable {
    LogConstructorInitiated("Constructor was initiated. Call 'updatePrice()' to send the Oraclize Query.");
}

function __callback(bytes32 myid, string result) {
    if (msg.sender != oraclize_cbAddress()) revert();
    ETHUSD = result;
    LogPriceUpdated(result);
}

function updatePrice() payable {
    if (oraclize_getPrice("URL") > 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..");
        oraclize_query("URL", "json(https://api.infura.io/v1/ticker/ethusd).bid");
    }
}

}

aber wenn ich updatePrice() drücke, wird die Transaktion erfolgreich durchgeführt, aber in der ETHUSD-Variablen wird kein Wert erfasst. Irgendeine Idee, was ich falsch mache? Ich habe versucht, diese URL zu verwenden und es funktioniert gut (für EUR, GBP) "json( http://api.fixer.io/latest?symbols=USD,GBP).rates.GBP "

Ich weiß nichts über Oraclize, aber was sagt dein Log? Eines der beiden Ereignisse wird ausgegeben.
Wilde Vermutung, aber vielleicht verursacht das TLS ("https") Probleme.
@Maurycy, ich habe es mit http versucht, aber immer noch kein Glück

Antworten (1)

Ich habe gerade deinen Code ausprobiert und er funktioniert einwandfrei. Können Sie mitteilen, in welchem ​​​​Netzwerk Sie dies versuchen und wie? Im folgenden Beispiel verwende ich Oraclizes Fork of Remix mit einem integrierten Oraclize-Modul, mit dem Sie Oraclize direkt in der Browser-VM verwenden können.

http://dapps.oraclize.it/browser-solidity/#version=soljson-v0.4.20+commit.3155dd80.js

Stellen Sie sicher, dass das von Ihnen verwendete Netzwerk entweder ein Hauptnetz oder ein öffentliches Testnetz ist. Wenn es keines von beiden ist, muss die entsprechende Oraclize-Architektur darauf bereitgestellt werden, was mit dem ethereum-bridge npm-Paket erfolgen kann.

Geben Sie hier die Bildbeschreibung ein

Ich habe es auf der Fork von Remix ausprobiert, die Sie bereitgestellt haben, und es funktioniert perfekt sowohl auf VM als auch auf Ropsten. Dann wechselte ich zurück zur einfachen Remix-Version, und was ich beobachtete, war, dass sie wegen der Importanweisung immer noch keine Antwort gab, ich kopierte dann den gesamten oracalizeAPI-Code und fügte ihn ein und es funktionierte gut. Danke, dass du uns den Weg gegeben hast. Hier ist der verifizierte Code-Link: ropsten.etherscan.io/address/…