编者注:本文来自于公众号以太坊爱好者(ID:ethfans),作者: Preethi Kasireddy,翻译: 阿剑
导言
我们中的许多人,都对将区块链描述为“无需信任的(trustless)”系统感到愧疚。然而,我已经意识到,“无需信任的”这一术语是模棱两可的、令人迷惑的,并且,最重要的是,它是不准确的。
区块链并没有在实际上消除信任。它们做的事情是最小化系统中任意一个行动者所要求的信任的数量。他们是通过在系统中的不同的行动者之间分散信任来做这件事的;经由一个经济游戏,行动者被激励与协议定义好的规则合作,从而分散了信任。
让我用更多细节来解释。
一个真正无需信任的交易系统会是像这样的东西:
两个人对与彼此交易有兴趣,于是一手交钱一手交货。他们人身都在现场,因此也很容易验证
- 可行性:交易实际发起方给出钱,并且
- 没有双重花费(Double Spending):钱不是假钱,确实是10美元
虽然在理论上这是完美的,该交易系统是很局限的。考虑一下:两个个体只有在他们物理位置接近的时候才可能与对方交易。为了经济事务的大规模协调,一个交易系统应该让交易者能够无视物理距离而与世界上任何一人交易。
所以,我们真正希望的情形是这样的:
正如我们从上图中看到的,我们实现这一目标的方式是成立一个机构,它可以促进价值的转移,以确保实际发起方发送了真金白银。
这提醒了我们一个问题:谁作为这样完全值得信赖的中介向我们提供服务?
在现代生活的交易系统中,该中介可以是银行(例如:大通银行(Chase Bank));一个支付服务提供商(例如:Paypal);一个汇款公司(例如:Western Union);一个信用卡(例如:Visa),以及诸如此类的。
在这个中心化的模式中,银行验证你的可信性,然后向接收者保证他们正获得真的钱。
换句话来说,除非是一个从某人到另一人的直接物质价值转移,一定存在某个我们“信任”的中介。
区块链也不例外。
区块链定义了一个允许两个个体在一个互联网上的“点对点”秩序中与彼此交易的协议。当你在区块链上用电子化的方式从一个账户转移价值到另一个账户,你是在信任背后的区块链系统,它既使转移成为可能,也保证了发送者可信性和货币有效性。
在一个“中心化的”系统中,我们信任某一个作为中介的第三方(例如大通银行),由它来保证这两种属性;在一个“去中心化的”提桶中,我们的信任移到了别的地方,也就是公钥密码学和一个“共识机制”,它使我们可以确认何为事实。
公钥密码学
公钥密码学(或者说非对称密码学(asymmetrical cryptography))使用:
- 一组对任何人可见的公钥,以及
- 一组只对拥有者可见的私钥
私钥可以为用户发出的每一笔区块链交易生成一个“电子签名”。通过下列方式,签名保证了可信性:
- 证实交易来自于用户,以及
- 在交易发布之后,防止任何人去改动这笔交易
以任何方式改动交易信息都将导致验证失败。
那么我们已经搞清楚了,公钥密码学帮助我们检证点对点系统中的用户的可信性。但要保证没有双重花费,我们需要跟踪谁拥有什么,然后我们可以知道某人正在发送真实的电子货币或假的电子货币。
这就是“共识系统”必须有所作为的地方——使我们可以保护一个共享的电子事实。
机器共识(加密经济学协议)
区块链拥有一个共享的账本,给予我们关于系统状态的绝对的事实。它使用社uxue、经济学、博弈论,激励系统中的所有参与者达成“共识”,或者说,就这一账本的一个状态达成共同认定。
我们拿比特币(Bitcoin)来做一个例子。比特币协议有一个叫做“工作量证明(Proof of Work)”的共识算法,将整个系统聚拢在一起。为了让两个消费者之间的交易被确认下来,该算法要求一组节点(叫做“矿工”)相互竞争以验证交易,具体方式是解决一个复杂的算术问题。换句话来说,比特币“以经济利益激励”矿工购买并使用算例还解决复杂的问题。这些经济激励包括:
- 矿工可以获得用户为交易执行支付的交易费用;以及
- 成功解决难题之后,矿工可以获得新发行的比特币
因为这些经济激励,矿工会持续地关注网络,以便他们可以汇集新的一组交易并写进一个新的“区块”。然后他们会使用计算资源去解决复杂的算术题以“证明”他们做了一些工作。
第一个解决算术题的矿工可以将证明和新区块(以及其中所有的交易)添加到区块链上,并将它广播到整个网络。在这个点上,网络中的其他所有人都会同步最新的区块链,因为它是一个每个人都相信的“事实”。
因为矿工运用算力相互竞争,有些时候会有多个区块同时出现。这就创造了一个多条链的“分叉”:
当存在这样的分叉,网络中的“典范”链是“最长的”那条链——最多矿工信任并在其中继续工作的那条链。
每一个使用这种方法添加到区块链上的新区块都会这个系统增加了更多的安全性,因为一个想创造新区块来覆写一部分历史的攻击者将需要比网络中的其他任何人都更快地解决谜题。在实践中这是不可能的,这也使得逆转这个工程或者替代这些区块上的数据成为不可能的。这就是为什么用户会信任继续信任这个系统。
所以当我们在区块链上与其他人交易的时候,我们是锚定我们的信任给那些放弃他们的资源以做一些工作、保证没有双花的矿工。
社会共识(治理)
当然 ,即便机器共识表现得很完美,我们也永不能保证,在为维持网络上的信任需要的其他重要侧面上,我们能100%达成共识。比如,当底层的网络需要更新、强化、或者修复的时候,我们需要某种方式信任该网络及其所有成分会恰如其分地应对这种挑战。在这些情况下,这在很大程度上是各部分之间的共同努力,或者,我称之为一个“社会共识”(例如:治理)。
举个例子,如果区块链要求一个提升(例如:更好的交易记录(Transaction Log)),我们需要一个治理机制来协调相关各方(用户、开发者、投资者,等等)的利益,以产生最好的解决方案。或者说,如果在往前走的最优路线上有所争议(例如:一个有争议的分叉),然后一个社区需要对接下来应该做什么形成一个共识。如果无法达到一个共识,网络就会分叉,人们就被迫要选择一边、否决另一边;而不是每个人都相信一个被共享的事实。系统将失去用户的信任,因为他们也没没有能力理性地判断哪条链是“可信的”链。
正如我在以前一篇文章(编者注:即《公有链面临的基本挑战》,中译本见文末),有很多不同的区块链治理模式,并且它也仍是一个社区咋积极研究的领域。区块链治理是一个难以置信的复杂的问题;在中心化与去中心化控制中找到一个平衡对维持众人对系统的信任是极其重要的。
结论
当我们说区块链是“无需信任的”,我们的意思是:有一个机制使得系统中的所有参与者都可以对什么是一贯的事实形成一个共识。权力和信任在网络的股东(例如:开发者、矿工、消费者)之间是分布式的(或者说:被共享的),而不是集中在单个个体或说实体(例如:银行、政府、或者金融机构)上的。
也许,描述区块链的一种更准确的方式,不是“无需信任”这样的,而是:它建立在分散化信任的基础上:我们是在信任集合中的每一个人。
当然,这假设了我们会相信:系统所拥有的权力中的大部分属于分享近似价值观念的股东。不幸的是,我并不认为我们可以声称——至少,现在还不能——我们已经搞清楚了那些被共享的价值实际上包括什么。因此,过去一年中,区块链与有争议的分叉不断蔓延……不过,这是另一天的啰嗦话题了。