Nonce

交易失敗時隨機數會增加嗎?

  • December 27, 2019

交易失敗時隨機數會增加嗎?

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 應該是什麼。在發送數千筆交易之前了解微妙的問題很重要,否則您將陷入困境。

希望能幫助到你。

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