前言:有读者反馈说区块链“无需信任”的说法,往往让人困惑。区块链本身是算法的信任或是分布式的信任,通过去中心化的方式达成了一个系统信任。区块链的核心就是达成了无需传统中介方的信任,实现了价值的自由流通。本文作者是Preethi Kasireddy,来源于medium.com,由蓝狐笔记社群“芥弥”翻译。
许多人把区块链描述为一种无需信任的系统。在我看来,“无需信任”这个词是含糊不清的,最重要的是,对于区块链来说,这个词是不准确的。
区块链实际上并没有消除信任,整个区块链系统所要做的就是减少系统中每个单个参与者所需要的信任量。区块链系统通过激励机制来保证每个参与者之间按照系统协议来合作,从而实现把信任分配给每个参与者。
下面我们将通过一些例子来进行详细的解释。一个真正无需信任的交易系统看起来应该像是这样:假设有两个人,他们想要进行转账交易,因为是线下交易,所以可以进行很轻松的验证。
首先,真实性对他们来说是没有任何问题的,因为交易方式为现金交易;其次,双花问题也不存在,因为每张货币都有自己独特的编号。
这种交易理论上完美无暇,但是交易量却是有限的,只有在物理位置足够接近时才有可能采用这种交易。如果想要进行规模化的操作,那么这个交易系统应该能够让世界上的任何一个人进行自由的资金转移。
所以我们更需要下图所示的转账交易系统:
从图中可以看出,我们实现这一目标的方式是通过中间媒介来促进价值转移,以确保实际的发送者发送的钱是真实有效的。那么谁会是完全可信的中间人呢?在现实交易系统中,这个中介可以是银行(如Chase bank),支付提供商(如 Paypal),汇款公司(如 Western Union),信用卡公司(如visa)等等。
在这种中心化模型中,由银行确认和确保你收到的钱是真实有效的。换句话说,除非有直接的物质价值从一个人转移到另一个人手中,否则必须存在一些我们信任的中介。
区块链也并无不同。区块链通过协议,允许两个单独个体通过互联网以点对点的方式进行彼此交易。当你在区块链系统中将数字货币从一个账户转移到另一个账户时,那么说明你信任区块链底层系统既能够支持该转账,又确保发送人的真实性和数字货币的有效性。
在一个中心化的系统中,我们信任第三方(例如Chase bank)能够承担起中介的角色来担保转账的真实性和有效性。在一个分布式系统中,第三方中介将被公钥密码系统和共识机制替代,用来保障转账的真实性和有效性。
公钥密码(非对称密码)通常由两组密码构成,一组是任何人可见的公钥,另外一组是只有拥有者可见的私钥。每一次转账交易都将由私钥来进行数字签名,数字签名能够确保每一笔交易都是来源于数字货币的拥有者,同时还保证一旦交易被发送出去之后,交易不被串改。
更改交易的任何信息都会导致验证失败。如下图所示,交易的验证过程是采用交易发起者的公钥来验证交易信息的正确性。
公钥密码可以帮助我们在点对点交易中验证账户的真实性和转账的有效性。但是,这并不能保证双花问题(双重支付问题)。因此我们需要持续跟踪每个账户,以便确保每笔交易的有效性,避免出现双重支付问题。
这时候,我们就需要共识机制来保证账本的真实性(shared truth)。
区块链拥有一个共享账本,它为我们提供了系统状态的绝对真实性。它使用数学,经济学和博弈论来确保和激励这个系统的所有参与者达成共识,或者就这个账本的单一状态达成共识。
那么通过比特币来举个例子,比特币协议中有一个共识算法叫做工作量证明,它将系统的所有参与者连结在一起。为了确认每笔交易,共识算法要求一组节点(即矿工)通过解决复杂的算法问题,来竞争验证交易。
换句话说,比特币协议通过经济手段来激励矿工购买拥有更高算力的机器,来解决复杂的算法问题。这些激励包括每笔交易所产生的交易费用,以及新区块产生时系统给予的比特币奖励。
由于这些激励措施,矿工们通过不断监控整个比特币网络来收集每一笔交易,用以产生新的区块,然后他们使用计算资源解决复杂算法来证明他们做了这些工作。第一个解出算法的矿工将证明和新区块加入区块链账本,同时将区块全网广播出去。此时,网络中的其他矿工都会验证并且同步最新的区块。
因为矿工们都在竞争产生新的区块,那么有时就会有多个区块同时产生,这会导致产生很多的分叉链,这些分叉如下图所示:
那么整个网络的规范链(canonical chain)就是最长的那条链,拥有最多矿工信任的并继续工作的那条链。
以这种方式添加到账本的每一个新区块,都会增加系统的安全性,因为攻击者想要修改账本的历史数据就必须提供超过全网百分五十一的算力,来使得自己修改的账本变成最长链。在现实中这是不可能实现的,这就是为什么用户可以继续信任这个系统的原因。
所以,当我们在区块链网络进行转账交易的时候,我们信任那些矿工们所贡献的算力来确保没有双重支付问题。
当然,即使机器能够提供完美的共识,在其他一些重要的方面,我们仍然未能达成百分百的共识。例如,当底层网络需要升级,改进或者维护时,我们需要以某种方式来信任网络及其所组成的成员能够适当的处理这些变化。
在这种情况下,需要第三方参与人员之间协调合作,或者我称之为社会共识(social consensus)。
例如,当一个区块链系统需要升级时(例如,更好的交易日志),我们需要一个治理机制来协调所有利益相关方。例如,用户、开发者和投资者等等,以提出最佳的解决方案。或者在最佳解决方案上出现分歧时,需要社区为就下一步怎么做提供共识。
如果共识未能达成,那么区块链网络将会硬分叉,每个参与者将会被迫选择一方而不是大家都达成的共识。这可能会导致用户对系统失去信任,因为他们无法确定哪条是有效的链。
正如我之前的文章中所描述的,区块链治理存在许多不同的模式,并且它仍然是社区积极研究的一个领域。区块链治理是个棘手的问题,在中心化和去中心化控制之间寻找一个平衡,对于维护每个人对系统的信任度至关重要。
当我们说到区块链“无需信任”时,我们指的是,系统中所有的参与者可以通过这些机制来达成一些标准的共识。权利和信任分散在系统的参与者之间,例如开发者、矿工和消费者,而不是集中在单个个体或者实体,例如银行、政府或者金融机构。
或许更准确描述区块链的方式不是“无需信任”,而是建立在分布式信任的基础上:我们相信每个人都是信任系统的一部分。