1703867420
图7.1 关于比特币的三种共识之间的关系
1703867421
1703867422
首先,对规则与对历史记录的共识相互依赖。如果不知道哪些区块是有效的,也就无法对区块链达成共识。如果不能对区块链中有哪些区块达成共识,也就无法判断交易是否有效,进而无法判断有没有双重支付的企图。
1703867423
1703867424
对历史记录和对比特币价值的共识也紧密相关。对历史记录的共识意味着我们同意谁拥有哪些比特币,这是比特币具有价值的先决条件——例如我拥有一个比特币,如果不能通过历史记录对此达成共识,我就不能指望将来某一天我会把这个比特币付给某人换取其他东西。反之亦然——在第2章我们讨论过,对比特币具有价值的共识,激励着矿工维护区块链的安全,这又促使我们对历史记录达成共识。
1703867425
1703867426
比特币原始设计的天才之处就在于,它意识到靠自己本身很难达成这三种共识的任何一种。在一个没有身份概念的、去中心化、全世界范围内运行的系统中,要达成关于规则的共识是不可能的。
1703867427
1703867428
类似地,对历史记录的共识是一个复杂的分散式数据结构问题,很难靠自己解决。此外,对某种数字加密货币具有价值的共识也很难达成。但比特币的设计以及运行模式表明,尽管无法靠系统本身达成这三种共识中的任意一种,不过可以通过某种方式将这三种共识组合在一起,并让它们以一种相互依存的方式发挥作用。因此,在讨论比特币社区的运作模式时,我们必须牢记,比特币系统的运行取决于参与者的共识,而且这种共识是十分脆弱的,交织着各种技术和社交元素。
1703867429
1703867430
1703867431
1703867432
1703867434
区块链技术驱动金融:数字货币与智能合约技术 7.2 比特币核心钱包软件
1703867435
1703867436
比特币核心钱包(bitcoin core)是一款开源软件,是对比特币规则进行讨论和争议的焦点。这款软件由极为宽松的开源(open source)许可证——MIT许可证认证。只要注明版权声明和许可声明,就可以将该软件用于各种用途。比特币核心钱包是目前运用最为广泛的一款比特币软件。即便不利用它进行软件开发,许多人也会通过研究它来了解比特币的规则。在构建其他比特币软件时,人们会借鉴其规则定义部分的内容,包括判定交易和区块的有效性。
1703867437
1703867438
比特币核心钱包实际是比特币的规则手册。通过研究比特币核心钱包及其相关解释,可以了解到在比特币系统中真正有效的内容。
1703867439
1703867440
比特币改进方案
1703867441
1703867442
任何人都可以通过“提交请求”(pull requests)按钮,帮助比特币核心钱包进行技术改进,这一过程在开源软件(open-source software)世界极为常见。若想对软件进行更大的改动,特别是对协议进行修改,则可以通过一个较为正式的叫作比特币改进方案(Bitcoin Improvement Proposal,简称BIP)的流程来实现。因此,如果你有意通过技术改变来改进比特币,你可以把你的想法写下来,根据比特币改进方案的要求,与其他文件一起公开发表。这会触发比特币社区就你的方案进行讨论,并决定下一步行动。虽然任何人都可以提交正式方案,但正如所有开源项目(open-source project)一样,这存在学习曲线。
1703867443
1703867444
BIP以编号序列形式发布,每项方案有一名拥护者,负责宣传方案、协调讨论活动并努力促成方案在比特币社区向前顺利开展或实施。
1703867445
1703867446
我们上面所说的内容适用于对技术更改的方案。事实上,也存在一些BIP,或者只是为了提供信息,传播关于比特币的知识;或者将之前仅在源代码中明确的部分代码进行标准化。而其他一些BIP侧重流程,讨论比特币社区如何决策事项。
1703867447
1703867448
总之,除了包含规则手册中的内容外,BIP还包含方案、制定和讨论规则变更的流程。
1703867449
1703867450
比特币核心钱包开发人员
1703867451
1703867452
要了解比特币核心钱包的作用,我们需要了解比特币核心钱包开发人员所发挥的作用。原始代码的作者是中本聪(Satoshi Nakamoto),我们在7.4节还会介绍。现在,中本聪本人已经不再活跃,但还有一群开发人员在维护着软件。有数百名开发者在为这个项目写代码,但只有少数几个人拥有对核心钱包数据库的“调配”(commit)权限。这些核心钱包的首席开发人员持续维护该软件,并决定哪些新代码可以加入软件新版本中。
1703867453
1703867454
这些人的权力有多大?从某种意义上说,他们的权力是很大的,因为他们对代码做出的规则改变终将呈现在比特币核心钱包中,这些规则会默认被遵守。这些人写下比特币事实上的规则手册。但从另一个角度来看,他们根本就没有什么权力。因为这是一款开源软件,任何人都可以复制、修改它(随时创建一个比特币分叉)。因此,如果首席开发人员的表现不被社区接受,社区可能走向不同的方向。
1703867455
1703867456
可以这么想,首席开发人员就像在引领游行队伍前进。他们在队伍的最前面,当他们拐弯时,队伍一般会跟着他们拐弯。但是如果他们试图把队伍带入灾难性的境地,那么队伍中的其他成员可能会选择不同的方向。这些首席开发人员可以敦促社区,但是,如果他们试图把系统带入不被社区接受的技术方向,他们并没有正式的权力,来迫使人们跟随他们。
1703867457
1703867458
现在来思考一下,作为系统的使用者,如果你不喜欢它的规则或系统运行的方式,能够做些什么,并与集中式货币(如法定货币)进行比较。在集中式货币系统中,如果有异议,你有权退出,也就是说,你可以不用它。你必须想办法把持有的货币卖出,然后移居到使用另一种货币的地方。有了集中式货币,退出是你的唯一选择。
1703867459
1703867460
在比特币系统,你当然也有权退出,但是,因为它作为开源系统(open-source system)运行,你就有了对规则进行分叉的权利。也就是说,你、你的朋友和同事可以选择运行一套不同的规则,而且,通过对规则进行分叉,走向与首席开发人员不同的方向。与退出相比,分叉赋予用户更多的权力,像比特币这样开源系统的社区比完全集中系统的社区拥有更多权力。所以,虽然首席开发人员看似一个拥有控制权的集权式实体,事实上,他们并不拥有一个完全集权式管理人员或软件所有者所拥有的权力。
1703867461
1703867462
规则分叉
1703867463
1703867464
创建软件分支或规则分叉的一种方式是,以新的创世区块创建新的区块链。人们经常通过这种方式来创建另类币,我们将在第10章谈到这个问题。现在,我们来谈谈对规则的另一种分叉,这种分叉不仅对规则进行分叉,还对区块链进行分叉。
1703867465
1703867466
在第3章中,我们谈到了硬分叉和软分叉之间的区别,这里我们谈的是硬分叉。当对规则有分歧时,区块链中会有分叉,导致两个分支。其中一个分支在规则A下有效,而在规则B下无效,反之亦然。矿工一旦在两种不同的规则下操作,他们就无法合并到一起,因为每个分支都将包含在另一规则下无效的交易或区块。见图7.2。
1703867467
1703867468
1703867469
[
上一页 ]
[ :1.70386742e+09 ]
[
下一页 ]