Solidity

無法部署帶有待處理交易的新合約 (Ropsten)

  • December 22, 2021

我有一個非常奇怪和煩人的問題。我正在嘗試部署一份新契約,但它只是不斷循環。我在 POA 測試網和 Ropsten 上遇到了同樣的問題。請看下面:

在此處輸入圖像描述

我試圖取消交易,即使我將 gas 增加到最快的選項,交易既不確認也不拒絕。

有任何想法嗎?

謝謝!

大多數乙太坊節點會將來自特定地址的 tx 放入隊列中,並增加唯一隨機數。只要具有較小隨機數的 tx 處於待處理狀態,就不會發送具有較大隨機數的 tx。

過去,當我能夠執行自己的 geth 節點並向其送出 tx 時,偶爾掛起的 tx 會像您在主網或現代上描述的那樣永遠卡住(我從來沒有能夠使用 ropsten b/c 的慢速挖礦次)。我解決這個問題的方法是重新啟動 geth 節點,然後重新送出 tx’s。

例如,如果你要在本地啟動一個 Goerli 測試網(我強烈推薦它的小尺寸和速度)

geth --goerli --syncmode=light --rpcaddr=0.0.0.0

然後連接到 geth 控制台,您可以使用該txpool模組檢查從您的節點發送的任何待處理事務。您甚至可以從 Metamask 連接到您的本地節點,並使用它來送出 tx。

$ geth attach --datadir ~/Library/Ethereum/goerli         
Welcome to the Geth JavaScript console!

instance: Geth/v1.9.4-stable-46891c12/darwin-amd64/go1.13.1
at block: 1393409 (Tue, 01 Oct 2019 04:48:27 EDT)
datadir: /Users/ppham/Library/Ethereum/goerli
modules: admin:1.0 debug:1.0 eth:1.0 les:1.0 net:1.0 personal:1.0 rpc:1.0 shh:1.0 txpool:1.0 web3:1.0

> txpool
{
 content: {
   pending: {},
   queued: {}
 },
 inspect: {
   pending: {},
   queued: {}
 },
 status: {
   pending: 0,
   queued: 0
 },
 getContent: function(callback),
 getInspect: function(callback),
 getStatus: function(callback)
}

希望這會有所幫助或至少很有趣。

如果您有待處理的交易,有兩種快速解決問題的方法:

  1. 增加您使用同一帳戶進行交易的 Gas 費用(在您的 truffle 配置或部署程式碼中執行此操作)。特別是當原因是具有相同隨機數的待處理事務時。
  2. 更改部署的帳戶。待處理的交易與帳戶相關,因此只要您的契約正常,這將有所幫助。

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