L2 Rollup理想太美?内藏多签与安全委员会的信任风险

Rollup 和 L2 真的如同大多数人所鼓吹的那般美好吗?它真的像人们所认知的那样安全吗?一个必须思考的问题是该如何降低多签和安全委员会带来的信任风险。前情提要:面临Rollup时代,Opside如何共建ZK生态? 背景补充:科普Rollup分类有几种?除了Validity、Optimistic之外还有

本文目录

Rollup 原理简述那些 老生常谈 的点难以解决的 人治 问题哪些 Rolllup 被多签 / 委员会操控?

自 Solana 逐步衰落和 OP 发行 Token 以来,Layer2 和 Rollup 似乎成为了无数 Web3 从业者新的港湾。随着熊市的持续蔓延和 FTX 暴雷出局、Multicoin 损失惨重,以太坊的竞争对手们陆续淡出了 Web3 这个大舞台,不断失去了和 ETH 一较高下的底气。越来越多的人开始将 Rollup 视为新一轮叙事核心,越来越多的专案如同雨后春笋般在 L2 上扎堆涌现。

但这一切是否是 虚假的繁荣,是否是 随时可能被戳破的泡沫?Rollup 和 L2 真的如同大多数人所鼓吹的那般美好吗?它真的像人们所认知的那样安全吗?且不谈许多 OP Rollup 没有欺诈证明,Rollup 的安全隐患还有哪些?

BitGet中文官网

L2 Rollup理想太美?内藏多签与安全委员会的信任风险

本文受到 L2BEAT 近期发布的 Upgradeability of Ethereum L2s 启发,针对 Rollup 升级背后的多签与委员会信任风险,及此前关于 Rollup 的老生常谈,联想到前不久的 Multichain,综合聊下 L2 为何不像许多人所想的那么 美好。

Rollup 原理简述

如果你已经熟悉 Rollup 的原理,可以直接越过下面的许多段落,往后拉

以太坊 Rollup = Layer1 上的一组合约 Layer2 网路自己的节点。

Layer2 网路节点这个群体可以拆分出几类角色,其中最重要的当属定序器Sequencer。它接收 Layer2 上发生的交易请求,决定它们的执行次序,然后把交易序列打包为批次Batch,传送给 Rollup 专案在 Layer1 上的合约下文中将统称为 Rollup 合约。

Starknet 的互动逻辑示意图

Layer2 的全节点可以直接从定序器处获取交易序列,也可以读取定序器发到 Layer1 上的交易批次Batch,但后者具备比前者更高的最终确定性不可更改性。通常,当一批交易被定序器传送到 Layer1 上后,这批交易的次序便不可变更只要以太坊不发生区块回滚,Rollup 的交易序列就不会变更。

由于交易执行会更改区块链帐本的状态,所以除了交易次序外,Layer2 全节点还需要和定序器同步帐本状态,这样才能保证一致性。因此,定序器不光要往 Layer1 的 Rollup 合约传送交易批次,还要把交易执行后的状态更新结果Stateroot/State diff传送至 Layer1。

不难看出,L1以太坊实际上充当了 L2 节点们的公告板,它要远比 L2 自己的网路更去中心化、更 Trustless、更安全 。对 L2 的全节点而言,只要获取了 L1 上的 Rollup 交易序列 最开始的 Stateroot,就可以还原出 L2 的区块链帐本,计算得出最新的 Stateroot。如果 L2 全节点自己算出的 Stateroot 和定序器发布到 L1 的 Stateroot 不一致,就说明定序器存在欺诈行为。

最直观的假想案例是:L2 的定序器可不可以盗取使用者资产。比如,它可不可以伪造一些本不该发生的交易ps:把某些 L2 使用者的 Token 转移至定序器执行者的地址,然后再把这些 Token 转移到 L1 上。这类问题可以归结为:定序器发布了错误的交易资料或错误的 Stateroot 后,该怎么办?

针对定序器的欺诈风险,不同型别的 Rollup 有不同的应对措施。Optimistic Rollup乐观 Rollup允许 L2 全节点提供欺诈证明Fraud Proof,证明定序器在 L1 发布的资料存在错误。比如 Arbitrum 设定了一个节点白名单,允许白名单上的 L2 节点发布欺诈证明。

除此之外,考虑到大多数交易所和私营跨链桥专案方都会执行 L2 全节点,可以立即发现错误,大多数 Rollup 定序器盗币的成功率基本为 0因为它最后要套现,还是要在交易所完成,或者把盗来的币转移至 L1 后再另谋出路。

图中的 Aggregator 实际就是定序器

但对于没有欺诈证明的 Optimism,定序器可以通过 Rollup 自己的跨链桥 bridge 合约来盗币。比如,定序器执行者可以伪造交易指令,将其他人在 L2 的资产转移至自己的地址,再通过 Rollup 自带的 bridge 合约,把盗来的币转移至 L1。因为没有欺诈证明,OP 的全节点无法对错误交易发起挑战,所以理论上,OP 的定序器可以盗取使用者在 L2 的资产只要它真的想这么做。

至2023年7月24日,Bedrock升级后的OP仍未发布欺诈证明系统

解决这种问题的方法是 社会共识靠社群成员和社交媒体等舆论监督,或者靠 OP 官方的信用背书。

有趣的是,近期某交易所降低了 Arbitrum 和 Optimism 使用者向所内转币的延时从 100 个 L2 区块降低到 1 个 L2 区块,这其实是信任 ARB 和 OP 的定序器不会作恶预设它们是有官方背书的中心化伺服器。

不同于乐观 Rollup,除了依靠 L2 全节点外,ZK Rollup 通过有效性证明 Validity Proof往往与 ZK Proof 相混淆解决定序器欺诈问题。ZK Rollup 网路里有一种称为 Prover 的节点,专为定序器发布的交易批次 Batch 生成有效性证明。同时,L1 上有专门验证有效性证明的合约一般称为 Verifier,只要交易批次及 Stateroot / State diff 对应的证明通过 Verifier 合约的验证,便被最终确认Finalized。ZK Rollup 的官方 bridge 只会给通过有效性证明验证的提款交易放行,显然这要比 Optimism 可靠太多。

Scroll 定义的交易资料的 3 个阶段

理论上来说,OP Rollup 的安全性靠 L2 全节点来保证至少要有 1 个能发布欺诈证明的诚实节点。ZK Rollup 的安全由 L1 上的 Verifier 合约保证由 L1 节点完成交易最终确认。表面上看,它们都可以 继承 L1 的安全性借助 L1 完成交易的最终确认 / 结算,以太坊最大主义者甚至将其称作 等价于 L1 的安全性与 L1 的交易结果最终性一致,但实际情况却并非如此,甚至是远非如此。

那些 老生常谈 的点

首先,ZK Rollup 的有效性证明生成速度极为缓慢,定序器可以在 1 秒内执行几千笔交易,但为这几千笔交易生成 Proof 最多可能要几小时。但这个问题也容易解决,主流的 ZKR 基本都会通过切分 Proof 生成任务、交由不同的 Prover 节点并行处理的方式,大幅提高 Proof 生成速度。

其次,要考虑 L2 节点在 L1 发布资料的延迟。因为定序器或 Prover 每次往 L1 传送资料,都会有一个固定成本就好比每次运货都要消耗一个集装箱。频繁在 L1 上发布资料是不划算甚至亏本的,所以定序器和 Prover 会尽量减少在 L1 上发布资料的频率,等一次性凑够了大量的资料再打包发布。

换言之,当使用者数量不足、发起的交易笔数不够多时,定序器会延迟向 L1 发布资料。比如在去年使用者较少时,Optimism 半小时才向 L1 传送一次交易批次。现在,因为使用者多了起来,这个问题得到了有效解决。与 OP 不同的是,Starknet 采用了减少 State diff 发布频率的方式降低资料成本,这使得 Starknet 的交易最终确认延时被拉长到了 78 小时。

除此之外,多数 ZK Rollup 为了进一步降低成本,往往会 聚合许多个 Proof,再一次性发到 L1 上。也就是说,Prover 不会在生成一个 Proof 后就立刻发到 L1,而是等多个 Proof 都生成完,聚合在一起,再发给 L1 的 Verifier 合约。其实聚合 Proof 的过程,就是用一个 Proof 来包含掉验证多个 Proof 产生的计算步骤

Scroll 的聚合 Proof 示意图

这样做的后果是,Proof 的发布频率进一步降低了,交易从发起到最终确认的延时进一步拉长了。

根据区块浏览器显示,Polygon ZKEVM 的交易确认延时大概是 3050 分锺,Starknet 和 Zksync Era 在 7 小时以上。显然这只是 部分继承 L1 的安全性,与以太坊支援者们所说的 等价于 L1 的安全性 有很遥远的距离。

当然,以上问题都可以靠技术进步来解决,在不久的未来实现。比如很多专案方在研发高效能硬体,降低有效性证明的生成时间;Optimism 也承诺将很快发布欺诈证明系统;以太坊的 Danksharding 方案将把 Rollup 的资料成本降低几十倍甚至更高,这可以有效解决上面罗列的问题。

难以解决的 人治 问题

与 Defi 等应用类专案一样,Rollup 网路的运转需要依靠 L1 上的相关合约,而这些合约是 可升级 的,也就是说部分程式码可以更换大多数 Rollup 都用了代理合约,并且可以在多签或安全委员会的授权下立刻进行。先说结论:Rollup 可以通过少数人控制的多签或安全委员会,快速更改 L1 上的合约程式码,然后盗取使用者资产。

图源:L2BEAT 研究报告

首先 Rollup 合约为什么需要升级 和 它是怎么升级的。以太坊上的合约程式码在部署后,是不可更改的,但 Rollup 在开发过程中难免存在各种各样的 bug,可能导致错误的结果;同时 Rollup 也在频繁的进行产品叠代,需要频繁增加新的功能;更极端的情况下,还可能有骇客攻击 Rollup 合约,所以 Rollup 合约需要有可升级性,这往往通过代理合约来实现。

图源:wtf academy

代理合约其实是以太坊合约开发中常用的一种方法,就是将合约的资料和业务逻辑分开,分别储存在不同的合约中。资料状态变数储存在代理合约中,业务逻辑函式储存在逻辑合约中。代理合约Proxy通过 delegatecall,将函式的执行过程全权委托给逻辑合约Implementation,再把最终的结果返回给呼叫者Caller。

代理模式下的合约升级,只需要将代理合约指向新的逻辑合约改写代理合约里储存的逻辑合约的地址。大多数 Rollup 专案都采用了这种给合约升级的方法,可谓简单粗暴。

图源:wtf academy

不难想到,Rollup 的合约可升级其实是巨大的雷:如果升级后的合约里包含恶意的程式码,比如把 Rollup 自带的 Bridge 合约的提款放行条件加以修改,或者把 Verifier 合约判定有效性证明正确性的条件加以更改,定序器就可以盗币原理在前面讲了。

但问题在于,又不能不允许 Rollup 合约可升级,理由在前面说的很清楚。权衡之下,绝大多数 Rollup 会通过 DAO 治理、安全委员会或多签授权,用人治的方式来决定要不要升级 Rollup 的合约。除此之外,还会通过时间锁 Timelock,来为合约升级设定延时视窗期。

图源:L2BEAT 研究报告

考虑到大多数的 DAO 提案都有自动化的执行流程通过链上合约来实现,即便要升级合约,也要先获取足够多的投票,然后再经过时间锁 Timelock 规定的延时往往要经过很多天,升级合约的操作才会执行。如果有人想搞恶意的合约升级,需要通过治理攻击的方式度过 DAO 治理这关比如发生在 Tornado Cash 上的治理攻击,但这样做的成本很高,要先获取足够多的 Token 才行,正常情况下不会成功。即便治理攻击成功了,由于有时间锁的限制,使用者会有足够多的时间把资产从 L2 撤出,Rollup 官方也会有足够多的时间采取紧急措施。

时间锁就是经过一段延时后,才允许你进行某些操作

看起来时间锁是解决恶意的合约升级的法宝。但问题在于,所谓的 Rollup 官方可采取的紧急措施,其实就是绕开 DAO 治理和时间锁,通过多签或者安全委员会授权,立即升级 Rollup 合约。考虑到目前主流的 Rollup 托管了动辄几十亿美元的使用者资产,由多签和安全委员会来授权的 合约可立即升级,是终极的应急措施,但也是悬在所有使用者头顶上的达摩克利斯之剑。

显然这是信任最大化问题:你需要信任 Rollup 官方不会有盗取你的资产的念头。如果从 Trustless 的角度来考虑尼克萨博的视角,所有由多签和安全委员会控制的 Rollup 都是不安全的。Avalanche 创办人 Emin Gun Sirer 和 Solana 创办人 Anatoly、着名黑子 Justin Bons 都曾强调过这类问题。

哪些 Rolllup 被多签 / 委员会操控?

根据知名 L2 研究机构 L2 BEAT 发布的报告 Upgradeability of Ethereum L2s,及 L2BEAT 资料视觉化网站显示,Arbitrum、Optimism、Loopring路印、ZKSync Lite、ZkSync Era、Starknet、Polygon ZKEVM 等主流 Rollup 都存在多签或委员会授权的可升级合约,并且可以绕开时间锁限制。

dYdX 虽然有一个 EOA 地址可以绕开 DAO 治理升级合约,但受到时间锁限制至少有 2 天的延时。Immutable X 则存在 14 天的合约升级延时,所以,按照 L2BEAT 的说法,dYdX 和 Immutable X 要比其他已上线主网的主流 Rollup 更 Trustless。

图源:L2BEAT 研究报告

那么该怎么降低多签和安全委员会带来的信任风险?答案其实和 Multichain 事件类似:可以归结为反女巫问题。必须要保证,多签 / 委员会由多个不同的、无高度利益重合的、串谋风险低的实体来控制。目前看来,除了加大 DAO 去中心化治理的成熟度、邀请有名望有信誉的名人或机构来参与多签 / 委员会以外,似乎没有什么太好的办法。而以上场景似乎早已在现实世界的民主政治中屡见不鲜。

当然,也可以通过时间锁给多签 / 委员会管理的合约升级行为加以限制,但这需要针对许多因素进行权衡,因为多签 / 委员会的存在目的就是为了快速处理一些紧急情况;同时,如果 Rollup 专案方在去信任化问题上没有什么坚定的决心,这个问题也不可能被解决。

所以,尽管不同的 Rollup 专案通过精妙的机制设计,可以在绝大多数时候保障使用者资产的安全,但由于存在多签和委员会,Rollup 发生黑天鹅事件的概率并不为 0。即便多签和委员会成员串谋的概率只有万分之一,考虑到 L2 托管的资产价值假设为 100 亿美元,L2 使用者资产每天的风险仍高达 100 万美元。联想到 Multichain 事件,着实令人毛骨悚然。

所以我个人认为,就像 Polynya 此前所说的那样,以太坊生态内的大多数资金仍然会倾向于在 L1 流通和锁仓,而非 L2,Rollup 生态长期内都无法捕获以太坊生态内的大部分价值。对于大户和鲸鱼,以太坊主网显然是一个比 L2 更合适、更可靠的资金去处。所以,很多人此前考虑的 L2 的崛起会不会导致 L1 的冷清,其实早已有了答案。

正如东野圭吾在其着作中所说,人心要远比数学公式更难捉摸,更难理解,更为复杂,也更难改变。许多事情无法靠单纯的技术手段来解决,但凡涉及到 人性 的因素,永远都是这个世上最不可控、最难预测、也最需要严肃对待的问题。在此,请让我们牢记康德墓碑上的那句传世经典:

有两样事物始终围绕着我的心灵,我越是加深对他们的思考,心中唤起的惊奇和敬畏越是日渐加深:这便是 内心的道德律和头顶灿烂的星空。

相关报导

ZK Rollup的两个安全性难题:不变性和可升级性

去中心化Rollup访谈》ZK技术带来的新挖矿市场、硬体加速与验证者网路

以太坊基础设施 Omni Network:将 Rollups串一起创造流动性

Tags Layer 2Rollup以太坊多签安全委员会
Genesis还钱有望!DCG与债权人达成初步协议,预计可回收70
Genesis还钱有望!DCG与债权人达成初步协议,预计可回收70

加密借贷商 Genesis 在今年初正式申请破产重组,其母公司 DCG 在近期与债权人达成初步协议,预计债权人有望回收 7090 资产。前情提要:Genesis重组计划更新:DCG、3AC债权人不会获得全额索赔背景补充:Genesis负债51亿镁!目标5月19日前完成破产重组、成立索赔基金流动性破裂...

Proof of Validator:以太坊扩容路上的关键拼图
Proof of Validator:以太坊扩容路上的关键拼图

市场更容易关注以太坊上某些技术创新所带来的表层叙事,而很少提前深入研究技术本身。例如以太坊的上海升级、合并、从 PoW 转到 PoS 以及扩容,市场只记住了 LSD、LSDFi 以及再质押的叙事。但不要忘记效能和安全是以太坊的重中之重。前者决定了上限,后者则决定了底线。前情提要:为什么以太坊的公链之...