區(qū)塊鏈layer 1協(xié)議和layer 2協(xié)議有什么區(qū)別
前言:V神認(rèn)為,雖然從長遠(yuǎn)看,layer 1應(yīng)保持簡單和穩(wěn)定,layer 2聚焦更多創(chuàng)新,這種想法是好的。但是,從短期看,layer 1還不夠強(qiáng)大,要想達(dá)成這種layer 1和layer2的完美分層關(guān)系,首先要讓layer 1足夠強(qiáng)大,而這個(gè)足夠強(qiáng)大就是要讓layer 1協(xié)議達(dá)到一定級別的功能。所謂的一定級別,就是實(shí)現(xiàn)layer 1和layer 2完美互補(bǔ)關(guān)系的最小功能級別。V神用“功能逃逸速度”進(jìn)行比喻。那么,layer 1必須要有那些最小功能呢?其中包括一種可以驗(yàn)證需要驗(yàn)證的任意內(nèi)容的編程語言;豐富的有狀態(tài)性(如授權(quán)改變代幣狀態(tài)而無需完全釋放它們的能力);數(shù)據(jù)可擴(kuò)展性和低延遲等。
區(qū)塊鏈領(lǐng)域有一個(gè)普遍的思路:區(qū)塊鏈應(yīng)該最大程度上簡單,因?yàn)樗鼈兪呛茈y改變的基礎(chǔ)架構(gòu),一旦破壞會(huì)造成巨大危害,而更復(fù)雜的功能應(yīng)該在上層構(gòu)建,以layer 2協(xié)議的形式:狀態(tài)通道、Plasma、Rollup等。layer 2是進(jìn)行持續(xù)創(chuàng)新的地方,而layer 1應(yīng)該保持穩(wěn)定性和進(jìn)行維護(hù),只有在緊急情況下才進(jìn)行大的更改(例如防止基礎(chǔ)層的加密被量子計(jì)算機(jī)攻破,這種情況下進(jìn)行一次性重大的更改是可以的)
這種分離層的想法是非常好的主意,從長期看,我強(qiáng)烈支持這種想法。然而,這種想法忽略了一個(gè)重要的觀點(diǎn):盡管layer 1無法很強(qiáng)大,但是由于更大的能力意味著更大的復(fù)雜性并因此帶來更大的脆弱性,因此layer 1也必須足夠強(qiáng)大,以使得構(gòu)建其上的layer 2協(xié)議首先是可能的。
一旦layer 1協(xié)議達(dá)到一定級別的功能,我將其稱為“功能逃逸速度”,那么到了這個(gè)時(shí)候,你可以在這個(gè)基礎(chǔ)上做其他所有事情,而無須改變基礎(chǔ)層。但是,如果layer 1功能不夠強(qiáng)大,那么,你可以談?wù)撎钛a(bǔ)與layer 2系統(tǒng)的空隙,但現(xiàn)實(shí)是,如果不再次引入layer 1試圖擺脫的整套信任假設(shè),實(shí)際上就沒有辦法構(gòu)建這些系統(tǒng)。
本文會(huì)討論構(gòu)成“功能逃逸速度”的最小功能的一些含義。
一種編程語言
必須有可能在鏈上執(zhí)行定制的用戶生成的腳本。這種編程語言可以很簡單,且實(shí)際上并不需要高性能,但它至少需要擁有這種級別的功能:能夠驗(yàn)證可能需要驗(yàn)證的任意內(nèi)容。這很重要,因?yàn)橐獦?gòu)建于基礎(chǔ)層之上的layer 2協(xié)議需要某種驗(yàn)證邏輯,這種驗(yàn)證邏輯必須以某種方式由區(qū)塊鏈執(zhí)行。
你可能聽說過圖靈完備性。對這個(gè)術(shù)語,“外行人的直覺”是如果一種編程語言是圖靈完備的,那么它可以做計(jì)算機(jī)理論上可以做的任何事情。一種使用圖靈完備語言編程的程序可以翻譯成任何其他圖靈完備語言的等效程序。但是,事實(shí)證明,我們只需要更輕一些的東西:可以將編程限制為無循環(huán),或者可以保證程序在特定數(shù)量的步驟之后終止。
豐富的狀態(tài)
不僅存在一種編程語言重要,而且該編程語言如何精確地集成到區(qū)塊鏈中也很重要。在可集成語言的更受限的方法中,如果它用于純粹交易驗(yàn)證:當(dāng)你向某個(gè)地址發(fā)送代幣,該地址代表了計(jì)算機(jī)程序P,P可用于驗(yàn)證從這個(gè)地址發(fā)送代幣的交易。
也就是說,如果你發(fā)送的哈希值為h的交易,你提供的簽名為S,那么區(qū)塊鏈會(huì)運(yùn)行P(h,S),如果輸出為TRUE,那么交易是有效的。通常,P是用于加密簽名方案的驗(yàn)證器,但它可以執(zhí)行更加復(fù)雜的操作。尤其需要注意的是,在這一模型中,P并不能訪問交易的目的地。
但是,這種“純函數(shù)”的方法還不夠。這是因?yàn)檫@種純粹基于函數(shù)的方法并不足以執(zhí)行人們實(shí)際想實(shí)現(xiàn)的多種類型的layer 2協(xié)議。它可以處理通道(以及基于通道的系統(tǒng),如閃電網(wǎng)絡(luò)),但它無法實(shí)現(xiàn)具有強(qiáng)大屬性的其他擴(kuò)展性技術(shù),它也無法用于引導(dǎo)出具有更復(fù)雜狀態(tài)概念的系統(tǒng),等等。
為了簡單說明純函數(shù)范式無法做什么,可以考慮一下具有如下功能的儲(chǔ)蓄賬戶:存在一個(gè)加密密鑰k,k可以發(fā)起提款,且如果發(fā)起了提款,在接下來的24小時(shí)內(nèi)使用相同的密鑰k可以取消提款。如果提款在24小時(shí)內(nèi)仍未取消,則任何人都可以“戳”該賬戶以完成提款。
這么做的目的是,如果密鑰被盜,賬戶持有人可以防止偷竊者提取資金。偷竊者當(dāng)然可以阻止合法持有人獲得資金,但這種攻擊對于偷竊者來說將是無利可圖的,因此他們可能不會(huì)去干這種事。
遺憾的是,如果僅用純函數(shù)這種技術(shù)無法實(shí)現(xiàn)。問題是:需要用某種方式將代幣從“正?!睜顟B(tài)轉(zhuǎn)變?yōu)椤暗却峥睢睜顟B(tài)。但程序P無法訪問目標(biāo)地。因此,任何可以授權(quán)將代幣移至等待提款狀態(tài)的交易也可以授權(quán)立即偷取這些代幣;程序P無法分辨出其中差異。
這種改變代幣狀態(tài)而無須完全釋放它們的能力,對很多應(yīng)用來說都很重要,其中也包括layer 2協(xié)議。Plasma自身就符合這種“授權(quán),最終確定,取消”的范式:從Plasma退出必須被批準(zhǔn),然后有7天時(shí)間的挑戰(zhàn)期,在這個(gè)挑戰(zhàn)期內(nèi),如果能提供正確的證據(jù),退出可能被取消。
Rollup也需要這種屬性:在rollup內(nèi)的代幣必須由程序控制,該程序持續(xù)跟蹤狀態(tài)根R,并且如果某驗(yàn)證器P(R, R‘,數(shù)據(jù))返回TURE,則將R更改為 R’,但在這種情況下,它僅僅將狀態(tài)改變?yōu)镽‘,它并不釋放代幣。
授權(quán)狀態(tài)改變而無須完全釋放一個(gè)賬戶中的所有代幣,這種能力我稱之為“豐富的有狀態(tài)性”。它可以在很多方面實(shí)現(xiàn),有些基于UTXO的,但如果沒有它,區(qū)塊鏈不足以實(shí)現(xiàn)大多數(shù)layer 2協(xié)議,而無須包含信任假設(shè)(例如,一組人得到集體信任執(zhí)行這些豐富狀態(tài)的程序)。(藍(lán)狐筆記:也就是無須信任第三方)
請注意:是的,我知道如果P可以訪問h,那么,你可以將目標(biāo)地址包括進(jìn)來作為S的一部分,然后對照h進(jìn)行檢查,并以此方式來限制狀態(tài)改變。但是,可能有一種編程語言其資源太有限或受限于實(shí)際上的執(zhí)行。讓人吃驚的是,在區(qū)塊鏈腳本語言中通常確實(shí)如此。(藍(lán)狐筆記:這里的h是指哈希值,S是指簽名)
足夠的數(shù)據(jù)可擴(kuò)展性和低延遲
事實(shí)證明,Plasma和通道以及其他完全鏈下的layer 2協(xié)議有一些根本性的弱點(diǎn),使得它們無法完全復(fù)制layer 1的能力。
我在這里詳細(xì)探討??偨Y(jié)來說,這些協(xié)議需要一種判斷情形的方法,其中一些參與方惡意地不提供他們承諾提供的數(shù)據(jù),且因?yàn)閿?shù)據(jù)發(fā)布并非是全局可驗(yàn)證的,這些判斷游戲在博弈論上看是不穩(wěn)定的(你無法知道什么時(shí)候發(fā)布數(shù)據(jù),除非你已經(jīng)自行下載)。
通道和Plasma巧妙地通過添加額外假設(shè)來解決這種不穩(wěn)定性,特別是假定對于每個(gè)狀態(tài),都有一個(gè)參與者對該狀態(tài)不被錯(cuò)誤修改感興趣(通常是因?yàn)樗砹似鋼碛械拇鷰牛?,因此,為其自身利益可以被信任。但是,這遠(yuǎn)非通用。例如,像Uniswap這樣的系統(tǒng),有一個(gè)大型的“中央”合約,它不歸任何人所有,因此,它們無法有效地受到這種范式的保護(hù)。
有一種方法可以解決這個(gè)問題,其中l(wèi)ayer 2協(xié)議在鏈上發(fā)布非常小量的數(shù)據(jù),但完全在鏈下進(jìn)行計(jì)算。如果數(shù)據(jù)可以確??捎茫敲?,鏈外進(jìn)行計(jì)算是可行的,因?yàn)榕袛嗾l正確計(jì)算誰沒有正確計(jì)算的游戲在博弈論上是穩(wěn)定的(或者可以完全由SNARKs或STARKs取代)。
這是ZK rollup和optimisTIc rollup背后的邏輯。如果區(qū)塊鏈允許發(fā)布并確保合理的大量數(shù)據(jù)的可用性,即使其計(jì)算能力非常有限,那么,區(qū)塊鏈也能支持這些layer 2協(xié)議,并實(shí)現(xiàn)高水平的可擴(kuò)展性和功能。
區(qū)塊鏈需要處理和確保多少數(shù)據(jù)?好吧。這取決于你想要多少TPS。通過rollup,你可以將大多數(shù)活動(dòng)壓縮至每個(gè)交易大約10-20字節(jié),因此,1kb/秒,大約可以有50-100的TPS,1MB/秒大約50,000-100,000的TPS,以此類推。
幸運(yùn)的是,互聯(lián)網(wǎng)帶寬持續(xù)快速增長,并且在計(jì)算方面并沒有看到摩爾定律的減速,因此,在不增加計(jì)算負(fù)載的情況下增加數(shù)據(jù)的可擴(kuò)展性,這對于區(qū)塊鏈來說,是非??尚械穆窂?。
請注意,不僅數(shù)據(jù)容量很重要,數(shù)據(jù)延遲也重要,也就是具有低區(qū)塊時(shí)間。Layer 2協(xié)議,如rollup(或就此而言,Plasma)只是當(dāng)數(shù)據(jù)實(shí)際發(fā)布到鏈上時(shí)才給予任何安全性保證。因此,數(shù)據(jù)被可靠地包含在鏈上(理想情況下是“實(shí)現(xiàn)最終性”)所耗費(fèi)的時(shí)間是指當(dāng)Alice向Bob發(fā)送支付款項(xiàng)和Bob確信支付被包含進(jìn)去之間所花費(fèi)的時(shí)間。
基礎(chǔ)層的區(qū)塊時(shí)間設(shè)置了任何內(nèi)容的延遲時(shí)間,這些內(nèi)容的確認(rèn)依賴于其被包含進(jìn)基礎(chǔ)層??梢杂面溕习踩婵睿ㄒ卜Q為“債券”)來解決此問題,其代價(jià)是資本效率低下,這種方式本質(zhì)上不完善,因?yàn)閻阂庑袨檎呖梢酝ㄟ^犧牲一個(gè)存款質(zhì)押欺騙無數(shù)人。
結(jié)論
“保持layer 1簡單,在layer 2上彌補(bǔ)”并不是解決區(qū)塊鏈可擴(kuò)展性和功能性問題的通用答案。因?yàn)樗鼪]有考慮到layer 1區(qū)塊鏈自身必須要有足夠的可擴(kuò)展性和功能性,以使得構(gòu)建其上實(shí)際上成為可能(除非你所謂的“l(fā)ayer 2協(xié)議”只是可信的中介)。
但是,在某個(gè)點(diǎn)之外,任何layer 1功能確實(shí)可以在layer 2上復(fù)制,且在很多情況下,通過這樣做提高可升級性是個(gè)好想法。因此,在短期內(nèi),我們需要layer 1跟layer 2并行發(fā)展,從長遠(yuǎn)看,我們需要更多聚焦于layer 2。