交易 Nonce 的用途是防止双花。 因此将 Nonce 当做一个不能被重复使用的信息存入交易中,类似于单个账户的交易表自增长 ID。
但如果 Nonce 不连续,将导致交易容易被丢弃。在网络中节点接收交易消息并非有序稳定。比如,A 连续发送两笔交易 A3和 A5( A 的最后 Nonce 为2)。如果矿工先接收到 A5,则会直接将 A5打包到区块中。直到A5被写入区块后才收到的 A3,则根据上面规则,A3将被丢弃。
网络消息广播的不稳定性,在单账户的交易量非常大时,交易被丢弃问题将愈加严重。因此,要求Nonce 必须连续,节点接收到$$T_m $$ (m > n+1)交易时将会暂存于 TxPool Pending 队列中,直到$$ T_m-1 $$ 被成功打包到区块中后才会处理。
如果觉得我的回答对您有用,请随意打赏。你的支持将鼓励我继续创作!