Nonce:决定转账打包顺序的「神秘」值!
来源:    发布时间: 2023-11-30 20:07   35 次浏览   大小:  16px  14px  12px
在《儒林外史》里有一个吝啬鬼叫严监生,临终前躺在床上,竖起两根指头来。家里的侄子,奶妈就围着他问,是不是有什么心愿未了,却都不解其意。最后,严监生的老婆赵氏猜到了原因,屋子里的灯点着两茎灯草,严监生觉得太浪费了,才迟迟不肯咽气。当赵氏把灯里的灯草挑掉了一茎,严监生这才两腿一蹬,双眼一闭,安心去投胎了。

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

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

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

Emmmm~ 这是为什么呢?

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

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

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

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

举个例子:

0x336d3e7fdFB677Bd1c7324919556EB6E98F6eDEF

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


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


挖矿都要确定 nonce 值小小年纪到大去搬家做好转钱,因此在 nonce 为 0 的的在线交易未被挖矿搬家做好前,nonce 为 1,2,3···的的在线交易就算挖矿费给的多少,都有必要很久排列图片等待(就比作早顶峰塞车的同时我们大家不许加塞,就算是劳斯莱斯幻影还奇瑞新款,都必须老老实人实排列图片)。 nonce 是多次的,不关闭。当 nonce 为 1 的购买没得发起对时,nonce 不从 0 简单跳入 2,即 nonce 为 2 的购买必须形成在 nonce 为 1 的购买上面。 若是 有两笔寄售所 nonce 相当,中间第两笔寄售所完美后,额外第两笔寄售所就要屏幕上显示被换用,转帐超时。 严监生在运用 imToken 1.0 进行汇款时,一号笔 nonce 为 0 的购买,鉴于要办费过低,无被挖矿及时的废品回收站,始终正处在等着情况下。此时他其次展开的第二种笔购买 nonce 值,你猜是 0 或者是 1 ? 你想要的答案是 0。 你应该特点怀疑,后边不能说如今注册地址每散发1笔向外转帐, nonce 值则会 +1 么,为何在等你两笔转帐的 nonce 值却全部都是 0 呢? 其原因是 imToken 1.0 不帮助建起不断打款,假若在最笔寄售未被成就 包装的现象下,就不断发射下第大笔寄售,在其中第大笔就有还会失敗,这是这因为这两笔寄售安全使用的是一样的 nonce 值。 随着以太坊 nonce 的3个条规范,当有几个 nonce 值相等的市场转让發生时,就会一斜笔市场转让被完美率装包,一山不容易二虎。理解,在一是笔市场转让未转钱完美率时,后面建立的最后笔、3个笔、···· 第 n 笔市场转让的 nonce 值均为 0,这其中只一斜笔市场转让能被挖矿完美率装包,某些的市场转让会所有的出现无效。那就,哪笔市场转让能完美率呢,有那些区分条件么?

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


这 n 笔陆续开展发动, nonce 值一样的在线购买,就好似起跑线各种,起点站线却一样的有氧运筹备会,只要有1名的飞人博尔特能被斯柯达注意,其它的善的意思籍籍无名。更新升级后的 imToken 2.0 则认可开展发动维持转款,要严监生是用 imToken 2.0 开展转款,那么好他的1笔在线购买 nonce 临界值 0,二是笔在线购买 nonce 值则为 1,若果前排的在线购买还未打架包,之后开展发动的在线购买 nonce 值也会半自动叠加 1。 顶端他提起了 nonce 为 0 的买卖未被工人解压时,nonce 为 1 的买卖就得直到等候着,任何即使以后进行的买卖 nonce 值会求和,却都要排队等待等候着 nonce 值更小的买卖被解压后,性能该轮他。 这 n 笔时间顺序建起, nonce 值快速相减的合作,就就像起跑线不一,达到线不一的健身运筹备会,但一定要在1、塑胶机场跑道的健身运筹备会达到达到后,其二、三、··· n 塑胶机场跑道的健身运筹备会才需要起跑。 只要一是操场赛道的人是博尔特,所以险遭的数笔成交也是可以更慢持续出战,有必要是一是操场赛道的人是海绵垫婴儿的猫狗——小蜗,那背后操场赛道的的运班师们机会就得等你天荒地岁数大了。这位情况就该给小蜗第一根体力棒,提起步!

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


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


倘若你你拿对不上我自己转帐的煤矿工人费该怎样如何快速设置,是贵了最好廉价了。别想不开,近期最老版的 imToken 以及能够三挡变化,「如何快速、一半、慢」五种买卖压缩时速,任你首选。

小结:

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


imToken 2.0 使用刷卡在线进行的交易所促进、三挡换挡和陆续举办分笔刷卡在线进行的交易所。当一大笔刷卡在线进行的交易所放置的工人费过低时,行追加工人费,促进捆扎一起的验证。在2017最第一版 imToken 中,你行按需选定工人费,「三挡换挡」明了;若不在乎捆扎一起的时期说说,行陆续举办分笔刷卡在线进行的交易所,默默守候刷卡在线进行的交易所被捆扎一起的验证就行了。