萬字解讀以太坊可擴展性的前世今生
原文翻譯:Block unicorn
原文翻譯:Block unicorn

“原文翻譯:Block unicorn原文翻譯:Block unicorn
一級標題
一級標題匯總
匯總
一級標題
面對“ 可擴展性三難”
如果不提到著名的“ 可擴展性三難困境”,我們就無法談論可擴展性。該術語由Vitalik(V神)創造,用於解釋區塊鏈旨在擁有的三個屬性:可擴展性、去中心化和安全性。很明顯,到目前為止,我們可以實現其中兩個屬性。但是要同時獲得這三個是非常非常困難的。1. 可擴展性
2. 去中心化2. 去中心化
3. 安全性一級標題
一級標題

去中心化和安全

一級標題
去中心化和安全
三角形的底部是傳統的區塊鏈,如比特幣和以太坊1.0(一層)。
安全:是的。因為網絡中的每個節點都保留了區塊鏈的副本並驗證每筆交易。此外,工作量證明旨在處理高達50% 的惡意節點。
一級標題
一級標題
一級標題典型的高TPS鏈安全

安全安全
安全:是的。每個“ 選舉” 節點被授權,因此我們控制系統中的對手。
去中心化 :一級標題
一級標題
一級標題

可擴展:去中心化:
去中心化:去中心化:
安全:看情況而定。生態系統中的每個區塊鏈都有一組驗證區塊鏈的節點。生態系統中的一些鏈會有很多驗證者(例如需要去中心化的穩定幣鏈),而另一些鏈可能很少甚至只有一個(例如不需要太多去中心化的企業鏈)。因此,去中心化的程度取決於我們所指的生態系統中的哪條鏈。
如您所見,在擴展區塊鏈方面有許多不同的嘗試,但它幾乎總是以這三個屬性之一為代價。 Vitalik 和以太坊社區一直不願意做出這種妥協,他們的目標是獲得所有三個。
一級標題
一級標題
一級標題了解第1 層和第2 層擴展擴展是指擴展核心區塊鏈本身。相比之下,第2 層擴展是指將交易從主區塊鏈層移到可以與主鏈通信的單獨層中。

一級標題

以太坊最早的二層解決方案
正文
一級標題
狀態通道
正文
狀態通道已經存在了很長時間,所以它們並不是什麼新鮮事。以下是它們如何工作的快速說明。假設我們有兩個人,愛麗絲和鮑勃,他們想互相交易。愛麗絲每次發推文都會向鮑勃支付1 美元。但是由於Bob每天發很多推文,使用以太坊進行交易會太慢而且太貴。
相反,他們使用“ 狀態通道” :
愛麗絲在以太坊的智能合約中投入了500 美元。

每當愛麗絲想給鮑勃1 美元時,她都會簽署一條消息,表明她想給鮑勃多少錢。她一直在簽署消息,直到鮑勃準備好“ 兌現” 他的資金。
在這種情況下,以太坊區塊鏈僅用作結算層來處理一次性付款的最終交易,這減輕了底層區塊鏈的負擔。
首先
首先首先
其次,大部分交易都發生在鏈下,這意味著付款可以即時處理,因為兩方之間的鏈下更新不需要額外的時間來處理和驗證區塊鍊網絡。
其次
,支付產生的費用較低,因為我們只需要在打開和關閉狀態通道時進行鏈上交易。這意味著大多數交易都是在鏈下進行的,費用要低得多。
那麼,為什麼這不是最終的解決方案呢?好吧,狀態通道可以做的事情是有限制的。
例如,我們不能使用狀態通道與不屬於狀態通道的人進行交易,我們也僅限於狀態通道中可能的狀態更新類型。像Uniswap 這樣的複雜應用程序不能在狀態通道中使用,因為當我們在Uniswap 上交換兩個代幣時,智能合約會自動執行一系列中間步驟來進行交換,這些步驟沒有授權用戶在每個步驟上簽字。
最後,狀態通道需要可以定期監視網絡的人(或將此責任委託給其他人)。這確保了您的資金安全,這又增加了一層複雜性和低效率。
側鏈
一級標題
側鏈

側鏈也已經存在很長時間了,而且很容易理解。簡而言之,側鍊是與主區塊鏈“ 掛鉤” 的獨立區塊鏈。

當我們將一個區塊鏈“掛鉤”到另一個區塊鏈時,這意味著我們可以在兩個區塊鏈之間移動資產。 “單向”掛鉤是我們將資產從主區塊鏈移動到側鏈的地方,而不是其他方式。這是通過將主區塊鏈上的代幣發送到不可使用的地址來“燒掉”代幣,然後在側鏈上“ 鑄造” 等價的代幣來實現的。

那麼,“ 雙向掛鉤” 是我們可以將資產移入和移出主區塊鍊和側鏈的時候。這需要在主鏈上“ 鎖定” 我們的代幣,然後在側鏈上“ 鑄造” 等量的代幣。當我們想要轉換回原始代幣時,我們會“ 燒掉” 側鏈上的代幣,然後解鎖主鏈上的代幣。
因此,側鍊是當我們創建一個與主區塊鏈雙向掛鉤的新區塊鏈時。當我們想要更快交易時,我們可以將我們的資金從主鏈轉移到側鏈並在那裡進行交易。完成後,我們將資金轉移回主鏈。

比特幣側鏈的一個例子是Liquid Network。 Liquid Network 與比特幣掛鉤,允許更快、更便宜的比特幣支付。另一個流行的例子是Polygon,它是與以太坊掛鉤的側鏈。

總體而言,側鍊是可擴展的,因為它們通常通過使用允許可擴展性的不同共識算法在去中心化和/或安全性方面進行權衡。
一級標題
Plasma
一級標題

一級標題
Plasma 是另一個“ 第2 層” 解決方案,可以讓我們將交易移出基礎層。在我們進入Plasma 之前,重要的是要注意,隨著時間的推移,Plasma 已經進行了多次迭代,每一次都有自己的權衡取捨。您可以查看Plasma世界地圖,其中列出了人們為解決Plasma帶來的挑戰而嘗試創建的許多不同類型的設計,有很多!

當然,為了這篇文章的目的,我必須概括Plasma 的概念,而不是過多地關注個別的實現。如果您想深入挖掘,請務必查看世界地圖。
那麼,什麼是Plasma? Plasma 本質上是一系列在主區塊鏈之外運行的智能合約(或“ Plasma鏈” )。

Plasma 鏈就像一棵樹的樹枝,以太坊是主幹,每條Plasma 鏈都是一個分支,每個分支都被視為具有自己的區塊鏈歷史和計算的區塊鏈。
“ 根區塊鏈”(即以太坊區塊鏈)使用稱為“ 欺詐證明” 的東西來強制Plasma 鏈中狀態的有效性。欺詐證明是我們提供某些數據的一種機制,任何人都可以使用數學證明來確定數據是否無效。

每個Plasma 區塊鏈不需要將交易數據發佈到根鏈上。相反,每個Plasma 鏈都有一個“ 操作員”。這可能是一個中心化的參與者,一個代表多個人的多重簽名,甚至是一個參與成為運營商的委員會。 Plasma 鏈的運營商提交Plasma 鏈上發生的轉移的Merkle 根。

注意:如果您不知道Merkle(默克爾樹)樹的工作原理,那麼我強烈建議您在繼續之前閱讀此解釋器。在高層次上,Merkle 樹讓我們可以獲取一個大型數據集(例如,一個塊中的交易)並生成一個代表整個數據集的單個根哈希。
稍後,我們可以很容易地證明來自大數據集的一條數據(即,來自一個事務塊的單個事務)存在於該數據集中,只需提供通往該數據的分支。
如果有人試圖證明欺詐交易的存在,那麼哈希值將不匹配,我們會立即知道。
好的,回到Plasma。
每個Plasma 鏈都在提交發生在其上的轉移的Merkle 根。當用戶稍後試圖將他們的資產從Plasma 鏈移回根鏈時,用戶可以提交將資產發送給他們的最新交易的Merkle 分支(最近的交易足以讓我們知道當前餘額在等Plasma上)。這開始了一個挑戰期,任何人都可以嘗試證明用戶的Merkle 分支是欺詐性的。如果Merkle 分支存在欺詐,則可以提交欺詐證明。由於根區塊鏈僅跟踪Merkle 根,因此與那些發生在主鏈上的交易相比,它必須處理的數據要少得多。這顯著減少了存儲在根區塊鏈上的數據量,並使我們能夠擴展根鏈。”。


此外,如果某個特定的Plasma 鏈受到惡意攻擊,人們可以從腐敗的子鏈中“
等Plasma比狀態通道更有利,因為您可以將資產發送給任何人,而使用狀態通道,您只能與狀態通道中的人進行交易。此外,等Plasma相對於側鏈的好處是等離子鏈由以太坊保護。
另一方面,等Plasma具有兩者(Plasma 與側鏈)的根本區別在於側鏈有自己的安全模型。他們有自己的共識機制和一組單獨的節點來驗證狀態。即使側鏈受到攻擊,主鏈也不會發生任何事情,反之亦然。如果側鏈發生攻擊,主鏈無法保護用戶。另一方面,等Plasma具有
依賴的安全模型
,每個Plasma 鏈都可以使用自己的機制來驗證交易,但它仍然使用以太坊區塊鏈作為最終的真相仲裁者。在拜占庭攻擊的情況下,等離子鏈用戶可以退出到以太坊。
但是Plasma 有幾個缺點,使其成為一個平淡無奇的可擴展性解決方案。

首先,當用戶想要將他們的資產從Plasma 合約轉移到以太坊主區塊鏈時,他們需要等待7 天。這足以讓人們驗證提款交易不是欺詐性的。如果是,他們可以使用Plasma 鏈上的Merkle 樹構建欺詐證明。
其次,每個Plasma 鏈都需要一個運營商將Merkle 根承諾發佈到主鏈。這需要我們依靠第三方來準確地將Merkle 根承諾發佈到鏈上。不幸的是,運營商可以執行所謂的“數據可用性攻擊”,他們出於惡意原因拒絕將某些交易發佈到主鏈上。
在這種情況下,運營商可以說服網絡接受無效塊,而無法證明無效塊。這可以防止其他用戶知道區塊鏈的準確狀態。這也阻止了人們創建區塊或交易,因為他們缺乏構建證明的信息。與欺詐不同,數據可用性攻擊並不是唯一可歸因的。我們無法知道攻擊正在發生。
匯總
匯總
匯總
一級標題
匯總
就像狀態通道、側鍊和等Plasma一樣,匯總是“第2 層”解決方案。事實上,rollup 與Plasma 非常相似,因為我們在鏈下批量處理交易並將更新發佈到主區塊鏈。然而,關鍵的區別在於,通過匯總,我們還將每批交易的交易數據發佈到鏈上。使用Plasma,我們只發布Merkle 根。
換句話說,通過匯總,我們在鏈下進行交易處理,但我們在鏈上發布交易數據。我們在鏈上發布的數據量是本地驗證匯總交易所需的最小數量。通過將數據上鍊,任何人可以檢測欺詐、發起提款或親自開始生成交易批次。因此,匯總比Plasma 鍊或側鍊為我們提供了更高的安全保證。
rollups 和Plasma 之間的另一個關鍵區別是我們不必擔心數據可用性問題。畢竟,我們將交易數據發佈到主鏈上。這是一個巨大的勝利。
使用匯總,我們有效地在匯總層內運行EVM 的一個版本。這意味著以太坊上任何可能的交易都可以在匯總中執行。

這就引出了一個問題:如果我們仍然在鏈上發布交易數據,那麼這將如何擴展第1 層?擴展性不還是受限於主鏈的數據帶寬嗎?EVM) 處理並與狀態交互(例如存儲、賬戶餘額等)。這是昂貴的。
一級標題
一級標題
一級標題
仔細查看匯總

現在,讓我們看看匯總是如何在幕後工作的。

主鏈上有一個“匯總合約”,用於維護匯總層的當前狀態。這包括在其上進行交易的用戶的賬戶餘額和其中存在的合約的智能合約代碼。簡而言之,匯總合約跟踪匯總層中交易的“狀態根”。
“狀態根”由一個鍵值映射組成,其中鍵是地址,值是賬戶。每個賬戶最多有4 個屬性:餘額、隨機數、代碼(僅適用於智能合約)和存儲(僅適用於智能合約)。

當事務發生在匯總層時,會發生狀態更改。當然,這意味著狀態根也需要更新。但不是為每筆交易更新狀態根,而是將交易“批量”發送到主鏈上的匯總合約。該批次將包括該批次事務的壓縮形式和一個更新的狀態根,該狀態根表示該批次事務處理後的數據。
主鏈上的匯總合約檢查批次中的前一個狀態根是否與其當前狀態根匹配——如果匹配,它將狀態根切換到新的狀態根。
由於發布的交易數據實際上並沒有被EVM 解釋,我們沒有訪問或寫入狀態——這太昂貴了。相反,我們將壓縮的交易數據作為“calldata”參數發佈到匯總合約。
這就是為什麼這很整潔,在Solidity 中,calldata(是一種數據結構存儲方式)是最便宜的存儲形式。事實上,作為calldata 參數傳遞的參數根本不會存儲在以太坊的狀態中,這意味著我們避免了很多gas 費用。同時,以太坊節點仍然可以在創建區塊時存儲交易數據(在歷史日誌中)。
再一次,這引出了一個問題:既然我們只是將交易數據發佈到主鏈而不是執行鏈上的交易,我們怎麼知道發佈在主鏈上的交易數據和狀態根不是欺詐性的?
一級標題
一級標題
一級標題
樂觀匯總
您可能可以根據名稱猜出樂觀匯總是什麼,當一批新的交易“ 匯總” 到主鏈時,每批的狀態根和哈希都會被發布,但我們實際上並沒有驗證交易是否正確執行,至少在發佈時沒有。
通過這種方式,我們“ 樂觀地” 將新的狀態根和交易數據發佈到主鏈上的匯總合約。當某人將新的狀態根發佈到主鏈時,匯總智能合約會簡單地接受他們的話。
如果有人發現向匯總智能合約發布了無效的狀態轉換,他們可以生成“ 欺詐證明”。
欺詐證明包括:
“ 預先狀態”的證明,或者,在應用交易之前事情的樣子
工作流程很簡單:這個欺詐證明被發佈到主鏈上的匯總合約中。然後匯總合約驗證證明並將交易邏輯應用於預狀態。然後,它將結果與後狀態進行比較。如果存在不匹配,則證明發布批次的人沒有正確應用交易。然後,智能合約會還原該批次的交易以及之後的所有批次。
一級標題
一級標題
一級標題
ZK 匯總
這裡的魔力在於ZK-SNARK 的工作方式。它們讓我們在不洩露數據的情況下生成底層數據的證明。任何人以後都可以驗證數據是否存在,即使他們無權訪問數據本身。
正文
哪個更好?
成本
成本
成本
成本
“ 成本” 在抽像中並沒有太大的意義,但是當我們將其分解時,樂觀和ZK 匯總的性能開始出現分歧。
速度
速度
速度
一級標題
速度
樂觀匯總很慢。通常,用戶必須等待大約一周才能提取他們的資產。如果用戶試圖在匯總層上提取他們實際上並不擁有的代幣,這可能會給某人足夠的發布欺詐證明的機會。
ZK 匯總很快。用戶通常等待不到10 分鐘來提取他們的資產。我們只需要等到下一批來處理提款,因為所有的匯總狀態都已經過驗證。
旁注:有一些方法可以通過使用“快速提款”來繞過這個一周的等待期。這是通過流動性提供者完成的,他們在主鏈上維護一個“ cookie jar ” 資金。當用戶快速提取資金時,他們給流動性提供者一張借條用於匯總中的資金,然後他們立即獲得主鏈上的流動性提供者的付款(收費)。
稍後,當一周期限結束並且用戶從匯總層取回資產時,用戶可以將欠他們的資金發送給流動性提供者。流動性提供者甚至可以選擇運行一個驗證節點來驗證用戶在匯總上的交易,然後再在主鏈上向他們發放資金,從而進一步降低他們的風險。
然而,這種“ 快速提現” 方案對於NFT 來說是不可能的,因為任何NFT 中只有一個存在,並且流動性提供者無法在鏈上創建相同的NFT。
複雜
樂觀匯總更簡單,欺詐證明的概念由來已久,因此解決方案相對簡單。
樂觀匯總更容易廣泛化,工程師們已經構建了一個與EVM 兼容的虛擬機,稱為OVM(樂觀虛擬機),它允許樂觀匯總處理可以在以太坊上處理的任何事務。
可擴展性
可擴展性
可擴展性
ZK 匯總更具可擴展性:安全
安全
安全
安全樂觀匯總不太安全,樂觀匯總依賴於加密經濟學來確保鏈的安全性。換句話說,他們必須激勵人們觀看發佈在鏈上的批次並檢測欺詐行為。
ZK 匯總更安全,
這兩種解決方案都處於起步階段。但是樂觀匯總更接近於被採用,因為它們不太複雜並且可以用於當今的通用計算。另一方面,ZK rollups 需要一些時間才能趕上,但許多工程師會認為ZK rollups 是一項卓越的技術。畢竟,它們依賴於數學而不是加密經濟學,而且它們比樂觀匯總更具可擴展性。
一級標題
一級標題
一級標題

匯總的聰明之處
在我們討論匯總的一些持久挑戰之前,讓我們看一下匯總使用的壓縮技巧如此高效。
隨機數:在典型的以太坊交易中,我們包含隨機數以防止雙花攻擊。 Rollups 完全省略了它們,因為它們可以使用區塊鏈的先前狀態重新計算。通過這種方式,匯總盡可能用計算替換數據。
Gas 價格:與其以gwei 計價(其中1 gwei 是10^-9 ETH),不如將Gas 價格限制在固定的價格範圍內,從而顯著減少在交易數據中記錄Gas 價格所需的存儲量,這真的加起來了!
費用:同上。
To:一個地址是20 字節長,加上1 個字節用於RLP 編碼。匯總可以存儲索引到地址的映射,而不是包括地址,並且只在“ to ” 字段(例如,1234)中包括索引。這就像將坐標留給目的地,而不是渲染整個位置本身。
正文
正文
正文
一級標題
一級標題
一級標題
我們可以通過一些粗略的數學來看看理論上的TPS 將使用匯總。
每字節存儲在鏈上的數據成本:16 gas
每字節存儲在鏈上的數據成本:16 gas
每字節存儲在鏈上的數據成本:16 gas
每字節存儲在鏈上的數據成本:16 gas
每個塊的最大字節數:~781,000 字節(1250 萬氣體/每字節16 氣體)
使用匯總進行ETH 傳輸所需的數據字節:12 個字節(參見上一節中的數學)
每塊交易:~65,000(每塊約781,000 字節/每個ETH 傳輸12 字節)
以太坊的平均出塊時間:13秒
每秒交易數:~5000 TPS(每塊約65,000 筆交易/每塊13 秒)
當然,這個數學假設一個區塊中的所有交易都是ETH 轉賬,並且一個區塊中除了批量匯總交易之外沒有其他任何東西,這是極不可能的。大多數區塊將包含各種交易,包括一些第1 層交易,這些交易將花費超過16 個氣體費用。此外,如果這些是ZK-rollup 批次,則將不包括在鏈上驗證SNARK 證明的成本,這大約是500,000 gas。
儘管如此,這為您提供了使用匯總的TPS 的起點,5,000 遠不及Visa 顯然擁有的65,000 TPS ,但它比今天的TPS 以太坊要好得多。
破碎的流動性
Rollup 技術是作為獨立項目創建的,而不是由以太坊協議本身創建的。因此,將會有幾種不同的匯總技術並行存在,這就是流動性斷裂的地方。
隨著流動性從主鏈轉移到匯總,它會“ 破壞” 不同匯總網絡的流動性。儘管一旦有跨匯總通信的機制就可以解決這個問題,一些聰明的工程師已經在研究這些機制!
降低可組合性
在以太坊上構建的主要好處之一是可組合性。在以太坊上構建的每個新協議都像樂高積木一樣,其他協議可以輕鬆地在其上構建。例如,這就是讓DeFi 如此強大的原因。它讓我們創造了金錢樂高積木。
當應用程序和流動性轉移到匯總時,我們會失去一些可組合性。畢竟,在匯總層和主鏈之間傳遞消息和事務並不像在基礎層的上下文中那樣容易。
但解決這個問題可能只是時間問題。我當然可以看到一個存在於不同匯總上的智能合約仍然可以相互通信的世界。與往常一樣,我們離解決這些問題只有幾個聰明的工程師。
集權

我們忽略了討論誰實際負責將新批次發佈到主鏈的部分,所以讓我們回到這個話題。
大多數匯總依賴於“ 定序器” 來完成這項工作:定序器是一個節點,它對交易進行批處理並將結果發佈到鏈上的匯總合約。對於Arbitrum、Optimism 和StarkNet,sequencer 是它們自己運行的單個節點。
測序儀的去中心化將如何運作?有幾種方法。一方面,我們可以創建一個類似Proof-of-Stake 的系統,在該系統中,測序人員必須質押代幣才能有機會提出下一批。或者我們可以進行Delegated-Proof-of-Stake,其中一個排序器被選舉出來,如果它做得不好,可以不被選舉。
一級標題
一級標題
一級標題

並排比較

呸。希望您對匯總有更好的理解——以及為什麼以太坊將其押注(和分片!)作為可擴展性解決方案。當然,Rollups 坐在它之前的巨人的肩膀上——如果沒有側鏈、狀態通道和Plasma,我們就不會擁有它。
使用去中心化、安全性和可擴展性的“三難”框架將匯總與其他第2 層解決方案進行比較也是有益的。除了我將添加一個額外的維度:通用性。多年來,我們已經意識到第2 層解決方案的通用性非常重要,這樣它就可以用來做任何可以在主鏈上做的事情。
這清楚地表明,Rollups 在不犧牲去中心化、安全性和通用性的情況下為我們提供了適度的可擴展性。
PS..
然而,權衡是可擴展性。因為我們仍然在鏈上存儲數據,所以與在鏈下存儲數據的第2 層擴展解決方案相比,我們的可擴展性受到限制。此外,在短期內,匯總依賴於集中式排序器,這降低了安全性。但這是一個短期問題,隨著時間的推移,rollup 很可能會分散排序器,使其成為優於Plasma、側鍊和狀態通道的技術。
結論
結論
結論
一級標題
結論


