Я использую 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 .
(Думаю, что проблема не в коде смарт-контракта.)
Какие-либо предложения?
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)
, который не вернет значение , если в контракте нет баланса .
Ник Джонсон
Фабиола
Ник Джонсон
Томас Бертани
Томас Бертани
update(60*10)
либо__callback
иметь достаточно средств на балансе контракта, так как второй oraclize_query требует затрат .Фабиола
Тьяден Хесс
эт