168炒股学习网 - 专注提供股票金融知识

ASICBoost是什么?

2018年3月29日  21:40:38 来源:168炒股学习网  阅读:2453人次

网友发帖:

ASICBoost是什么?。http://media.weibo.cn/article?id=2309404094783910998223&jumpfrom=weibocom

ASICBoost是什么?
拿铁大
04.10 00:40
阅读 209
关注
非芯片设计专业解析ASICBoost
前言
ASICBoost可以说是一次很好的洗大V,很多聪明的头脑也在其中变得无脑,没逻辑。建议先看这两篇理一下自己的思路。
https://medium.com/@samcole_74219/asicboost-655a73d48ae4(http://8btc.com/thread-50972-1-1.html)
http://hackingdistributed.com/2017/04/05/bitcoin-drama-response/

比特币挖矿与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次哈希后更改一次。

区块头
在计算这个区块头的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。

ASICBoost
这样问题就变成能不能高效找到后缀一样的Merkle Root?效率提升有多大?
如何高效伐木?
Merkle Root是将区块中所有交易计算出的Merkle树的根。

Merkle Tree(引用Mastering Bitcoin第7章)
ASICBoost的白皮书提到有很高效的方法,并且给出了一张表:

ASICBoost白皮书的Merkle Root碰撞数量对效率影响
这里问题的本质是一个32位的哈希碰撞,根据“生日悖论”,找到一组碰撞需要的尝试次数其实并不多,我们只需要77000次就有50%概率找到两个后缀相同的Merkle Root。当然对于一台矿机来说,仅仅2个是远远不够的,如果是矿场的话应该需要配备专门的硬件去产生足够的任务。尝试新的Merkle Root通常有两种方法:
修改Coinbase交易,即图中的HA。这个方法似乎最简单而且隐蔽,但是白皮书认为不够高效;
交换任意交易的顺序
白皮书只举例了方法2,其他方法并未给出。
注意无论是1和2,新的Merkle Root并不需要从下而上全部计算。例如改变交易A,我们只需要重新计算HA,HAB,HABCDEFGH和根。交换交易(IJKL)和(MNOP)只需要重新计算HIJKLMNOP和根。
检测ASICBoost
区块版本是否正确
交易顺序是否符合默认的优先级
对于修改Coinbase的似乎无法检测,但是这个方法效率低于方法2
隔离见证
那么说到现在,这事和隔离见证有什么关系?隔离见证引入了"witness tx id",交易在原有ID之外有了另一个新的ID,即用新的交易序列化格式(不包含签名部分)得到的交易哈希。相应的,我们也有了一个新的Witness Merkle Tree,以及Witness Merkle Root。由于软分叉实现,我们不能替换现有的Merkle Root,而是在Coinbase交易中增加一个OP_Return的输出,写入这个“WMR”。而这也导致对任何交易或者交易顺序的改动,我们都要从下而上重新计算“WMR”,大大降低了伐木效率。
好啊,知道你们为什么要阻止隔离见证了,原来就是要偷着用ASICBoost啊,你们不仅会阻止隔离见证,还会阻止一切比特币的进步。
打住吧。。。。
可以使用ASICBoost+反对隔离见证 不等于 为了ASICBoost反对隔离见证。
你看到了两个事物同时存在,就觉得其中一个事物是另一个的起因。你的错误在于,同时存在的两个事物未必有因果关系。

必然如此:

【不是谣言吧!】

正好路

评论专区
   本站有缓存,一般1小时内能看到您的评论
相关文章:
168炒股学习网
一家专注为中小股民提供炒股入门知识的网站!
我们相信客户至上,并真诚为您服务!祝您投资愉快!
商务合作微信QQ:765565686,联系人:陈经理
版权所有:168chaogu.com,粤ICP备14098693号