ONC:决定转账打包顺序的「神秘」值:Nonce

在《儒林外史》里有一个吝啬鬼叫严监生,临终前躺在床上,竖起两根指头来。家里的侄子,奶妈就围着他问,是不是有什么心愿未了,却都不解其意。最后,严监生的老婆赵氏猜到了原因,屋子里的灯点着两茎灯草,严监生觉得太浪费了,才迟迟不肯咽气。当赵氏把灯里的灯草挑掉了一茎,严监生这才两腿一蹬,双眼一闭,安心去投胎了。

假设在多年轮回后,严监生在 2017 年成了一个加密货币投资者。这天他用 imToken 1.0 给赵氏转账了 10 个 USDT,却仍不改其吝啬的本质,把手续费设定得很低,可这笔交易过了很久也没有显示转账成功。

严监生有些焦急,又给赵氏发去了一笔 10 个 USDT 的转账,这次手续费多给了一些,很快便成功了,而原先发起的第一笔交易则显示失败。

Emmmm~ 这是为什么呢?

最近以太坊网络转账的矿工费越来越贵,原因我们在《为什么矿工费这么贵?》解释过了,那么面对昂贵的矿工费,多数人都会选择把矿工费调低一些,毕竟节俭一点没啥不好的。

美国司法部要求法院撤销在FTX破产案中不任命独立审查员的决定:5月18日消息,美国司法部(DOJ)的一个分支机构美国受托人(US Trustee)在周三提交的一份法庭文件中表示,特拉华州破产法院必须推翻先前拒绝在FTX破产案中任命独立审查员的命令。司法部受托人Andrew R. Vara在提交的文件中表示,尽管FTX案件的各方都抱怨与任命审查员相关的高额成本,但从法律和实际目的来看,与任命审查员相关的任何成本都不能成为偏离法定要求的理由,即在符合法定标准的情况下任命审查员。[2023/5/18 15:11:27]

可是当我们使用 imToken 1.0 进行转账,把手续费调得很低时就可能会出现上面这种情况:第一笔交易迟迟不被打包,再次发起第二笔交易成功后,第一笔交易则会显示失败。

究其原因,是一个叫 nonce 的值造成的。

在以太坊上发生的每笔交易都有一个值叫 nonce,这个值用于计算一个以太坊地址中发出的交易数量。一个以太坊地址里的所有转账会按照你发起转账的时间,给每一笔交易排序,从 0 开始计数。地址每发送一笔交易,交易的随机数 nonce 就会增加 1,而转入这个地址的交易则不会改变 nonce 值。

台积电董事长刘德音︰尊重蒋尚义转投中芯决定:近日,台积电老臣子蒋尚义转职中芯国际出任副董事长。台积电董事长刘德音回应称,他与蒋尚义是老同事,尊重其个人去向,本来就是他个人权利。对于蒋尚义转投中芯后会发布了Chiplet技术,刘德音同意该技术很重要,台积电发展Chiplet已有十余年时间,3纳米制程就是要靠Chiplet技术增加性能。(新浪财经)[2020/12/16 15:25:35]

举个例子:

0x336d3e7fdFB677Bd1c7324919556EB6E98F6eDEF

这个地址中截止撰稿一共向外发起了 4 笔向外转账和 2 笔进账收款,其中红色框框标出的这两笔交易不纳入该地址的 nonce 值计算,其余 4 笔向外转账交易的 nonce 值从下往上分别为 0,1,2,3。

动态 | Bitfinex对纽约最高法院的决定提出上诉:8月20日消息,纽约州法院裁定其对Bitfinex拥有管辖权 允许纽约总检察长办公室继续调查。但根据最新的一份通知显示,Bitfinex (iFinex)和Tether正在对纽约最高法院昨天的判决提起上诉。公司在声明中称:“初审法院缺乏个人管辖权,因为服务有缺陷,而且申诉人未能证明被告从事了有目的活动。初审法院缺乏标的物管辖权,因为作为申诉人调查重点的加密货币既不是商品,也不是《马丁法案》(Martin Act)管辖所要求的证券。”(coindesk)[2019/8/20]

以太坊区块链对 nonce 做了这样三条规定:

矿工需要按照 nonce 值从小到大去打包转账,所以在 nonce 为 0 的交易未被矿工打包前,nonce 为 1,2,3···的交易无论矿工费给的多高,都必须一直排队等着(就好比早高峰堵车的时候我们不能加塞,无论是劳斯莱斯还是奇瑞,都只能老老实实排队)。

火币HADAX关于近期网络谣言的调查及处理决定:火币今日发布公告称,近期监测到网络中出现题为《多个项目方炮轰火币HADAX》的网络文章,随后MAN、YCC、GVE项目方发布澄清公告表示与上述网文无关,证明火币清白,网文谣言不攻自破。 本着澄清事实,还原真相的态度,我们立即进行了调查,并联系到未发澄清公告的INC项目方。INC项目方承认网上言论来源于INC项目方的主要成员,并提出HADAX平台中INC的交易数据不合理,但未提供证据。 经和INC项目方沟通,项目方陈述事实详见公告, 对于本次事件火币HADAX决定做出如下处理: 1.立即暂停INC在HADAX上的交易,但允许充提币。 2.对支持INC项目的超级节点进行尽职调查,暂停其超级节点资格。 3.启动HADAX全部超级节点的审查,在审查行动完成之前,暂停HADAX投票上币机制。 4. 火币保留依法追究本次网络谣言事件中相关人员及自媒体法律责任的权利。[2018/6/10]

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

前印度央行行长杜沃里·苏巴拉罗:对比特币采取决定性行动还太早 需要在监管和发展之间取得平衡:前印度央行行长杜沃里·苏巴拉罗(Duvvuri Subbarao)近日表示,对比特币采取决定性行动还为时过早,因为比特币是一项技术创新,监管不应该阻碍其在印度的增长。他表示:“比特币背后的区块链技术甚至还有其他应用是一项技术创新,我们需要在数字货币的监管和发展之间取得平衡。”[2018/1/4]

如果有两笔交易 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  跑道的运动员才可以起跑。

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

imToken 2.0 针对到账慢的交易推出了加速功能,这个功能就像是一个能量棒,吃下去后就能让交易迅速被矿工打包。imToken 会根据以太坊上的网络情况,自动帮你计算出性价比最高的矿工费,点击「加速交易」,就可以完成交易加速打包。

「加速交易」的原理其实也很简单,就是再发起一笔 nonce 值相同,但矿工费更高的转账,来覆盖原来的。这样这笔交易就会更快被打包,原来的转账则被替代掉。

如果你拿不准自己转账的矿工费该如何设定,是贵了还是便宜了。别担心,最新版的 imToken 已经支持三挡变速,「快速、一般、缓慢」三种交易打包速度,任你选择。

imToken 1.0 不支持交易加速和连续发起多笔交易。当一笔交易设置的矿工费过低时,会导致迟迟不被打包,也无法进行加速。而如果在第一笔交易还未成功被打包,就急于发起第二笔交易,则会导致其中一笔交易失败。

imToken 2.0 支持交易加速、三挡变速和连续发起多笔交易。当一笔交易设置的矿工费过低时,可以追加矿工费,加速打包确认。在最新版 imToken 中,你可以按需选择矿工费,「三挡变速」一目了然;如果不介意打包时间的话,可以连续发起多笔交易,静静等待交易被打包确认就可以了。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:15ms0-1:469ms