2.4 比特币挖矿
Alice的这笔交易现在已经在比特币网络上传播开来。但只有被挖矿节点验证且加到一个区块中之后,这个交易才会成为这个共享账簿(区块链)的一部分。关于挖矿的详细描述请见第10章。比特币系统的信任是建立在计算的基础上的。交易被打包在一起放进区块中时需要极大的计算量来证明,但是验证这个证明只需少量计算就可以。
挖矿在比特币系统中有两个重要作用:
▷ 挖矿节点依据比特币的共识规则验证所有交易。 因此,挖矿过程会拒绝无效或不合规交易,以此保障比特币交易的安全性。
▷ 挖矿在构建区块时会创造新的比特币,就像中央银行发行新的纸币一样。每个区块创造的比特币数量是固定的,并且会逐渐减少。
挖矿在成本和报酬之间取得了良好的平衡。 挖矿耗费电力来解决数学问题。 矿工挖矿成功将会获得新的比特币和交易费作为奖励。 但是,只有其他矿工正确验证了所有的交易,符合共识规则的要求,才能拿到奖励。 这种微妙的平衡为没有中央权威机构的比特币提供安全保障。
描述挖矿最好将其类比为一个巨大的多人数独游戏。一旦有人发现正解之后,这个数独游戏会自动重置,并调整难度,使得游戏每次都需要大约10分钟才能解决。想象一个有好几千行和列的大型数独游戏。如果给你一个已经完成的数独谜底, 你可以很快地验证它。然而,如果这个数独只有几个方格里有数字其余方格都为空,就会花费非常长的时间才能解决。这个数独游戏的困难度可以通过改变其大小(更多或更少行列)来调整,但即使非常大时验证结果也是相当容易的。比特币中的 “谜题” 是基于哈希加密算法的,有类似的特点:不对称,解起来困难而验证很容易,而且它的困难度可以调整。
在 “比特币的应用、用户和他们的故事”一节中,我们提到了一个叫Jing的上海企业家。Jing在比特币网络中扮演了一个矿工的角色。大概每10分钟,Jing和其他上千个矿工一起开始一场全球竞赛,目的就是对一个区块的交易寻找正解。寻找这个解,也被称为工作量证明,整个网络需要进行每秒亿万次哈希计算。这个工作量证明算法指的用SHA256加密算法重复不断对区块头和一个随机数字进行哈希计算,直到出现一个和预设目标值相匹配的解。第一个找到这个解的矿工就是赢得这局竞赛,并会将此区块发布到区块链中。
Jing从2010年开始挖矿,当时他使用一个非常快的桌面电脑来为新区块寻找正解。随着更多的矿工加入比特币网络中, 寻找谜题正解的难度迅速增大。不久,Jing和其他矿工升级成更专业的硬件,比如游戏桌面电脑或更专业的高端独立图像处理单元芯片(即显卡GPU)。在写这本书的时候,解题已经变得极其困难,只有使用专用集成电路(ASIC),就是几百种挖矿算法集成在一个单硅芯片上并行计算进行挖矿才会盈利。Jing的公司同时加入了一个矿池,这类似彩票奖池,能够让多个矿工共享算力和回报。Jing现在运行一个矿场,有几千个ASIC矿机每天24小时不间断地挖矿。他卖掉一些挖矿得到的比特币来支付电费,赚取利润获得收益。