Testnets
為什麼這個 Oraclize 查詢只工作一次?
為什麼這段程式碼一次有效?第一次我得到正確的隨機數,但之後我得到錢包響應“數據無法執行,所以它將使用所有提供的氣體”
我在測試網。
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 頻道,以獲得我們提供的更具互動性的支持。