在建構比特幣的Layer2時,我們應該充分吸收以太坊社群對於Layer2的研究成果,避免僅擁護一方。然而,在參考比特幣生態以外的觀點時,我們需要意識到其出發點的差異,最終實現求同存異。
我們應該適度吸收以太坊社群對Layer2的研究成果,避免僅擁護一方。然而,在參考比特幣生態以外的觀點時,我們需要意識到其出發點的差異,最終實現求同存異。
在建設比特幣Layer2的同時,我們應該充分認識到「西學東用」的意義,對以太坊社群的研究成果進行吸收和優化。但在參考比特幣生態以外的觀點時,我們需要意識到其出發點的差異,並最終實現求同存異。
美國管理學家彼得曾提出「木桶理論」,認為一個系統的整體效能受到其最薄弱部分的限制。換句話說,一個木桶能裝多少水取決於它最短的木板。這個道理雖然簡單,卻常常被忽視。對於Layer2的安全性辯論,大多忽視了不同元件的優先順序和重要程度,只關注於狀態轉換可靠性和資料可用性等問題,而忽略了更基礎、更重要的元件。因此,當我們討論多模組的複雜系統時,首先要弄清楚哪個元件是最薄弱的。
受到木桶理論的啟發,我們發現比特幣和以太坊Layer2安全模型中的不同元件存在明顯的依賴關係,或者說某些元件的安全性更基礎、更重要。根據優先順序,我們可以對主流Layer2安全模型中的不同元件進行排序:
1. 合約/官方橋的控制權限是否合理分散(多籤控制權的分散程度)
2. 是否具備抗審查的提款功能(強制提款、逃生機制)
3. DA層/資料釋出形式是否可靠(DA資料是否釋出在比特幣、以太坊上)
4. 是否在Layer1上部署了可靠的欺詐證明/有效性證明系統(比特幣 L2 需要藉助於 BitVM)
相較於高度秩序化的以太坊Layer2體系,比特幣Layer2像是一片嶄新的天地。這個新概念在表現出崛起勢頭的同時,其生態體系卻日漸混亂,各種Layer2專案如雨後春筍般冒出。他們為比特幣生態帶來希望的同時,卻刻意隱瞞自身的安全風險,甚至有人主張「否定以太坊Layer2,走比特幣生態獨特道路」,顯示出極端主義的勢頭。
考慮到比特幣和以太坊在功能屬性上的不同,比特幣Layer2在早期就無法與以太坊Layer2對齊。然而,這並不意味著我們應該完全否定以太坊甚至整個模組化區塊鏈界的行業常識。這些已經廣泛認可的評判標準具有強大的說服力,否定這些成果絕非明智之舉。
在建設比特幣Layer2時,我們應該充分認識到「西學東用」的意義,對以太坊社群的研究成果進行適度的吸收和優化。然而,在參考比特幣生態之外的觀點時,我們需要意識到其出發點的差異,最終實現求同存異。
這就像是在探討「西方人」和「東方人」的相似和不同。無論是西方人還是東方人,他們都有許多相似的特徵,只是在細分特徵上有所不同。但歸根結底,「西方人」和「東方人」之間存在重合,這意味著許多適用於西方人的東西也同樣適用於東方人,許多適用於以太坊Layer2的東西也同樣適用於比特幣Layer2。在區分比特幣L2和以太坊L2的不同之前,先理清兩者之間的互通之處是更重要、更有意義的事情。
在分析Layer2的安全隱患時,我們實際上在討論Layer2網路記憶體在多少可能導致使用者資產受損的場景,以及Layer2系統能否通過機制設計進行有效制約。如果某些惡意行為無法完全杜絕,我們需要引入多大程度的「信任」,需要信任群體中多少個體,需要依賴多少「輔助輪」。
接下來,我們將分析通用的以太坊Layer2和比特幣Layer2模型中存在的風險要素,並試圖探討哪些因素在Layer2的安全模型中更基礎、更底層、更重要。這些更基礎的短板將是我們更值得關注的信任風險。
在這裡,我們可以用「木桶效應」來分析Layer2的安全問題。很容易看出,最薄弱的一塊木板就是合約的可升級性(主要針對以太坊Layer2),或者更進一步來說,是官方跨鏈橋的管理權(比特幣和以太坊Layer2適用)。
可以說,橋接合約的控制權限關乎整個系統的安危,它是整個Layer2甚至整個模組化區塊鏈堆疊中最基礎、最關鍵的部分。如果橋接元件/合約可以在多籤控制下進行更新迭代,那麼我們就需要引入「信任假設」,假設Layer2合約/官方橋的控制者不會作惡。
不同於以太坊Layer2,比特幣Layer2的橋基本不受到Layer1上合約的控制,因為比特幣本身不支援智慧合約。相對而言,以太坊Layer2的整個工作流程高度依賴於Layer1上的合約,而比特幣Layer2無法這樣做。
這對於比特幣Layer2來說是無法避免的問題,既有好處也有壞處。目前看來,以太坊Layer2依賴合約實現的「去信任化橋」在比特幣Layer2上無法實現。這種「Trustless Bridge」需要在Layer1上部署專用合約,同時需要資料可用性和欺詐證明/ZK證明系統的配合,本質上類似於Orbiter或Polyhedra等橋。
目前業界主流觀點認為,樂觀橋和ZK橋(在理論模型下且不考慮可能存在的bug)的安全級別基本上是最高的,只要合約程式碼沒有bug,或者不會遭到惡意升級,基本上就是去信任化的。
由於比特幣Layer2無法在Layer1上部署合約元件(不考慮閃電網路),它的官方橋基本上都是少數節點組成的「公證人橋」或「多籤橋」。這種橋的安全性取決於多籤/閾值簽名的設定方式,需要引入較強的信任假設:假設這些公證人不會合謀或者不會遭到私鑰盜取。
目前大多數基於公證人/閾值簽名的橋在安全性上無法與以太坊Layer2的「去信任化橋」相提並論。顯然,比特幣Layer2網路託管的資產安全性將受制於官方橋的安全性,或者說受限於多籤橋的權力分散程度,這是其第一個「輔助輪」。
由於以太坊Layer2官方橋相關合約的「升級許可權」往往集中在少數幾個多籤控制者手上,如果多籤控制者串謀,以太坊Layer2的橋也會出現問題,除非合約無法升級,或者受到很長的延時限制(目前只有Degate和Fuel V1如此)。
關於「官方橋」這部分,以太坊Layer2和比特幣Layer2都需要考慮合約的控制權限。Layer2的信任模型基本一致:需要信任多签的控制者不会串谋作恶,这组多签可以控制L2官方桥,要么更改其代码逻辑,要么直接放行无效的提款请求,最后的结果都是:用户资产可能被盗。
两者唯一的区别是,以太坊Layer2只要合约不恶意升级/升级窗口足够长,其官方桥就是去信任的,但比特币Layer2无论如何都达不到这种效果。
如果我们假设,前文所说的合约多签/官方桥控制权问题可以忽略,也就是这一层没有问题,那么接下来最重要的一层,必然是提款行为的抗审查性。
关于抗审查强制提款/逃生舱功能的重要性,Vitalik在几个月前的文章「Different types of layer 2s」中曾强调,用户能否顺利地把资产从Layer2撤回至Layer1,是一个非常重要的安全指标。
如果Layer2的排序器一直拒绝你的交易请求,或者长时间故障/当机,你的资产将被「冻结」,什么都干不了。即便DA和欺诈证明/ZK证明系统可用,如果没有抗审查方案,这样的Layer2也是不够安全的,随时可以把你的资产扣住。
更何况,曾在以太坊生态盛极一时的Plasma方案,允许任何人在DA失效或欺诈证明失效时,安全地把资产撤出至Layer1。这个时候,整个Layer2网络基本报废,但你的资产仍有办法全身而退。显然,抗审查的提款功能,要比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团队打算模仿Arbitrum的强制交易实现方式,允许用户在比特币链上释出强制交易宣告(Forced Transaction Envelopes)。这种方案下,用户可以绕开排序器直接向其他Layer2节点「传达心声」。如果排序器在看到用户的强制交易声明后依然拒绝其请求,将会被其他Layer2节点察觉并可能受到惩罚。
但问题在于,Arbitrum的强制交易功能,受益于其欺诈证明系统,可以惩罚一直无视用户交易的Sequencer/Proposer。但对于难以在Layer1上验证欺诈证明的比特币Layer2,会在这方面遇到一定挑战。(暂且不讨论BitVM)如果是主权Rollup这种安全级别与客户端验证并无太大差异的方案,我们很难严肃的评估其可靠性,可能要针对不同项目的实现细节进行评估。
当然,鉴于目前很多比特币Layer2以类似于侧链的形式运转,相当于实现了去中心化排序器,可以一定程度上解决抗审查问题。但这只是一种有效的辅助手段,肯定不是终极解决方案。
PS:现在的一些Layer2方案,如Validium等,在逃生舱的机制设计上并不完善,排序器发动数据扣留攻击/DA不可用时,可以让用户无法提款。但这归因于Layer2逃生舱设计的不完善,理论上来看,最优的逃生舱提款可以只依赖于历史数据,不需要对DA/新数据的可获得性产生依赖)
DA虽然被称作数据可用性,但这个名词实际指的是数据释出,只是因为Vitalik和Mustafa在最初给这个概念起名字时,没有深思熟虑,才有了DA/数据可用性这种名不符实的叫法。
数据释出,顾名思义,说的是:最新的区块/交易数据/状态转换参数,能否被有需要者顺利接收到。在不同的链上释出数据,其可靠性都不一样。
西方社群普遍认为,比特币、以太坊等老牌公链,是最去信任的DA层。如果Layer2排序器在以太坊上释出了新的数据,任何人只要执行以太坊geth客户端,就能下载到这些数据并进行同步,几乎不会受到任何阻拦,这是凭借以太坊网络庞大的规模,和繁多的公开数据来源来实现的。
值得一提的是,以太坊Rollup会强行要求排序器在Layer1上释出交易数据/状态转换参数,这一点是通过有效性证明/欺诈证明来保证的。
比如,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(Plasma和Optimium),排序器可以随意改写任意账户下的数据/资产;如果是基于有效性证明的Layer2(Validium),虽然排序器不能随便改写你的账户,但此时整个Layer2网络成了黑箱,没人知道里面发生了啥,跟报废没区别。正因为如此,以太坊生态内的正统Layer2方案,基本都是Rollup,而Validium和Optimium往往不被以太坊基金会认可。
所以,DA层的可靠性/状态转换参数的可获得性,比欺诈证明/有效性证明系统的完备性更重要,更基础。对于比特币Layer2,尤其是基于客户端验证模型的Layer2而言,即便没有在Layer1上设置欺诈证明/有效性证明验证系统,只要DA层照常工作,大家依然能知道L2网络是否出现错误的状态转换。
目前比特币主网难以验证欺诈证明/有效性证明(此处不探讨BitVM),我们先假设比特币L2没有证明验证系统。理想状态下,如果L2排序器真的作恶,在结算层/BTC上释出一个与DA数据无关联的stateroot,它还是无法真正意义的盗取用户资产,因为它单方面提交的stateroot/状态转换结果,不会被诚实节点认可,到最后可能只是自嗨。
如果是类似于侧链的模型,多数节点串谋执行恶意的状态变更,人们也可以很快发现问题。只要跨链桥、交易所这类第三方设施不认可错误的数据,Layer2/侧链的恶意控制者就无法成功套现,除非他说服别人与他在链上直接OTC。
这里有一个很有意思的点,其实无论是以太坊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定义之事,铭文索引协议等新事物为比特币生态带来了充分的技术创新,并终将迸发出巨大的活力。