Gnosis-Safe
多重發送合約中的“Out of gas”恢復
我得到了refundReceiver(一直將單獨的交易傳遞給encodeMulti函式,而不是將交易數組傳遞給createTransaction),但是無論我似乎在裡面使用什麼參數組合,我都會在multisend合約中得到一個“用盡的氣體”恢復createTransaction 和 executeTransaction 是。我想我仍然對在 createTransaction 和 executeTransaction 函式中使用哪些參數感到困惑。此時我想要執行的事務沒有發生。我想讓這項工作正常進行,並為簽名者償還他們正在執行的交易的確切汽油費金額。
無論我嘗試了什麼,對 multisend 合約的委託呼叫似乎都將 gas 限制設置為 0:
const txOptions = { gasPrice: getGasPrice, gasToken: "0x0000000000000000000000000000000000000000", refundReceiver: signer.address, safeTxGas: 1000000, baseGas: 1000000, gasLimit: 10000000, }; const safeTransaction = await safeSdk.createTransaction( multiSendTx, txOptions ); const execOptions = { gasLimit: 10000000, }; const executeTxResponse = await safeSdk.executeTransaction( safeTransaction, execOptions );
謝謝!
在您連結的交易中,
safeTxGas
參數為 0,因此它將 0 gas 傳遞給基礎交易。safeTxGas
因此,在使用 gas 退款時,您需要通過參數為基礎交易指定正確的 gas 數量。對於特定的片段,您需要移動
safeTxGas
到選項對象,因為當您為多發送傳遞一組事務時,它希望它位於第二個options
參數中。檢查文件
multisend transactions
部分:
有過同樣的問題。看起來
safe-core-sdk
github 上的問題可能會導致SafeTxGas
為 0,無論它在選項中是什麼。