比特币挖矿不是解决数学难题

我们都知道比特币挖矿需要大量的算力和电力,人们常常会用“解决某个数学难题”来形容挖矿的过程,但这样的描述其实并不准确。

先来看看最近我读的两本关于比特币的书,都是怎么说的。

Lynn Alden 在 Broken Money 里说:

一个新的区块是由比特币矿工(一种专门的电脑)产生的,它贡献了处理能力(因此也消耗了电力)来解决前一个区块创建的加密谜题

Fred Krueger 在 Bitcoin for Capitalists 里说:

中本聪从一个激进的核心思想开始:硬币的总供应量将是有限的。这些硬币将通过“工作证明”创建,矿工解决各种难度的问题,难度自动调整以使平均解决时间为10分钟。一旦解决了其中一个问题,解决它的“矿工”可以将预先确定的一组交易提交给一个1MB的区块,然后将该区块链接到另一个区块,创建一个不可变的公共账本,称为“区块链”,记录了每一笔交易。

我知道 Lynn 和 Fred,以及明白挖矿原理的读者都明白,所谓的数学问题到底是怎么回事,但对于没有读过比特币白皮书的人来说,“数学问题”或“加密谜题”这样的词,会让人误以为真的有一个极其复杂的数学公式,以及对应的答案。

数学问题的描述方式,至少让我曾经以为,性能越强的计算机就越智能,于是解决“难题”的几率就越大。然而,实际情况是,挖矿只是一个类似掷色子(或买彩票)的过程,你需要通过掷色子找到一个满足条件的数字,性能越强的计算机,只不过能在单位时间内掷更多次色子而已。

Inventing Bitcoin 里,Yan Pritzker 在解释完挖矿过程后,提到了这个迷思(myth):

您可能已经在媒体上反复读到比特币挖矿涉及解决复杂的方程式。现在您明白这完全是错误的。比特币挖矿并不是解决方程式,而是反复掷出一个巨大的虚拟骰子,以在某个目标区间内产生哈希值。这只是一场强制消耗一定电量的机会游戏。

读到这里,也许你会问,那么挖矿时,计算机到底在算什么?

我的答案是:它们在反复掷色子,直到找出一个符合程序给出条件的数字。

更专业更完整的描述,可以参考比特币白皮书,或者上面提到的 Inventing Bitcoin。