注:原文作者是以太坊联合创始人Vitalik Buterin。
很多区块链应用最具价值的特征之一就是信任最小化(trustlessness):应用能够以预期的方式继续运行,而无需依赖特定参与者以特定的方式进行操作(即使他们的兴趣可能改变,并促使他们在未来以某种不同的意外方式行事)。区块链应用从来都不是完全无需信任的,但有些应用要比其它应用更接近于无需信任。如果我们朝着信任最小化的方向发展,那我们要能够比较不同程度的信任。
首先,我对信任的简单定义是:信任是对他人行为的任何假设的运用。如果在新冠大流行之前,你走在街上而没有确保与陌生人保持两米的距离,他们也不会突然掏出刀子来捅你,这是一种信任:双方都相信人们很少会完全精神错乱,相信管理法律体系的人会继续提供强有力的措施来反对这种行为。当你运行由他人编写的一段代码时,你可以相信他们诚实地编写了这段代码(无论是出于正派观念还是出于维护名誉的经济利益),或者至少是有足够的人检查该代码,并发现到漏洞。不亲自去种植自己的食物,也是一种信任的体现:你要相信足够多的人会意识到种植食物符合他们的利益,以便将其出售给你。你可以信任不同规模的人群,并且有不同种类的信任。
为了分析区块链协议,我倾向于将信任分成四个维度:
你需要多少人按照你的期望行事?
有多少人?
这些人的行为需要什么样的动机?他们是否需要利他主义,还是只是寻求利润?他们需要协调吗?
如果违反这些假设,系统的失败程度会有多严重?
现在,让我们专注于前两个,我们可以画一张图:
图中的颜色越绿,就代表越好。让我们更详细地探讨信任类别:
1 of 1:只有一名参与者,并且系统仅当该参与者按照你的期望行事时才能正常工作。这是传统的“中心化”模型,而这也是我们希望去尝试替换的。
N of N:“反乌托邦”世界,你需要依靠一大堆参与者,并且所有参与者都需要按照预期的方式工作,才能使所有工作正常进行,而如果其中任何一个失败,便意味着没有后备人员。
N/2 of N:这就是区块链的工作方式,如果大多数矿工(或PoS验证者)是诚实的,那么区块链便会工作。注意,N越大,N的N / 2就变得越有价值。与拥有广泛分布的矿工/验证者的区块链相比,具有少量矿工/验证者主导网络的区块链就没有那么有趣。也就是说,我们甚至希望提高这种安全级别,以抵御潜在的51%攻击。
1 of N: 参与者有很多,只要其中至少有一个按照你的期望运作,则系统就会正常工作。任何基于欺诈证明的系统都属于这一类,可信设置也是如此,尽管在这种情况下,N通常更小。请注意,你确实希望N尽可能地大!
Few of N:参与者有很多,而只要他们当中至少有一小部分固定数量的参与者按照你的期望运作,则系统就会正常工作。数据可用性检查就属于这一类。
0 of N:系统始终会按预期工作,其不依赖任何外部参与者。通过自行检查来验证区块就属于此类。
除了"0 of N"之外的所有类别模型,实际上都可以被视为“信任”,但它们彼此之间有很大的不同。信任一个特定的人(或组织)将按预期工作,与信任任何地方的某个人按你期望的那样大不相同。可以说,"1 of N"要比"N/2 of N"或者 "1 of 1"更接近于"0 of N"。而“1-of-N”的模型可能会让人感觉像是“1 of 1”模型,因为这好像你是在信任一个单一的参与者,但两者的实际情况却大不相同:在“1-of-N”模型中。如果你正在与之合作的参与者消失了或者变坏了,你可以切换到另一个参与者,而在"1 of 1"模型系统中,遇到这种情况就意味着系统完蛋了。
特别要注意的是,即使是你正在运行的软件的正确性,也通常取决于一个"few of N"信任模型,以确保如果代码中存在错误,就会有人找到它们并给予修正。
另一个重要的区别是:如果你的信任假设被破坏了,系统将会如何失败?在区块链中,两种最常见的失效类型分别是活性(liveness)失败和安全性失败。所谓活性失败是指你暂时无法做你想做的事情(例如提取币、获得区块中包含的一笔交易、从区块链读取信息)。而安全性失败是指系统要主动防止的某些活动发生了(例如,区块链中包含无效区块)。
以下是一些区块链Layer 2协议的信任模型示例。其中“小N”指的是Layer 2系统本身的参与者集合,而“大N”是指区块链的参与者,并且我假设Layer 2协议的社区总是比主链本身要小。我还将“活性失败”一词的使用,限制在币被卡住很长时间的情况下。而不再能够使用该系统,但能够几乎立刻取出并不算是活性失败。
通道(包括状态通道和闪电网络):活性信任属于“1 of 1”模型(你的对手方可暂时冻结你的资金,不过如果你若是把币分散到多个交易对手,则可以减轻这种风险),安全性信任属于“N/2 of 大N”模型(区块链51%攻击可以窃取你的币);
Plasma(假设使用中心化运营商):活性信任属于“1 of 1”模型(运营商可以暂时冻结你的资金),安全性信任属于“N/2 of 大N”模型(区块链51%攻击);
Plasma(假设使用半去中心化运营商,例如采用DPOS):活性信任属于“N/2 of 小N”模型,安全性信任属于“N/2 of 大N”模型;
Optimistic rollup:活性信任属于“1 of 1”或“N/2 of 小N”模型(取决于运营商类型),安全性信任属于“N/2 of 大N”模型;
ZK rollup:活性信任属于“1 of 小N”模型(如果运营商未能纳入你的交易,你可以提币,如果运营商没能立即纳入你的提款,他们就无法产生更多的批次,你可以借助rollup系统的任何全节点自行提款),ZK rollup没有安全性失败风险;
ZK rollup(带轻提取增强功能):无活性失败风险,无安全性失败风险;
最后,还有一个关于激励的问题:你所信任的参与者,是否要非常利他主义才能按预期行事,或者只需要略微无私,还是足够理性?寻找欺诈证明“默认”有点利他主义,尽管它的利他主义程度取决于计算的复杂性(参见《验证者的困境》一文,在公众号发送“验证”即可阅读本文),并且有多种方法可以修改游戏使其具有理性。
如果我们添加一种服务微支付方式,则协助他人退出ZK rollup总是合理的,因此,几乎没有理由去担心无法退出rollup系统的情况。同时,如果我们作为一个社区同意不接受51%攻击链,则这些攻击链在历史上要恢复得区块太多,或者审查区块的时间太长,则其他系统的更大风险就可得到缓解。
结论:当有人说一个系统“依赖于信任”,请更详细地询问他们的意思!他们是指的“1 of 1”,“1 of N”,还是“N/2 of N”?他们是要求这些参与者是利他主义者还是理性主义者?如果是利他主义,那会涉及一笔微不足道的开支,还是一笔巨大的开支?如果这个假设被违背了,你是需要等待几个小时或几天,还是你的资金会永远被卡住?根据答案的不同,你对是否要使用该系统的答案,可能会大不相同。
﹏
﹏
﹏
﹏