CECBC 小白 2021-07-02 15:35:31 发布在 区块链社区 13799 0
大多区块链应用最有价值的属性之一就是“免信任” (trustlessness),即应用能够以预期的方式保持运行而无需依赖特定参与者以特定形式行事,即使他们将来的相关利益可能产生变化并使其做出意料之外的举动。区块链应用从来都不是完全的免信任化,但是某些应用确实比其他应用的免信任程度更高。如果我们想要朝着信任最小化的目标前进,就需要首先具备辨别信任程度的高低。
首先,我个人对“信任”的简单定义是:信任就是对他人行为进行假设。在疫情爆发前,你走在街上不会因为防止有人突然捅你一刀而刻意跟他人保持两米的距离,这就是一种信任:一是信任人们很少会失心疯,二是法制系统的维护者有很强的动机约束这种行为。当你运行其他人写的一段代码时,你信任他们在编写代码时是诚实的 (无论是出于他们自己的良知或是维持声誉的经济利益),或者至少存在足够多的人对代码进行检查以找到漏洞。不亲自种粮食也是另一种信任,相信会有足够多的人为了获取收益耕种粮食并出售给你。你可以信任不同规模的群体,信任的类型也不尽相同。
为了对区块链进行分析,我尝试将信任分解为以下几个维度:
你需要多少人按照你的预期行事?
人数总量多大?
人们需要什么动机?他们需要是利他主义者,还是唯利是图者?他们需要避免协作吗?
如果违反了这些假设,系统会受到多严重的影响?
现在,我们先关注前两点,下面有一个图表:
绿色越深,表示该模型越健康。让我们对这几个种类进行详细分析:
1 of 1:整个系统只有一个参与者。如果这名参与者按照你预期的那样行事,系统就会 (才会) 正常运行。这就是传统的 “中心化” 模型,也是我们要超越的模型。
N of N:“反乌托邦” 世界。系统中的所有参与者都要按照预期行事,系统才能正常运行,如果其中任何人失败,我们没有补救措施。
N/2 of N:这是区块链的运作方式,如果大部分矿工 (或 PoS 验证者) 是诚实的,区块链就能正常运作。要注意的是,N 值越大,N/2 就越有价值。相比只由少量矿工/验证者控制的区块链,矿工/验证者广泛分布的网络更有意义。尽管如此,由于 51% 攻击的可能性,我们还是想在这种程度的安全性上更进一步。
1 of N:有很多参与者,只要其中至少有一个按照预期行事,系统就能正常运作。任何基于欺诈证明的系统都属于这一类,信任设置也是如此,尽管在这种情况下 N 值通常较小。请注意,我们确实希望 N 值尽可能大!
极少数 of N:在众多参与者中,只要有固定数量的小部分参与者按照预期行事,系统就能正常运行。数据可用性检查就当属其中。
0 of N:系统无需依赖外部参与者即可正常运行。亲自验证区块就归为这一类。
尽管除 “0 of N” 之外的模型都有一定“信任”程度 ,但是这些模型之间存在巨大差异!相信特定的某个人 (或组织) 会按照预期行事,与相信随便一个人都会按照预期形式,是完全不同的情况。相比 “N/2 of N” 和 “1 of 1”,“1 of N” 与 “0 of N” 更相似。可能有人会觉得 “1 of N” 模型与 “1 of 1” 模型很像,因为这两种模型都依赖一名参与者,但实际上这两者十分迥异:在 “1 of N” 系统中,如果该名参与者突然消失或者黑化,大可以重新换一个参与者,但在 “1 of 1” 系统中我们别无他选。
尤其要注意即使是你所运行的软件,其正确性通常取决于 “极少数 of N” 信任模型,以确保代码出现漏洞时有人会进行纠查。明白这一点后,努力使应用中其他部分从 “1 of N” 模型切换到 “0 of N” 模型就像是为你家装上防盗门,但窗户是打开的。
另一个重要的区别在于,如果你的信任假设被打破,对系统的破坏有多大?在区块链上,最常见的两种故障类型是活性故障(liveness failure)和安全性故障(safety failure)。活性故障就是你暂时无法进行操作(例如,提币、将交易打包进区块、读取链上数据)。安全性故障就是出现了系统想要预防的情况(例如,无效块被添加到区块链上)。
以下列举了一些区块链 layer 2 协议所采用的信任模型。我用“small N”来指代 layer 2 系统本身的参与者集合,“big N”来指代区块链底层的参与者。我的假设是 layer 2 的社区总是小于底层区块链。另外,我使用的 “活性故障” 一词特指代币长时间无法提出的情况。无法使用系统但是能够几乎即时提款的情况不算作活性故障。
“通道”方案(Channels,包括状态通道、闪电网络等):使用 “1 of 1” 信任模型来确保活性 (你的对手方可以暂时冻结你的资金,不过你可以通过将资金分散在多个通道中减少风险),使用 “N/2 of big N” 模型来确保安全性 (有可能在 51% 攻击中失去资金)。
Plasma(中心化运营者):使用 “1 of 1” 信任模型来确保活性 (运营者可以暂时冻结你的资金),“N/2 of big N” 模型来确保安全性 (有可能在 51% 攻击中失去资金)。
Plasma(半去中心化运营方,如 DPOS):使用 “N/2 of small N” 信任模型来确保活性,“N/2 of big N” 模型来确保安全性。
Optimistic rollup:使用 “1 of 1” 或 “N/2 of small N” 信任模型来确保活性 (取决于运营者的类型),“N/2 of big N” 模型来确保安全性。
ZK rollup:使用 “1 of small N” 信任模型来确保活性 (如果运营者未能打包你的交易,你可以提款,如果运营者没有立即打包你的取款交易,就无法打包更多交易包,你可以在 rollup 系统中任何一个全节点的帮助下自行提款);不存在安全故障风险。
ZK rollup(轻取款增强型):不存在活性故障风险和安全故障风险。
最后就是“激励”的问题。要促使参与者遵循预期,你所信任的参与者需要非常利他主义、轻微利他主义,还是说足够理性?默认情况下,“欺诈证明” (fraud proofs) 需要参与者具有轻微利他主义倾向,但其程度取决于计算的复杂性 (详见 “验证者困境” ),并且存在很多方式改进过程,使其更加理性。
如果我们增加一种为服务支付费用的机制,那么帮助他人从 ZK rollup 中提款的行为就是理性的,因此几乎没必要担心无法退出 rollup 的问题。与此同时,如果社区都同意不接受 51% 攻击下的区块链 (回滚很长的交易历史或是审查区块过久),那么其他系统所面临的风险可以被减轻。
结论:如果有人说某个系统 “依赖于信任机制”,那我们可以刨根问底!他们的意思是 “1 of 1” 模型、“1 of N” 模型还是 “N/2 of N” 模型?该系统需要参与者是利他主义还是理性主义?如果是利他主义,参与者的代价有多大?如果违反了假设,需要等待多久才能取回自己的资金?几个小时?几天?还是永远被冻结?明白这些问题后,我们可能对于是否采用该系统会有截然不同的答案。