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