Nonce
交易失敗時隨機數會增加嗎?
交易失敗時隨機數會增加嗎?
TX1 nonce=0 成功
TX2 nonce=1 失敗
TX3 隨機數=?
TX3 的 nonce 值是多少?如果您解釋原因,我們將不勝感激。
TX3 隨機數=?
2
事務是上下文相關的,因此它可以成功或失敗取決於之前發生的事情。
為什麼?
失敗的交易肯定失敗了,它的失敗被記錄為區塊鏈上的事實。如果不是這種情況,那麼事務(隨機數:1)將“失去”——處於模棱兩可的狀態,既沒有成功也沒有失敗。這與將來可能成功的待處理事務沒有區別。
還有什麼?
附帶說明一下,雖然在不同賬戶發送交易時無法保證 FIFO,但可以保證來自單個地址的交易以 nonce 順序進行探勘/處理。所以在成功或失敗
3
之前不會被處理。2
還有什麼?
Nonce 是客戶端的責任。沒有硬性要求它每次都會增加,儘管錢包傾向於在後台這樣做。鑑於交易必須按 nonce 順序進行,並且如果 gasPrice 太低,交易可能會停止,因此可能會堵塞不斷發送更高 nonce 的錢包。解決這個問題的方法是通過發送另一個具有相同nonce 和更高 gas 價格的交易來“取消”未探勘的交易。此替換事務可以具有相同的參數或通過“什麼都不做”設置取消(第一個)。“什麼都不做”可以在沒有數據的情況下向自身發送 0 乙太幣。這種取消通常是一個手動過程,但如果編碼人員願意,它可以在 UI 中實現。
還有什麼?
為了其他發生這種情況的人的利益,跟踪 nonce 是客戶端的責任。爆發大量交易的應用程序需要處理卡住的交易並跟踪它們的位置。沒有可靠的方法來檢查鍊或交易池並發現 nonce 應該是什麼。在發送數千筆交易之前了解微妙的問題很重要,否則您將陷入困境。
希望能幫助到你。