Gas
關於使用 oraclize 時的 gas 限制問題
我正在使用 oraclize 從外界獲取一些數據。Oraclize 呼叫
__callback
我的智能合約的方法。對於這個呼叫 oraclize 必須支付 gas,並且有一個函式可以設置這個呼叫的 gas 限制。我現在的問題是:如果我將氣體限制設置為 150000,則交易將失敗並顯示消息
VM Exception while processing transaction: out of gas
。如果我將 gas 限制設置為 300,000,則交易成功,但它只使用 90,000 gas。交易日誌中正確顯示了氣體限制。
聽起來您正在收到汽油退款。
如果在執行交易期間,您最終釋放了一些儲存空間(將變數設置為零值或
delete
操作),您將收到與您釋放的儲存量成正比的 gas 退款。此退款僅在執行週期結束時應用。因此,當交易執行時,您需要一個足夠大的 gas 限制來容納所有操作*,而無需*考慮退款。
沒有辦法解決這個問題,你最終會花費比你的 gas 限制更少的 gas,但它仍然必須設置得足夠高,以便在不退款的情況下涵蓋所有內容。