以太坊提幣pending
① 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網路的擁堵狀況,發送每筆交易時,設置合理的礦工費用,避免大量的交易積壓在交易池。
② 跨行轉賬整整8天了仍未到帳,也沒退款
我們在轉賬之後,有時會出現轉賬遲遲未到賬的情況,很多用戶十分著急,甚至認為自己的幣丟失了。Tokenview收到了一封來自昵稱為港灣用戶的求助郵件。郵件中說,該用戶在進行USDT轉賬時發生了USDT丟失的情況。用戶提供了提幣地址,交易ID,接收地址以及轉賬金額和轉賬時間,問是否可以找回。
首先,我們需要先確定沒到賬的原因。一般來說,轉賬沒到賬的原因有四個:
1、地址填錯
2、網路擁堵,暫未到賬
3、確認數未達標,暫未入賬
4、手續費不足,交易被退回
我們一個個來分析。如果是第一種情況,地址填錯。地址填錯大約分二種情況,第一種情況是地址種類填錯,或者格式錯誤。這種情況下,轉賬可能無法順利進行,相應的錢包軟體會進行提示,如果交易不能發起,也就不存在丟幣的情況。但在種類填錯的情況下也不是不可能發起交易的。舉例來說,如果我們把USDT—OMNI提現到了USDT-ERC20,就會丟幣,這樣丟失的幣是無法找回的。第二種情況就是地址張冠李戴,是對應的鏈上地址,但是錯填成他人地址。這種情況交易將會順利發起,而此時交易上鏈後,基於區塊鏈不可逆的特性,任何人都無法對該筆交易進行撤回操作,除非接收方原因將幣轉回原地址。
如何判斷接收地址是否填寫錯誤呢?我們復制交易ID,或者直接復制自己的轉出地址,通過Tokenview區塊瀏覽器進行查詢。我們通過查詢該用戶提供的交易ID,可以發現,該用戶進行了火幣的一筆提現操作,其轉入地址與用戶提供的轉入地址不符,也就是說,出於某種原因,用戶將USDT轉去了錯誤的地址。
這種情況下,交易將是無法撤回的,除非改接收地址的持有人願意將這筆「天降之財」原路退回。但由於區塊鏈的匿名性,除了Tokenview標記出的交易所出入金地址及某些大戶地址外,其餘BTC、USDT地址我們是無法通過地址哈希定位其所有人的,因此可以說,在這種情況下,找回幣的幾率微乎其微。
第二種情況是網路擁堵。這種情況我們能做的就是等待交易打包上鏈。我們可以在tokenview.com的Pending交易池中看看交易是否存在。如:https://btc.tokenview.com/cn/pending。
第三種情況一般存在於交易平台充幣。當交易上鏈時,確認數為1,但由於不同交易所對確認數的要求不同,例如大部分對比特幣的確認數要求要達到6才會被確認充值成功,而以太坊則是12個。我們可以通過tokenview.com來查詢交易數。如果交易數還沒有達到要求,我們還需要再耐心等一下。
最後一種情況是手續費不足,交易被退回。這種情況交易會失敗。拿以太坊的轉賬為例,如果手續費不足,此交易將扣取手續費,並將ETH退回到轉出地址,並不存在丟幣的情況。
轉賬未到賬的幾種情況我們已經介紹完畢了。其中最關鍵的是大家在轉賬之前一定要再三確認交易地址是否填寫無誤。如果是進行USDT的轉賬,一定要確認其USDT類型。是OMNI,還是ERC20,還是TRC20,避免發生填錯類型而丟幣的意外,從而造成損失。
③ 2021-01-19 記錄一次以太坊nonce值的問題
之前在做後端介面的時候,封裝了構造交易及發送交易這一層,其中構造交易的時候,獲取用戶的nonce這里,沒有自己維護,而是從鏈上獲取,且之前由於一些業務這里沒有做隊列,導致前端並發調用的時候,會產生一個賬戶同時構造兩個相同nonce值得交易,最終會導致失敗一條。
Client.PendingNonceAt 是從pending中獲取該賬戶的本次交易改用的nonce,本以為這里已經處理了就沒管,不曾想,還是會出現上面的交易重復的bug。
經修改,如果是特殊賬戶,可在業務層自行維護計數器做nonce值,維護成本較大,且復雜。
第二種 就是這里加個隊列,畢竟及時性不是區塊鏈該有的東西。
④ 以太坊被提幣了能查到或者追回嗎
能。報警處理,警察會立案調查追回。轉賬記錄可作為證據使用,公安機關一般應當立案偵查。「以太坊(英文Ethereum)是一個開源的有智能合約功能的公共區塊鏈平台,通過其專用加密貨幣以太幣(Ether,簡稱「ETH」)提供去中心化的以太虛擬機(EthereumVirtualMachine)來處理點對點合約。
⑤ 剛剛買的加密貨幣暫時無法提款
剛剛買的加密貨幣暫時無法提款是因為
加密貨幣貸款機構Celsius告訴客戶,他們暫時無法從該平台提取資金。該公司表示:「由於極端的市場條件,我們今天宣布,Celsius暫停所有取款、掉期和賬戶之間的轉賬。領先的加密貨幣,包括以太坊(ETH)、卡達諾(ADA)、索拉納(SOL)和狗狗幣(DOGE)的損失甚至比比特幣更嚴重,在過去一天下跌了15%至25%。雖然許多加密貨幣持有者正在清算他們的資產,但加密貨幣貸款機構Celsius告訴客戶,他們暫時無法從該平台提取資金。該公司今天表示:「由於極端的市場條件,我們今天宣布,Celsius暫停所有取款、掉期和賬戶之間的轉賬。」在加密貨幣市場暴跌的最後一天,NFT交易量激增。根據CryptoSlam的數據,包括Bored Ape Yacht Club (BAYC)、Mutant Ape Yacht Club (MAYC)和Crypto Punks在內的頂級NFT項目在過去24小時內增長了100%。
⑥ 以太坊提幣一般多久到賬
提幣半小時左右到賬,充值提現即時到賬。
你提幣那麼是需要有Hubi審核的,一般由風控人員審核,審核通過後就會給你打幣,但是多久到賬,這個是會受到網路環境或是區塊擁不擁擠所影響,當然在其他交易所也是一樣的。上次在Hubi提過EOS和BTC,他們的審核很快,兩個幣到賬的時候也不一樣,BTC略長一點,可能是區塊擁擠的原因,但是有簡訊和郵箱的提醒,這一點是挺好的。
⑦ 以太顯示支付為什麼沒到賬
因為網路有一定的延遲原因,所以會導致轉賬成功,但是沒有到賬。
這個情況可以查下自己是否已經扣款,要是扣款了,很快對面會到賬的。
以太坊提幣到不原因有兩個:
第一類是以太坊投資者在某個交易所平台當中進行了以太坊提現,結果發現eth沒收到;
第二類則是一些投資者在進行購入以太坊購買交易過程中,已經按照提示支付了對應的購買價款和手續費,但是卻發現eth沒收到。
網路上所反映的有關「eth沒收到」的情況大致就如此,除此之外可能還存在其他的一些與「eth沒收到」有關的咨詢,但是大致仍然脫離不了這兩類范疇。
⑧ 以太坊ETH覆蓋或刪除處於pending狀態交易
有人肯定遇到跟我一樣的問題,賬號里還有一些eth,但是有一筆交易一直處於pending狀態,導致後續的交易全部卡死。除非這一筆pending狀態的交易被礦工打包。請注意nonce,由於每一個賬號的每一個交易nonce都是遞增的,因此如果用已經成功的交易的nonce重新交易,一定會報錯nonce too low。
1、發現有一筆訂單一直處於pending狀態,後續的所有交易都不能正常進行
2、解決方案,通過設置較高的gasprice來覆蓋或替換該交易
3、接下來,該賬號就可以正常轉賬啦。
目前市場上尚未找到能滿足該功能的工具/錢包,如需提供技術服務,請聯系作者,微信號:hqfeijian ,備註:以太坊替換交易
⑨ 以太幣提現不到賬
刷新。
有兩種可能一種可能平台沒有給你打幣,需要咨詢客服。第二種錢包問題未能收到你的體現。我之前在ZB平台提過也出現過這種情況。平台客服說錢包問題,然後給我退回,原來賬戶拉。