作者:Faust & 雾月,极客web3

顾问:Kevin He(@0xKevinHe),新火科技技术VP

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

导语:美国管理学家劳伦斯·彼得曾提出“木桶理论”,该理论认为,一个系统的整体性能,被其最薄弱的部分所限制。换言之,一个木桶能装多少水,由它最短的那块木板决定。这个道理虽然简单,却又常被忽视。以往对Layer2安全性的辩论,大多忽视了不同组件的优先级与重要程度,基本都集中在状态转换可靠性与DA问题上,却忽视了更底层更重要的要素,这样下来整套理论根基可能都站不住脚。所以,当我们对多模块的复杂系统展开探讨时,要先摸清楚哪块是“最短的木板”。

受到木桶理论的启发,我们做了系统分析之后发现,比特币/以太坊Layer2安全模型中的不同组件间,也存在明显的依赖关系,或者说某些组件的安全性要比其他组件的安全性更基础、更重要,即所谓“更短”。

对此,我们可以初步对主流Layer2安全模型中不同组件的重要程度/基础程度,进行如下优先级排序:

1. 合约/官方桥的控制权限是否被合理分散(多签控制权有多集中)

2. 是否有抗审查的提款功能(强制提款、逃生舱)

3. DA层/数据发布形式是否可靠(DA数据是否发布在比特币、以太坊上)

4. 是否在Layer1上部署了可靠的欺诈证明/有效性证明系统(比特币L2需要借助于BitVM)

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

我们应该适度吸收以太坊社区对Layer2的研究成果,避免李森科主义

相比于高度秩序化的以太坊Layer2体系,比特币Layer2犹如一片崭新的天地,这个在铭文热潮后显得愈发重要的新概念,在表现出崛起势头的同时,其生态体系却日渐混乱、趋于混沌,霎时间各种Layer2项目方层出不穷,有如雨后春笋。他们在为比特币生态带来希望的同时,却刻意隐瞒自身的安全风险,甚至曾有人扬言“否定以太坊Layer2,走比特币生态独特道路”,大有走极端主义路线的势头。

考虑到比特币与以太坊在功能属性上的不同,比特币Layer2在早期注定无法向以太坊Layer2对齐,但这并不能说明,我们应当彻底否定以太坊乃至模块化区块链界早有定论的行业常识(参考前苏联生物学家李森科,借意识形态问题,迫害西方遗传学支持者的“李森科事件”)。

恰恰相反,这些由“前人”花费巨大努力取得的评判标准,在得到了广泛认可后,早已表现出强大的说服力,刻意否定这些成果的价值,绝非理智之举。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

在建设比特币Layer2的同时,我们应当充分认识到“西学东用”的意义,对以太坊社区的诸多结论进行适度的吸收与优化。但在借鉴比特币生态之外的观点时,我们有必要意识到其出发点的差异,并最终做到求同存异。

这就像是在探讨“西方人”与“东方人”的同与异。不管是西方的还是东方的,“人”这个后缀都表达了很多相似的特征,只是在对应“西方”和“东方”这种不同前缀时,会在细分特征上有所不同。

但归根结底,“西方人”和“东方人”之间注定存在重合,这就意味着,许多适用于西方人的东西,在东方人身上同样适用,许多适用于“以太坊Layer2”的东西,也同样适用于“比特币Layer2”。在区分比特币L2与以太坊L2的不同前,先理清两者之间的互通之处,或许是更为重要、更有意义之事。

秉着“求同存异”的宗旨,本文作者并不打算探讨“什么是比特币Layer2,什么不是”,因为这个话题争议过大,就连以太坊社区都没有就“哪些是以太坊Layer2,哪些不是Layer2”而达成客观一致的见解。

但可以肯定的是,不同的技术方案在为比特币带来扩容效应的同时,其安全风险各有不同,其安全模型中存在的信任假设,将是本文打算重点探讨的话题。

如何理解Layer2的安全性及评判标准

其实,Layer2的安全性不是一个新鲜的讨论点。甚至就连安全性这个词,也是一个包含了多个细分属性的复合概念。

此前EigenLayer创始人曾将“安全性”简单的细分为“交易不可逆转性(抗回滚性)、抗审查性、DA/数据发布可靠性、状态转换有效性”等4个要素。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

而L2BEAT和以太坊社区OG曾提出比较系统的Layer2风险评估模型,当然这些结论针对于智能合约型Layer2,而非主权Rollup、客户端验证等典型的非智能合约型Layer2。

虽然这并不100%适合比特币L2,但还是包含了值得肯定的诸多结论,其大部分观点已经在西方社区被广泛认可,也便于我们客观评估不同比特币L2的风险所在。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

那么安全风险都来自于哪里?考虑到当前,无论是以太坊Layer2还是比特币Layer2,很多都依赖于中心化的节点来充当排序器,或由少数节点组成侧链形式的“委员会”,这些趋于中心化的排序器/委员会如果不受限制,可以盗取用户资产并随时跑路,可以拒收用户的交易请求,导致资产被冻无法使用。这便涉及到前文EigenLayer创始人提到的状态转换有效性和抗审查性。

同时,由于以太坊Layer2依赖于ETH链上的合约进行状态转换验证和充提款行为验证,合约控制者(其实就是Layer2官方)若能快速更新合约逻辑,在其中掺杂恶意代码段(比如,允许某个指定的地址,把L1-L2充提款合约上锁定的代币全部转走),就可以直接盗走托管的资产。

这被归结为“合约多签分配问题”,而多签分配问题一样适用于比特币Layer2,因为比特币Layer2往往依赖于“公证人桥”,需要多个节点通过多签来放行跨链请求,所以比特币Layer2身上也存在多签如何合理分配的问题,我们甚至可以把它看作比特币Layer2身上最基础的“辅助轮”。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

此外,DA问题也极为重要。如果Layer2不把数据上传到Layer1,而自行选用一些不可靠的DA发布场所,假如这种链下DA层(一般称为DAC数据可用性委员会)发生串谋,拒绝对外发布最新交易数据,数据扣留攻击将导致网络报废,并可能使得用户无法顺利提款。

L2BEAT对上述问题进行了总结,并归纳出了Layer2安全模型中几个核心的要素:

1. 状态验证/证明系统是否可靠(State Validation)

2 . DA数据发布方式是否可靠(Data Avalibility)

3. 如果Layer2网络故意拒收你的交易/停机,你能否将资产强制撤出Layer2(Sequencer Faliure、Proposer Failure)

4. Layer2相关合约-官方跨链桥的控制权,是否足够分散。如果权力比较集中,发生“监守自盗”时,用户能否有足够的时间去应急(Exit Window)

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

Anyway,当我们分析Layer2安全隐患时,其实就是在探讨,Layer2网络内存在多少可能导致用户资产受损的场景,对于这些危险情况,Layer2系统又能否通过机制设计进行有效制约。如果某些恶意行为是无法杜绝的,我们又需要引入多大程度的“信任”,需要信任一个群体中的多少个体,需要依赖于多少“辅助轮”。

下文中我们将对通用的以太坊Layer2/比特币Layer2模型中,存在的风险要素进行分析(本文所谈及的对象不包含“状态通道”或“支付通道”,也不包括铭文索引协议,因为它们比较特殊)。并且我们会尝试探讨,哪些因素是Layer2安全模型中,更基础、更底层、更重要的,这些更为基础的短板,将是比其他短板更值得我们去重视的信任风险。

Layer2的木桶效应——短板都有哪些最短的那块板——合约/官方桥的管理权

在这里,我们不妨用“木桶效应”分析Layer2安全问题,很容易看出,最短的一块木板就是上文有所提及的“合约可升级性”(主要针对以太坊Layer2),或者更进一步的说,是“官方跨链桥的管理权”(比特币和以太坊Layer2都适用)。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标对于以太坊Layer2而言,只要Layer2官方可以在Layer1链上快速升级合约,理论上可以把L2官方桥充提款地址上锁定的Token盗走,无论其DA层或证明系统有多么可靠。

可以说,桥接合约的控制权限关乎整个系统的安危,它是整个Layer2乃至模块化区块链堆栈中最基础、最关键的部分。如果桥接组件/合约是可以在多签控制下更新迭代的,那我们就要在这里引入“信任假设”,假设Layer2合约/官方桥的控制者不会作恶。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

不同于以太坊Layer2的是,比特币Layer2的桥基本不受Layer1上的合约控制,因为比特币本来就不支持智能合约。相对而言,以太坊Layer2的整个工作流程都高度依赖于Layer1上的合约,而比特币Layer2不能这么做。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

这对于比特币Layer2而言,是避不开的问题,可以说既有好处也有坏处。目前看来,以太坊Layer2依赖合约实现的“去信任化的桥”,在比特币L2身上无法实现。这种“Trustless Bridge”需要在Layer1上部署专用合约,同时需要DA+欺诈证明/ZK证明系统的配合,本质类似于Orbiter那种“乐观桥”或Polyhedra这类ZK桥。

目前业界的主流观点是,若不考虑实践中可能存在的bug,仅考虑理论模型,乐观桥和ZK桥的安全级别基本是最高的一档,只要合约代码不包含bug,或者不能被恶意升级,基本就是去信任化的。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

由于比特币Layer2没办法在Layer1上部署合约组件(这里不谈论闪电网络),它的官方桥基本都是少数节点组成的“公证人桥”,或者叫“多签桥”,这种桥的安全性,取决于多签/阈值签名的设置方式,需要引入较强的信任假设:假设这些公证人不会合谋,或者不被盗取私钥。

目前大多数基于公证人/阈值签名的桥,在安全性上无法与以太坊Layer2官方的“去信任化桥”相提并论(其前提是以太坊Layer2的合约不会发生恶意升级)。很显然,比特币Layer2网络托管的资产安全性,将会受制于其官方桥的安全性,或者说受限于多签桥的权力分散度,这是其第一处“辅助轮”所在。

由于以太坊Layer2官方桥相关合约的“升级权限”,往往也集中在少数几个多签控制者手上,如果多签控制者串谋,以太坊Layer2的桥也会出问题,除非其合约不可升级,或是受到了很长的延时限制(目前只有Degate和Fuel V1如此)。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

关于“官方桥”这部分,以太坊Layer2和比特币Layer2的信任模型基本一致:需要信任多签的控制者不会串谋作恶,这组多签可以控制L2官方桥,要么更改其代码逻辑,要么直接放行无效的提款请求,最后的结果都是:用户资产可能被盗。

两者唯一的区别是,以太坊Layer2只要合约不恶意升级/升级窗口期足够长,其官方桥就是去信任的,但比特币Layer2无论如何都达不到这种效果。

第二短的板——抗审查的强制提款

如果我们假设,前文所说的合约多签/官方桥控制权问题可以无视,也就是这一层没有问题,那么接下来最重要的一层,必然是提款行为的抗审查性。

关于抗审查强制提款/逃生舱功能的重要性,Vitalik在几个月前的文章“Different types of layer 2s”中曾强调,用户能否顺利的把资产从Layer2撤回至Layer1,是一个非常重要的安全指标。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

如果Layer2的排序器一直拒绝你的交易请求,或者长时间故障/宕机,你的资产将被“冻结”,什么都干不了。即便DA和欺诈证明/ZK证明系统可用,如果没有抗审查方案,这样的Layer2也是不够安全的,随时可以把你的资产扣住。

更何况,曾在以太坊生态盛极一时的Plasma方案,允许任何人在DA失效或欺诈证明失效时,安全的把资产撤出至Layer1。这个时候,整个Layer2网络基本报废,但你的资产仍有办法全身而退。显然,抗审查的提款功能,要比DA与证明系统更基础、更底层。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

部分以太坊Layer2,如Loopring和StarkEx、dYdX、Degate等,会在Layer1上设立一个抗审查的强制提款/逃生舱激活函数,以Starknet为例,如果用户在Layer1上提交的Forced Withdrawal请求,在7天窗口期结束时,未得到Layer2排序器响应,则可以手动调用freeze Request功能让L2进入冻结状态,激活逃生舱模式。

此时,排序器无法向L1上的Rollup合约提交数据,整个Layer2将冻结一年。然后,用户可以提交merkle proof,证明自己在Layer2上的资产状态,并在Layer1上直接提款(其实就是从官方桥的充提款地址中,把属于自己的等额资金拿走)。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

很显然,逃生舱模式只能在以太坊这种支持智能合约的链上实现,比特币无法运行这么复杂的逻辑。换言之,逃生舱功能基本是以太坊Layer2的专利,比特币Layer2必须借助于一些额外的辅助手段,照猫画虎的模仿,这就是第二处“辅助轮”。

但单纯声明“强制提款请求”,要比直接激活逃生舱方便的多。前者只需要让用户在Layer1上向指定地址提交一笔交易,并在交易的附加数据中,声明自己想提交给全体Layer2节点的数据(这样可以直接绕开排序器,向其它Layer2节点传达请求)。如果“强制提款”长时间得不到响应,用户再去触发逃生舱模式,是一种比较合理的设计。

(参考资料:对Layer2而言,强制提款与逃生舱功能到底有多重要?https://mp.weixin.qq.com/s/EheKZWDcJHYZ7vBZZPOMDA)

目前,已经有比特币Layer2团队打算模仿Arbitrum的强制交易实现方式,允许用户在比特币链上发布强制交易声明(Forced Transaction Envelopes)。这种方案下,用户可以绕开排序器直接向其它Layer2节点“传达心声”。如果排序器在看到用户的强制交易声明后依然拒绝其请求,将会被其他Layer2节点察觉并可能受到惩罚。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

但问题在于,Arbitrum的强制交易功能,受益于其欺诈证明系统,可以惩罚一直无视用户交易的Sequencer/Proposer。但对于难以在Layer1上验证欺诈证明的比特币Layer2,会在这方面遇到一定挑战。(暂且不讨论BitVM)如果是主权Rollup这种安全级别与客户端验证并无太大差异的方案,我们很难严肃的评估其可靠性,可能要针对不同项目的实现细节进行评估。

当然,鉴于目前很多比特币Layer2以类似于侧链的形式运转,相当于实现了去中心化排序器,可以一定程度上解决抗审查问题。但这只是一种有效的辅助手段,肯定不是终极解决方案。

ps:现在的一些Layer2方案,如Validium等,在逃生舱的机制设计上并不完善,排序器发动数据扣留攻击/DA不可用时,可以让用户无法提款。但这归因于Layer2逃生舱设计的不完善,理论上来看,最优的逃生舱提款可以只依赖于历史数据,不需要对DA/新数据的可获得性产生依赖)

第三短的板:DA层数据发布的可靠性

DA虽然被称作数据可用性,但这个名词实际指的是数据发布,只是因为Vitalik和Mustafa在最初给这个概念起名字时,没有深思熟虑,才有了DA/数据可用性这种名不符实的叫法。

数据发布,顾名思义,说的是:最新的区块/交易数据/状态转换参数,能否被有需要者顺利接收到。在不同的链上发布数据,其可靠性都不一样。(参考资料:对数据可用性的误解:DA=数据发布≠历史数据检索https://mp.weixin.qq.com/s/OAM_l4Pe9Gphn8H55OZUtw)

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

西方社区普遍认为,比特币、以太坊等老牌公链,是最去信任的DA层。如果Layer2排序器在以太坊上发布了新的数据,任何人只要运行以太坊geth客户端,就能下载到这些数据并进行同步,几乎不会受到任何阻拦,这是凭借以太坊网络庞大的规模,和繁多的公开数据源来实现的。

值得一提的是,以太坊Rollup会强行要求排序器在Layer1上发布交易数据/状态转换参数,这一点是通过有效性证明/欺诈证明来保证的。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

比如,ZK Rollup的排序器在Layer1上发布交易数据后,会触发合约逻辑生成一个datahash,而验证器合约要确认,Proposer提交的有效性证明和datahash有对应关系。

这等价于:确认Proposer提交的zk Proof和Stateroot,与Sequencer提交的Tx data,是关联在一起的,即New Stateroot=STF(Old Stateroot,Txdata)。STF就是state transition function状态转换函数。

这样可以保证将状态转换数据/DA强行上链,如果只提交stateroot和有效性证明,将无法通过验证器合约的verify。

关于DA数据发布与证明验证系统哪个更基础,以太坊/Celestia社区早已进行过充分讨论,普遍结论是:DA层是否可靠,要比欺诈证明/有效性证明系统的完备性更重要。比如说,Plasma、Validium、Optimium这类——DA层在以太坊链下、结算层在以太坊链上的方案,容易遭遇“数据扣留攻击”,就是指:

Sequencer/Proposer可以与ETH链下的DA层节点串谋,在Layer1上更新stateroot,但扣住状态转换对应的输入参数不发出来,让外人无法判断新的stateroot是否正确,成为“睁眼瞎”。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

这种情况发生的话,整个Layer2网络相当于报废,因为这时,你根本不知道Layer2账本变成了什么样。如果是基于欺诈证明的Layer2(Plasma和Optimium),排序器可以随意改写任意账户下的数据/资产;如果是基于有效性证明的Layer2(Validium),虽然排序器不能随便改写你的账户,但此时整个Layer2网络成了黑箱,没人知道里面发生了啥,跟报废没区别。正因为如此,以太坊生态内的正统Layer2方案,基本都是Rollup,而Validium和Optimium往往不被以太坊基金会认可。

(参考资料:数据扣留与欺诈证明:Plasma不支持智能合约的原因https://mp.weixin.qq.com/s/oOPZqIoi2p6sCxBdfUP4eA)

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

所以,DA层的可靠性/状态转换参数的可获得性,比欺诈证明/有效性证明系统的完备性更重要,更基础。对于比特币Layer2,,尤其是基于客户端验证模型的Layer2而言,即便没有在Layer1上设置欺诈证明/有效性证明验证系统,只要DA层照常工作,大家依然能知道L2网络是否出现错误的状态转换。

目前比特币主网难以验证 欺诈证明/有效性证明(此处不探讨BitVM),我们先假设比特币L2没有证明验证系统。理想状态下,如果L2排序器真的作恶,在结算层/BTC上发布一个与DA数据无关联的stateroot,它还是无法真正意义的盗取用户资产,因为它单方面提交的stateroot/状态转换结果,不会被诚实节点认可,到最后可能只是自嗨。

如果是类似于侧链的模型,多数节点串谋执行恶意的状态变更,人们也可以很快发现问题。只要跨链桥、交易所这类第三方设施不认可错误的数据,Layer2/侧链的恶意控制者就无法成功套现,除非他说服别人与他在链上直接OTC。

用木桶理论拆解比特币/以太坊Layer2安全模型与风险指标

这里有一个很有意思的点,其实无论是以太坊Layer2,还是比特币Layer2,都可以做到“客户端验证”。但以太坊Layer2在“客户端验证”的基础上,借助Layer1和证明验证系统,保证状态转换的有效性,基本不必依赖于社会共识(前提是有成熟的欺诈证明/有效性证明系统)。

而比特币Layer2的“客户端验证”方案往往对“社会共识”有较强依赖,会带来相应的风险(对于比特币Layer2而言,这种安全风险基本可控,但还是可能导致某些人损失资产。对于以太坊Layer2而言,因为其官方桥需要证明系统的配合,如果证明系统不完善,排序器可以盗取用户资产并提到L1上跑路。当然,具体要看跨链桥组件怎么设计)。

所以说,一个能在Layer1上实现欺诈证明/有效性证明验证系统的Layer2,永远都要比单纯的“客户端验证”模型好的多。

PS:由于大多数采用了欺诈证明/有效性证明系统的比特币Layer2,无法让Layer1直接参与到证明验证流程,所以其本质仍然只是把比特币当做DA层,安全模型等价于“客户端验证”。

理论上来看,在Layer1上通过BitVM方案,可以在比特币链上验证欺诈证明,但这种方案工程落地难度很大,会遇到很大挑战。鉴于以太坊社区早已对基于Layer1的证明验证系统做出了特别多的讨论,已经人尽皆知,所以本文不打算对“基于Layer1的证明验证系统”进行赘述。

总结

经过简单的木桶模型分析,我们可以初步得出结论:主流的Layer2安全模型中,按照重要程度/基础程度,可以进行如下排序:

1. 合约/官方桥的控制权限是否被合理分散

2. 是否有抗审查的提款功能

3. DA层/数据发布形式是否可靠

4. 是否在Layer1上部署了可靠的欺诈证明/有效性证明系统

当然,我们并没有对闪电网络/状态通道及ICP生态的ckBTC、铭文索引协议等方案进行分析,因为它们与典型的Rollup、Plasma、Validium或客户端验证方案存在较大差异。由于时间关系,我们还难以对其安全性与风险要素进行审慎的评估,但考虑到它们的重大意义,日后相关的评估工作必将如期进行。

同时,对于铭文索引协议是否该被看作Layer2一事,诸多项目方之间存在严重的分歧,但毋论Layer2定义之事,铭文索引协议等新事物为比特币生态带来了充分的技术创新,并终将迸发出巨大的活力。