8BTCCI: 11470.51 -0.26% 8BTCVI: 5340.59 +0.38% 24H成交额: ¥4158.00亿 +0.86% 总市值: ¥16154.85亿 +0.01%

ASICBoost是什么?

拿铁大 发布在 技术指南 69925

前言

 

ASICBoost可以说是一次很好的洗大V,很多聪明的头脑也在其中变得无脑,没逻辑。建议先看这两篇理一下自己的思路。

 

比特币挖矿与SHA256

 

我们先简单回顾一下比特币挖矿机制和SHA256算法。比特币的挖矿是对80字节的区块头计算两次SHA256的哈希值,即SHA256(SHA256(BlockHeader)),这个运算的结果必须小于当前网络难度对应的目标。区块头包括4字节的版本号,上一个区块头的哈希(32字节),当前候选区块打包交易的Merkle Root(32字节),时间戳(4字节),难度(4字节),Nonce(4字节)。​在每一轮挖矿过程中,版本号、上个区块头、难度都是确定的,矿工需要去不断修改Nonce来构造满足难度的区块头。而Nonce的搜索空间显然是不够的(2^ 32),因此矿工还需要修改Coinbase交易,得到新的Merkle Root,即每2^32次哈希后更改一次。

 

p1区块头

 

​在计算这个区块头的SHA256时,我们需要先用固定的填充位补齐为128字节,之后SHA256会64字节一组去处理,可以简单认为是 F ( F(SHA256规范的初始值,前半部分), 后半部分)。F又需要对这64字节先按4字节一组拆分,进行64轮计算。结合上图,我们不难发现,Merkle Root的前28个字节和后4个字节被分开了,在修改Nonce过程中,前半部分是不变的,而后半部分的前12个字节也是不变的。因此目前几乎所有的芯片都已经做了这两个优化,即前半部分的处理结果(getwork中的midstate)和后半部分的前3轮结果(midstate3)。这样的优化效果是 (61/64+1)/3 = 65%,提升了35%​。

 

ASICBoost

 

Merkle Root在图上显得很尴尬,如果中本聪设计的时候Version变成第三个字段该多好。这样后半段的前4个字节就固定了,如果我们对于时间戳要求不那么高,前12个字节可以完全固定下来了。对于芯片来说可以节省更多的计算,也可以去掉对应的一些电路。ASICBoost将这个脑洞往实践推了一步:我们去构建一组后4个字节相同的Merkle Root。

 

p2ASICBoost

 

这样问题就变成能不能高效找到后缀一样的Merkle Root?效率提升有多大?

 

如何高效伐木?

 

Merkle Root是将区块中所有交易计算出的Merkle树的根。

 

p3Merkle Tree(引用Mastering Bitcoin第7章)

 

​ASICBoost的白皮书提到有很高效的方法,并且给出了一张表:

 

p4ASICBoost白皮书的Merkle Root碰撞数量对效率影响

 

这里问题的本质是一个32位的哈希碰撞,根据“生日悖论”​,找到一组碰撞需要的尝试次数其实并不多,我们只需要77000次就有50%概率找到两个后缀相同的Merkle Root。当然对于一台矿机来说,仅仅2个是远远不够的,如果是矿场的话应该需要配备专门的硬件去产生足够的任务。尝试新的Merkle Root通常有两种方法:

  1. 修改Coinbase交易,即图中的HA。这个方法似乎最简单而且隐蔽,但是白皮书认为不够高效;
  2. 交换任意交易的顺序
  3. 白皮书只举例了方法2,其他方法并未给出。
注意无论是1和2,新的Merkle Root并不需要从下而上全部计算。例如改变交易A,我们只需要重新计算HA,HAB,HABCDEFGH和根。交换交易(IJKL)和(MNOP)只需要重新计算HIJKLMNOP和根。

 

检测ASICBoost

 

  1. 区块版本是否正确
  2. 交易顺序是否符合默认的优先级
  3. 对于修改Coinbase的似乎无法检测,但是这个方法效率低于方法2

 

隔离见证

 

那么说到现在,这事和隔离见证有什么关系?隔离见证引入了"witness tx id",交易在原有ID之外有了另一个新的ID,即用新的交易序列化格式(不包含签名部分)得到的交易哈希。相应的,我们也有了一个新的Witness Merkle Tree,以及Witness Merkle Root。由于软分叉实现,我们不能替换现有的Merkle Root,而是在Coinbase交易中增加一个OP_Return的输出,写入这个“WMR”。而这也导致对任何交易或者交易顺序的改动,我们都要从下而上重新计算“WMR”,大大降低了伐木效率。

好啊,知道你们为什么要阻止隔离见证了,原来就是要偷着用ASICBoost啊,你们不仅会阻止隔离见证,还会阻止一切比特币的进步。

打住吧。。。。

可以使用ASICBoost+反对隔离见证 不等于 为了ASICBoost反对隔离见证。

你看到了两个事物同时存在,就觉得其中一个事物是另一个的起因。你的错误在于,同时存在的两个事物未必有因果关系。

​​​​

文章标签: ASICBOOST
评论(11)
登录 账号发表你的看法,还没有账号?立即免费 注册
  • 动说科技-专业的互联网金融服务商 2017-04-10
    使用ASICBoost+反对隔离见证 不等于 为了ASICBoost反对隔离见证。
  • 睿思通-专注比特币交易平台开发 2017-04-13
    ​在计算这个区块头的SHA256时,我们需要先用固定的填充位补齐为128字节,之后SHA256会64字节一组去处理,可以简单认为是 F ( F(SHA256规范的初始值,前半部分), 后半部分)。F又需要对这64字节先按4字节一组拆分,进行64轮计算。结合上图,我们不难发现,Merkle Root的前28个字节和后4个字节被分开了,在修改Nonce过程中,前半部分是不变的,而后半部分的前12个字节也是不变的。因此目前几乎所有的芯片都已经做了这两个优化,即前半部分的处理结果(getwork中的midstate)和后半部分的前3轮结果(midstate3)。这样的优化效果是 (61/64+1)/3 = 65%,提升了35%​。
  • kingto 2017-04-10
    最后两句话显得有点薄弱
  • 比特币矿机 2017-04-10
    博主是故意闭上眼睛的人。怎么可能看到全部真相。为你难过。
  • bigoneer 2017-04-10
    如果不是这个因,那又是什么样的因//@比特币矿机:博主是故意闭上眼睛的人。怎么可能看到全部真相。为你难过。
  • 比特币矿机 2017-04-10
    不知道楼主是不是洗地水军。现在就ASICBOOST专利问题,帮楼主完美关键问题: 1,比特大陆专利申请的合法性问题。这个已经由闪电智能公司,聘请律师正在进行相关法律行动。目标是最终让该公司的申请失败。 2,比特大陆芯片是否有该功能?这个由比特大陆自己的公关文章证明,芯片带有这个功能。
  • 比特币矿机 2017-04-10
    3,比特大陆是否已经将ASICBOOST矿机功能投入使用?因为需要矿机与矿池配合这个功能才被激活,没办法进行正常测试。国外社区有人在尝试进行独立测试。如果比特大陆公布相关代码,将有帮助于社区确认该功能是否已经使用。 4,比特大陆是否只给自己公司使用?这个部分在关键3得到验证后,才能被验证。
  • 比特币的那点事 2017-04-10
    //@钟隐btc:
  • 币区势 2017-04-10
    [哆啦A梦吃惊]//@007龙少: 不明觉厉
  • 希希夷 2017-08-29
    原来AsicBoost的核心原理是构造特殊的Merkle Root,学习了。
  • 李白起不来_h61 2018-05-14
    学习了,很有帮助。谢谢。