Contract-Debugging

無法為 oraclize 回調函式設置高於預設值 200000 的氣體限制

  • August 26, 2017

您能幫我解決以下問題嗎?我正在使用 OraclizeIt ( https://github.com/oraclize/ethereum-api ) 通過 REST 從其他服務檢索 JSON。基本上,有問題的智能合約方法很簡單

function update(uint24 id) { oraclize_query("URL", "json(bla-bla-bla).0.parameters", 200000); }

第三個參數(此處為 200000)是 oraclize 回調函式的氣體限制。而且我似乎無法將其設置為高於 200000 的預設值。如果我嘗試將其設置為更高的值,比如說 250000,我不可避免地會在交易中收到一個錯誤,上面寫著**“警告!在合約執行期間遇到錯誤$$ Bad instruction $$“** 即使我真的沒有自己的指令,只有 Oraclize 在他們的契約中實現的指令,也沒有其他可做的事情。我也不能使用預設值 200000,因為這還不夠我的回調,我需要將 gas 限制設置得更高。我首先使用了 ethereum-bridge(https://github.com/oraclize/ethereum-bridge)和 testRPC,然後我搬到了 ropsten。錯誤仍然存在。也許有人可以指出我在哪裡看以及可能導致這種情況的原因。

您需要發送足夠的 ETH,因為第一個查詢是免費的,最多 200k gas:如果您的回調 tx 需要更多 gas,那麼第一次呼叫 oraclize_query 也必須付費。當然,在測試網上這實際上是免費的,但無論如何都需要發送測試網乙太幣!嘗試發送一些乙太幣,它會工作得很好;)

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