Web3js

如何發送更高gas價格的替換交易?

  • June 21, 2021

我正在使用 sendSignedTransaction 發送交易:

const tx = new Tx({
  ...
  "gasPrice": web3.utils.toHex(41 * 1e9),
  ...
}

await web3.eth.sendSignedTransaction(serializedTx)
 .on('transactionHash', (hash) => { 
     console.log('waiting....'); 
 })
 .on('receipt', (receipt) => { 
     console.log('... Transaction validated !');
 });

它工作正常。這是我想做的:

  • 我想為 gasPrice 設置一個非常低的值:例如 41 gwei
  • 如果交易在 15 秒後未驗證,我想將 gasPrice 增加到 51 gwei
  • 等等

我怎樣才能以程式方式做到這一點?

謝謝

您可以發送相同的交易但不同tx['gasPrice']的交易,如果新交易具有相同tx['nonce']的交易,那麼具有更高gas價格的交易將被礦工添加到下一個塊中,因此舊的交易將被自動丟棄。

然而 15 秒是一個非常小的時間間隔,也許最好在每個新區塊重新發送交易(目前平均區塊時間約為 13 秒)將 gas 價格設置為前一個區塊 gas 價格的百分比並嘗試增加這個每個新區塊的百分比。

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