本文探讨了区块链的层级架构,提出在短期内,Layer 1 需要创新,但在长期内,Layer 1 应该趋于稳定,而 Layer 2 将扮演持续创新的角色。文章深入分析了 Layer 1 和 Layer 2 的贸易关系、治理问题以及技术开发的挑战,并强调 Layer 2 执行引擎的潜力,最后建议在 Layer 1 和 Layer 2 之间找到良好的平衡,以确保区块链的可扩展性和灵活性。
参见更新 2018-08-29
区块链设计中的一个关键权衡是,是否将更多的功能构建到基础层区块链本身(“Layer1”),还是将其构建到运行在区块链之上的协议中,并可以在不更改区块链本身的情况下创建和修改的协议(“Layer2”)。迄今为止,这种权衡主要体现在扩展性辩论中,一方面是块大小增加(和 分片),另一方面是像 Plasma 和通道这样的Layer2解决方案,在某种程度上涉及区块链治理,其中损失和盗窃恢复可以通过 DAO 分叉 或其一般化形式如 EIP 867 来解决,或者通过Layer2解决方案如 可逆以太币(RETH)。那么,哪种方法最终更好呢?那些认识我很好的人,或已经看到我 自我揭露为一个肮脏的中间派 的人,知道我最终会说“都要一点”。但是,从长远来看,我确实认为,随着区块链越来越成熟,Layer1 将必然稳定,而Layer2 将承担越来越多的持续创新和变革的负担。
这有几个原因。首先,Layer1 解决方案需要在基础协议层进行持续的协议更改,而基础层协议更改需要治理,长期以来尚未证明,高度“激进”的区块链治理能够在不引发持续政治不确定性或坍缩为中心化的情况下持续进行。
举另一个领域的例子,考虑 Moxie Marlinspike 对 Signal 的集中和非联合性质的 辩护。一家公司发布的关于维护其在其关键业务中依赖的生态系统控制权的声明,当然应该受到很大程度的质疑,但我们仍然可以从中受益。引用如下:
我们早期在 Signal 上做的一个有争议的事情是将其构建为一个非联合的服务。我们开发的任何协议都不需要中心化;完全可以构建一个基于联合 Signal 协议的消息系统,但我不再相信能够构建出一个具竞争力的联合消息系统。
还有:
他们的反驳是“真是愚蠢,如果没有第三方定义的互操作协议,互联网会走得多远?”我考虑了一下。我们达到了 IP 的第一个生产版本,并在过去20年里尝试转向第二个生产版本,成功有限。我们在1997年达到了 HTTP 1.1,直到现在一直停滞不前。同样,SMTP、IRC、DNS、XMPP 也在相似的停滞状态中。回答他的问题,这就是互联网所走的路。它走到了90年代末。那确实让我们走得很远,但不可否认的是,一旦你将协议联合化,就很难进行更改。而且现在,在应用层中,静止的事物在生态系统不断变化的世界中生存并不好……只要联合意味着停滞,而集中意味着活动,联合协议就将在今天这种需要动态变化的软件环境中面临存在问题。
目前和中期向前看,明显的是去中心化的应用平台、加密货币支付、身份系统、声誉系统、去中心化交易机制、拍卖、隐私解决方案、支持隐私解决方案的编程语言以及可以在区块链上完成的其他有趣事物领域,将继续有显著且持续的创新。去中心化应用平台通常需要继续减少确认时间,支付需要快速确认、低交易成本、隐私和许多其他内置特性,交易所以许多不同的形状和形式出现,包括 链上自动化做市商、频繁批量拍卖、组合拍卖 等等。因此,将这些功能“内置”到基础层区块链中是个坏主意,因为这会形成高水平的治理开销,因为平台必须不断讨论、实施和协调新发现的技术改进。出于同样的原因,联合消息系统在没有重新中心化的情况下很难起步,区块链也需要在采纳激进治理和落后于新出现的替代方案之间做出选择。
即便是以太坊的有限的应用特定功能,预编译,已经看到了这种效果。不到一年前,以太坊采用了比扎提姆硬分叉,包括促进 椭圆曲线 操作 的操作,所需的环签名、ZK-SNARKs 和其他应用,使用 alt-bn128 曲线。现在,Zcash 和其他区块链正在向 BLS-12-381 迁移,以太坊也需要再次进行分叉以跟上。部分原因是为了避免将来出现类似的问题,以太坊社区正在寻求将 EVM 升级到 E-WASM,一种效率更高的虚拟机,这意味着对应用特定的预编译的需求大大减少。
但也有另一个支持Layer2解决方案的理由,它并不依赖于预期技术发展的速度:有时存在不可避免的权衡,没有单一的全球最优解决方案。这在以太坊 1.0 风格的区块链中不容易看出,因为有些模型是相当通用的(例如,以太坊的基于账户的模型就是一个)。然而,在 分片 区块链中,有一种问题在今天的以太坊中并不存在:如何执行跨分片交易?也就是说,假设区块链状态有区域 A 和 B,其中很少或没有节点同时处理 A 和 B。那么系统如何处理影响 A 和 B 的交易?
当前的答案 涉及异步跨分片通信,这对于转移资产和某些其他应用是足够的,但对于许多其他应用则不够。同步操作(例如,解决 火车和酒店问题)可以通过 跨分片耦合 附加,但这需要多轮跨分片交互,导致显著延迟。我们可以通过 同步执行方案 来解决这些问题,但这带来了几个权衡:
看起来很可能可以开发出更好的方案,但它会更复杂,并且可能会有该方案所没有的局限性。已知的结果阻止了完美;至少,阿姆达尔定律 给某些应用和交互类型通过并行化处理更多交易每秒的能力设定了硬性限制。
那么,我们如何创造一个可以测试和部署更好方案的环境呢?答案是一个可以归功于 Justin Drake 的想法:Layer2执行引擎。用户将能够将资产发送到“桥合约”,该合约将使用某种间接技术,例如 交互验证 或 ZK-SNARKs,使用某些替代的区块链处理规则计算状态根(可以将其视为类似于 Mastercoin/OMNI 和 Counterparty 在比特币上的层二“元协议”,但因为桥合约,这些协议能够处理其“基础账本”在底层协议中定义的资产),并且仅在替代规则集生成提款请求时处理提款。
请注意,任何人可以随时创建Layer2执行引擎,不同的用户可以使用不同的执行引擎,并且可以相对快速地从一个执行引擎切换到任何其他执行引擎或基础协议。基础区块链不再需要担心成为一个最优的智能合约处理引擎;它只需成为一个数据可用性层,具备 quasi-Turing-complete 的执行规则,以便在其上构建任何Layer2桥合约,并允许基本操作在分片之间传递状态(事实上,仅ETH跨分片的可替代性就足以,但同时支持跨分片调用的努力也非常小,因此我们不妨支持它们),而不需要更多的复杂性。另外,Layer2执行引擎可以有不同于Layer1的状态管理规则,例如没有存储租金;只要由特定执行引擎的用户负责确保其可持续,此类复杂性便无妨,假如他们未能做到,后果将仅限于该特定执行引擎的用户之间。
从长远来看,Layer1将不会在所有这些改进上激烈竞争;它只需为Layer2创新提供一个稳定的平台。这是否意味着,例如,分片是个坏主意,我们应该保持区块链的规模和状态较小,以便即便是10年的旧电脑也能处理每个人的交易?绝对不是。 即使执行引擎的某些部分可能会部分或完全转移到Layer2,上述数据排序和可用性的一致性仍然是一个高度普遍且必要的功能;要了解在没有Layer1可扩展数据可用性一致性的情况下,Layer2执行引擎是多么困难, 参见 Plasma 研究中的 困难 ,以及它在自然延伸到完全通用区块链方面的 难度 。如果人们希望在需要可用性一致性的位置抛出每秒一百兆字节的数据,那么我们也需要每秒一百兆字节的数据可用性一致性。
此外,Layer1仍可以在减少延迟方面进行改进;如果Layer1很慢,实现超低延迟的唯一策略是 状态通道,而状态通道通常需要高额资本要求,并且很难进行普遍适用。在延迟方面,状态通道总是将超越Layer1区块链,因为状态通道只需要一个网络消息,但在状态通道表现不佳的情况下,Layer1区块链仍然可以更接近当前的水平。
因此,另一个极端立场,即区块链基础层可以是真正绝对最小的,不用担心局部-图灵完备的执行引擎或超出单个节点的扩展性,也是显然错误的;基础层需要一定的最低复杂性,以使其足够强大,从而应用可以在其之上构建,而我们尚未达到该水平。需要额外的复杂性,但应非常小心地选择,以确保它是最大程度的通用,并非针对特定应用或可能因失去兴趣或更好的替代方案而在两年内过时的技术。
即使在未来,基础层也需要继续进行一些升级,尤其是如果新技术(例如,STARKs达到更高的成熟度)使它们能够获得更强的属性,但今天的开发者可以采取措施确保基础层平台在潜在改进方面具有最大化的向前兼容性。因此,继续建立在Layer1和Layer2改进之间的平衡以推动扩展性、隐私性和多功能性将仍然必要,尽管Layer2将随着时间的推移继续占据越来越大的创新份额。
更新 2018.08.29: Justin Drake 向我指出了另一个好的理由,为什么某些特性可能最好在Layer1上实现:这些特性是公共产品,因此无法通过特定功能使用费有效或可靠地融资,因此最好由发行或烧掉的交易费用的补贴支付。一种可能的例子是安全的随机数生成,另一种是为更有效的客户端验证区块链内容或状态的各种声明生成零知识证明。
- 原文链接: vitalik.eth.limo/general...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!