Web3 版的标普穆迪 L2BEAT 是怎样评估 Layer2 项目的?

作者:Faust,极客 Web3

提到 L2BEAT 这个名字,大多数人可能有所耳闻,但对其所作所为并不太了解。在 2023 年前相当漫长的时间里,人们对 L2BEAT 的印象往往只是 “以太坊 Layer2 的数据可视化平台”,除了 L2 赛道的 TVL 数据展示与技术方案分类以外,大家对 L2beat 的功能似乎不甚了解。但随着今年 6 月上线的 Layer2 风险评级指标逐渐兴起,L2BEAT 这个堪比 “以太坊 L2 评级机构”的小众组织得以被越来越多的人所知晓。

当提到 “评级机构” 四个字时,《世界是平的》一书中曾有极为生动的比喻:“我们生活在两个超级大国的世界里,一个是美国,一个是评级机构。美国可以用炸弹摧毁一个国家,评级机构可以用债券降级毁灭一个国家;有时候,两者的力量说不上谁更大。”

从 97 年亚洲金融风暴到 07 年次贷危机,华尔街评级机构都扮演了举足轻重的角色,甚至成为了这些恶性事件的重要推手。而在 Web3 这个表面讲究 “去信任化” 实际依靠 “社会共识”的圈子里,“风险评级” 是始终绕不开的重要一环。无论是合约代码审计还是链上异动分析,它们的价值丝毫不逊于零知识证明与共识算法,甚至有过之无不及。

对模块化区块链这个新领域而言,一套客观、全面,且能够把不同 Layer2 区分开的风险评估指标尤为重要,尤其是在 L2 体系已承载近百亿美元资产的当下,如何更好的发现 L2 潜在风险、更好的警示大众,已经是一个不可逃避的现实问题。

在 2022 年的一篇论坛博客中,Vitalik 提到,目前几乎所有的 Rollup 都不算成熟,大多采用了被称为 Training Wheels(辅助轮)的辅助手段,来保障 Rollup 的正常运转。“辅助轮” 反映了 Rollup 项目在多大程度上依赖于 “人工干预” 和 “社会共识”,越少依赖辅助轮的 L2 越 “去信任化”,风险越低;反之则风险越高。

比如,包括 Optimism 在内的乐观 Rollup,大多没有上线欺诈证明系统,这极大抬高了风险级别;还有不少 L2 如 Immutable X 把 DA(数据可用性)放在 ETH 链下实现,亦或是像 Starknet 一样缺乏可随时调用的强制提款/强制交易功能。对于 Layer2 而言,上述条件是保证其 “等同于 ETH 安全性” 的必要条件。当然除了这些之外,目前几乎所有的 L2 项目方都给自己留了 “后门”,靠一组多签来管理 L2 在以太坊上的合约代码,并可随时更改状态哈希,这也是巨大的隐患所在。

为了更好的区分和定义 Rollup,Vitalik 等人根据一个 Rollup 项目对辅助轮/人工干预的依赖程度,把 Rollup 划分为 3 个等级,即 Stage 0、Stage 1、Stage 2。后来 L2beat 通过社区征集意见的方式对这套分类方案进行了修正,大致可以归纳如下:

Stage0——完全依赖辅助轮,一个 Rollup 应满足的最低标准:

·该项目自称是 Rollup。

·Rollup 处理的交易应该 “on-chain”(涉及 L2 状态转换过程的数据都要披露至 L1,同时还要披露 L2 状态的哈希 Stateroot;)

·应该设置一批权限开放且代码开源的 Rollup 全节点,可以帮助用户获知 L2 上全体账户的状态(包含余额、交易次数等)。

满足上述全部条件的 L2 项目才会被 L2beat 标记为 Stage 0,也即满足一个 Rollup 的最低标准,否则将不被视作一个 Rollup(比如 Arbitrum Nova)。

Stage1——部分依赖于辅助轮的 Rollup,有以下特征:

·必须上线欺诈证明/有效性证明系统,保证 L2 状态转换的有效性;

·如果是乐观 Rollup,至少要有 5 个非官方控制的 L2 节点可发布欺诈证明(挑战者白名单里至少包含 5 个 Rollup 官方之外的实体)。

For Example,截至 2022 年 11 月,Arbitrum One 的挑战者白名单成员包括 9 个实体:Consensys、以太坊基金会、L2BEAT、Mycelium、Offchain Labs、P2P、Quicknode、DLRC、Unit410。

·任何时候,用户都可以绕开排序器 Sequencer(Operator),把在 L2 的资产强制提款到 L1,以保证不会被冻结资产;如果排序器发动审查攻击,拒绝处理某些交易,用户可以强行把交易提交进 L1 上的 Rollup 交易序列。除了发布错误的 Stateroot 外,排序器找不到其他作恶方式。

·Rollup 可以设置安全委员会,由一组多签管理,有在紧急情况下强制升级 Rollup 合约的权力,或者干预合约上记录的 L2 状态哈希。但委员会多签私钥必须足够分散,且阈值够高。Vitalik 本人认为,这个数值至少应是 6/8,即多签被超过 8 个人管理,生效阈值是 75%。

·并非由委员会多签授权的 Rollup 合约升级,至少受到 7 天的时间锁延时限制。这样一来,如果 Rollup 遭遇治理攻击等恶意的更新提案(参考 Tornado Cash 治理攻击事件),可以给用户至少 7 天的时间来安全提款。

目前的主流 Rollup 仅有 Arbitrum One、dYdX、zkSync Lite 达到了 Stage1 的要求,其他主流 Rollup 均停留在 Stage0 阶段。

Stage2——完全抛弃辅助轮,成为一个彻底的 Rollup:

·乐观 Rollup 网络里可发布欺诈证明的 L2 节点应当 Permissonless,取消白名单设定(对此,Arbitrum One 近期推出了名为 BOLD 的协议);

·所有的 Rollup 合约升级行为至少受到 30 天以上的时间锁延时限制,或者干脆无法升级合约。这意味着 Rollup 发生恶意的升级时,L2 用户有至少 30 天的时间安全提款。

为了更好的理解 L2BEAT 罗列出的风险评级指标,我们可以挑选三个不同安全级别的 Rollup 实例进行解析。

Stage0-Base,Stage1-Arbitrum One,Stage2-Fuel:

Base 是乐观 Rollup 赛道的头部项目之一,它靠 L1 上的合约来记录 L2 状态哈希 Stateroot、处理进出 L2 的资金,并且借助以太坊实现数据可用性(DA),与 L1 有桥接关系。

Base 排序器需要把 L2 的交易数据披露至 L1,具体而言,排序器大概每隔几分钟,就向以太坊上的指定地址发起一笔 Transaction,在 Transcation 的可自定义的附加数据 Calldata 中,记录一批压缩后的交易数据。由于 L2 全节点会自动同步 L1 区块,它们可以监测到排序器发出的这笔交易,在其 Calldata 里解析出 L2 的交易数据,进而获知 L2 排序器的最新状态,并计算出正确的状态哈希 Stateroot,与 L1 上排序器提交的 Stateroot 进行比较。

目前 Base 没有上线欺诈证明系统,无法保障 L1 合约中记录的 L2 Stateroot 是正确的,但有能力运行 L2 全节点的用户可以及时发现错误所在;此外,Base 没有强制提款等抗审查攻击的方案,如果排序器长时间宕机或者故意拒绝用户请求,L2 用户将无法安全提款至 L1,所以它存在巨大的安全隐患。

显然,这样的 Rollup 在机制设计层面是不安全的,但用户和 L2 社区成员可在必要时刻通过社交媒体发出警告,让以太坊基金会乃至 SEC 等监管机构意识到危险发生,这就是所谓的 “社会共识”,即通过高度的数据透明和社区成员自发监督,以 “舆论发酵” 和 “人工干预” 及后续 “法律追责” 的方式来制约 L2 项目方的作恶行为,属于最低级别的安全保障,因为它无法在事前就制止作恶,而只能在作恶行为发生后追责。

但事实上,“社会共识” 也是保障区块链安全的基础条件(如果有人尝试恶意分叉以太坊,以太坊社区也会通过社会共识确定哪个分叉链是应该追随的),并且恶意行为者顾及到自己所作所为被曝光的后果,大多数时候不敢挺而走险(当然 FTX 和 ZT、门头沟等交易所除外)。

当我们把考察对象换为 Arbitrum One 时,可以立刻看到它与 Base 的不同。比如它上线了可用的欺诈证明系统,设立挑战者白名单,其中包含以太坊基金会和 L2beat 在内的 9 个不同实体运行的节点,只要排序器往 L1 发布了错误的状态哈希 Stateroot,挑战者节点就会发布欺诈证明,这样可以确保 Rollup 合约里记录的 L2 Stateroot 是正确的;

同时,Arbitrum One 有应对排序器审查攻击的强制交易机制,允许用户调用 L1 上的 Sequencer Inbox 合约的 force Inclusion 函数,将交易指令直接提交至 L1;如果在 24 小时内,排序器没有处理这笔需要 “强制包含” 的交易/提款,该交易/提款指令会被直接包含进 Rollup 交易序列中,这就为用户创造了一个可以从 L2 强制提款的 “安全出口”。

这里需要强调,在 Stage1 级别的 Rollup 项目中,用户只要可以获知 L2 的全体账户状态,构造对应自己账户余额的 Merkle Proof,就可以通过 Rollup 合约里的指定函数来强制提款(这个功能一般称为逃生舱 Escape Hetch)。至于如何获知 L2 上账户的状态,要看 Rollup 网络内是否有对外开放数据的全节点(几乎所有的 L2 都有这类节点)。

此外,Arbitrum One 的合约升级行为受到多种因素限制,比如:正常的合约升级提案,要先通过链上治理的投票决策,投票阈值通过后,又会受到时间锁限制(有 12 天的延时),之后才会被自动执行。如果该合约升级提案包含恶意的代码逻辑,可以被安全委员会否决(通过多签来执行)。

但 Arbitrum One 安全委员会本身可以越过时间锁的限制,比如只要 9/12 多签通过,安委会就可以立刻 upgrade 合约代码,或者是强行更改 Rollup 合约里记录的 L2 Stateroot。

至于安全委员会凭什么有这么大的权力,Vitalik 曾如此解释:

“有些 Rollup 可能采用了多个独立的状态转换函数,比如有两个持不同观点的的欺诈证明发布者,或者有多个 Prover 节点提交了不同的有效性证明,或是排序器尝试在 L1 上分叉 L2 账本,亦或是有效性证明在 7 天内都没有被提交上链,都可能导致 L2 系统彻底崩溃。安全委员会可以在这种危险局面下做出裁决,用人工干预的方式引导系统采用正确的结果。”

当然,Vitalik 只是列举了几种简单的 “危险情况”,考虑到 Rollup 合约可能遭遇黑客攻击,排序器也随时可能被黑(或者出内鬼),紧急的应对措施显然是必要的。

按照 Vitalik 的看法,如果是完善的 Rollup,合约可以升级,但必须有大于 30 天的时间锁延时,给用户和社区成员足够长的反应时间。

显然,由于 Arbitrum 的安全委员会可以在多签通过后立刻升级合约,如果新版本代码里包含恶意的业务逻辑,理论上可以卷走用户在 L2 的资产。所以 Arbitrum One 并不符合 Vitalik 对完善的 Rollup 的定义,只是风险级别比较低。

当我们要考察 “完善的 Rollup”时,L2BEAT 上只有两个项目满足条件:Fuel V1 和 DeGate。其中,Fuel V1 是最早上线欺诈证明系统的乐观 Rollup,它的欺诈证明提交是 Permissionless 的,所有人都可以运行节点并在必要时发布欺诈证明。同时,Fuel V1 的合约被写死了,根本无法升级,委员会也无法干预 Rollup 合约上记录的 L2 Stateroot,所以不存在所谓的安委会风险。

Fuel V1 达到了最低的风险级别,但其每次更新迭代都要重新部署合约,并且需要用户手动把资产迁移至新版本,实质就是重做了一个新项目,这样的后果是流动性的割裂,极大的降低了灵活性。由于编程模型采用 UTXO 而不兼容 EVM、创始人后来转投 Celestia 团队等多重原因,Fuel 的发展逐渐停滞,生态建设也不尽人意。

总而言之,追求绝对的安全带来的代价就是更新迭代的不灵便,而在欺诈证明与有效性证明技术尚未完善的当下,保持一定的合约可升级性,或许是 Rollup 必须要具备的 feature。

在未来相当长一段时间里,我们可以预见到以下情形:大多数 Rollup 都不会放弃安委会多签,L2 合约在很长一段时间内都将具备 “可立即升级性”(某 ZK Rollup 项目一直都没有放弃安委会多签,后来直接转头做新项目去了)。鉴于欺诈证明系统的开发难度,多数非头部的乐观 Rollup 可能无法在短期内上线欺诈证明(大概率 2023 年底还做不出来),而 Arbitrum One 将长期处于 Rollup 赛道的领先地位,虽然它尚不具备最高级别的安全,但却拥有相对完善的欺诈证明系统、安委会多签被合理分散(9/12 多签,被分配给了包括 ARB 项目方成员在内的 12 名社区成员),同时也具备最庞大的 DApp 生态——拥有超过 440 个应用。而安全性很差、更多靠营销的 Base 能否延续过去几个月的增长势头,还有待时间的验证。如果 Base 在 TVL 体量上能超过 Arbitrum One,或许会导致 “去信任化” 信仰本身的溃败。

当然,最重要的是,我们将始终需要 L2BEAT 这类风险评级机构,在这个动荡不安、充满混乱的时代,一套一目了然、综合全面的风险评级指标,始终是保证以太坊体系乃至整个 Web3 蓬勃发展的关键所在。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。本文内容仅用于信息分享,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。