Bitcoin Forum
June 30, 2024, 12:25:45 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: ASICBoost是什么?  (Read 260 times)
friend666 (OP)
Sr. Member
****
Offline Offline

Activity: 406
Merit: 250



View Profile
April 10, 2017, 04:30:23 AM
 #1

前言
 

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。
这样问题就变成能不能高效找到后缀一样的Merkle Root?效率提升有多大?

 

如何高效伐木?
 

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

 
ASICBoost的白皮书提到有很高效的方法

这里问题的本质是一个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反对隔离见证。

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

​​​​
作者:拿铁大
原载于:http://weibo.com/ttarticle/p/show?id=2309404094783910998223
 
renfangfua
Sr. Member
****
Offline Offline

Activity: 336
Merit: 250



View Profile
April 10, 2017, 05:12:59 AM
 #2

写得不错。同时存在的两个事物未必有因果关系,但是有很强的动机。
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!