关于以太坊账户(外部账户&合约账户)的nonce值

时间:2021-09-20 13:55:26

简介

nonce值的存在主要是因为它是基于account的,不同于基于utxo的比特币。nonce值主要用来防止重放攻击。

  1. 外部账户每发送一笔交易nonce加一。
  2. 合约账户每创建一个合约nonce加一。而合约调用其他合约属于内部调用,因此nonce值不变。

nonce使用的几条规则

  1. 当nonce太小(小于之前已经有交易使用的nonce值),交易会被直接拒绝。
  2. 当nonce太大,交易会一直处于队列之中,这也就是导致我们上面描述的问题的原因;
  3. 当发送一个比较大的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执行。
  4. 当交易处于queue中时停止geth客户端,那么交易queue中的交易会被清除掉。

更深的理解