主页 > imtoken苹果版下载官网怎样下载 > ASICBoost专利门技术详解及比特币包挖矿原理

ASICBoost专利门技术详解及比特币包挖矿原理

前言:最近的“ASICBoost专利门”事件在整个币圈引起了轰动,影响了比特币的未来。整个专利技术涉及到比特币封装和挖矿的底层,可能很少有人了解。本文在参考大量文献后,试图以通俗易懂的方式介绍整个挖矿技术知识。任何支持性的判断都应该基于基于技术的客观判断,这比基于某些人的主观意见的判断要可靠得多。

第 1 章,哈希算法 HASH

哈希算法,也称为哈希函数,是将任意长度的二进制值映射成一个较短的定长二进制值,这个小的二进制值称为哈希值。

为了便于理解,大家可以想一想比较熟悉的WinRAR压缩软件,无论是只有一个原始文件还是几个原始文件比特币挖矿原理图,都可以压缩成一个RAR文件。当任何原始文件有任何更改时,重新压缩的 RAR 文件将被更改,而不是之前的文件。

哈希算法类似,但它处理的对象不是文件,而是字符串。将任意长度的原始字符串“压缩”成字符串,即Hash字符串。原始字符串的任何细微变化都会导致 Hash 的变化。与 RAR 不同的是,结果不能“解压”,通过 Hash 还原为原始字符串。

哈希算法有很多种,典型的哈希算法有 MD2、MD4、MD5 , SHA-1、SHA-2、SHA-256、 SHA- 512、SHA-3、RIPEMD-160 和 SCRYPT 算法(由莱特币和狗狗币使用)等等。SHA256算法在比特币中被广泛使用。RIPEMD160 算法仅在从公钥生成硬币地址时使用。SHA256算法一般在其他地方使用Hash时使用。其特性如下图所示,可以将任意字符串转换为256个随机0或1。

第二部分,矿机挖矿底层

其实最好理解一下矿机底层在做什么,就是不断改变原始数据,在SHA256算法下不断计算hash值,满足一定条件就成功了。

2.1 满足什么条件才能成功?

查看最近区块 461,228 的区块哈希示例。

000000000000000001f682adc333ebb751e63b204c8f8aa7b595e11394d5a154

前17位全为零,后面的数必须小于某个数,则条件成立。这些哈希值的结果是随机的,唯一的办法就是定期替换原始内容并不断尝试,从大量随机结果中选出符合难度条件的。难度不是固定的。根据全网挖矿能力,每挖出2016个区块会调整一次难度(从2016/6/24=14)两周左右=14)。如果挖出2016个区块的话)耗时不到两周,增加难度;如果超过两周,降低难度。

2.2原始数据是什么?

SHA256算法只对80字节的块头执行SHA256算法,而不是对整个块内容取Hash值。这80个字节具体分为六个部分。

1)版本号:4字节,投票时改变

按照目前的 BIP9 升级规范,版本号是投票区块本身支持的分叉升级方案。如果支持 SW,则版本号为 0×20000002。有关详细信息,请参阅以下文章:

9.6比特酱-比特币区块版本号知识及升级规范BIP9

2)上一个区块哈希:32字节,随新区块时间变化

这是将块串入区块链的关键,表明该块是在哪个块上开采的。当整个Bitnet出现合法的新区块时,必须及时更换新区块的hash,否则即使挖出来也可能成为孤儿。

3)交易树根MerkleRoot:32字节,交易随时间变化

所有交易都应该进行哈希处理,但是计算量太大,所以采用 Merkle Root Hash 方法将所有交易组合成一个 32 字节的 Hash 数据。它可以代表所有交易,任何交易的任何微小变化都会引起 MerkleRoot 的变化。更多讨论和图表如下。

4)Timestamp TimeStamp:4字节,当前时间略有变化

最好写当前时间,但不是很严格。允许有一定的时间偏差,但偏差不能太大。如果偏差太大,块将被隔离。因为不严格,有时候下一个区块的时间戳会早于其上一个区块的时间戳,这是有可能的,但当然真正的诞生时间是下一个区块之前的上一个区块。.

5)当前难度值Bits:4字节,每两周左右变化一次

由全网算力决定,每2016个区块重新调整一次,调整算法固定。如何用四个字节表示难度?有点类似于天文数字的科学计数法,第一个字节V1代表右移的位数,其余三个字节V3代表具体的有效数据。

F(nBits)=V3 * 2^(8*(V1-3) )

6)随机数Nonce:4字节,随时可变

这是矿工在挖矿时自己调整,让自己找到一个合适的值,让区块头的哈希结果满足难度要求。估计是中本聪在这个参数上搞错了。设计很小,只有4个字节,在CPU挖矿时代已经够用了,但在显卡GPU时代就不够用了,所有Nonce都可以在几秒内尝试。. 不过,你可以微调上面的时间戳TimeStamp,一次调整后可以多挖几秒,勉强够用。然而比特币挖矿原理图,在专业矿机矿池时代,Nonce 是远远不够的。由于每个字段一般都有明确且固定的含义,不能轻易移动,因此转向了 32 字节的交易树根 MerkleRoot。

第三部分,矿工与矿池的互动

早期,矿工可以自己独立挖矿。然而,随着挖矿难度的增加,个体矿工已经无法与矿池模式竞争。看看下图最近 7 天的区块情况。大多数区块都是由矿池开采的。矿池和矿工之间有明确的分工。

3.1 矿池为矿工提供的挖矿服务

收集比特交易是在矿池上完成的,需要运行完整的节点,而不是矿工。如下图蓝线所示,矿池会从待打包的交易中生成那些黑点,然后不定时的发送给矿工。此外,还构建了一个基本的 coinbase 交易并将其发送给矿工。理论上,矿池给予矿工的coinbase交易内容可以长期保持不变。但严格执行SW隔离后,每当交易顺序或交易内容调整时,都需要更改coinbase。此外,矿池除了需要提供 MerklerRoot 和 Nonce 之外,还需要提供区块头数据。

3.2 矿工提供的算力对矿池的贡献

矿工收到矿池的信息后,第一步就是计算红点。为了改进coinbase交易,通常是通过添加一个随机数,然后对coinbase交易进行SHA256 Hash计算。第二步计算绿点,将coinbase的结果与下图中的黑点一一结合得到上层的Hash,最终得到最顶层的交易树根MerklerRoot。第三步,计算区块头Hash。有了 MerklerRoot,结合矿池提供的区块头数据,再加上一个随机变化的 Nonce,就可以形成一个完整的区块头,并用它来计算 Hash。当 Nonce 完全遍历并足够改变时间戳时,回到第一步替换一个随机数重新完善coinbase交易是正常的,那么第二步的MerklerRoot值最终会不一样。ASICBoost 可以通过更改交易顺序来更新 MerklerRoot。第四步,提交份额计算成功的结果,不满足全网难度,只要矿池设置的挖矿难度可以提交,一般提交矿池自己的矿工ID和任务ID, coinbase 随机数和区块头时间戳 TimeStamp 和随机数 Nonce。矿池收到后会及时验证。如果满足,将记录信用贡献。同时会检查是否满足全网难度要求。如果满意,它会被广播和发布,这样就会挖出新的区块,并根据信用记录份额的数量。分配给每个矿工的硬币数量。

第 4 部分,获得专利的 ASICBoost 优化

如果你看到这一点并且还能继续清晰,说明你的智商很高,但这并不是挖掘智慧的终点。甚至还有更聪明的人设计了ASICBoost专利,理论上可以提升30%,但是需要硬件和软件,尤其是矿机和矿池之间的默契配合。

具体的专利细节不是很清楚。但是感谢@latteda的微博,我对内容的描述更好了。其中一些在本文中被引用以作说明。

按照目前的理解,简而言之就是采用SHA256算法的内部计算规则,先一组64字节,再一组4字节。应该使用ASICBoost专利来交换交易仓位,无需修改coinbase,快速获取大量相同的最后4字节相同的MerklerRoot,从而硬件加速计算SHA256哈希值的优化两次块头,即SHA256(SHA256(BlockHeader))。

在计算这个块头的 SHA256 时,我们需要先用固定的填充位填充到 128 字节,然后 SHA256 会以 64 字节为一组进行处理,可以简单的认为是 F ( F ( SHA256规范,前半部分),后半部分)。F还需要将64个字节分成4个字节为一组,进行64轮计算。结合上图不难发现,Merkle Root 的前 28 个字节和后 4 个字节是分开的。在修改Nonce的过程中,前半部分不变,后半部分的前12个字节也是Changeless。所以目前几乎所有的芯片都做了这两个优化,分别是上半年的处理结果(getwork中的midstate)和下半年的前三轮结果(midate< @3)。这样优化的效果是(61/64+1)/3 = 65.1%,增加了34.9%

Merkle Root 在地图上看起来很尴尬。如果 Version 成为 Satoshi Nakamoto 设计时的第三个字段就好了(即把 Version 放在 MerkleRoot 后面)。这样后半部分的前4个字节就固定了。如果我们对时间戳的要求不高,前 12 个字节可以完全固定。对于芯片来说,可以省去更多的计算,也可以去掉一些相应的电路。ASICBoost 将这一想法进一步推向实践:我们构建了一组具有相同最后 4​​ 个字节的 Merkle 根。

这样一来,问题就变成了是否可以高效地找到具有相同后缀的 Merkle Root?效率提升有多大?ASICBoost 白皮书中提到有非常有效的方法,并给出了一个表格:

ASICBoost 白皮书中的 Merkle Root 碰撞次数会影响效率。ASICBoost 白皮书中的 Merkle Root 碰撞次数会影响效率。(表中表示如果找到5个后4字节相同的Merkle Roots,效率可以提高20%)

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

方法一:修改Coinbase交易。这种方法看似最简单最隐蔽,但白皮书认为效率低下;

方法二:交换任意一笔交易的顺序。白皮书仅举例方法二,其他方法没有给出。注意1和2,新的Merkle Root不需要从下往上计算。

第五章,与隔离验证SW的关系

隔离验证SW:Segregated Witness就是把签名隔离起来放在后面,实现链上1.7MB左右的软扩效果。此外,LN闪电网络、侧链技术等众多货币技术正在等待SW的激活。为什么ASICBoost专利的获利者阻碍了SW?

5.1ASICBoost专利,交易顺序需要互换

为了快速生成大量的 Merkle Roots,并选择更多的最后 4 个字节相同的 Merkle Roots,然后将它们发送给矿工。这主要是矿池的工作,所以只有支持ASICBoost的矿机,没有矿池的配合是行不通的。另外,当矿工接收到这最后 4 个字节的同一个 Merkle Root 时,需要矿工硬件的配合,可以进行特殊的硬件存储优化。因此,只有支持ASICBoost的矿池,没有不支持ASICBoost的矿机。而且我觉得不会在区块链上留下太详细的使用ASICBoost的痕迹,只是交易顺序有点乱,不整齐,空块率可能比其他矿池高,

5.2ASICBoost专利,实现SW隔离验证后效率下降

因为任意交易的顺序不能再轻易互换。因为 SW 将有一个见证 Merkle Root 来写入 coinbase 交易的 OP_return 输出。也就是说之前交易所交易的顺序并没有影响coinbase,但是在实施了SW隔离验证之后,交易的顺序发生了交换,那么Witness Merkle Root可能会跟着变化,然后coinbase就会发生变化。最后,直接按照上面的方法修改coinbase,找到最后4个字节相同的Merkle Root会更方便。因此,SW隔离验证的实施并不能完全阻止ASICBoost专利的实施,但会降低其效率,从而降低ASICBoost专利实施者的利益。

此外,新提出的 EXTBLK 扩展块方案几乎立即被接受和支持。EXTBLK 扩展块也是 coinbase 交易的 OP_return 输出。但是 EXTBLK 中的交易相对独立于主链交易,主链中的交易顺序不应该影响 EXTBLK Merkle Root。

为了自己的利益反对某个方案是可以理解的,但是应该说实话而不是用其他理由(据说SW代码太复杂改不了不安全,但是不支持LTC帮忙首先用 SW 测试代码)。不可能支持对面的不可靠版本(BU差到短期内有几个bug,EC涌现共识比较复杂但是强烈支持,只是BU不影响ASICBoost)。

我们呼吁 ASICBoost 持有者多思考整个币圈。不能为了一时的利益损害整个币圈的利益,还有100多个币种申请等待SW激活。而且并不是ASICBoost专利完全无效,而是效率降低了。通过调整coinbase中的随机数,ASICBoost专利可以继续使用。以后会变成两步。第一步是运行在矿池中的Merkle Root矿机,它计算出大量最后4个字节相同的Merkle Roots。然后下一步就是给支持 ASICBoost 专利的 Bitminers 加上 Merkle Root 数据后缀。

专利技术的内容公开后,就不用再鬼鬼祟祟了。整个采矿业可以集体进入下一阶段。未来各大矿池不仅要争夺网速和分配费比例,还要争夺矿池的Merkle Root矿机能力。

相关文章:9.9比特酱呼吁【SW合成分叉】详解比特币隔离验证

继续引用《什么是ASICBoost?》

那么现在,这与隔离见证有什么关系?Segregated Witness 引入了“witness tx id”,该交易在原有 ID 的基础上又多了一个新的 ID,即用新的交易序列化格式(不包括签名部分)得到的交易哈希。相应地,我们还有一个新的见证默克尔树和见证默克尔根。由于软分叉的实现,我们不能替换现有的 Merkle Root,而是在 Coinbase 交易中添加一个 OP_Return 输出,写这个“WMR”。而这也导致任何事务或者事务顺序的变化,我们不得不从下往上重新计算“WMR”,大大降低了日志的效率。

好的,我知道你为什么要屏蔽隔离见证了,原来你要偷偷使用ASICBoost,你不仅会屏蔽隔离见证,还会屏蔽所有比特币的进展。

停下来。. . .

能够针对隔离见证使用 ASICBoost+ 并不意味着针对 ASICBoost 反对隔离见证。

你同时看到两件事,你觉得一件事是另一件事的原因。你的错误是同时存在的两件事不一定有因果关系。

在撰写本文时,比特币价格为 7178 元(来源:火币网——安全可靠的比特币交易平台)

同步发布于“咬酱”公众号,请关注并留言交流讨论,谢谢打赏分享。