編譯:霧月&白丁,極客web3
本文為Nervos聯創Jan在2019年HBS Blockchain+Crypto Club Conference上的講話,主題圍繞著Layer2與Layer1之間的關係展開,明確提出模組化區塊鏈會是正確的方向,還談及了區塊鏈資料儲存機制的問題。同時Jan也拋出了一個相當有趣的話題:Layer2的興起若導致Layer1飢餓,該怎麼解決。
作為最早一批支持Layer2與模組化區塊鏈敘事的團隊,Nervos的主張在18、19年時頗具前瞻性,彼時的以太坊社群也對分片抱有不切實際的幻想,而高性能單片鏈的敘事也處於甚囂塵上的狀態,尚未被充分證偽。
但在2024年的今天,回看以太坊Layer2在實踐當中暴露出的問題,以及Solana為代表的「高性能公鏈」在去中心化與免信任問題上的弊端,不得不說Jan在5年前的觀點很有先見之明。出於對Layer2本身的興趣,「極客web3」將Jan的講座以文字版的形式整理成文,發表於此,歡迎Nervos與以太坊、比特幣社群的Layer2愛好者們共同學習與討論。
以下為Jan的講座原文。
Layer1和Layer2的定義
這是我對L1和L2(二層網路)的定義,如圖。
首先要強調,Nerovs只是一個努力滿足去中心化經濟需求的區塊鏈網絡,並不負責解決「所有問題」。在我們的認知裡,Layer1和Layer2的差別,關鍵在於共識的強弱。 L1網路必須具有最廣泛的共識,即「全球共識」。透過無需許可的全球共識,世界上任何人都可以參與L1的共識過程中,最終Layer1可以作為去中心化經濟的「錨」。從這個角度來講,我們可以把L1稱為「共識層」。
相較之下,L2網路的共識範圍會小一些,其參與者可能只來自某個國家,或某個行業,甚至是某家公司或機構,亦或是範圍很小的社區。 L2在共識範圍上的犧牲是一種代價,換來了其他方面的進步,例如更高的TPS、更低的延遲和更好的可擴展性等。我們可以把L2稱為“協議層”,而L1和L2之間往往透過跨鏈橋進行連通。
必須要強調,我們建構L2網絡,目的並非只是解決區塊鏈的可擴展性問題,而是因為分層架構是讓「模組化區塊鏈」最容易落地的途徑。所謂模組化區塊鏈,就是將不同類型的問題投放到不同的模組中去解決。
許多人一直在討論區塊鏈的合規和監管問題,那麼我們該如何將比特幣或以太坊納入現有的監管框架中?分層架構也許是解決這個問題的一個答案。直接在Layer1層級添加迎合監管要求的業務邏輯,可能會破壞其去中心化和中立性,因此與合規相關的邏輯可以單獨在Layer2上實現。
Layer2可以根據特定的法規或標準來定制,例如建立一個基於許可製的小型區塊鏈,或是狀態通道網路等東西。這樣即實現了合規性,又不會影響到Layer1的去中心化和中立性。
另外,我們也可以透過分層架構解決安全性和使用者體驗之間的衝突。類比來說,如果你想確保自己的私鑰安全,就要犧牲一定的便利性,而區塊鏈也是如此,如果你想確保區塊鏈的絕對安全,就要犧牲一些東西,比如該鏈的性能等等。
但如果使用分層架構,我們就可以在L1網路上完全追求安全性,而在L2網路上犧牲少許安全性以換取更好的使用者體驗。例如我們可以在L2上使用狀態通道來優化網路效能,降低延遲。所以說,Layer2的設計無非是安全性和使用者體驗之間的權衡。
上述內容自然而然地就引出了一個問題:是不是任何一條區塊鏈都可以當作Layer1?
答案是否定的,首先我們必須明確,Layer1網路的去中心化和安全性高於一切,因為我們必須透過去中心化來實現抗審查。追求Layer1的安全,究其根本,是因為L1是整個區塊鏈網路的根,是整個加密經濟體系的錨。
在這樣的評判標準下,比特幣和以太坊無疑是最經典的L1網絡,它們擁有極強的共識範圍。除這二者之外,大多區塊鏈都不符合L1的標準,共識程度較低。比方說,EOS的共識就不達標,只能充當一個L2網絡,更何況它的一些規則只適用於其自身。
目前Layer1網路存在的問題
明確Layer1的定義後,我們要指出,現有的一些L1網路有三個問題,這些問題即使在比特幣和以太坊中,也一定程度上存在:
1.資料儲存的公地悲劇問題
我們使用區塊鏈時需要支付一定的費用,但在比特幣的經濟模型中,手續費結構設計中只考慮了運算成本和網路頻寬成本,沒有成熟地考慮資料儲存成本。
例如用戶向鏈上儲存資料只需要支付一次費用,但儲存期限卻是永久的,所以人們可以濫用儲存資源,將任何東西都永久上鍊,最終網路裡的全節點要承擔越來越高的存儲成本。這帶來了一個問題:任何節點運行者想參與進該網路的成本,都會被最大限度地提升。
假設某區塊鏈的狀態/帳戶資料總計超過1TB,則不是每個人都能輕鬆同步完整的狀態和交易歷史。在這種情況下,就算你能同步到完整的狀態,也很難再去自行驗證對應的交易歷史,這會削弱區塊鏈的免信任性,而免信任恰恰是區塊鏈最核心的價值觀。
以太坊基金會意識到了上述問題,據此在EIP-103中加入了有關儲存租賃制的設計,但是我們認為這不是最優的解決方案。
我們在Nervos中提出了全新的狀態模型,稱為“Cell”,可以看作是UTXO的一種擴展。在比特幣UTXO的狀態中,你能儲存的只有比特幣的餘額數值,而Cell中可儲存任意類型的數據,並將比特幣UTXO的amount和integer value泛化為“Capacity”,用以指定Cell的最大儲存容量。
透過這種方式,我們將CKB上原生資產的數量和狀態大小綁在一起。任何一個Cell佔據的空間不能超過其容量限制,所以資料總量會保持在一定範圍內。
而且我們透過較為適當的代幣通膨率來確保狀態資料的大小不會對節點運行者造成乾擾。任何人都可以參與CKB網路中,他們可以驗證歷史數據,也可以驗證最終的狀態是否有效,這就是CKB針對區塊鏈中儲存問題提出的解決方案。
2.Layer1飢餓問題
如果我們在Layer2上進行擴展,並將大量交易活動放到Layer2上進行,勢必會導致Layer1上的交易數量下降,Layer1礦工/節點運行者的經濟獎勵也會相應降低。這樣的話,Layer1礦工/節點運行者的積極性會下降,最終導致Layer1的安全性下降。這就是所謂的Layer1飢餓問題。
舉個極端的例子,如果我們將所有的交易活動轉到L2,那麼作為其根基的L1將不可持續。所以如何才能解決這個問題呢?
對此,我們要區分區塊鏈網路中有哪些種類的用戶,簡單來說可分為Store of Value Users(SoV user,價值儲存用戶)和Utility Users(應用型用戶)。
仍以CKB為例,SoV Users將原生資產CKB代幣作為價值儲存的手段,而Utility Users則利用Cell來儲存狀態。 SoV Users對於CKB代幣通膨導致的價格稀釋是排斥的,而Utility User必須向礦工支付狀態儲存費用,與資料儲存的持續時間和佔用空間成正比。
我們會在網路中持續發行新的CKB代幣以製造固定的通膨率,並將其付給礦工,這就相當於稀釋了Utility Users手中的代幣價值(這就是CKB經濟模型中三種發行模式之一的“二級發行”,該方式每年固定發行13.44億枚CKB代幣,具體內容可以查看《解讀Stable++:RGB++ Layer首個穩定幣協議正式啟航》)。
過程中SoV用戶的資產同樣被稀釋,因此我們可以給他們一定的補貼抵消通膨損失(這就是後來的NervosDAO分成)。也就是說,礦工從CKB通膨中獲得的收益,實際上只由Utility User來支付。很快我們將發行CKB的代幣經濟論文,相關問題在其中會詳細說明。
基於這樣的代幣經濟學設計,即使CKB鏈上沒有任何交易活動,礦工也能獲得報酬,進而我們可以與任何「價值儲存層」或Layer2相容。綜上所述,我們透過有意為之的固定通膨,解決Layer1飢餓問題。
3.加密原語的缺乏
使用者需要不同的加密原語,以使用不同的加密方式或不同的簽章演算法,例如Schnorr、BLS等。
想要成為一條Layer1區塊鏈,必須考慮如何與Layer2進行互通。以太坊社群中有些人提議使用ZK或Plasma的方式來實現Layer2,但是如果沒有ZK相關的原語,你如何在Layer1上完成驗證呢?
另外,Layer1也要考慮與其他Layer1之間的互通性。仍用以太坊舉例,有人要求以太坊團隊將Blake2b雜湊函數預先編譯為EVM相容的操作碼。該提案的目的是將Zcash和以太坊進行橋接,以便用戶在二者之間交易。上述提案雖然兩年前就已經提出,但直到現在還沒有實現,究其原因即缺乏對應的加密原語,這對Layer1的發展造成了嚴重阻礙。
為解決此問題,CKB建構了一個抽象程度很高的虛擬機,即CKB-VM,與比特幣虛擬機和EVM截然不同。舉個例子,比特幣有一個專門的OP_CHECKSIG操作碼,用於驗證比特幣交易中的secp256k1簽章。而在CKB-VM中,secp256k1簽章並不需要特殊處理,只需使用者自訂的腳本或智慧合約即可進行驗證。
CKB也使用secp256k1作為其預設的簽章演算法,只不過是運行在CKB-VM 中,而不是作為硬編碼的加密原語。
CKB建置虛擬機器的初衷是,在EVM等其他虛擬機器中執行加密原語非常緩慢,所以要改善這種情況。單一secp256k1簽章在EVM中的驗證耗時大概是9毫秒,而使用相同的演算法在CKB-VM計算,耗時僅1毫秒,這是將近十倍的效率提升。
所以CKB-VM的價值在於,現在用戶可以在其中自訂加密原語,而且絕大多數可以被CKB-VM相容,因為CKB-VM採用了RISC-V指令集,任何由GCC(GNU Compiler Collectio,一種廣泛使用的編譯器集合)編譯的語言都可以在CKB上運行。
另外,CKB-VM的高度相容性也提升了CKB的安全性。正如開發者總說的“Don’t implement your own version of crypto algorithms, you will always do it wrong”,自行定義加密演算法往往會帶來不可預見的安全風險。
總結一下,CKB網路使用各種方法,解決了我所提出的L1網路面臨的三種問題,這就是為什麼CKB可以稱為一個合格的Layer1網路的原因。