10 eth交易中的nonce为什么一定要连续,我认为比当前的大就行了,请各位网友解惑???

请先 登录 后评论

最佳答案 2020-01-10 10:15

交易 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 $$ 被成功打包到区块中后才会处理。

请先 登录 后评论

其它 3 个回答

Tiny熊
  擅长:智能合约,以太坊
请先 登录 后评论
妖孽
请先 登录 后评论
王较瘦 - 学生
请先 登录 后评论
  • 3 关注
  • 0 收藏,8468 浏览
  • ganmz4ever 提出于 2020-01-09 15:38