原文:《 2022年度回顧| 技術篇:突破公鏈不可能三角的努力

作者:萬向區塊鏈首席經濟學家辦公室崔晨 審核:萬向區塊鏈首席經濟學家鄒傳偉

2022年接近尾聲,駐足回看行業這一年的跌宕起伏,無論是技術的突破,應用的創新,還是生態的興衰,皆成為了行業發展的歷史註腳。如往年一樣,萬向區塊鏈於年末推出重磅年度回顧系列文章:《公鏈技術篇》、《應用篇》和《監管篇》,以期記錄當前行業發展的縮影。

公鏈的不可能三角問題一直是製約公鏈技術發展的阻礙,進而影響到鏈上應用的性能。一直以來,公鏈的發展目標都集中在如何突破不可能三角的問題上,或者在不可能三角中找到最佳平衡。公鏈的創新體現在以太坊更新的路線圖、EVM兼容公鍊和模塊化公鏈、Solana和Aptos為代表的高性能公鍊等。下文將針對不可能三角和交易流程角度,解讀不同不可能三角解決方案的區別。

對不可能三角的理解

不可能三角的概念

公鏈最基本的功能是在鏈上記錄信息且維護信息安全,即在開放的網絡中(無信任)防止信息被篡改(回滾),依賴的是密碼學、共識機制、分佈式網絡等底層組件。密碼學包括公私鑰密碼學和哈希函數等,保證驗證簽名的正確性和鍊式結構規則。

以太坊創始人VitalikButerin在2017年的一篇博客文章中提出:在可擴展性、安全性和去中心化這3個特徵中,區塊鏈系統最多同時具備兩個。在討論不可能三角對公鏈影響以及公鏈在不可能三角上的突破時,我們需要理解這三者的定義和對系統的影響。

可擴展性衡量公鏈支持交易速度和規模的能力,體現在交易從提出到被確認的時間。交易處理速度慢的公鏈難以實現很多應用功能,例如即時支付,這會限制應用的範圍並影響用戶體驗。

安全性衡量系統抵禦攻擊的能力,代表系統在面對故障時的可靠性,主要體現在容錯性和修改共識的難度。系統容錯性低會讓系統易於攻擊,修改共識會改變已確認的交易,相當於篡改過去的交易記錄。

去中心化衡量公鏈節點的分散程度,由於公鏈不是通過可信第三方建立的,只能由分佈式的點對點網絡維持網絡系統運營,在此基礎上,公鏈節點的分散性提供了系統的信任基礎。結合密碼學和共識機制,公鏈才能發揮正常的功能。去中心化同時代表了用戶參與交易驗證的權力,也體現出用戶在公鏈系統中的話語權。

去中心化體現為兩個層次:第一以節點數量衡量,節點的准入門檻越低,數量越多,分散程度越高;第二以實際控制者衡量,如果公鏈中存在例如礦池類的角色,實際上一個角色控制多個節點,會給系統帶來中心化的交易審查等問題。

總的來說,公鏈不可能三角所衡量的指標和具體含義如下表所示。

2022年度回顧(技術篇):突破公鏈不可能三角的努力

表1:不可能三角衡量的指標和具體含義

從交易流程角度理解不可能三角及優化

區塊鏈上的交易流程可以簡化成以下四步:

①使用者簽署交易並廣播給節點,添加到未確認交易池;

②共識節點驗證和執行交易,並將這些交易打包成區塊;

③區塊廣播給網絡中的其他節點;

④其他節點驗證區塊,並儲存添加到區塊鏈後。

這幾步驟從不同角度影響公鏈的三種指標。

1、可擴展性

可擴展性會受到第②③④步的影響。在第②步中,交易的驗證、執行和共識速度會影響到可擴展性。區塊鏈的賬戶模型、虛擬機和共識機制等因素都會影響完成第②步的速度。以更改共識為例,如果以減少共識節點的方式縮短共識時間,就會影響系統的去中心化程度。

在第③步中,如果節點數量多,那麼在各節點中同步的速度也會變慢。以擴大區塊容量的思路提高可擴展性時,很難在原計劃的時間內將區塊廣播給所有節點。在沒有網絡完全同步的情況下,在不同的區塊後共識處理交易,會導致分叉出現,進而影響網絡的安全性。而如果通過減少節點數量加快同步速度的話,會影響系統的去中心化。

第④步意味著網絡交易的最終確認,如果在收到區塊後節點能夠快速驗證,那麼可以提高可擴展性,但面臨損害安全性和中心化的問題是類似的。

2、安全性

在第②③④步中被攻擊的難度,也就是被惡意節點控制的難度會影響系統的安全性。尤其是在第②步中體現為共識機制的性能,如果共識機制容錯率低,或者容易被惡意者操縱,就會降低系統安全,或者導致節點趨於中心化。

3、去中心化

分佈式的節點是公鏈底層基礎,越多節點加入代表越多節點認同公鏈,並且避免單點故障帶來的風險,也能提高惡意者的攻擊成本,因為在相同容錯率的情況下惡意者需要控制節點數量變多了。擴大區中心化程度要求節點的進入成本更低,但像上文提到的,在相同安全條件下提高節點數量會降低系統的可擴展性。

從節點的實際控制者方面理解去中心化時,重點關注的是“審查交易”的問題。節點負責打包交易時,如果按照自己喜好挑選交易和排序,會導致一些交易在提出之後很難執行以及得到鏈上確認。也就是影響第①步提出的交易難以在第②步中被挑選驗證。

總的來說,公鏈在交易流程的幾步中都可以做出改善和優化,但礙於不可能三角的影響,在某一方面進行優化時,總會伴隨著至少另一方面的負面影響。公鏈需要在不可能三角中找到平衡點,以滿足更多應用場景。下文就是在各環節不同公鏈的優化嘗試,包括以太坊的最新路線、以太坊同質公鍊和高性能公鏈。

以太坊:應用新技術和新框架優化不可能三角

在以太坊最近公佈的路線圖中,可以看出一些在不可能三角以及用戶體驗方面的改善。

2022年度回顧(技術篇):突破公鏈不可能三角的努力

圖1:以太坊最新路線圖

Merge:共識機制由PoW轉化為PoS

共識機制主要影響區塊的產生和驗證同步過程,在以太坊在轉化為PoS後,採用的是LMD GHOST + Casper FFG公式機制,實現了兩個目標:在每個slot(12秒)內產生一個區塊,並進行相應的見証投票,在兩個epoch(一個epoch包括32個slot)後被確認最終性,回滾區塊需要銷毀至少三分一的鏈上質押的ETH數量。

在以太坊的Merge階段規劃中,以太坊還計劃將最終行確認時間縮短到單個slot,交易確認不再需要幾分鐘的等待時間,這會達到更高效率,提升用戶體驗。但達成單個slot確認需要改善共識算法,可能會減少降低攻擊鏈(改變共識)的成本,以及減少驗證的節點數,影響公鏈的安全性和去中心化。

Surge:Rollup和Danksharding配合提高交易處理速度

以太坊通過Layer 2手段進行擴容,特指Rollup的擴容方式,二層網絡將主網上的內容放在鏈外執行,再將可驗證的結果傳回到鏈上。目前以太坊中的Rollup仍以Optimistic和ZK兩個路線為主。

在Optimistic Rollup中,由於通用性的設定,在用戶數量和整體鎖定價值佔據了先發優勢。 Optimistic在排序器方面有很多爭議,因為目前Arbitrum和Optimism的排序器都是以中心化方式的方式出塊,很可能造成交易審查問題。 ZK Rollup重點專注兩個問題,第一是zkEVM的構建,在兼容EVM和完全獨立構建虛擬機之間做選擇,也是在實用性和性能做選擇。第二是加速零知識證明的速度,通過硬件設備生成零知識證明也是一種選擇。為了進一步降低鏈上的數據可用成本,這兩類Rollup都出現了鏈下數據存儲的模式,適用於需要高頻交互的場景,不過提高了對節點的信任成本。

Rollup看似解決了公鏈的不可能三角問題,但Rollup存在兩個固有問題。第一,Rollup的信息處理能力存在上限,尤其是Rollup依賴底層網絡實現,底層網絡的承載能力決定了Rollup中的運行能力;第二,鏈上的不同Rollup會帶來互操作問題。

為了讓Rollup發揮更大功能,以太坊的EIP 4844(proto-danksharding)提出將區塊容量擴大出blob數據塊,以承接Rollup傳回主鏈上的數據。擴大區塊容量雖然提高了擴展性,但大數據的共識和同步同樣會帶來問題。因此在Surge階段,還計劃上線DAS(數據可用性抽樣,Data Availability Sampling)。

DAS可以讓節點無需下載和驗證全部數據,而是將數據分成幾塊,節點只需要隨機下載其中的一部分來驗證數據是否丟失即可。 DAS的檢測準確度將通過糾刪碼提高,糾刪碼能夠擴充額外數據用以恢復丟失的原始數據,是一種數據冗餘機制,糾刪碼擴充數據的有效性由密碼學機制KZG承諾保證。

假設共有4個數據塊等待驗證,節點有25%的概率發現原始數據塊丟失了1個。使用糾刪碼將數據擴充一倍至8個數據塊後,超過50%的數據丟失則無法恢復原始數據,也就是節點發現數據丟失的概率超過了50%。隨著驗證節點數量的增加,發現數據丟失的概率也會增加。假設共有n個節點進行隨機抽樣,數據丟失50%時,只有1/2n的可能性恰好所有節點都抽取了未丟失的數據塊。因此在大量節點存在的情況下,DAS的驗證方式足以保證數據安全。

所以綜合來說,以增加區塊容量的方式提高整體區塊的可擴展性,就會同步效率降低影響系統安全性。而為了提高同步的速度,減少節點存儲量,保證足夠的去中心化,只能做出機制上密碼學的改善,但整體上還是影響了網絡的安全性。

節點的角色提議者和構建者分離

以太坊使用PBS(提議者和構建者分離,Proposer/Builder Separation)的方式,將節點的工作任務分成兩個角色,分別是提議者(Proposer)和構建者(Builder)。構建者負責構建區塊主體和提交出價,提議者只需要執行出價最高的區塊,並且不知道區塊內的交易內容,以減少審查交易。

Danksharding的實施會對構建者有更高帶寬資源的要求,構建者會因為專業化的要求成為中心化組織,而提議者是一個廣泛的去中心化群體,用以平衡中心化風險,只要有一個誠實的構建者存在,以太坊區塊就能正常出塊。為了防止構建者審查交易,提議者會傳遞crList代表提議者要求打包的交易列表,構建者需要使用crList中的交易填滿區塊。這是一種削弱MEV的機制,同時在大區塊模式下,讓節點分成兩種角色,保證足夠的去中心化。

Verkle樹、歷史過期和多維度費用市場

龐大的歷史數據會影響以太坊的去中心化,尤其是日益增長的狀態數據會導致各種效率低下的問題。為了不影響去中心化,同時實現上文提到的可擴展計劃,需要一些機制保證能夠達到同樣的安全標準,以及實現系統更有效率的運行。

Verkle樹是一種更簡單的數據存儲模式,相對於現有的Merkle樹來說所需要的證明空間更少,這是由密碼學技術做出的改善,配合歷史數據過期機制減少節點的存儲壓力,繼續降低節點門檻。

歷史數據過期機制可以解決數據膨脹的問題,客戶端無需儲存超過一定時間後的數據。 Proto-Danksharding也可以實現在一段時間後自動刪除blob數據的獨立邏輯,因此大區塊不再成為擴容的阻礙。這不意味著區塊數據永久丟失,在數據刪除之前,已經留給足夠多的時間給需要數據的用戶備份。網絡中也存在保存全部歷史數據的節點,這些角色包括專門的協議,以太坊Portal Network、區塊瀏覽器和數據服務商、個人愛好者和數據分析的學者會保存全部節點數據。

在多維度費用市場中,每種資源都規定目標值和容量上限,正如EIP 1559實施對gas的要求一樣,資源的使用程度關係到資源的定價。以太坊將要從EVM執行、交易calldata、見證數據和存儲容量這幾方面開始進行更細分的定價和收費,包括Proto-Danksharding中即將上線的blob區塊。最終目標是實現每個單獨操作碼的定價,將提高費用統計時的用戶體驗。

綜上所述,以太坊迫切需求性能提升,提出了Rollup和Danksharding的思路提高性能。同時又為了讓更多Rollup數據能廉價、不臃腫地存儲,提出了數據可用性的解決方案,並弱化它帶來的安全性降低的問題。以太坊仍然要修補自己的技術債,通過PBS、歷史和狀態過期等規劃,繼續保護節點的去中心化。以太坊借助新技術和新框架的引入,在保證去中心化和安全性的前提下,實現最大化的可擴展性。

以太坊同質公鏈:在不同層解決不同的不可能三角

EVM兼容鏈

在過去的幾年中,以太坊犧牲了可擴展性來換取安全和去中心化,表現為以太坊是全世界擁有節點數量最多的公鏈項目,並且在運行的這幾年過程中沒有經歷過大規模的網絡中斷事件,網絡不會因為個別節點的故障和退出而中斷,證明了網絡擁有足夠的冗餘備份。與此同時,節點需要很長時間的共識同步時間,交易的處理速度較慢並引起了交易手續費的上升。

簡單區分,以太坊主網的結構包括執行層和共識層,執行層指的是節點在以太坊中執行用戶指令的過程,包括轉賬和EVM。在大量節點存在的情況下,共識及同步勢必會受到影響。因此最簡單的提升以太坊性能的方式就是修改其共識層,減少共識同步的速度以實現更快的效率。

這一點從以太坊同質公鏈(即各類EVM兼容鏈)的競爭中就能看出這一點。尤其是在執行環境相同時,應用的遷移更為容易。因此可以看到採用以太坊架構的同質化公鏈採取了這樣的方式,它們修改了以太坊的共識方式,減少了節點數量並縮短共識時間,但保留了執行層的功能。雖然可能帶來中心化的問題,但由於迅速承接以太坊上應用的外溢需求,替代以太坊成為應用類項目的發行地。比如BSC、Polygon和Avalanche,都是EVM兼容鏈的代表公鏈,它們的共同點都是大幅減少了網絡中參與共識的節點數。

模塊化公鏈

以太坊的競爭公鏈中出現了“模塊化公鏈”,將以太坊的功能分層,以模塊化的方式運營。這其實也是一個代表性思路,不可能三角雖然存在,但是可以在其中找到了一個折中點。

不同側重的應用會選擇不同側重的公鏈,因為它們對性能、安全和去中心化的需求是不同的。例如隱私公鏈不允許交易審查存在,它願意付出額外的成本去保護它的去中心化。承載金融應用的公鏈對於安全性重視更高,而遊戲類公鏈會要求極高的性能體驗,會放低對去中心化的要求。

因此模塊化公鏈將需求的每一層抽像出來,將區塊鏈分為:共識層、執行層、結算層、數據層,不同層都可以有多種解決方案,而又根據鏈的不同需求,直接整合這些解決方案,這樣實現最佳的效果。同時各層方案是模塊化的供公鏈切換,以此平衡應用需求,變相突破了不可能三角的限制。

以太坊非同質化公鏈:重新思考不可能三角中的側重方向

由於以太坊的性能瓶頸問題,新的非同質化公鏈幾乎所有都選擇了性能優先的規劃,配合PoS類共識,又引入新技術強化它的性能優勢或者彌補安全性的缺陷。

Solana首先提高了區塊的容量,區塊承載的數據量擴大了十倍。其次,為了減少每次同步的節點數,Solana會提前公佈負責的節點名單,每次交易只需要傳輸給負責人(Leader),其他驗證者只需驗證自己負責的部分,也不需要驗證整個區塊。

除此之外,Solana在執行交易前會預先判斷,如果滿足條件會採用並行計算來提高交易的處理速度,如果是必須串行處理的,會轉為比以太坊效率更低的運行方式。可以看出,Solana為了追求可擴展性,犧牲了安全和去中心化,當領導人節點故障,或者在判斷是否要並行處理失誤時,就會造成網絡中斷的問題。

Aptos號稱是新一代高性能公鏈的代表,它以不同方法延續了以太坊公鏈上的各種功能。 Aptos採用AptosBFT共識機制,這是一種基於BFT的共識機制,只需兩次網絡往返即可驗證和提交區塊,無需多輪投票,並且可以快速實現最終確認性。 Aptos區塊只包括交易記錄的摘要,不會包含所有交易記錄信息,因此每個區塊中包含的交易數量會更多。它將交易分組為批次,並在達成共識後合併進區塊,在後續的執行和存儲中都是批量處理的,這個過程中可以提高效率。

Aptos同樣採用了並行處理的方式,採用了Block-STM 引擎,默認對所有事務採用並行處理的方式,發生衝突時不成功的交易會重新執行,這需要依靠調度程序,防止同一事務被同時執行,以及重新執行事務後獲得更多安全確認。除此之外,快速的狀態同步也是Aptos考慮的問題。

狀態同步指的是在交易完成進行狀態轉化後,將狀態後的結果同步給其他節點的過程。狀態同步的低效會導致大多數節點無法同步到最新的狀態信息,因此影響用戶體驗,並且新節點難以加入共識過程,影響網絡的去中心化。 Aptos提供了多種狀態同步方式,包括使用RocksDB或者節點通過驗證者產生的狀態變化的默克爾證明,跳過交易執行階段來同步狀態。這種方式減少了節點同步時所需要的大量計算資源,但需要建立在使用大量網絡資源的基礎之上,Aptos建議共識節點在雲服務器上運行,個人電腦很難達到其要求。

Aptos認為以太坊的虛擬機也是它的瓶頸,以太坊沒有辦法再大規模更新它的語言,但是Aptos沒有這樣的技術包袱。 Aptos和SUI都採用了Move語言,Move的創新在於將資產作為資源處理。在創建、使用和銷毀資源時有一定限制,因此不會發生以太坊中常見的重入攻擊問題,能夠讓更安全地構建智能合約,並且讓虛擬機並行處理多個事務,根據存儲資源收取租金也成為可能。

總結來說,新公鏈認為可擴展性優先於安全性和去中心化,這和以太坊是不同的。因此,它們重新選擇了不可能三角中的側重方向,這樣的改動對於用戶的感受是非常明顯的,Solana上發生的宕機問題也是不可避免的。

思考與總結

共識機制和分佈式的節點網絡從兩方面保證了公鏈的可靠運轉:

第一,保證系統的容錯性:共識機制有一定的容錯性,也就是故障節點佔比在一定比例之下時,系統依然可以驗證信息。自由加入的分佈式節點能夠補充新的正常節點。

第二,提高系統的攻擊成本:共識機制代表節點對已有區塊狀態達成一致意見的方式,掌握共識機制的控制權的一方代表作惡者擁有修改共識(修改賬簿記錄)和審查交易(決定交易排序和是否打包上鍊)的權力。共識機制和分佈式節點能夠從規則上增加攻擊的難度和成本。

在此基礎上,區塊鏈的不可能三角問題可以這樣理解:

以太坊本身已經基本成型,較難另起爐灶做出改變,因此以太坊在盡最大努力引入新的技術(密碼學技術、單槽最終性算法)和新的框架(Rollup、數據可用性)來優化它的性能瓶頸,希望憑藉新技術和新框架,使其在去中心化和安全性變大不大的基礎上,大幅提升性能,進而優化不可能三角。

以太坊同質化公鏈, EVM公鍊和模塊化公鏈則靈活得多。對以太坊層級的拆分,可以讓它們尋找自己的“社會分工”來匹配不同的應用,例如承載金融、遊戲、隱私等等。根據應用的需求,反推出不同層技術框架的需求,這幫助它們在不可能三角中找到了新的平衡點。

以太坊的非同質化公鏈,因為沒有技術包袱,則可以徹底另起爐灶,使用全新的架構和技術手段。與以太坊在足夠去中心化和安全的前提下追尋性能不同(以太坊同質化公鏈介於兩者之間,但是也更多地傾向於性能),它們不約而同地都選擇了性能優先的路徑。這樣的好處是用戶非常直觀地感受到了它們的進步(TPS方面),但是其中的安全和去中心化問題也是一種隱患。