对隐藏的ASICBOOST指控的概述

图像解析-比特币区块梅克尔树(Merkle Tree)说明图

概述

ASICBOOT是一种减少ASIC采矿工作量的方法,以便在比特币的PoW(Proof of Work)中更高效率的计算出哈希值。SHA256作为比特币PoW的哈希演算法,在演算前会先将数据分割为每部分64字节。而比特币区块的块头部分(Block Header)有80字节,因此一般被分割成两部分。ASICBOOT首先将其中一部分的数值固定,然后再运算哈希值。透过只需要运算一部分哈希值,这种方法降低了整体运算所需要的工作量。

本研究报告应被视为对隐蔽ASICBOOST的概述,而不是准确或详细的分析。一些较复杂的内容并不包括在本文涵盖之内

我们没有足够的证据来证明矿工们实际上是否正在用这种方法来挖掘比特币。本文的目的是概述隐藏ASICBOOST的理论,而非为了得出任何结论。ASICBOOST第一次被正式描述是在一篇2016年3月发表的论文里。

 

“正常” 哈希

当比特币矿工运算哈希时,每次运算时块头中的一些数据便会被改变,因此产生不同的哈希值。这产生出来的字符便称为随机数(nonce)。

矿工在每次运算时都会更改位于块头(图中右上角)4个字节的随机数。当所有的随机数都被运算过后,位于Coinbase 交易(图中左下角)附加的随机数便会改变,以得出新的熵(entropy)。Coinbase交易的变动会影响梅克尔根Merkle Root哈希值,进一步影响先前文中提到被分割的两部分值,令到块头的两部分都需要计算PoW。与一般认知相反,额外的随机数的设计是Satoshi的原始比特币就存在的,并不是后来为了产生额外的熵给矿工而加上的。

 

公开的 ASICBOOST

矿工使用这种方法后,与其改变额外的随机数,他们改变块头中的4个字节的 “Version”部分(图中左上角)。这意味着被分割的第二部分在运算时保持不变,因此节省了算力。如果使用这种方法,每个人都可看到 Version 字节的变化,因此ASICBOOST很容易被检测出来。

 

隐藏的 ASICBOOST

这里的目的是保持梅克尔根哈希的最后4个字节相同同时通过改变梅克尔根哈希的前28个字节来生成熵。因此,由于被分割的第二部分在运算中保持不变,部分算力得以保存。

然而,找到梅克尔根哈希最后4个字节的冲突点是不容易的。唯一的方法是使用简单粗暴的方法来演算大量哈希值。

为了找到一个这样的冲突点,预计将需要计算的次数为2 ^ 32的平方根。因为我们正在寻找一个4个字节、32位元的冲突点。这需要2 ^ 32次尝试,然后根据 “生日悖论”,我们将数值开方因此得到65,536次运算尝试。

每次运算尝试额外的随机数可能需要更改并生成新的梅克尔根哈希值。然而,由于梅克尔树的结构属性,这将需要更多的额外算力。如果改变了额外的随机数,梅克尔树的每一行则需要一个新的哈希。由于一个大的比特币区块很可能超过10行,随机数的改变将需要很多额外的工作,因此这是一个低效的过程。

以下方法可能使过程更加高效:

    • 方案1 – 产出小的或空的区块。这让梅克尔树变小了,因此需要的操作算力来生成不同的梅克尔根哈希也变小了。这使得额外的随机数可以以正常的方式变化以产生更多的梅克尔根哈希。
    • 方案2 – 将梅克尔树右侧的分支重新排列(见图中的红色圆圈)。通过重新排列梅克尔树右侧的顶部,不管梅克尔树的大小如何,只需要做两个额外的哈希运算就可以产生一个新的梅克尔树哈希。这个方式是可行的,但也可能有限制重新排列的机制,例如交易排序。要求一笔交易的支出在同一个区块中作为另一笔交易的输出数据的情况下,必须位于区块的右侧。
    • 方案3 –重新排列梅克尔树右侧的交易位置,或交换交易。

上述方案可以结合起来使用。

 

SegWit更新提案所带来的影响

如图中的蓝色所示,SegWit提案给矿工提供了在区块中添加第二个梅克树的选项(如果他们选择用SegWit),同时这个树的梅克树根哈希将存在于Coinbase交易中。

第二个梅克树需要与主梅克尔树的整体结构相同。两者不同的是,在第二个梅克树中,被隔离见证赎回的交易输入数据中的签名数据(以及其他交易数据)是存在的。而在主梅克树中只有交易的版本、输入、输出和锁定时间等数据被保留,其中不包括签名数据。由于交易结构必须相同,对梅克树主树的任何更改,如将分支重新排列,其变更必须反映在第二个梅克树中。因此,便会失去了上述方案2或方案3的作用,导致隐蔽的ASICBOOST效率低下。

然而在SegWit更新之后,矿工仍然可以执行隐蔽的ASICBOOST,但只能使用方案1或自由选择放弃使用的见证承诺。理论上说,过于频繁的使用这些方法是很可疑的。矿工一般想确保ASICBOOST的使用无法被检测,得以在不被发现的情况下保持其竞争优势。

 

指责使用隐蔽ASICBOOST的证据

有人指责大型采矿池可能使用了隐蔽的ASICBOOST,令到这个矿池比其他矿工的收益更高。据说该指控提供了以下证据:

    • 与其他矿工相比,可疑的矿池的小区块或是空区块的产出比例高出许多(我们将在接下来的几周内发表有关研究)。
    • 公司的硬件产品决定了使用ASICBOOST的能力。该硬件已经在市场上存在了一年多,而且成本高昂。人们可以争辩,如果没有使用ASICBOOST,这笔投资就浪费了。然而,这种基于硬件的证据并不指向隐藏的ASICBOOST,也可以指向公开的ASICBOOST。
    • 可疑的矿池被指控持有部分关于ASICBOOST的专利,这可以被视为间接证据。
    • 更多的间接证据表明,这可能是公司希望防止在比特币更新SegWit的解释。在我们看来,即使这是真的,这可能只是试图阻止SegWit更新的一部分原因。

我们认为,尽管这些指控可能有其真实性,但证据并不是决对令人信服的。

 

​欢迎转载,请注明文章来自

BitMEX (www.bitmex.com)