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