eth最多pending幾天
㈠ 玩FOMO3D遇到ETH轉賬油費不夠Pending的問題
在玩FOMO3D遇到ETH轉賬油費不夠導致Pending的問題時,可以嘗試以下解決方案:
查看交易詳情:
- 使用小狐狸錢包跳轉至Ethereum Blockchain Explorer,以查看當前處於pending狀態的交易詳情。
提高gas費:
- 若交易長時間未確認,很可能是gas費設置過低。此時,不要急於取消訂單,而是嘗試提高gas費後重新提交交易。
使用MyEtherWallet處理:
- 轉至MyEtherWallet.com,輸入交易ID以獲取交易的詳細信息。
- 選擇private key方式處理,輸入私鑰並解鎖賬戶。
- 點擊「自動生成交易」按鈕,並確認發送以提高gas費。
處理send offline模式下的pending情況:
- 如果交易處於send offline模式導致的pending狀態,需要輸入接收地址,並獲取與pending交易一致的gas price和Nonce值。
- 輸入0個ETH,然後按照上述步驟操作以重新提交交易。
注意事項: 在處理pending交易時,請確保了解每一步操作的含義,並謹慎操作,以避免造成資金損失。 如果不確定如何操作,建議尋求專業人士的幫助或咨詢相關社區。
通過上述步驟,大部分因gas費不足導致的pending問題應該能得到解決。
㈡ 以太坊ETH覆蓋或刪除處於pending狀態交易
有人肯定遇到跟我一樣的問題,賬號里還有一些eth,但是有一筆交易一直處於pending狀態,導致後續的交易全部卡死。除非這一筆pending狀態的交易被礦工打包。請注意nonce,由於每一個賬號的每一個交易nonce都是遞增的,因此如果用已經成功的交易的nonce重新交易,一定會報錯nonce too low。
1、發現有一筆訂單一直處於pending狀態,後續的所有交易都不能正常進行
2、解決方案,通過設置較高的gasprice來覆蓋或替換該交易
3、接下來,該賬號就可以正常轉賬啦。
目前市場上尚未找到能滿足該功能的工具/錢包,如需提供技術服務,請聯系作者,微信號:hqfeijian ,備註:以太坊替換交易
㈢ ETH開發實踐——批量發送交易
在使用同一個地址連續發送交易時,每筆交易往往不可能立即到賬, 當前交易還未到賬的情況下,下一筆交易無論是通過 eth.getTransactionCount() 獲取nonce值來設置,還是由節點自動從區塊中查詢,都會獲得和前一筆交易同樣的nonce值,這時節點就會報錯 Error: replacement transaction underpriced
在構建一筆新的交易時,在交易數據結構中會產生一個nonce值, nonce是當前區塊鏈下,發送者(from地址)發出的交易(成功記錄進區塊的)總數, 再加上1。例如新構建一筆從A發往B的交易,A地址之前的交易次數為10,那麼這筆交易中的nonce則會設置成11, 節點驗證通過後則會放入交易池(txPool),並向其他節點廣播,該筆交易等待礦工將其打包進新的區塊。
那麼,如果在先構建並發送了一筆從地址A發出的,nonce為11的交易,在該交易未打包進區塊之前, 再次構建一筆從A發出的交易,並將它發送到節點,不管是先通過web3的eth.getTransactionCount(A)獲取到的過往的交易數量,還是由節點自行填寫nonce, 後面的這筆交易的nonce同樣是11, 此時就出現了問題:
實際場景中,會有批量從一個地址發送交易的需求,首先這些操作可能也應該是並行的,我們不會等待一筆交易成功寫入區塊後再發起第二筆交易,那麼此時有什麼好的解決辦法呢?先來看看geth節點中交易池對交易的處理流程
如之前所說,構建一筆交易時如果不手動設置nonce值,geth節點會默認計算發起地址此前最大nonce數(寫入區塊的才算數),然後將其加上1, 然後將這筆交易放入節點交易池中的pending隊列,等到節點將其打包進區塊。
構建交易時,nonce值是可以手動設置的,如果當前的nonce本應該設置成11, 但是我手動設置成了13, 在節點收到這筆交易時, 發現pending隊列中並沒有改地址下nonce為11及12的交易, 就會將這筆nonce為13的交易放入交易池的queued隊列中。只有當前面的nonce補齊(nonce為11及12的交易被發現並放入pending隊列)之後,才會將它放入pending隊列中等待打包。
我們把pending隊列中的交易視為可執行的,因為它們可能被礦工打包進最新的區塊。 而queue隊列因為前面的nonce存在缺失,暫時無法被礦工打包,稱為不可執行交易。
那麼實際開發中,批量從一個地址發送交易時,應該怎麼辦呢?
方案一:那麼在批量從一個地址發送交易時, 可以持久化一個本地的nonce,構建交易時用本地的nonce去累加,逐一填充到後面的交易。(要注意本地的nonce可能會出現偏差,可能需要定期從區塊中重新獲取nonce,更新至本地)。這個方法也有一定的局限性,適合內部地址(即只有這個服務會使用該地址發送交易)。
說到這里還有個坑,許多人認為通過 eth.getTransactionCount(address, "pending") ,第二個參數為 pending , 就能獲得包含本地交易池pending隊列的nonce值,但是實際情況並不是這樣, 這里的 pending 只包含待放入打包區塊的交易, 假設已寫入交易區塊的數量為20, 又發送了nonce為21,22,23的交易, 通過上面方法取得nonce可能是21(前面的21,22,23均未放入待打包區塊), 也可能是22(前面的21放入待打包區塊了,但是22,23還未放入)。
方案二是每次構建交易時,從geth節點的pending隊列取到最後一筆可執行交易的nonce, 在此基礎上加1,再發送給節點。可以通過 txpool.content 或 txpool.inspect 來獲得交易池列表,裡面可以看到pending及queue的交易列表。
啟動節點時,是可以設置交易池中的每個地址的pending隊列的容量上限,queue隊列的上容量上限, 以及整個交易池的pending隊列和queue隊列的容量上限。所以高並發的批量交易中,需要增加節點的交易池容量。
當然,除了擴大交易池,控制發送頻率,更要設置合理的交易手續費,eth上交易寫入區塊的速度取決於手續費及eth網路的擁堵狀況,發送每筆交易時,設置合理的礦工費用,避免大量的交易積壓在交易池。
㈣ 葉勝超:一分鍾了解以太坊的gas燃料以及手續費的計算方法(98)
理解以太坊的Gas燃料與手續費計算方法是進入加密貨幣世界的關鍵一步。Gas,翻譯為「燃氣」,在以太坊網路中扮演著燃料的角色。進行交易,無論是轉賬到另一個賬戶還是部署智能合約,都需要先支付Gas。
Gas Limit是指交易發送方最多接受的Gas數量,用以執行交易。Gas Used則是交易中實際消耗的Gas數量。Gas Price表示交易發送方對每單位Gas願意支付的價格,通常以Gwei為單位。
以太幣的單位包括wei、Gwei、和eth。1eth等於1e9 Gwei,而1Gwei等於1e9 wei,所以1個eth相當於10的9次方Gwei,1個Gwi相當於10的9次方wei,最常用的單位為eth、Gwei和wei。
了解了Gas、GasLimit、GasPrice後,我們可以對Gas Limit和Gas Price進行設置。例如,如果一筆交易的Gas Used為21000GAS,而設置的單價Gas Price為6Gwei/GAS,則發送這筆交易的手續費為21000*6=126000Gwei,相當於約0.00013ETH。
設置Gas Limit過低會導致交易失敗,手續費不會退回。設置Gas Price過低則顯示交易處於Pending狀態,但也不能過高,否則會增加成本。設置具體價格時,可以參考區塊鏈瀏覽器上的最佳價格建議,例如tokenview。
此系列文章由葉勝超撰寫,旨在普及區塊鏈基礎知識。歡迎轉載,但需註明出處。關注葉勝超,每天學習一個知識點,積累經驗變老鳥。
投資箴言:行情總在絕望中誕生,在半信半疑中成長,在憧憬中成熟,在希望中毀滅。生存法則:踏實工作、閑錢投資、熊市定投、牛市定拋,按時吃飯睡覺。幣圈生存法則,非絕世高手不得無視,謹記生存法則可保不死。