尽管除 「0 : N」 之外的模型都是建立在 「信任」 基础上的,但是这些模型之间存在巨大差异!相信某个特定的人(组织)会如你所预期的那样行事,和相信任何一个人都会如你所预期的那样行事,二者之间有着天壤之别。相比 「N/2 : N」 和 「1 : 1」,「1 : N」 与 「0 : N」 更为接近。或许有人会觉得 「1 : N」 模型与 「1 : 1」 模型很像,因为这两种系统都依赖一名参与者,但实际上它们之间迥然不同:在 「1 : N」 系统中,如果这名参与者消失或作恶,换一名参与者即可;如果是 「1 : 1」 系统,你就只能束手无策。 尤其要注意的是,即使是你正在运行的软件,其正确性通常也取决于 「极少数 : N」 信任模型,以此确保软件代码出现 bug 时,会有人及时发现。在了解这一事实后,你就会发现,努力从 「1 : N」 模型转向 「0 : N」 模型如同为敞开窗户的房子安装防盗门。 另一个重要的区别在于,如果你的信任假设被打破,对系统的破坏有多大?在区块链上,最常见的两种故障类型是活性故障(liveness failure)和安全性故障(safety failure)。活性故障就是你暂时无法进行操作(例如,提币、将交易打包进区块、读取链上数据)。安全性故障就是出现了系统想要预防的情况(例如,无效块被添加到区块链上)。 以下列举了一些区块链 Layer 2 协议所采用的信任模型。我使用 「small N」 来指代 layer 2 系统本身的参与者集合,「big N」 来指代底层区块链的参与者。我的假设是 Layer 2 的社区总是小于其底层区块链的社区。另外,我所谓的 「活性故障」 特指代币长时间卡住的情况。无法使用系统但能即时提款的情况不算作活性故障。
最后是关于激励的问题:为了达到预期的效果,你所信任的参与者需要非常利他主义,一般利他主义,还是理性主义?默认情况下,「欺诈证明」 需要参与者是利他主义的,但是程度如何取决于计算的复杂性(详见 「验证者困境」 ),而且有很多方法可以修改规则,使之变得理性。 如果我们增加一种方式来支付服务费,那么帮助他人从 ZK Rollup 上取款的行为就是理性的,因此没必要担心无法退出 Rollup 的问题。与此同时,如果整个社区都同意 不接受通过 51% 攻击创建的区块链(将交易历史回滚到很久之前,或审查很久之前的区块),就可以减轻其它系统的风险。 结论:如果你听到有人说某个系统 「依赖于信任」,一定要问清楚!这个系统是 「1 : 1」 模型、「1 : N」 模型还是 「N/2 : N」 模型?这个系统需要参与者是利他主义还是理性主义?如果是利他主义,参与者需要付出多大代价?如果假设被打破,那么你需要等待多久才能取回自己的资金?几个小时?几天?还是永远无法取回?搞清楚了这些问题,你才能决定要不要使用这个系统。 (责任编辑:admin1) |