爲了防止交易重複進行,以太坊要求每筆交易必須有一個nonce數值。nonce值從0開始遞增,每發送一筆交易,nonce便加1。
只有當前面nonce值較小的交易處理完成之後纔會處理後面nonce值較大的交易。
以太坊處理nonce的規則:
- 當nonce小於之前已經有交易使用的nonce值,交易會被拒絕;
- 當nonce大於當前應該使用的nonce時,交易會一直處於隊列之中進行等待,交易依次執行,直到補齊中間間隔的nonce值,纔可以執行。
- 當有一筆處於pending狀態的交易,新的一筆交易與其擁有相同的nonce值,如果新交易的gas price太小,無法覆蓋pending狀態的交易,如果新交易的gas price高於原交易的110%,則原交易會被覆蓋掉。