原文作者:Faust
原文来源:极客 Web3 Blast 面对 Polygon zkEVM 等正统 Layer 2 的潜台词,或许就是「王侯将相,宁有种乎?」既然大家都不够去信任化,本质都是靠社会共识来保证安全的,又何必抨击 Blast 的 Layer 2 浓度不够高,「相煎何太急」呢? 诚然,Blast 靠 3/5 多签来控制充值地址一事被广泛诟病,但大多数 Layer 2 也同样靠多签管理合约,此前 Optimism 甚至只用一个 EOA 地址控制合约升级权限。在主流 Layer 2 几乎都存在多签等安全隐患的当下,抨击 Blast 不够安全,更像是技术精英们对一个打金项目的「看不起」。 但抛开上述两者孰优孰劣一事,区块链存在的意义更多在于解决社会共识 / 民主治理中的信息不透明问题,而在宣扬技术至上时,我们必须承认,社会共识本身比技术更为重要,因为它才是保障所有 Web3 项目有效运转的基础。归根结底,技术是为社会共识服务的,不能被大多数人认可的项目,就算技术再优越,本质也只是一个华丽的阑尾。 近期,Blur 创始人推出的新项目 Blast 火爆全网,这个打着 Layer 2 旗号的「资产生息」协议在 ETH 链上设置了一个充值地址,用户将资金存入 Blast 地址后,这些资金将被用于 ETH 网络原生质押、置入 MakerDAO 赚取利息等,所获利润将返回给用户。 靠着创始人本身的光环及颇具吸引力的玩法,Blast 获得了 Paradigm 为首的投资人给出的 2000 万美元融资,也吸引了无数散户的参与。上线不到 5 天,Blast 充值地址吸引的 TVL 就超过了 4 亿美元。毫不夸张的说,BLast 就像漫漫熊市之中的一剂猛药,瞬间激起了人们的狂热。 但 Blast 在获得阶段性成功的同时,也引来了许多专家的质疑。比如,L 2B EAT 和 Polygon 工程师均一语道破:目前的 Blast 只是在以太坊上部署了接收充值的 Deposit 合约而已,这个合约可以在 3/5 多签的控制下升级,换句话说,合约的代码逻辑可能被改写,想 Rug 还是可以 Rug。同时,Blast 只是自称要实现 Rollup 结构,但现在的它只是一个空壳子,连提款功能都要等到明年 2 月上线。 而 Blast 也不堪示弱的点破,绝大多数 Rollup 背后都靠一组多签管理合约升级权限,其他家 Layer 2 指责「Blast 用多签」只是五十步笑百步而已。 其实,Layer 2 合约多签是一个由来已久的问题。早在今年 7 月,L 2B EAT 就曾针对 Rollup 合约可升级性进行了专题调研,所谓的「可升级」,就是变更代理合约指向的逻辑合约地址,达到更改合约逻辑的效果。如果更改后的新合约中包含恶意的逻辑,Layer 2 官方就可以把用户资产盗走。 图源:wtf academy 按照 L 2B EAT 的数据,目前 Arbitrum、Optimism、Loopring、ZKSync Lite、ZkSync Era、Starknet、Polygon ZKEVM 等主流 Rollup 都采用了多签授权的可升级合约,可以绕开时间锁限制立刻 upgrade。(可以阅读极客 web3 往期文章:信用的游戏:被多签和委员会操控的 Rollup 们) 让人感到诧异的是,Optimism 过去只是用一个 EOA 地址管理合约升级,连多签都是今年 10 月才加上去的。至于曾对 Blast 展开抨击的 Polygon zkEVM,也可以在 6/8 多签授权下,对 Rollup 合约进行「紧急接管」,把 Layer 2 从合约治理转为「赤裸裸的人治」。有趣的是,上文中对 Blast 进行批判的 Polygon 工程师也提到了这一点,但表现的含糊其辞。 那么这种「紧急模式」的存在意义是什么?为什么大多数 Rollup 都要给自己留一个紧急按钮或者说后门?按照 Vitalik 此前的说法,Rollup 在迭代过程中要频繁更新在 ETH 上部署的合约,如果不引入代理合约等可升级手段,就难以高效迭代。 此外,托管了大量资产的智能合约可能存在不易察觉的 bug,而 Layer 2 开发团队难免疏忽大意,如果某些漏洞被黑客所利用,就可能导致大量资产被盗。所以,Layer 2 也好,DeFi 协议也罢,往往都会设置一个紧急按钮,在必要时刻由「委员会成员」介入,防止某些恶性事件发生。 当然,Layer 2 设置的委员会往往可以绕开时间锁限制立刻升级合约代码,某种角度来看,他们似乎是比黑客等外界因素更让人感到忌讳的存在。或者说,无论如何,托管了巨额资产的智能合约都难以免除某种程度的「信任假设」,即假设合约背后的多签控制者不作恶。除非合约被设计为不可升级的,并且不存在可以威胁到用户资产安全的 bug。 实际情况是,现在的主流 Layer 2 要么允许自己设立的委员会立刻更新合约,要么引入了比较短的时间锁限制(比如任何人要升级 dYdX 合约,都有至少 48 小时的延时)。如果人们发现委员会打算在新版合约代码中掺杂盗取资产的恶意逻辑,用户在理论上有足够反应时间,把资产紧急撤出 Layer 1 。 (关于强制提款与逃生舱功能,可以阅读我们往期文章《对 Layer 2 而言,强制提款与逃生舱功能到底有多重要?》 (时间锁就是经过一段延时后,才允许你进行某些操作) 但问题的关键在于,很多 Layer 2 连可以绕开 Sequencer 排序器的强制提款功能都没设置,这样的 Layer 2 官方要做恶,可以先让排序器拒绝所有人的提款请求,之后把用户资产划转到 Layer 2 官方自己控制的 L2 账户内。之后官方再按照自己的需要去更新 Rollup 合约,等时间锁延时结束后,就可以把用户资产全部提到 ETH 链上转移走。 当然,实际情况可能比我说的更糟糕,因为大多数 Rollup 官方可以不受时间锁限制的升级合约,也就是说,几乎可以在顷刻之间完成动辄上亿美元的 rug。 其实,要解决 Layer 2 去信任化 / 安全问题,需要做到以下几件事: 在 Layer 1 上设置一个抗审查的提款出口,用户可以不经排序器许可,直接把资产从 Layer 2 提到 ETH 链上。强制提款的延时不应太久,这样能确保用户资产快速的从 L2 退出; 任何人要升级 Layer 2 合约,必须受到时间锁延时限制,合约升级应当晚于强制提款生效。比如说,现在 dYdX 的合约升级至少有 48 小时延时,那么强制提款 / 逃生舱模式的生效延时,应当压低在 48 小时内。这样一来,用户发现 dYdX 项目方要在新版合约中掺杂恶意代码后,可以赶在合约更新前把资产从 Layer 2 撤出到 Layer 1 。 目前绝大多数上线了强制提款 / 逃生舱机制的 Rollup,并不满足上述条件。比如,dYdX 的强制提款 / 逃生舱最长 7 天延时,但 dYdX 委员会的合约升级延时仅 48 小时,也就是说,委员会可以在用户强制提款生效前,完成新合约的部署,赶在用户逃离前把资产盗走。 从这个角度看,除了 Fuel 和 ZKSpace、Degate 外,其他 Rollup 都不能保证在合约升级前处理完用户的强制提款,均存在较高程度的信任假设。 许多采用 Validium 方案(DA 在以太坊链外实现)项目虽然有很长的合约升级延时(比如 8 天或更长),但 Validium 往往依赖于链下的 DAC 节点发布最新数据,而 DAC 可能发动数据扣留攻击,使强制提款功能失效,所以不符合上面谈论的安全模型。(可以阅读我们过往文章《开除 Validium?从 Danksharding 提出者的视角重新理解 Layer 2 》) 到了这里,我们似乎可以简洁明了的得出结论:除了 Fuel、ZKSpace 和 DeGate 之外的 Layer 2 方案,都不是去信任化的。用户要么信任 Layer 2 项目方或其设置的安全委员会不作恶,要么信任链下的 DAC 节点不串谋,要么信任排序器不会审查你的交易(拒绝你的请求)。真正满足安全、抗审查、去信任化的 Layer 2 ,目前只有上面 3 个。 其实,我们今天所谈论的话题并不新鲜,关于本文所指出的 Layer 2 本质依赖于项目方的信用,早就被无数人指出过。比如 Avalanche 与 Solana 创始人都曾对此展开过猛烈抨击,但问题在于,这些存在于 Layer 2 身上的信任假设,在 Layer 1 上乃至于所有区块链项目身上也一样存在。 比如,我们需要假设 Solana 网络中占 2/3 质押权重的 Validator 节点不串谋,需要假设占比特币大部分算力份额的前两大矿池不联合起来发动 51% 攻击回滚最长链。虽然这些假设很难被打破,但「很难」不代表「不可以」。 传统 Layer 1 公链一旦发生了导致大量用户资产受损的作恶行为,最后往往会通过社会共识的方式,废弃那条有问题的链分叉出一条新的链(参考 2016 年 The DAO 事件导致以太坊分叉为 ETH 和 ETC)。如果有人尝试恶意分叉,大家也要通过社会共识的方式选择追随哪条「更靠谱」的分叉。(比如大多数人没有追随 ETHW 项目方) 社会共识是保障区块链项目乃至于其承载的 DeFi 协议有序运转的根源所在,即便是合约代码审计、社区成员披露某项目存在问题等纠错机制,也是社会共识的一环。而单纯靠技术来实现的去中心化,往往并不能发挥最大的作用,很多时候都停留在了理论层面。 真的在关键时刻发挥作用的东西,往往是与技术无关的社会共识,是与学术论文无关的舆论监督,是与技术叙事无关的群众认可度。 我们可以试想如下场景:一个只有几百人听闻过的 POW 公链,暂时处于高度去中心化状态,因为还没有出现一家独大的局面。但假如某个矿机企业突然把自己的算力全部投入该 POW 链,自己一人就比其他所有矿工的算力都高出很多倍,此时,这条 POW 链的去中心化将瞬间被瓦解。如果该矿机企业打算作恶,人们就只能通过社会共识来纠错。 反观所谓的 Layer 2 ,纵使其机制设计再过精巧,也避不开社会共识这一环,即便是 Fuel、DeGate 和 ZKSpace 这类官方几乎无法作恶的 L2,他们所依托的 Layer 1- 以太坊本身也是高度依赖于社会共识 / 社区 - 舆论监督的。 更何况我们认为的合约不可升级,是听信了合约审计机构及 L 2B EAT 的陈词,但这些机构有疏忽大意或是撒谎的可能。虽然这种概率极低,但我们不得不承认,还是对其引入了微小的信任假设。 但区块链本身的数据开源属性,允许任何人包括黑客在内去检查合约是否包含恶意逻辑,其实已经将信任假设最小化了,这极大程度降低了社会共识的成本。如果将这种成本降低到了足够低的程度,我们可以默认这就是「去信任化」的。 当然,除了上面提到的那三家外,其他的 Layer 2 根本就没有所谓的去信任,真正在关键时刻保障安全性的,仍然是社会共识,技术成分很多时候只是方便人们展开社会共识监督而已。如果一个项目的技术很优越,但却得不到广泛的认可,吸引不了庞大的社区群体,那么它的去中心化治理以及社会共识本身也难以有效展开。 技术诚然重要,但更多的时候,能否被广泛认可、能否发展起强大的社区文化,是比技术更为重要、更有价值、更有利于项目发展的因素。 我们不妨以 zkRollup 为例,目前很多 zkRollup 只实现了有效性证明系统和 DA 数据上链,它可以对外证明自己处理的用户交易、进行的所有转账都是有效的,不是排序器伪造的,在「状态转换」这件事情上没有作恶,但 Layer 2 官方或排序器作恶的场景并不只这一种。 我们可以近似认为,ZK 证明系统本质上只是极大程度降低了人们对 Layer 2 进行监督的成本,但很多东西是技术本身无法解决的,必须依赖于人治或社会共识的介入。 如果 L2 官方没有设置强制提款等抗审查出口,或者官方尝试升级合约,在其中掺杂可以盗取用户资产的逻辑,社区成员就不得不依靠社会共识和舆论发酵来纠错。此时此刻,技术优越与否似乎已经不再是最重要的了,与其说技术对于安全而言重要与否,倒不如说,便于人们展开社会共识的机制设计本身,才是更重要的,这其实才是 Layer 2 乃至区块链的真谛。 从单纯靠社会共识来监督的 Blast 身上,我们应当更直接的看待社会共识与技术实现这两者之间的关系,而不是单纯按照「哪一家 L2 比另一家 L2 更贴近 vitalik 口中的 Layer 2 」来判断一个项目的优与劣。当一个项目已经获得了成百上千万人的认可与关注后,社会共识就已经形成了,至于是靠营销还是靠技术叙事无关紧要,因为结果本身比过程更重要。 诚然,社会共识本身是民主政治的延伸,而现实世界已经证实了民主治理的缺陷,但区块链本身自带的开源与数据透明,极大程度降低了社会共识的成本,所以说,Web3 的「人治」与现实主权国家的「人治」有着本质的区别。 如果我们将区块链本身视作改善民主治理中信息透明问题的一种技术手段,而不是单纯追求永远不可及的「单纯靠代码实现的 Trustless」,一切似乎都变得乐观而明朗了许多。只有摆脱了技术精英所固存的那种傲慢与偏见,拥抱更为广泛的受众群体,以太坊 Layer 2 体系才能够真正成为一个 mass adoption 的世界级金融基础设施。Layer 2 多签是一个由来已久的问题
真正去信任化的 Layer 2 应该让合约升级延时大于强制提款延时
安全不止靠技术实现,必须要引入社会共识