Solidity
無法部署帶有待處理交易的新合約 (Ropsten)
我有一個非常奇怪和煩人的問題。我正在嘗試部署一份新契約,但它只是不斷循環。我在 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) }
希望這會有所幫助或至少很有趣。
如果您有待處理的交易,有兩種快速解決問題的方法:
- 增加您使用同一帳戶進行交易的 Gas 費用(在您的 truffle 配置或部署程式碼中執行此操作)。特別是當原因是具有相同隨機數的待處理事務時。
- 更改部署的帳戶。待處理的交易與帳戶相關,因此只要您的契約正常,這將有所幫助。