Testnets

為什麼這個 Oraclize 查詢只工作一次?

  • January 13, 2017

為什麼這段程式碼一次有效?第一次我得到正確的隨機數,但之後我得到錢包響應“數據無法執行,所以它將使用所有提供的氣體”

我在測試網。

contract Random_number is usingOraclize {
 string public randomNumber;

 function Create_random_number() {
   oraclize_setNetwork(networkID_testnet);
   oraclize_setProof(proofType_TLSNotary | proofStorage_IPFS);
   oraclize_query("WolframAlpha", "random number between 0 and 100");
 }

 function __callback(bytes32 myid, string result, bytes proof) {
   if (msg.sender != oraclize_cbAddress()) throw;
   randomNumber = result;
 }
}

來自 Oraclize 的 Thomas 在這裡。

您可能遇到此問題,因為您沒有發送任何價值。Oraclize API 呼叫是有代價的,我們收取的少量費用是在呼叫 oraclize_query 時提前支付的。每個合約的第一次 API 呼叫是免費的,所以這就是你的第一次呼叫有效的原因。請在此處查看我們的定價

這也適用於測試網——當然,測試網硬幣沒有價值,但無論如何我們都會收取費用,以便您可以測試與主網上相同的定價邏輯。

對於任何進一步的 Oraclize 特定問題,您可以加入我們的 gitter 頻道,以獲得我們提供的更具互動性的支持。

引用自:https://ethereum.stackexchange.com/questions/4029