提到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蓬勃发展的关键所在。