Пример файлов Oraclize возвращает 0: строка: при вызове в Remix - PullRequest
0 голосов
/ 17 июня 2019

Я хочу использовать Oraclize в Remix, чтобы протестировать его. Я слишком глуп, чтобы использовать их примеры. Как я могу сделать эту работу? Из их Github я взял код YouTube-Views и скопировал его в Remix

 pragma solidity >= 0.5.0 < 0.6.0;

import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";

contract YoutubeViews is usingOraclize {

string public viewsCount;

event LogYoutubeViewCount(string views);
event LogNewOraclizeQuery(string description);

constructor()
    public
{
    update(); // Update views on contract creation...
}

function __callback(
    bytes32 _myid,
    string memory _result
)
    public
{
    require(msg.sender == oraclize_cbAddress());
    viewsCount = _result;
    emit LogYoutubeViewCount(viewsCount);
    // Do something with viewsCount, like tipping the author if viewsCount > X?
}

function update()
    public
    payable
{
    emit LogNewOraclizeQuery("Oraclize query was sent, standing by for the answer...");
    oraclize_query("URL", 'html(https://www.youtube.com/watch?v=9bZkp7q19f0).xpath(//*[contains(@class, "watch-view-count")]/text())');
}
}

Когда я использую viewCount, он возвращает:

0: строка:

Это происходит и со всеми остальными примерами. С WolframAlpha напр. Я также получаю следующую ошибку:

транзакция в WolframAlpha.update с ошибкой: ошибка виртуальной машины: возврат. revert Транзакция была возвращена в исходное состояние. Примечание. Конструктор должен быть платным, если вы отправляете значение. Отладка транзакции для получения дополнительной информации.

1 Ответ

0 голосов
/ 17 июня 2019

Хорошо, вы не видите ответ как обычный результат в Remix:

Вы должны зайти в настройки и открыть плагин Oraclize.

Если вы затем развернете контракт иили нажмите обновить, вы получите результат, показанный в плагине.

...