作者:Faust,極客web3
導語:近日,Danksharding的提出者、以太坊基金會的研究員Dankrad Feist在推特上發表了一番頗具爭議的言論。他明確指出,不採用ETH作DA層(數據可用性層)的模塊化區塊鏈不是Rollup,同時也不是以太坊Layer2。如果按照Dankrad的說法,Arbitrum Nova和Immutable X、ApeX、Metis都可能從Layer2名單裏“除名”,因爲它們只在ETH之外(自己構建了名爲DAC的鏈下DA網絡)披露交易數據。
同時,Dankrad還表示,像Plasmas和狀態通道這種不需要鏈上數據可用性(Data Availability)來確保安全的方案仍算是Layer2,但Validium(不用ETH作DA層的ZKRollup)不算Layer2。
Dankrad此言一出,便引來了諸多Rollup領域的Founder或Researcher質疑。畢竟有許多“Layer2”項目爲了節約成本,並沒有採用ETH作爲DA(數據可用性)層,如果把這些項目踢出L2名單,必然波及到相當多的擴容網絡;同時,如果validium不算L2,Plasma應該也沒資格算作L2。
對此,Dankrad表示,Plasma用戶在DA不可用時(就是指鏈下的DA層網絡搞數據扣留,不公开交易數據),仍然可以把自己的資產安全撤出至L1;但相同的情況下,Validium(大多數採用StarkEx方案的項目都是validium)卻可以讓用戶無法撤資至L1,把錢凍住。
顯然,Dankrad打算從“是否安全”來界定一個擴容項目是否爲以太坊Layer2。如果從“安全性”的角度來考量,Validium在定序器故障 + DA層發動數據扣留攻擊(隱瞞新數據)的極端情況下,的確可以把用戶資產凍結在L2無法提到L1;Plasma因在設計上與Validium不同,雖然多數時候安全保障不及Validium,但在定序器故障 + DA層發動數據扣留攻擊(隱瞞新數據)時,卻允許用戶把資產安全撤離至L1。所以Dankrad的說辭不無道理。
本文打算從Dankrad的視角出發,通過對Layer2的細節作進一步分析,來深入理解爲何Validium不是嚴格意義上的“Layer2”。
到底怎么定義Layer2?
按照ethereum.org網站和多數以太坊社區成員的定義,Layer2是“給以太坊擴容+繼承以太坊安全性 的獨立區塊鏈”。首先,“給以太坊擴容”就是指分流以太坊無法承載的流量,分擔TPS方面的壓力。而“繼承以太坊安全性”,其實可以轉譯爲“借助以太坊保障自身安全性”。
比如,Layer2上所有的交易Tx都要在ETH上完成最終結算Finalize,數據有錯誤的Tx不會被放行;如果要回滾Layer2的區塊,要先回滾以太坊區塊,只要以太坊主網不發生類似51%攻擊的區塊回滾,L2區塊就不會回滾。
如果我們更進一步探討Layer2的安全性,其實還要考慮許多極端情況。比如,如果L2項目方跑路、定序器Sequencer故障、鏈下DA層掛掉,在這些極端事件發生時,用戶能否把自己在L2上的資金安全撤出到L1上?
Layer2的“強制提款”機制
不考慮L2合約升級/多籤隱患等因素,其實如Arbitrum或StarkEx都有爲用戶設置強制提款的出口。假設L2的定序器發動審查攻擊,故意拒絕用戶的交易/提款請求,或幹脆永久宕機,Arbitrum用戶可以調用L1上Sequencer Inbox合約的force Inclusion函數,將交易數據直接提交至L1;如果在24小時內,定序器沒有處理這筆需要“強制包含”的交易/提款,該交易會被直接包含進Rollup账本的交易序列中,這就爲L2用戶創造了一個可強制提款的“安全出口”。
相比之下,有逃生艙Escape Hetch機制的StarkEx方案要有過之無不及。如果L2用戶在L1提交的Forced Withdrawal請求在7天窗口期結束時,未得到定序器響應,則該用戶可以調用freeze Request功能讓L2進入凍結期。此時,L2定序器將無法在L1上更新L2的狀態,L2狀態凍結後要過1年才能解凍。
L2狀態凍結後,用戶可以構造與當前狀態相關的Merkle Proof,證明自己在L2上有XX數額的資金,通過L1上的逃生艙Escape Hetch相關合約來提款。這便是StarkEx方案所提供的“全額提款”服務。即便L2項目方沒了,定序器永久故障了,用戶還是有辦法把資金撤出L2。
但這裏存在一個問題:用StarkEx方案的L2大多是Validium(比如Immutable X和ApeX),並不會把DA所需的數據發布到ETH,構造當前L2狀態樹的信息都存在鏈下。如果用戶無法在鏈下獲取構造Merkle Proof的數據(比如鏈下DA層發動數據扣留攻擊),是無法通過逃生艙來提款的。
至此,文章开頭提到的Dankrad認爲Validium不安全的原因,其實很明確了:因爲Validium不像Rollup一樣把DA的數據發到鏈上,所以用戶可能無法構造出“強制提款”所需的Merkle Proof。
Validium和Plasma在發生數據扣留攻擊時的區別
事實上,Validium的定序器只在L1鏈上發布L2最新的Stateroot(狀態樹的根),再提交一個Validity Proof(ZK Proof),證明新的Stateroot生成過程涉及的狀態轉換(用戶資金變化),都是正確的。
但單憑stateroot無法還原出此刻的狀態樹world state trie,也就無法知曉每個L2账戶的具體狀態(包含資金余額),L2用戶就無法構造對應當前合法Stateroot的Merkle Proof。這便是Validium不利的地方。
這裏必須要強調下DAC這個東西。Validium的DA所涉數據,比如定序器最新處理的一批交易,會同步給名爲數據可用性委員會DAC(Data Availability Committee)的L2專屬DA網絡,DAC由多台節點服務器構成,一般由L2官方和社區成員或其他單位負責運行和監督(但這只是表面上的,實際上DAC成員都有誰,外界很難查證)。
有意思的地方在於,Validium的DAC成員需要頻繁在L1提交多籤,證明L2定序器在L1提交的新Stateroot和Validity Proof,與DAC同步到的DA數據能對上號。DAC的多籤提交後,新的Stateroot和Validity Proof才會被認爲是合法的。
目前Immutable X的DAC採用5/7多籤,dYdX雖然是ZKRollup,但也有DAC,用的是1/2多籤。(dYdX只在L1發布State diff即狀態變化,而非完整交易數據。但獲取了歷史記錄裏的State diff,就可以還原全部L2地址的資產余額,此時就可以構造Merkle Proof來全額提款)。
Dankrad的觀點不無道理。Validium的DAC成員如果合謀,發起數據扣留攻擊,不讓其他L2節點同步此刻的最新數據,並且更新此刻L2的合法Stateroot,用戶無法構造此刻合法root對應的Merkle Proof來提款(因爲此刻往後的DA數據不可用了,可用的是以前的DA數據)。
但Dankrad考慮的只是理論上的極端情況,現實中大多數Validium定序器都會實時的把新處理的交易數據廣播給其他L2節點,其中不乏誠實節點。只要有1個誠實節點能夠及時獲取DA數據,用戶就可以從L2全身而退。
可理論上存在於Validium身上的問題,爲何不存在於Plasma身上?這是因爲Plasma判定合法Stateroot的方式,和Validium不同,有欺詐證明窗口期的緣故。Plasma是OPRollup之前的L2擴容方案,與OPR一樣靠欺詐證明保證L2的安全。
Plasma與OPR一樣有窗口期的設定,定序器發布的新stateroot不會立刻判定爲合法,要等窗口期close且沒有L2節點發布欺詐證明。所以Plasma和OPR的當前合法Stateroot,都是幾天以前提交的(這就好比我們看到的星光,其實都是很久以前發出的),而用戶往往可以獲取過去時刻的DA數據。
同時,欺詐證明機制能在此刻生效的前提,是此刻L2的DA可用,也即Plasma的Verifier節點可以獲取此刻的DA所涉數據,這樣才能生成此刻的欺詐證明(如果有必要的話)。
那么一切都很簡單了:Plasma正常工作的前提是此刻L2的DA數據可用。如果從此刻开始,L2的DA不可用了,用戶能安全撤資嗎?
這個問題不難分析,假設Plasma的窗口期是7天,如果從某個時間點T0开始,新的DA數據就不可用(DAC發動數據扣留攻擊,不讓誠實的L2節點獲取T0往後的數據)。因爲T0及此後一段時間內的合法Stateroot,是T0時刻前提交的,而T0時刻前的歷史數據可追溯,所以用戶可以構造Merkle Proof來強制提款。
即便很多人無法立刻察覺異常,但因爲有窗口期存在(OP是7天),只要T0時刻提交的Stateroot還未合法化,且T0之前的DA數據可追溯,用戶就可以把錢安全撤出L2。
總結
至此我們大致可以理清楚Validium和Plasma在安全性上的區別:
Validium的定序器發布Stateroot後,只要立刻發布Validity Proof和DAC多籤,就可以使其合法,成爲最新的合法Stateroot;如果用戶和誠實L2節點遭遇數據扣留攻擊,無法構造當前合法Stateroot對應的Merkle Proof,就無法提款到L1。
而Plasma提交新的Stateroot後,要等窗口期結束才能合法,此時的合法Stateroot是過去提交的。因爲有窗口期(ARB是3天,OP是7天)存在,即便新提交的Stateroot的DA數據不可用,用戶也有當前合法Stateroot的DA數據(合法root是過去提交的),有足夠的時間強制提款到L1。
所以,Dankrad說的話有道理。當發生數據扣留攻擊時,Validium存在把用戶資產困在L2的可能,但Plasma並不存在這個問題。
所以,鏈下DA層的數據扣留攻擊會造成許多安全隱患,但Celestia嘗試解決的正是這個問題。此外,因爲大多數Layer2項目都會提供讓L2節點與定序器保持鏈下同步的服務端口,所以Dankrad的憂慮其實往往只是理論上的,而不是現實中的。
如果我們用雞蛋裏挑骨頭的態度,再提出更極端的假設:所有的Plasma鏈下節點都不可用了,那么那些沒跑過L2節點的普通用戶都無法強制提款到L1。但這種事情發生的概率,等價於一條公鏈的所有節點集體永久性宕機的概率,可能永遠不會發生。
所以,很多時候,大家只是在談論一些根本就不會發生的事情。正如美劇《切爾諾貝利》裏克格勃副主席對主角說的那段金句:“爲何要擔心根本就不會發生的事情呢?”
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。