文章详细探讨了区块链应用中的信任模型,分析了不同信任模型的特点及其对系统稳定性和安全性的影响,并比较了几种区块链二层协议的信任模型。
许多区块链应用程序的一个最有价值的特性是 无信任性:该应用程序在预期的方式下继续运行的能力,而不需要依赖于特定的参与者以特定的方式行动,即使他们的利益可能变化并促使他们在未来以某种不同而意想不到的方式行事。区块链应用程序从来都不是 完全 无信任的,但一些应用程序比其他应用程序更接近于无信任性。如果我们想在信任最小化方面做出实际的努力,我们希望能够比较不同程度的信任。
首先,我简单的一句话信任定义是:信任是对其他人行为的任何假设的使用。如果在疫情之前,你在街上走时没有确保与陌生人保持两米距离,以免他们突然拿出刀刺你,这是一种信任:双方都相信人们很少会完全疯狂,并且相信法律系统的管理者仍会提供强有力的激励来对抗这种行为。当你运行一个由其他人编写的代码时,你信任他们诚实地编写代码(可能是出于他们自身的体面感或出于维护声誉的经济利益),或者至少信任有足够多人检查代码,以便发现错误。不种植自己的食物是另一种信任:信任有足够的人意识到对他们而言,种植食物是有利可图的,以便他们能把食物卖给你。你可以信任不同规模的群体,且存在不同种类的信任。
在分析区块链协议的过程中,我倾向于将信任分解为四个维度:
现在,让我们集中在前两个方面。我们可以绘制一个图表:
越绿色越好。让我们更详细地探索这些类别:
除了“0 of N”,其他所有类型都可以视为“信任”,但它们之间的差异非常大!信任某个人(或组织)按预期工作,与信任任何地方的某个人会按你期望的方式行事是非常不同的。”1 of N”无疑比“0 of N”更接近于“1 of 1”而非“N/2 of N”。“1 of N”模型也许给人一种“1 of 1”的感觉,因为似乎是通过一个单一的参与者进行操作,但这两者的现实是 非常 不同的:在“1 of N”系统中,如果你现在正在合作的参与者消失或转坏,你可以切换到其他参与者,而在“1 of 1”系统中你就麻烦大了。
特别地,请注意你正在运行的软件的正确性通常依赖于“Few of N”信任模型,以确保如果代码中存在错误,有人会发现它。考虑到这个事实,在应用程序的其他方面试图很努力地从“1 of N”转变为“0 of N”往往就像是在你家制作一个加固的钢门时窗户保持敞开的状态。
另一个重要的区别是:如果你的信任假设被违反,系统是如何失败的?在区块链中,最常见的两种失败类型是 活跃性失败和 安全性失败。活跃性失败是你暂时无法做某事(例如提取币、获取交易被包含在区块中、从区块链读取信息)的事件。安全性失败是系统旨在防止的事件实际发生(例如,一个无效的区块被包含在区块链中)。
以下是几种区块链 Layer 2 协议的信任模型示例。我用“小 N”来指代 Layer 2 系统本身的参与者集,而用“大 N”指 blockchain 的参与者;假设总是 Layer 2 协议的社区比 blockchain 本身要小。我也将“活跃性失败”一词的使用限于币被困住很长时间的情况;再也无法使用该系统但可以近乎即时提款不算作活跃性失败。
最后,还有一个关于激励的问题:你所信任的参与者是否需要非常无私才会如预期行事,还是仅稍微无私,亦或是理性就足够?搜寻欺诈证明“默认”稍微带有无私性,但它有多无私取决于计算的复杂性(见验证者的困境),并且有方法修改游戏使其理性。
帮助他人从 ZK 汇总中提款是理性的,如果我们增加一种为服务进行小额支付的方式,因此确实没有多少理由担心你无法从具有任何重大用途的汇总中退出。与此同时,其他系统的更大风险可以通过我们作为一个社区的共识来不接受51%攻击链,以防回退过远的历史或封锁区块的时间过长而减轻。
结论:当有人说一个系统“依赖于信任”时,更详细地询问他们所指的是什么!他们的意思是1 of 1,还是1 of N,或N/2 of N?他们是否要求这些参与者是无私的还是仅理性的?如果是无私的,这是一小笔开销还是一大笔开销?如果假设被违反了 - 你是否只需等待几个小时或几天,或者你是否有被永远困住的资产?根据答案,你对于是否愿意使用该系统的看法可能会完全不同。
- 原文链接: vitalik.eth.limo/general...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!