Oraclize: Rückruf enthält kein Ergebnis Fehler

Ich habe den folgenden Vertrag, um eine Zufallszahl von 1 bis 6 von random.org zu erhalten:

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

contract RandomOrg is usingOraclize {
    string public res;

    event Log(string text);

    function RandomOrg() {

        Log("Created!");
    }


    function __callback(bytes32 myId, string _result) {
        if (msg.sender != oraclize_cbAddress()) revert();


        res = _result; // 'result' is the random number generated by random.org
        Log(res);
        updateNumber();

    }

    function updateNumber() payable {
        string memory query = "https://www.random.org/integers/?num=1&min=1&max=6&col=1&base=10&format=plain&rnd=new";
        oraclize_query(0, "URL", query);
    }

}

Bei Verwendung von MetaMask und Oraclize dev IDE wird der Vertrag erfolgreich erstellt, aber beim Aufruf der updateNumber()Funktion (mit oder ohne msg.value, Ergebnis ist das gleiche) erhalte ich die folgende Fehlermeldung:

callback contain no result Error: JsonRpcEngine - response has no error or result for request:
{
  "jsonrpc": "2.0",
  "id": 255617697,
  "method": "eth_estimateGas",
  "params": [
    {
      "from": "0x3768372d20afe96dde0c27677b916046cd32002d",
      "to": "0xe931380cb4389dce98227e095e41c9927433504e",
      "data": "0x1b6a2481",
      "value": "0xde0b6b3a7640000"
    }
  ]
}

Was könnte der Grund dafür sein?

Antworten (1)

Riccardo von Oraclize hier.

Ich benutzte:

  1. Metamaske im Rinkeby -Testnet;
  2. Wert für die updateNumber(): 1ETH;
  3. Gaspreis : 20 gwei

Ich habe gerade diesen Vertrag von REMIX ausprobiert und gearbeitet:

pragma solidity ^0.4.0;
import "./oraclizeAPI_0.5.sol"; //API copied from the oraclize github folder

contract RandomOrg is usingOraclize {
    string public res;

    event Log(string text);

    function RandomOrg() {

        Log("Created!");
    }


    function __callback(bytes32 myId, string _result) {
        if (msg.sender != oraclize_cbAddress()) revert();


        res = _result; // 'result' is the random number generated by random.org
        Log(res);
        updateNumber();

    }

    function updateNumber() payable {
        string memory query = "https://www.random.org/integers/?num=1&min=1&max=6&col=1&base=10&format=plain&rnd=new";
        oraclize_query(0, "URL", query);
    }

}
Danke, es hat funktioniert, obwohl ich nicht sicher bin, warum ich den JSON-Fehler erhalten habe.