Go-Ethereum

具有低 gasPrice 的交易使所有其他交易掛在掛起狀態

  • March 15, 2019

geth-clique我有一個小型私有網路,它有一個通過using創建的權威證明引擎Geth Version: 1.8.3-unstable,目前有三個簽名者節點和兩個其他非簽名者節點(讓我們稱之為peer-Apeer-B)。peer-Apeer-B連接到三個簽名者節點。

首先,我發送了一個非常低的交易,gasPrice例如 200,peer-A如下所示。

eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value: web3.toWei(0,0000, "ether"), gasPrice: 200})

稍後,當我發送更多交易時,peer-A即使更大gasPrice,所有這些交易都將保持在掛起狀態。據我了解,送出的事務作為 FIFO 隊列工作,並且我即將到來的事務自第一個發送事務以非常低的gasPrice鎖定其他事務以來被卡住。

範例:(首先發送了一個低價格的 Tx,peer-A然後他們的另一個高 gasPrice 的 Tx 停留在其掛起狀態。) peer-B``gasPrice在此處輸入圖像描述

我已經通過清理我chaindata的 on解決了這種情況peer-A,這也清理了所有待處理的事務:rm -rf private/geth,然後我發送了更大的事務gasPrice。我認為這是一個非常低效的解決方案,因為網路鏈很大。

那麼所有發送的事務都作為 FIFO 隊列提供嗎?他們為什麼不根據最高的選擇gasPrice

請注意,我已經嘗試過:

eth.resend(eth.pendingTransactions[0], web3.toWei(1000, 'gwei'))

但面臨以下錯誤:

Error: intrinsic gas too low或者Error: replacement transaction underpriced error.

**$$ Q $$**我怎麼能解決這個問題,我怎麼能刪除系統上具有低gasPrice的待處理交易或拒絕它們或更新它們的gasPrice價值和resend()它們?

Github 問題:https ://github.com/ethereum/go-ethereum/issues/16284

Péter Szilágyi 在 ( https://github.com/ethereum/go-ethereum/issues/16284 ) 上的回答幫助我解決了這個問題。

乙太坊中的每個賬戶和交易都有一個隨機數。在任何給定時間,只有具有正確隨機數的交易才能被執行。如果您送出的交易價格較低,這將阻止所有後續交易,因為它們不可執行隨機數,只有下一個隨機數是可執行的。

您無需清除您的鏈數據文件夾,待處理的交易不會儲存在那裡。有一個 transactions.rlp 文件保存本地交易。

我正在使用eth.resend()兩個參數。

**=>**添加gasLimit為第三個參數解決了它,例如:

eth.resend(eth.pendingTransactions[0], web3.toWei(20, 'gwei'), 2000000)

**=>**或者停止節點,刪除transactions.rlp文件(rm ~/examplePOA/private/geth/transactions.rlp)並重新啟動。

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