- 数据可用性。一个公共公告板,保证所有在线方都可以访问最近发布的有序数据。
- 结算层。一种共识协议,根据有序的交易列表,集体商定所有账户的余额。
- 执行层。负责执行复杂交易和智能合约代码等所有艰难的工作。
这种组合允许网络通过与收费市场纠缠在一起来限制数据的发布。如果用户愿意支付有竞争力的网络费用,并且数据符合约定的限制,那么用户可以发布他们想要的任何数据。
举个例子:
- 比特币 blobs。由于与隔离见证(SegWit)见证相关的额外见证数据限额和费用折扣以及 Taproot 的进一步放宽,Ordinal NFT 被开启了。
- 以太坊 blobs。EIP-2028 降低了 CALLDATA 的 gas 成本,以支持初始版本的 rollup。目前正在与 EIP-4844 合作,为 CALLDATA 创建一个单独的费用市场,并允许以进一步的折扣率发布数据 blobs。
然而,我们需要知道,虽然比特币和以太坊都可以作为数据可用性层(在某种程度上),但在结算层方面,它们并不具有相同的功能。
这其中有一个小小的区别,对 rollup 的安全性有巨大的影响,也可以说是它作为一项技术部署的实用性如何。
如何看待 Rollup 的安全性?
图:一个验证 Rollup 有一个持有所有资产的验证桥,并独立地验证对链下数据库的所有更新是否有效。
正如我们之前所说,评估一个 rollup 的安全性,需要从两个关键部分来考虑:
- 验证桥。一个可信的第三方,它将执行一个固定的规则集来评估链下系统的数据库更新是否有效。
- 一个诚实的助手。诚实的一方,可以挺身而出,协助验证桥,并代表所有参与者挽救局面。
我们通常假设验证桥能够正常工作,因为它是可信的第三方。它可以访问底层区块链中的所有资产,它可以作为智能合约实现,我们只需要向以太坊支付一笔费用,就可以利用它来保护链下系统。
当然,桥的设计和实现可能会遇到挑战,但我们可以相信,正在执行验证任务的桥将诚实地遵循协议。
验证桥将继承什么样的安全性?
如果我们深入研究验证桥和底层区块链的假设,真正理解我们可以继承的安全属性是至关重要的。
图:决定一条链的安全性有四大特点:(a)抗重组,(b)抗审查,(c)数据可用性以及(d)有效性。
Sreeram Kannan(Eigenlayer 创始人)的一条长推很好地总结了这些假设:
- 抗重组。底层区块链能够决定并且保护所有交易排序的最终性(finality)。
- 抗审查。任何人,无论他们是谁,都可以发起一笔交易——只要他们能够支付合适的网络费用。
- 数据可用性。一个公共公告板,保证所有在线方都可以访问最近发布的有序数据。
- 有效性。底层区块链可以独立验证(而无需重播所有交易)rollup(执行层)上的所有操作都是有效的。
在比特币和以太坊中,我们假设有诚实的大多数区块生产者(质押者/矿工)积极参与,并且有不同的验证者网络(“运行节点”)实时检查所有发布的区块的有效性。
区块生产者诚实的大多数假设可以总结为:
- 以高费用为先。无论其内容如何,区块生产者将始终选择能够得到最多手续费的交易。
- 尊重分叉选择规则。区块生产者总是会根据网络的分叉选择规则扩展区块链。
有趣的是,只要区块链在进行,我们就不需要信任区块生产者会发布有效的区块。所有的区块都可以被运行节点软件的验证者检查并立即拒绝。
只要有足够数量和多样化的具有重要经济意义的代理人运行验证者,那么价值就会被赋予遵守规则的一个真正的区块链。
Rollup 可以继承比特币的安全吗?
这就将我们导向了一个问题:
Sreeram Kannan 所说的安全属性实际上适用于比特币和以太坊吗?在比特币和以太坊中,我们之前已经介绍了这两个网络如何很好地实现这些安全目标。
总之,这两个网络都提供了抗重组、抗审查和数据可用性,程度类似。他们都提供了一个平台,在这里,任何人都能发布数据,只要他们愿意支付一笔费用。
一个题外话:我们在 2014 年做了我的第一个项目 ZombieCoin,由于看中了上述属性,我当时就用了比特币来协调僵尸网络的指令和控制中心。
两个网络之间的一个微小差别在于有效性,这在比特币和以太坊之间有很大的不同。
如前所述,我们可以在以太坊上部署一个验证桥智能合约,并继承有效性属性。另一方面,在比特币中,脚本语言和 UTXO 模型缺乏构建验证桥梁的表现力。该平台不能用于检查数据 blob 或链下数据库的有效性。
换句话说,除了对发布数据收取费用之外,我们应该将比特币视为缺乏任何形式计算的数据可用性层,如果不对比特币进行巨大的改变,我们就无法像在以太坊上那样在比特币上构建各种 rollup。
所幸——这并不是结局。
Taproot Wizards 的崛起、Eric Wall 的演讲以及现在 RollKit 的发布都表明,在比特币上构建不同类型的 rollup 是有可能的。
主权 Rollup?
图:用户将把他们的交易发布到数据可用性层,客户端软件根据全球范围商定的规则集解析这些数据,以计算链外数据库。
这就又引出了一个问题——到底什么是主权 Rollup(Sovereign Rollup)——为什么它可以被部署在比特币以及 Celestia 等其他网络上?
“Rollup”部分的灵感来自 Barry Whitehat,它解决了 Plasma 的数据可用性问题。它本质上是“卷起交易”并将数据 blobs 发送到底层区块链。只要数据被发布——任何人都可以这样发布数据,那么它就可以被使用。
图:最终由网络的用户决定哪个规则集应该具有赋予它的真实世界的价值。
“Sovereign”部分涉及如何检查数据 blobs 的有效性,并用于计算链下数据库。它依赖于一个外部社区运行一个软件客户端(一个全节点),该客户端可以获取数据 blobs,根据固定的规则集解析数据 blobs,并计算链下数据库。
更进一步说,主权 Rollup 的安全性依赖于大多数,甚至是超级多数,经济上重要的代理同意同一套解析数据的共识规则。如果他们达成集体共识,那么他们都可以计算相同的链外数据库,赋予其真正的经济价值,并信任资产将得到保护。
这种安全性假设有时解释起来有点抽象。多数人或超级多数人赋予价值意味着什么?它与比特币和以太坊等区块链网络的治理规则非常相似。例如,为什么 BTC 比 BCH 更有价值?或者为什么 ETH 比 ETC 更有价值?
这最终取决于买方市场,以及他们如何将价值归于给定的规则集。
在继续下面的内容之前——这里的关键点在于——安全性并不取决于谁来向底层区块链发布数据或者数据是如何发布的,而在于经济代理如何解析已发布的数据以及谁来决定解析这些数据的规则。
主权 Rollup 和以太坊 Rollup 对比如何?
图:以太坊 Rollup 和主权 Rollup 的对比
比较这两个系统的一个有趣的方法是,考虑用一个外部软件客户端取代验证桥智能合约的影响,这个外部软件客户端由经济上重要的代理运行,并且底层区块链不知道。
基于此,我们做了一个对比的表格来快速指出简单的一个差异——验证桥 VS 外部软件客户端——如何影响 rollup 的特定属性。
我们来一条一条说。
安全假设:
- 主权 rollup 取决于经济上重要的代理首选哪个规则集(和链下数据库)。底层区块链对有效性规则集没有影响。它只能保证数据是公开可用的以及它的总排序。
- 验证桥继承了底层协议的所有安全属性,新的安全性挑战在于诚实的助理。
- 主权 rollup 依赖于社区共同商定用于解析数据的固定规则集。其升级依赖于经济上重要的代理商同意新规则的过程。它可能反映了“粗略的共识”或软件客户端采用的外部治理协议。
- 验证桥将强制执行所有规则,而更改规则只能通过在智能合约代码中实现的升级过程来执行。系统升级规则对所有人都是公开可验证的。
- 除了数据可用性之外,主权 rollup 不能使用底层 rollup。像 BTC 这样的原生资产在继承底层区块链的安全性时不能转移。它必须依赖于具有自己信任假设的外部桥接协议。
- 验证桥全权负责保护它从底层区块链传输到 rollup 的所有资产。
这是一个有趣的讨论——社区中是否存在关于规则集的冲突,以及链下系统是否可以一分为二。BTC/BCH 和 ETH/ECH 已经发生了这种情况,因为两个社区可以各自走自己的路,让市场决定哪一个应该是有价值的。
这里需要考虑的资产有三类:
- 原生桥接资产。从底层区块链桥接到 rollup 的资产。
- Rollup mint 资产。在 rollup 上发行并原生于 rollup 的资产。
- 桥运行者。支持将资金从一个区块链系统转移到另一个区块链 rollup 的外部运行者。它有自己的信托假设来保护资产。
- 在主权 rollup 中,规则集和链下数据库的信任由社区决定。如果存在一个基于共识的分叉,那么在 rollup 中生成的资产将在不同的分叉上复制,并且由外部桥运行者选择其中一个分叉。
- 在验证桥中,共识分叉是不可能的。智能合约将决定规则集、链下数据库,并最终保护原生桥接到 rollup 上的所有资产。
这在两个 rollup 上是相同的——必须实现强制包含机制,允许用户将他们的交易提交给数据可用性层,并由其他人拾取。
共识协议:
共识协议在 rollup 中很有用,它允许一组 sequencer 在数据 blob 发布到数据可用性层之前就交易的排序达成一致,或者帮助协调执行者在执行数据 blob 之后验证新的数据库状态。
然而,共识协议对于这两种类型的 rollup 来说都并非是必选项,这其中甚至可能产生的争议在于是否应该将其称为“共识”,而不是“预约/排序”协议。
在共识协议的情况下,我们可以依靠强制包含机制,允许用户直接向数据可用性层提交数据 blob,其在总排序中的位置将由平台决定。任何人都可以获取有序的数据 blob,执行这些 blob,然后计算链下数据库。
因此,如果我们想在 rollup 中添加共识协议,可以将用于解析数据 blob 的额外规则编码到验证桥或外部软件客户端中。例如,智能合约中可以实现循环协议或公平排序协议。
Gossip 协议:
代理不需要通过点对点网络进行协调。所有数据都可以发布到数据可用性层,所有代理都可以读取发布的数据。是否存在验证桥或外部软件客户端对如何在 rollup 中发送消息没有影响。
主权 Rollup = 结算层?
可扩展性通常被认为是执行→结算→数据可用性的不同层。每一层都应该直接依赖于下一层,但除此之外,它们在本质上是独立的。
通过评估如何在数据可用性层上部署 rollup(就像比特币的情况一样),它确实突出了这认知的一些问题。
如果没有费用市场来限制数据 blob 的发布,那么它很容易导致垃圾信息,必须由主权 rollup 来解析和丢弃。同时,结算层缺乏可表达性会影响我们部署验证桥的能力,并依赖于结算层来保护构建在其之上的所有系统。
在实践中,至少对我来说,我们似乎希望将结算层和数据可用性结合起来,因为这允许用户为发布数据的特权付费,同时启用验证桥的部署。
比特币和以太坊之间的微妙区别——平台能够验证数据 blob,以证明执行——对我们如何部署 rollup 产生了巨大的影响。
- 你是否希望部署一个验证桥,并允许底层区块链强制执行规则集,以确定链下系统的表现?
- 你是否希望部署一个外部软件客户端,并将该平台用作获取有序数据 blob 的公告板?
- 我们能否信任来自底层平台的诚实多数人来验证数据 blob 是否会导致已证明的执行?
- 我们是否应该引入一组新的经济参与者来检查数据 blob 是否会导致已证明的执行?除了重新使用大部分底层平台以保证数据 blob 可用之外。
对我来说,以及我自己关于这些系统如何演化的理论,我确实认为我们应该尽量减少引入积极参与保护系统完整性的不同参与方。毕竟,一个系统的安全性取决于它最薄弱的环节。
在主权 rollup 的世界里,我们需要信任底层区块链中诚实的大多数对数据 blob 进行排序,并信任其他参与方来保护数据 blob 解析方式的完整性。每次部署都需要一组新的参与者,我们需要一种方法在数百/数千个 rollup 部署中扩展这个人工流程。
这看起来比以太坊的 rollup 要困难得多,或者我应该称之为验证 rollup。项目只需部署一个验证桥,并解决寻找一个诚实的助手来帮助桥的问题。不需要引入一组额外的决策者来保护链下系统,因此它允许我们依靠软件来扩展和支持数百/数千个 rollup 的部署。
关于主权 rollup,还有另一个很有趣的思想实验。如果我们仔细观察就会发现,它们看起来非常熟悉我们如何在数据可用性层之上构建新的结算层。
如果代入比特币的情况,该平台的费用市场可以用于防止数据可用性层上的垃圾信息,同时允许在其之上部署主权 rollup。此 rollup 允许用户生成资产、转移资产,并将验证桥部署到其他链下系统。
当然,原生资产 BTC 不能以去信任化的方式转移到主权 rollup,但它允许在比特币之上出现一个生态系统,同时允许 BTC 用于支付网络费用。
无论如何,我希望你们喜欢这篇文章。我一直不喜欢用“离散 rollup”(Discrete rollup)这个词来描述部署在以太坊上的 rollup 类型。它实际上应该被称为验证 rollup,因为底层验证桥负责保护锁在链下系统中的所有资产。