织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

以太坊转账打包顺序由什么决定?了解随机数 Nonce (2)

时间:2020-06-10 18:22来源:未知 作者:admin 点击:
nonce 是连续的,不能跳过。当 nonce 为 1 的交易没有发起时,nonce 不能从 0 直接跳到 2,即 nonce 为 2 的交易只能发生在 nonce 为 1 的交易后面。 如果有两笔交

  nonce 是连续的,不能跳过。当 nonce 为 1 的交易没有发起时,nonce 不能从 0 直接跳到 2,即 nonce 为 2 的交易只能发生在 nonce 为 1 的交易后面。

  如果有两笔交易 nonce 相同,其中一笔交易成功后,另外一笔交易就会显示被替代,转账失败。

  严监生在使用 imToken 1.0 进行转账时,第一笔 nonce 为 0 的交易,因为手续费过低,没有被矿工及时打包,一直处于等待状态。这时他再次发起的第二笔交易 nonce 值,你猜是 0 还是 1 ?

  答案是 0。

  你可能有点疑惑,前面不是说随着地址每发出一笔向外转账, nonce 值就会 +1 么,怎么这里两笔转账的 nonce 值却都是 0 呢?

  原因是 imToken 1.0 不支持发起连续转账,如果在第一笔交易未被成功打包的情况下,就连续发送下一笔交易,其中一笔就一定会失败,这是因为这两笔交易使用的是相同的 nonce 值。

  根据以太坊 nonce 的第三条规则,当有两个 nonce 值相同的交易发生时,就只能有一笔交易被成功打包,一山不容二虎。同理,在第一笔交易没有转账成功时,后续发起的第二笔、第三笔、···· 第 n 笔交易的 nonce 值均为 0,其中只有一笔交易能被矿工成功打包,其他的交易会全部显示失败。那么,哪笔交易能成功呢,有什么判断标准么?

  Nonce 值相同的交易,给矿工的手续费最高的那笔更容易成功,这不是以太坊区块链的规定,而是矿工们逐利使然,谁不想多赚点钱呢。矿工当然就会选择给的手续费更多的那笔交易来打包,其他的相同 nonce 的交易则都会被矿工丢弃,显示在你的钱包软件里就是失败的状态。

  这 n 笔先后发起, nonce 值相同的交易,就像是起跑线不同,终点线却相同的运动员,只有第一名的飞人博尔特能被大众关注,其他人则籍籍无名。

  升级后的 imToken 2.0 则支持发起连续转账,如果严监生是用 imToken 2.0 进行转账,那么他的第一笔交易 nonce 值为 0,第二笔交易 nonce 值则为 1,即便前面的交易还未被打包,后续发起的交易 nonce 值也会自动累加 1。

  上面我们提到了 nonce 为 0 的交易未被矿工打包时,nonce 为 1 的交易就得一直等着,所以虽然后续发起的交易 nonce 值可以累加,却必须排队等着 nonce 值更小的交易被打包后,才能轮到自己。

  这 n 笔先后发起, nonce 值不断累加的交易,就像是起跑线不同,终点线也不同的运动员,但必须等到第一跑道的运动员到达终点后,第二、三、··· n 跑道的运动员才可以起跑。

  如果第一跑道的人是博尔特,那么后续的几笔交易也能很快陆续上场,可要是第一跑道的人是海绵宝宝的宠物——小蜗,那后面跑道的运动员们可能就得等到天荒地老了。这个时候就该给小蜗一根能量棒,提提速! (责任编辑:admin1)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容