API Oraclize ничего не возвращает в тестовой сети Morden

Я использую Geth 1.3.6 и тестовую сеть Morden. Я пытаюсь протестировать API Oraclize для своих смарт-контрактов Ethereum.

Сначала я скомпилировал и развернул простые смарт-контракты DieselPricePeg.sol и PriceTicker.sol, также используя dev.oraclize.it/. У меня нет правильного вывода по запросу, даже я не получаю идентификатор от oraclize_query.

Один из двух смарт-контрактов виден по следующей ссылке: https://github.com/oraclize/ethereum-examples/blob/master/solidity/DieselPricePeg.sol .

(Думаю, что проблема не в коде смарт-контракта.)

Какие-либо предложения?

Без просмотра вашего контракта и без более подробной информации о том, что происходит не так (ссылка на идентификаторы транзакций, если вы можете), ни у кого не будет достаточно информации для ответа.
Я отредактировал свой вопрос.
Вам по-прежнему необходимо дать нам более подробное описание того, что вы делаете, что происходит, чего вы ожидали, какие сообщения об ошибках вы получаете (если есть) и так далее. Это может быть полезно: stackoverflow.com/help/how-to-ask
Томас из Oraclize здесь. Как уже говорили другие, вы не даете достаточно подробностей, можете ли вы раскрыть адрес эфириума, на который вы развернули свой контракт? Я бы посоветовал вам зайти на наш канал gitter, чтобы задать вопросы, касающиеся Oraclize, так как это было бы гораздо более интерактивным и простым для понимания.
Если вы используете пример контракта DieselPricePeg, вам нужно либо прокомментировать строку, update(60*10)либо __callbackиметь достаточно средств на балансе контракта, так как второй oraclize_query требует затрат .
Привет Томас. В «нашем грязном канале» я нашел свой ответ. Спасибо. (Мое решение состояло в том, чтобы прокомментировать обновление строки (60 * 10))
Если вы нашли ответ, не могли бы вы опубликовать ответ с кратким изложением того, что было не так и как вы это исправили, для будущих спрашивающих?
@ThomasBertani Поскольку OP не опубликовал свой ответ, который звучит точно так же, как ваш, не могли бы вы опубликовать / объяснить ответ?

Ответы (1)

TL;DR: в контракте не хватило баланса для оплаты комиссии Oraclize, необходимой после первого звонка в Oraclize.

Собираюсь объяснить этот ответ, поскольку он никогда не объяснялся:

OP пытался использовать следующий демонстрационный контракт Oraclize:

import "dev.oraclize.it/api.sol";

contract DieselPricePeg is usingOraclize {

    uint public DieselPriceUSD;


    function DieselPricePeg() {
        oraclize_setProof(proofType_TLSNotary | proofStorage_IPFS);
        update(0); // first check at contract creation
    }

    function __callback(bytes32 myid, string result, bytes proof) {
        if (msg.sender != oraclize_cbAddress()) throw;
        DieselPriceUSD = parseInt(result, 2); // let's save it as $ cents
        // do something with the USD Diesel price
        update(60*10); // schedule another check in 10 minutes
    }

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

}

Конструктор вызывает update(0), который говорит oraclize_queryвернуть значение как можно быстрее (просто инициализируя его). При oraclize_queryзвонках __callbackданные анализируются и __callbackзвонки update(60*10). Первый вызов Oraclize из любого контракта (в конструкторе или нет ) бесплатный . Любые дальнейшие вызовы оплачиваются и требуют, чтобы контракт (или учетная запись) поддерживал баланс. __callbackвызывает update(60*10), который не вернет значение , если в контракте нет баланса .