作者:薩摩
在SeeDAO投研公會的第七十九次週會中,我們迎來了不少新人小夥伴的加入,同時還有幸邀請到了著名的薩摩老師作為嘉賓。薩摩老師涉獵廣泛,是個跨領域的學習者和科普愛好者,也是BuidlerDAO、LXDAO等多個DAO的傑出貢獻者,非常熟悉區塊鏈的技術知識。作為嘉賓,薩摩老師在這次週會上給我們分享了「My First Layer 2」為主題的科普講解,本文就讓我們一起來回顧薩摩老師的精彩觀點吧。
—
公股發展的瓶頸
▎傳統公鏈如BTC、ETH的平均TPS(每秒可處理交易筆數)太低,難以滿足web3當前以及未來經濟活動的需求;
▎為了滿足使用者的使用需求,21年初開始興起了高效能公鏈的探索;提升TPS的方法主要有兩種:
-
一是透過增加區塊的大小,使得單一區塊可以容納更多的交易,例如BCH將區塊大小從1MB 提升至32MB,BSV則是更激進地取消了區塊大小上限,允許無限多的信息融入一個區塊。這樣做會導致區塊鏈的體積快速膨脹,參與驗證的機器效能要求越來越高,提高了參與門檻,導致區塊鏈網路的去中心化程度和安全性降低。
-
二是透過降低出塊時間,提高單位時間內的出塊數量,來提高TPS。這樣對節點的網路條件提出了更高的要求,提高了參與的門檻,並且因為物理距離較遠的節點群容易對於最新區塊產生分歧,導致了區塊鏈的分叉。分叉後的區塊鏈必須等待區塊確認競爭出最長的一條支鏈,拋棄其他的支鏈,這就導致了一段時間內的大量交易記錄被重寫,如Polygon在2023年發生過157個區塊的重組事件。
▎區塊鏈的三角悖論,去中心化程度、安全性與可拓展性(即效能)三者之間的矛盾。為了追求任意兩者的提升,往往會讓第三者做出犧牲。如Polygon為了確保去中心化程度採用了複雜的驗證機制,為了追求性能提高出塊的速度,結果導致了容易出現大規模的區塊重組事件和全網宕機事故,犧牲了安全性。而更多高效能公鏈為了確保效能和安全性,提高了節點的門檻,導致了一條公鏈僅有數十個超級節點參與驗證。這些做法雖然讓TPS得到的實際的提升,但與區塊鏈的去中心化特性相比是不是顯得有點「變味」了呢?
Layer 2 概念的興起與發展
▎幾乎在高性能公鏈興起的同一時間,由OP提出的optimism,就是運用了Layer 2的概念。
▎Layer 2指二層網絡,是在一層網絡的基礎上搭建的,用各種技術手段幫助底層公鏈擴容的解決方案。傳統網路也採用了增加層級的方式來實現業務的解耦,降低層級負擔。同樣的可以利用技術在區塊鏈一層網路(Layer 1)的基礎上增加Layer 2,來分攤Layer 1的負擔,達到擴容提升效能的目的。
▎Layer 2的原型:狀態通道。狀態通道使用了多簽技術,允許兩個個體之間提前存入一筆資金鎖定在智能合約中,建立一個內部通道,然後雙方可以在通道內進行多筆小額轉賬,速度極快,成本極低,再在一段時間後用轉帳證明一次提款。這就是比特幣的閃電網路和以太坊的雷電網路背後的底層技術。
▎雷電網絡的限制:
-
用戶必須提前鎖定資金;
-
只能實現簡單的轉帳交易,無法實現更複雜的交易需求;
-
無法轉帳不參與雷電網路的用戶。
▎側鏈方案
為了解決狀態通道無法執行複雜交易的問題,側鏈方案進入人們視野。側鏈可以理解為一條相對獨立的區塊鏈,它們往往採用與主鏈(一般是以太坊)類似的架構,方便主鏈上的項目遷移至側鏈。我們可以在主鏈的智能合約內鎖定一定量的資產,然後在側鏈上鑄造等量資產,實現「原子交換」。用這種方式將資產存入側鏈,在側鏈上進行各種交易,然後在必要時轉移回主鏈。
▎側鏈為了分擔主鏈的交易壓力,往往會採用與主鏈不一樣的共識機制,大幅提高出塊的速度,或是用少量的超級節點進行通訊。這使得側鏈的安全性相比以太坊主鏈大大地降低。側鏈的安全性由自身的節點負責,如果側鏈的安全出現問題,例如用戶的資金存入側鏈後出現問題無法轉移回主鍊等,那麼整個以太坊生態都會受到影響。所以,側鍊是否屬於Layer 2存在一定的爭議。
▎Plasma方案
隨著狀態通道和側鏈方案在實踐中暴露出不足,Plasma方案被提出並受到重視,它解決了前面兩者暴露出的兩個問題:
-
無法向未參與的個體發送資金:未加入Plasma鏈的帳戶也可以收到資金,然後自行提取到Layer 1。
-
無法繼承Layer 1 安全性:Plasma定期向主鏈提交訊息,以繼承Layer 1安全性。
▎Plasma會在Layer 1用智慧合約鎖住一筆資金,然後依賴一個節點營運商在Layer 2進行交易。營運商以默克爾樹(Merkle Tree,又名:哈希樹)的形式保存一個小帳本,記錄了Layer 2帳戶的狀態信息,同時負責保存並公開所有的交易記錄。
Plasma業者需要定期向Layer 1上傳默克爾樹的根證明,即「狀態根」(State Root),這樣所有人都能檢查Layer 2的帳本是否被竄改。
▎Plasma 也支援鏈中鏈的特性,即不向Layer 1定期提交根證明,而是向另一條Plasma鏈定期提交根證明,如此一層疊一層,形成「巢狀區塊鏈」(Nested Blockchain)的形態。這種特性也為其進行規模性擴容提供了可能,一度被認為是非常有前景的解決方案。
▎Plasma的限制:用戶從Plasma鏈提取資產時,要經歷漫長的挑戰期(一般為7天),是為了確定交易的合法性,如果挑戰期內有人質疑節點運營商作惡,可以自行檢查交易記錄,並提交詐欺證明,挑戰期內未被挑戰的提款在挑戰期結束後才會生效。但Plasma節點運營商是一個中心化的節點,第三方不容易獲得交易資料進行監督,如果節點運營商作惡失去可信性,可能會發生用戶大規模退出Plasma的情況,短時間內產生巨量的提款請求,提交大量的詐欺證明,導致以太坊主網長時間堵塞。
▎由於Plasma因為數據可用性的問題導致其最終未能被大規模使用,但它的一些理念在後續的Layer 2方案中被吸收和發展。
Rollup技術的發展
▎Rollup方案Layer 2的技術特點:Rollup 意為“打包”,也就是將一段時間內發生的交易先進行壓縮,再進行打包,然後週期性地上傳至主網。目前主流的Rollup方案分為兩大路線,分別為Optimistic Rollup(樂觀的Rollup)與Zero-knowledge Rollup(零知識證明的Rollup)。
▎Optimistic Rollup:OP-Rollup是將一段時間內的所有交易細節全部壓縮打包,定期發送至Layer 1。這種機制樂觀地相信大部分交易者都是誠實的,繼承了Plasma 挑戰期和詐欺證明機制。
▎Zero-knowledge Rollup:ZK-Rollup一般是將一段時間內的交易計算完成後,將狀態變化的結果壓縮打包,並附上交易已經在Layer2被正確執行的零知識證明,定期發送至Layer 1。以零知識證明取代監督者,依賴數學而非驗證者(Rely on Math,not Validators)。
▎Rollup的二層解決方案,略微降低了去中心化程度,但獲得了以下優點:
-
大幅分擔了Layer 1層的計算負擔,有效實現擴容;
-
壓縮交易數據,節省了Layer1的儲存資源;
-
向Layer 1上傳必要的關鍵訊息,且一層對二層的狀態有最終裁決權,從而最大程度地繼承了Layer 1的安全性。
▎Rollup的壓縮打包方法
以OP-Rollup為例,一筆常見的轉帳交易,他的原數交易資料可能是這樣的:
4232f4610000000000000000000000007ea2be2df7ba6e54b1a9c70676f668455e329d290000000000000000000025000212500025021250002125021250250002500 cae4bc57000000000000000000000000000000000000000000000000000000000186a0(Method ID / 填充的0 / 代幣合約填充/ 的收款數量
-
Layer 2透過科學計數法,刪除原始資料中不必要的0(數量精度略微下降,實務上幾乎無影響);
-
刪除所呼叫的Method ID(呼叫方法很常見,可以透過交易內容的特徵推測);
-
為常用的行為設定一個綠色通道,例如「傳送」動作以及發送的代幣類型為「USDC」這兩個訊息設定一個更短的HelperID來直接呼叫;
-
登記一個“電話本”,記錄常用收款人的地址,將長地址壓縮為第X頁中的第X個地址;
-
如果發送的是ETH,省略HelperID;
-
經過上面一些欄位操作,最後上傳到Layer1的資料就壓縮成了059c570186a0(收款帳戶「電話簿」編號/ 提幣數量)。
▎在原數交易資料經過客製化壓縮後,還有很多壓縮演算法幫助進一步壓縮,已經上線的Layer 2 Rollup方案中,很多都有自己的演算法幫助打包,以下對比中可以看出,這些方案對比於以太坊主網,都取得了不錯的效果。
▎Optimistic Rollup
Optimistic Rollup是“樂觀的打包”,它假設絕大部分的參與者都是誠實的,允許一批數量較少的驗證者節點(Validator),對交易進行收集、排序、驗證。同時也設定了挑戰者的角色(Challenger),其職責是監督驗證者提交的資訊是否誠實。
OP-Rollup 會定期上傳兩種資料到主網:
-
狀態根(State Root): 狀態根可以快速確認Layer 2 小帳本的內容是否被竄改。
-
壓縮後的全部交易資料:包含各種交易細節,例如交易附帶的「用戶簽名」。
雖然上傳了近段時間的全部交易詳情,但以太坊主網並不負責直接驗證這些交易,只起到一個公示的作用。
▎與Plasma類似,OP-Rollup也使用默克爾樹的形式保存了一個“小帳本”,記錄了全體帳戶的所有狀態(帳戶餘額)。如果我們相信目前的交易驗證者(Validator)都是誠實的,那麼狀態根能快速確認當前Layer 2 的小帳本記錄的內容是否被篡改,確保安全性。
反之,假如我們對目前的交易合法性產生質疑,任何第三方都可以在主網獲取最近一段時間內所有交易的副本,重新驗證之後,將自己驗證的結果與Layer2的小賬本的記錄做對比,確認小帳本上的記錄均為合法。如果發現作惡,挑戰者就可以在以太坊一層提交詐欺證明來改寫二層的狀態。挑戰成功後,不誠實的驗證者將受到懲罰,挑戰者將獲得獎勵。同時,受影響的交易將被回滾,進行重新驗證。
在這個過程中,負責監督的挑戰者(Challenger)是直接與Layer1的智慧合約互動的,一層對二層的狀態有著最終裁決權。
在這種設計之下,即使只有一個誠實的挑戰者,也足以確保整個Layer2的交易安全。不過代價是OP-Rollup 必須提供一個退出窗口期,讓挑戰者有時間去檢驗並提交欺詐證明,因此使用官方橋從OP-Rollup 網路提款往往需要7 – 14天的等待期。
OP-Rollup的邏輯簡單易懂,而且上傳了全部交易細節,因此對EVM (以太坊虛擬機)的兼容性也非常好,很有利於落地實施。但還是難以避免漫長的挑戰期。
▎ZK Rollup(Zero-Knowledge Rollup):零知識證明Rollup。
依賴數學演算法的一種非互動式證明,讓在Layer2誠實執行交易的驗證者能產生一個證明,而不誠實的驗證者無法得到正確的證明,並且Layer1驗證這個證明的代價極低,Layer1確認了證明之後,就能認可一整批的交易為真。如果證明無法通過,則拒絕整個批次的打包。
比方說,一個NFT在一段時間內在ABCD多次反覆轉手,但最終的結果是A的手中減少了一個NFT,D的手中增加了一個NFT,這叫做狀態變化的結果。 Layer 2只需要把這個狀態結果上傳到Layer 1,以及一個ZK證明去證明中間這些過程已經正確地被執行即可,如果通過Layer 1的驗算通過,則這一批次的交易得到確認,否則這一批次的交易全部被打回,而不需要一個挑戰者來監督交易的安全性。交易如果是不合法的,甚至無法被壓縮打包。
▎ZK-Rollup 會週期性上傳3種資料到主網:
-
狀態根:狀態根可以快速確認Layer 2小帳本的內容是否被竄改。
-
交易數據:經過壓縮和聚合的交易數據,例如將多個交易合併為一批次的狀態變化結果。透過使用零知識證明保證交易的安全性,可以捨棄一些不必要的信息,例如前面提到的「用戶簽名」。
-
有效性證明:即零知識證明,讓Layer 1的智能合約在經過簡單驗證後,就能確認交易已被正確執行。
▎ZK-Rollup與OP-Rollup的差別:
ZK-Rollup方案依靠Layer 1上的智能合約,用很小的代價檢驗ZK Proof的有效性,如果檢定通過則表示這批交易已經被正確執行,那就更新狀態。如果檢定不通過,則拒絕這一批次的交易。
OP-Rollup則完全將Layer 1當成了解決資料可用性的公告板,依賴挑戰者的監督,兩者的安全性和交易確認速度都會產生明顯差異。
▎ZK-Rollup的優點:
依靠數學而非驗證者,安全性更有保障,並且確認時間更短。
更高的壓縮率,讓Layer 2的擴容上限更高。
▎ZK-Rollup的兩條技術路線STARK vs SNARK
SNARK:Succinct Non-Interactive Argument of Knowledge的特色:
-
簡潔(Succinct):驗證速度快於計算證明。
-
非互動式(Non-Interactive):無需證明者與驗證者之間進行互動。如比特幣的公私鑰對也是一種零知識證明,但它要求私鑰擁有者對一段文字進行簽名才能證明自己擁有私鑰,這需要發生一次互動。
-
統計學上的可靠(Argument):相對於數學上絕對的證明(即100% 可靠),實現了統計學上的可靠(如99.99999999%)。
-
包含資訊(Knowledge):可將某些資訊編碼進零知識證明中,如一筆交易已正確執行。
STARK:Scalable Transparent Argument of Knowledge的特點:
-
可擴展的(Scalable):在進行大規模交易的證明時,驗證時間仍然較短。
-
透明的(Transparent):隨機數公開可驗證,無需像SNARK 一樣設定初始可信環境。
-
統計學上的可靠(Argument):相對於數學上絕對的證明(即100% 可靠),實現了統計學上的可靠(如99.99999999%)。
-
包含資訊(Knowledge):可將某些資訊編碼進零知識證明中,如一筆交易已正確執行。
▎STARK的優點:處理大量交易時,零知識證明產生速度和驗證速度更快,具有抗量子性,無需初識可信環境,安全性更高,且發展時間更久更成熟。
SNARK的優點:證明體積更小,交易成本比STARK更低,隨著技術發展,安全性不顯著弱於STRAK,擁有更大的潛力。
▎ZK發展路線ZK-VM vs ZK-EVM
-
ZK-VM:從零知識證明的角度出發,專門開發適用於零知識證明的演算法,從而建構一個ZK-VM(零知識虛擬機器),而不是原生相容EVM的ZK-EVM(零知識以太坊虛擬機),在此基礎上盡可能實現EVM相容。這種路線的優點是能夠充分發揮零知識證明的潛力,以實現最大化的擴展性。
-
ZK-EVM:從EVM相容性的角度出發,將EVM的交易在操作碼層面切割成更小的步驟,對每個步驟去找對應的零知識證明演算法,力求實現完全的EVM相容。這樣做可以使開發者幾乎無感地切換到二層網絡,方便現有專案遷移,最大程度地保留目前的EVM 生態成果。
複盤Layer 2的發展歷程以及Layer2的未來展望
▎側鏈,資料對主鏈來說不可用,無法繼承主鏈安全性。
▎Plasma,狀態根可以保障鏈下帳本的不被竄改,但具體交易資料對一層網路來說也不可用,導致資金退出困難。
▎OP-Rollup,上傳所有交易的詳細資料以及狀態根到Layer 1上,確保了全部交易資料的可用性,從而確保Layer2的安全。
▎ZK-Rollup,上傳關鍵交易資料以及能證明鏈下交易已經被正確執行的零知識證明,實現安全性的同時,還能一定程度保證隱私性。
▎未來:數據可用性問題能否由Layer2解決。
▎Validium,僅上傳狀態根和零知識給主網證明,交易資料交由Layer 2保存。
▎Volition是Validium方案的改進版本,允許使用者可以自行選擇其交易資料是否在Layer1可用。少量資金交易可以選擇交易資料儲存在Layer2,提高交易速度,降低交易成本,大量資金交易可以選擇保存在Layer1,提高安全性。
▎以太幣的Deneb更新,是以太坊擴容路線DankSharding 的前置步驟,旨在確保以太坊信標鏈安全性的前提下,為Layer 2擴容提供更大的儲存資源。
Deneb 更新新增了一個新的交易:Blob交易(大型二進位物件Binary Large Object)。在主鏈上只留存指針,指針指向一個Blob塊,上面可以儲存約128KB 的二進位資料。
以太坊礦工只負責在一段時間內(如一個月)保存Blob上的數據,透過隨機抽樣的方式確保Blob 上二進位數據的真實性,但不驗證存在Blob上的交易。
Blob 交易看起來對常規交易的擴容沒有幫助,但這對於Layer 2打包的交易數據來說簡直是完美契合Layer2原先定期上傳給Layer 1上的打包交易數據本來就不會執行,只是起到保障數據可用性的作用。
而Blob本身就相當於一個公示板,訊息在公示板上的存續時間超過了OP-Rollup的挑戰期,實踐上完全夠用,存儲成本卻降低了許多,這將促使Layer 2的交易成本進一步降低。
Blob 增加的唯一缺憾是超過保存期限之後,Layer 2如果想保存自己的全部歷史交易數據,需要用另外的方案自行解決這些數據的可用性問題。
總體來說,Deneb更新之後,Layer 2將可以在確保安全性的同時進一步降低交易成本,變得更具實用價值。
▎ZK系與OP系未來將會走向相互融合發展的方向。
▎帳戶抽象化與大規模應用。 Web3想要得到大規模應用,需要完善區塊鏈的帳戶體系,用私鑰對掌握的帳戶體系(EOA帳戶),對一般大眾非常不友好,帳戶抽象化是未來的重要趨勢。 Layer 2可以幫助建立帳戶抽象,透過智慧合約帳戶進行交易,手續費和交易速度都比EOA帳戶更加優化,Layer 2為區塊鏈最終的普及提出了更大的可能性。
以上是薩摩老師在SeeDAO投研公會上分享的全部內容,非常感謝薩摩老師的科普和講解,讓我們對Layer 2都有了更深層次的認識。希望沒有參加到會議的你看完這篇文章頁能對Layer 2有自己全新的理解,也希望以後能再有機會邀請到薩摩老師為我們做更多的講解,再次感謝薩摩老師!