如果Layer2的排序器一直拒绝你的交易请求,或者长时间故障/宕机,你的资产将被“冻结”,什么都干不了。即便DA和欺诈证明/ZK证明系统可用,如果没有抗审查方案,这样的Layer2也是不够安全的,随时可以把你的资产扣住。
更何况,曾在以太坊生态盛极一时的Plasma方案,允许任何人在DA失效或欺诈证明失效时,安全的把资产撤出至Layer1。这个时候,整个Layer2网络基本报废,但你的资产仍有办法全身而退。显然,抗审查的提款功能,要比DA与证明系统更基础、更底层。
(以太坊基金会的Dankrad表示,Plasma在DA故障 / 用户无法同步最新数据时,依然可以让用户资产安全撤离)
部分以太坊Layer2,如Loopring和StarkEx、dYdX、Degate等,会在Layer1上设立一个抗审查的强制提款/逃生舱激活函数,以Starknet为例,如果用户在Layer1上提交的Forced Withdrawal请求,在7天窗口期结束时,未得到Layer2排序器响应,则可以手动调用freeze Request功能让L2进入冻结状态,激活逃生舱模式。
此时,排序器无法向L1上的Rollup合约提交数据,整个Layer2将冻结一年。然后,用户可以提交merkle proof,证明自己在Layer2上的资产状态,并在Layer1上直接提款(其实就是从官方桥的充提款地址中,把属于自己的等额资金拿走)。
很显然,逃生舱模式只能在以太坊这种支持智能合约的链上实现,比特币无法运行这么复杂的逻辑。换言之,逃生舱功能基本是以太坊Layer2的专利,比特币Layer2必须借助于一些额外的辅助手段,照猫画虎的模仿,这就是第二处“辅助轮”。
但单纯声明“强制提款请求”,要比直接激活逃生舱方便的多。前者只需要让用户在Layer1上向指定地址提交一笔交易,并在交易的附加数据中,声明自己想提交给全体Layer2节点的数据(这样可以直接绕开排序器,向其它Layer2节点传达请求)。如果“强制提款”长时间得不到响应,用户再去触发逃生舱模式,是一种比较合理的设计。
(参考资料:对Layer2而言,强制提款与逃生舱功能到底有多重要?
https://mp.weixin.qq.com/s/EheKZWDcJHYZ7vBZZPOMDA)
目前,已经有比特币Layer2团队打算模仿Arbitrum的强制交易实现方式,允许用户在比特币链上发布强制交易声明(Forced Transaction Envelopes)。这种方案下,用户可以绕开排序器直接向其它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)