2.5 总结

挖矿成本

我们现在来看一下挖矿经济学。前文提到过,作为矿工挖矿是十分昂贵的。按现在的难度,找到下一个单独的区块需要计算1020个哈希值,区块奖励约是25个比特币,按照现在的比特币汇率,是不小的一笔钱。这些数据可以让我们简单地计算出挖矿是否赚钱。我们可以用这个简单的逻辑来做这个决定:

如果:

挖矿奖励>挖矿成本

那么:

矿工赚钱

条件是:

挖矿奖励=区块奖励+ 交易费

挖矿成本=硬件成本+ 运营成本(电费、空调费等)

基本上,矿工的挖矿奖励就是区块奖励和交易费。矿工自己与总的支出相比较,包括硬件和电费成本。

但这个简单的公式也有几个复杂的地方:第一,硬件投资是固定的,但电费是个变量,随时间变化。第二个复杂之处是,矿工得到的奖励取决于他们发现区块的速度,这不仅取决于他们硬件的能力,还取决于他们的计算能力占全球计算能力的比例。第三是挖矿产生的成本通常是用美元和其他传统货币表示的,但他们得到的奖励是比特币。所以这个方程在任何时候都有一个隐藏的因素,就是比特币的汇率。第四,到目前为止,我们都假设矿工会诚实地遵守协议。但矿工有可能选择用一些其他的挖矿策略,而不总是试图延展最长的有效分支。所以这个方程没有囊括所有矿工可以用到的不同策略的细微差别。事实上,要想分析挖矿是否有意义,是一个博弈论问题,没有那么容易找到答案。

到此为止,我们已经较好地理解了比特币如何实现去中心化。我们现在总结一些关键点,放在一起以便更好地理解。

我们首先从身份开始。根据我们知道的,比特币协议不需要真实世界的身份就可以参与。任何用户任何时刻都可以制造一对匿名的钥匙。如果爱丽丝想付给鲍勃比特币,比特币协议里没有详细说明爱丽丝如何得知鲍勃的地址。在这些匿名的钥匙对用作身份的情况下,交易其实是向整个点对点网络广播的信息,把比特币从一个地址转到另一个地址。比特币只是交易输出,我们在下一章节会深入讨论这个问题。

不存在所谓“1比特币”这样的东西

比特币没有固定面额,不像美元。具体来说,没有“1比特币”这样的特别名称。比特币只不过是交易输出,在现在的规则里,它们可以是精确到小数点后8位的任意值。可能的最小价值是0.000 000 01 BTC(比特币),我们称之为1个中本聪(比特币的发明人)。

比特币点对点网络的目标,是把所有新的交易与新的区块传播到所有比特币节点。但这个网络很不完美,只能尽其所能来传递信息。这个系统的安全性不是来自点对点网络的完美,而是来自我们本章中重点讨论的区块链和共识协议。

当我们说一个交易被放进了区块链,我们真实的意思是这笔交易已被确认了许多次。对于多少次确认足以让我们确信交易已包含在内,并没有一个固定的数字,但6次是个常用的数目。一笔交易收到的确认越多,你就越可以确信这笔交易被放进了区块链。经常会有一些孤块,或者没有进入共识链的区块。有很多原因可以导致一个区块变为孤块。这个区块可能包含一个不正当交易,或者试图双重支付。也有可能是网络延迟,这里指的是,两个矿工可能相隔几秒找到了新的区块,这两块几乎同时被广播到网上,那其中一块肯定会被丢弃。

最后我们看了哈希谜题与挖矿。矿工是决定参与创造新区块竞争的特殊类型节点。如果其他矿工继续在他们的区块上搭建的话,对于他们努力的回报是新造的比特币(新区块奖励)和已经存在的比特币(交易费)。很微妙也很重要的一点是:假设爱丽丝比鲍勃的计算能力要强大100倍,但这并不意味着爱丽丝一定能够赢得找到下一区块的竞赛,而是爱丽丝和鲍勃发现新区块的概率比率是100∶1。长期下来,鲍勃找到的区块数量是爱丽丝的1/100。

我们预计矿工们会处在经济平衡点附近,意味着他们得到的奖励大致等于他们在硬件与电费上的花费。理由是如果一个矿工持续亏钱,他会停止挖矿。反之,如果硬件和电费固定的情况下,挖矿利润很高,那更多的挖矿设备会加入网络。计算能力的增加会导致难度提高,每个矿工预期的回报便会降低。

比特币深度使用了分布式共识的概念。在传统货币系统中,共识的作用是有限的。具体来说,有一个共识过程来决定货币的汇率。这在比特币里当然也是对的——我们需要围绕比特币价值的共识。但在比特币里,我们还需要对账本情况的共识,这是由区块链来完成的。换句话说,甚至你拥有多少比特币的算法都是依赖共识的。当我们说爱丽丝拥有一定数量的比特币,我们真实的意思是说在比特币点对点网络,在区块链中记录的所有爱丽丝地址上拥有的比特币数量总额。这是比特币系统的一个终极真相:拥有比特币就是其他节点对给定的一方拥有这些比特币的共识。

最后,我们必须对整个系统的规则达成共识,系统规则有时不得不改变。比特币规则改变有两种:对应为软分叉与硬分叉。我们把关于它们区别的详细讨论放到第3章和第7章中。

启动加密货币

另一个微妙的概念是“自举过程”(bootstrapping)。比特币系统里三个不同的想法——区块链的安全性、挖矿生态系统的健康程度,以及货币的价值在相互作用。我们显然希望区块链安全,这样比特币才能成为一种可行的货币。想要区块链安全,就要保证黑客不能倾覆共识过程。这反过来意味着,一个黑客不能够制造一大堆挖矿节点来占据50%以上的新区块生成。

但如何实现这一点呢?前提条件是有一个健康的挖矿生态系统,其中大部分节点是诚实的、遵守协议的。但健康的挖矿生态系统的前提条件又是什么呢——我们什么时候可以保证大多数矿工会把大多数计算能力运用到解哈希谜题的竞争中呢?好吧,只有在比特币价位高时他们才会这么做,因为他们收到的奖励是比特币而他们的花费都是美元。所以币的价值越高,矿工就越有动力这么做。

那如何保障币的价值又高又稳定呢?只有用户普遍相信区块链的安全性才会发生。如果他们认为网络随时会被攻击者颠覆,那比特币作为货币将一文不值。所以你可以看到区块链的安全性、挖矿生态系统的健康程度和货币的价值这三者之间相互依赖、相互作用的关系。

因为这三者之间的循环依赖关系,其中一个的存在可以用另一个的存在推测出来。在比特币初创之时,这三者都不存在。除了中本聪自己,没有人在运行挖矿软件。比特币作为货币没有什么价值。事实上,因为没有很多人挖矿,区块链也很不安全,任何人都可以轻易颠覆这个过程。

这三者在比特币的世界如何从无到有并没有一个简单的解释。媒体的关注是其中一个因素——听到比特币的人越多,感兴趣挖矿的人就越多。挖矿的人越多,人们就会对区块链的安全越有信心,因为更多挖矿活动在进行,以此类推。附带提下,每种其他虚拟货币想要成功也需要想办法通过自举过程解决这个问题。

51%攻击

我们考虑一下如果共识失败,并且存在一个在比特币网络里实际掌握了绝大部分挖矿计算能力的51%攻击者,会发生什么情况。我们考虑多种可能的攻击,分析哪些可能被这样的攻击者实际使用。

首先,攻击者可以从现存的地址里偷币吗?你可能猜到了,不行,因为除非你能推翻加密方法,否则从现存地址偷币是不可能的。它不足以颠覆共识过程。这样说还不是很清楚。我们不妨假设,51%攻击者制造了一个不正当的区块,里面有一笔不正当交易把币从不受其控制的地址转移到自己的地址。攻击者可以假装这是一笔正当的交易,继续在这个区块上建造,甚至可以把它变成一个最长的支链。但其他诚实节点不会简单地接受这个存在不正当交易的区块,它们还是会在网络中找到之前最后一个正当的区块,基于此继续挖矿。所以将会发生的是,链上出现了我们称之为分叉的情况。

现在想象一下这个攻击者想把这些非法的币花掉,付给某个商家鲍勃用来买他的商品或者服务。鲍勃可以假定运行着自己的比特币节点,而且是一个诚实节点。那鲍勃的节点会因为含有不正当的交易而拒绝这个非法的分支。因为那里面的数字签名不吻合。所以鲍勃的节点会忽略这个最长的支链,因为这是一个非法的支链。而因此,这不足以颠覆共识。你需要推翻加密方法偷取比特币。所以我们认为,这个攻击对51%攻击者来说是不可能的。

我们应该注意到这是一个想象的实验。如果实际中真的有51%攻击的迹象,可能会发生的是开发者会注意到并采取应对措施。他们会升级比特币软件,我们可以期待系统规则(包括点对点网络)可能会做出改变,使得这样的攻击难以成功。但我们无法准确预测。所以,我们是在一个简化的模型上讨论51%攻击,但除此之外系统规则并没有改变和扭曲。

我们考虑另一种攻击。51%攻击者可以压制其他交易吗?比如攻击者特别讨厌某个用户卡罗尔。他知道卡罗尔一些地址,想使属于这些地址的币都无法使用。这可能吗?由于攻击者控制了区块链的共识过程,他可以轻易地拒绝创造包含来自卡罗尔地址的交易的新区块,他还可以进一步拒绝在含有类似交易的区块上延展。但他不能阻止这个交易被广播到整个点对点网络,因为网络不依赖于区块链或者共识,我们假设攻击者还没完全掌控网络。他不能阻止这个交易被发送到绝大部分节点上,所以即使他成功了,大家也都知道发生了攻击。

攻击者可以改变区块奖励吗?比如说攻击者开始假装把区块奖励由25个币改成100个币?这是对系统规则的改动,因为他没有控制所有诚实节点上运行着的比特币软件备份,所以同样不可能。这和为什么攻击者无法装入一笔非法交易的道理是一样的。其他节点不会轻易认可区块奖励提高,所以他也无法使用这些区块。

最后,这个攻击者会摧毁大家对比特币的信心吗?好吧,让我们想象一下会发生什么。如果有很多双重支付尝试,诸如节点不延展最长的有效分支,以及发生其他攻击,那么人们有可能会觉得比特币不再是一个他们可以信赖的去中心化账簿。人们会对货币失去信心,我们可以预料到比特币汇率会重挫。实际上,如果人们知道有一方控制了51%的哈希算力(hash power),即使这个人没有发动任何攻击,大家也可能会对比特币失去信心。所以,这不仅仅是可能,事实上任何形式的51%攻击都会摧毁大家对货币的信心。这其实是51%攻击可以实现的最主要的实际威胁。考虑到在攻击比特币,实现51%多数的过程中,财政角度的巨大花费,我们讨论的这些攻击都会变得不切实际。

我们希望至此你对比特币的去中心化管理有了一个完整的了解。你也应该理解了比特币里的身份如何工作、交易是如何被传播和验证的、比特币里点对点网络的作用、如何用区块链达成共识、函数难题与挖矿是怎么回事。这些概念为理解比特币的更多微妙细节和细微差别提供了坚实的理论基础,是一个良好的出发点。这些我们在后续章节中会进一步看到。

延伸阅读

比特币白皮书:

Nakamoto, Satoshi. “Bitcoin: A Peer-to-Peer Electronic Cash System.” 2008.

下载地址:https://bitcoin.org/bitcoin.pdf.

最初的基于工作量证明的介绍:

Back, Adam. “Hashcash—A Denial of Service Counter-measure.”2002.

下载地址:http://www.hashcash.org/papers/hashcash.pdf.

Paxos共识算法介绍:

Lamport, Leslie. “Paxos Made Simple.” ACM Sigact News 32(4), 2001: 18-25.