原文:《 Web3底層語言(三):Move生態有哪些亮點?

作者:宋嘉吉任鶴義

摘要

在基於Move語言的基礎區塊鏈有著不一樣的系統邏輯和潛力——突出表現為並行性和更靈活的共識協議。 Aptos的並行處理能夠提升擴展性,並行處理的流程充分體現了Move基礎鏈的靈活性,進一步地,存儲和執行GAS費分開計算的方式會進一步解放網絡資源的潛力。 SUI對單寫者事務進行簡單快速處理和異步共識協議在系統效率提升方面也很有特色。本文從並行處理和共識協議創新兩個角度來分析典型的Move生態的特點,如Aptos和SUI這樣的基礎區塊鏈。

Aptos利用Block-STM(Software Transactional Memory)引擎實現並行處理,帶來性能的明顯提升。 Block-STM其工作理念類似以太坊二層網絡的Optimistic Rollup(樂觀匯總),交易在區塊內是預先排序的,先假設交易之間是沒有依賴關係,樂觀地執行並行交易。執行後驗證所有交易結果,如果發現一個交易訪問了由先前交易修改的內存位置,則該交易無效——因為很明顯兩個交易是相關的。刷新交易的結果,然後重新執行交易。重複該過程,直到區塊中的所有交易都被執行。 Block-STM的特點是支持比較複雜的事物,適合多種應用負載工況。

Aptos區塊鏈執行過程中是分階段、獨立、批量化運行的,這給GAS費的市場定價帶來更多優化、細化的潛在空間,於是產生了存儲和執行成本分開的GAS費模型。 Aptos網絡GAS費計算的主要原則是:操作的成本應該與對CPU、內存、網絡、存儲等資源消耗直接相關。這個模型將區塊鏈合約執行的流程充分細化,從執行任務的金融價值、數據量、算力資源消耗等角度充分考慮到合約執行的市場價值。

Aptos的共識協議本質上是最終同步的平行執行引擎,將相互依賴的執行層和共識層解耦,從而實現擴展。在交易傳播過程中,交易被每個驗證者分組為批次,而在共識過程中,批次再次被合併為區塊——這其中與協議無關的交易流程可以不必通過一般區塊鏈的節點驗證過程極大提升了效率。將這些非協議相關的任務從共識階段解耦出來,進行排序將消耗極小的算力資源(僅限區塊元數據和證明,如前區塊哈希值、梅克爾樹數據、時間戳等),從而實現交易高吞吐量和最小化延遲。通過消除共識和執行之間的相互依賴性,可以實現更高的吞吐量和延遲。

SUI的單寫者事務和異步共識協議帶來效率的提升。鏈上存在著很多簡單交易需求,如用戶只是想將資產發送給收件人,這種簡單交易通常只與發件人相關。 SUI的單寫者(Single-Writer)應用正是將那些單獨、簡單的交易放在客戶端本地運行,降低了驗證節點的共識壓力,提升了系統的擴展性。簡單的“單寫者”發送的交易確定是獨立的,與其他用戶無關,因此完全可以將計算委託為發送者,而不必浪費驗證者算力,這樣計算即可在驗證者本地進行。 SUI通過使用“因果順序(causal ordering)”對交易的共識做了篩選,與大部分區塊鏈共識協議不同,SUI並不會對所有交易進行排序,或者說,有些交易並不需要SUI的全網共識——如上面提到的單寫者發起的簡單事務,SUI只需要對交易進行因果排序。因此SUI可以利用單寫者本地的算力,且可以同時執行多種任務。

風險提示:區塊鏈商業模式落地不及預期;監管政策的不確定性。

解讀MOVE語言:MOVE生態項目都有哪些亮點?

1.核心觀點

針對已有的編程語言如Solidity,Move語言在很多細節設計考慮的比較周到,如最為突出的特點是資源類型方面,即面向資源的編程;此外並行處理也會帶來擴展性提升。因此,基於Move語言的基礎區塊鏈有著不一樣的系統邏輯和潛力——突出表現為並行性和更靈活的共識協議。本文從並行處理和共識協議創新兩個角度來分析典型的Move基礎區塊鏈的特點,如Aptos和SUI。

Aptos的並行處理能夠提升擴展性,並行處理的流程充分體現了Move生態的靈活性,進一步地,存儲和執行GAS費分開計算的方式會進一步解放網絡資源的潛力。 SUI對單寫者事務進行簡單快速處理和異步共識協議在系統效率提升方面也很有特色。

解讀MOVE語言:MOVE生態項目都有哪些亮點?

2並行處理提升擴展性

Aptos使用新的並行處理系統和Move編程語言,來拓展單片鏈的局限。該節主要介紹其共識機制、Move語言、數據模型、移動模塊、並行化等方面的改進。

2.1Aptos的並行處理

在交易執行方面,Move的並行處理的特點相較Solidity帶來區塊鏈擴展性的極大提升。並行執行(PE)是通過識別獨立交易並同時執行(非關聯交易),這極大提升了區塊鏈的擴展性。 Solidity並不支持並行處理,如以太坊上的交易按順序執行,其他交易置於暫停(排序)狀態——因此產生了mempool(內存池)和MEV市場。對於兩個不關聯的交易,如果能夠並行處理,則高效且可擴展。

Aptos利用Block-STM(Software Transactional Memory)引擎實現並行處理,帶來性能的明顯提升。 Block-STM其工作理念類似以太坊二層網絡的Optimistic Rollup(樂觀匯總),交易在區塊內是預先排序的,先假設交易之間是沒有依賴關係,樂觀地執行並行交易。執行後驗證所有交易結果,如果發現一個交易訪問了由先前交易修改的內存位置,則該交易無效——因為很明顯兩個交易是相關的。刷新交易的結果,然後重新執行交易。重複該過程,直到區塊中的所有交易都被執行。 Block-STM的特點是支持比較複雜的事物,適合多種應用負載工況。

如下圖,將Block-STM與區塊按交易順序執行進行了比較。每個區塊包含一萬筆交易,賬戶數量決定了區塊處理的交易的競爭複雜程度。在低競爭和高競爭情況下,Block-STM比順序執行的方案實現了8-16倍的加速。當交易任務是順序的情況下,Block-STM的消耗也更小。由此可見,Move帶來的並發性能是非常突出的。

解讀MOVE語言:MOVE生態項目都有哪些亮點?

由此可見,在L2(二層網絡)之前,主鏈的並行處理能力亦是區塊鏈擴容積極考慮的方案。這為Move系基礎鏈的生態帶來更多的可能性。

2.2Aptos:存儲和執行成本分開的Gas模型

以太坊作為去中心化網絡,應用在驅動網絡的算力資源運行智能合約程序時需要消耗GAS費作為燃料——GAS費的大小與驅動智能合約程序的複雜程度、GAS單價有關。但無論如何,以太坊網絡GAS費的計算模型比較簡單(主要以驅動智能合約的量作為衡量),甚至並不能反應用戶對合約程序需求的市場價值——也就是說,GAS費的大小並不能很好衡量合約應用市場價值的高低(比如發送一筆0 ETH轉賬的價值可能是較低的,但依舊需要驅動智能合約,GAS費未必很低)。顯然,Aptos區塊鏈對算力、存儲和網絡之間成本進行權衡,充分考慮到用戶或開發者的需求。如前一節所述,Aptos區塊鏈執行過程中是分階段、獨立、批量化運行的,這給GAS費的市場定價帶來更多優化、細化的潛在空間,於是產生了存儲和執行成本分開的GAS費模型。

Aptos網絡GAS費計算的主要原則是:操作的成本應該與對CPU、內存、網絡、存儲等資源消耗直接相關。在執行過程中,費用模型如下:

1)固定成本,固定基數加上大額交易的額外費用;

2)執行成本,用於執行Move指令的費用;

3)讀取成本,用於從持久存儲讀取數據;

4)寫入成本,用於將數據寫入持久存儲。

這個模型將區塊鏈合約執行的流程充分細化,從執行任務的金融價值、數據量、算力資源消耗等角度充分考慮到合約執行的市場價值。除此之外,考慮到進一步降低系統I/O的成本負擔,Aptos 團隊還將會提供支持存儲費用返還的框架,進一步降低存儲的負擔。

這種將執行費用和存儲費用分離的做法很有想像空間,這更符合當前區塊鍊網絡的資源消耗需求。舉一個最簡單的例子,在以太坊網絡,用戶想要發步一篇文章寫入去中心化的區塊中,必然需要發送一筆交易——當然,這筆交易轉賬金額可以是0ETH,但仍舊需要承擔GAS費;而GAS費則與當前網絡的負擔有關。無論如何,轉賬金額和GAS費都不能體現文章的價值、存儲空間的消耗和用戶的需求價值。無意義的文章和有一定價值意義的文章,在不同網絡負擔狀態下,GAS費可能是不同的。而Aptos將執行費用和存儲費用分開則很方便用戶對自身事務執行的價值作出很好地衡量。以太坊生態在後續模塊化的探索中,也注意到了存儲與交易執行分開這一點。

3共識協議與交易處理

我們所熟悉的區塊鏈如以太坊,通常作為一個去中心化的狀態共享機器,隨著時間的推移,系統用戶狀態以區塊的方式累加——即絕對的串行交易排序。我們在本系列的前兩篇報告層對Move語言並行處理進行過分析,以Aptos、SUI為代表的Move系基礎鏈都有各自的並行處理模式,這依賴新的共識協議——由於Move語言的特點,Aptos的共識協議與交易執行解耦的模式,以及SUI的單一編寫者和異步共識協議都為區塊鏈交易的共識提供了更多的靈活性——前者將交易執行流程細分進行獨立、批量處理,而後者則充分考慮到驗證節點的算力負擔,試圖將一些簡單交易從驗證節點解放出來。

解讀MOVE語言:MOVE生態項目都有哪些亮點?

3.1Aptos:共識協議與交易執行解耦

交易流程批量化執行進一步挖掘擴展性潛力。在Move語言並發執行的基礎上,在交易執行流程方面,Aptos嘗試進一步挖掘並發執行的吞吐量和擴展性,其區塊鏈上的交易處理被分階段並行處理——也就是說,交易執行流程被分為幾個階段,每個階段都是完全獨立且單獨可並行化、批量化——如果說Move的並行處理相當於把Solidity的一條包裝流水線變成了並行的N條流水線,Aptos在此基礎上將N條流水線進一步細化分工,包裝工序每個階段都互相獨立、在階段層面進一步批量化處理。帶來性能優化的同時,可以在客戶端本地快速執行交易,降低驗證節點的壓力,這種特點帶來了更多的互動和靈活性。如在一批交易中,一些特定的、持久有效的交易可以立即提交,且可以在客戶端本地執行,而不必等遠端的驗證節點執行。就好比包裝工序中一些確定的、持久有效的流程(比如印logo),可以在流水線排隊的時候外部獨立進行。

需要說明的是,這裡提到的處理方式,與Aptos將共識協議與交易執行分開的特點有關,這將在後面詳述。 Aptos這種批量化、模塊化的並行執行為系統的升級和新版本發布帶來更多的靈活性、縮短系統演進週期。因為更新可以僅僅針對單個模塊進行,此外這種模塊化特點將驗證者節點擴展更多的客戶端節點算力,這些非驗證節點資源可以提供額外的計算、網絡和存儲資源。

解讀MOVE語言:MOVE生態項目都有哪些亮點?

同於SUI的異步共識協議,Aptos的共識協議本質上是最終同步的平行執行引擎,將相互依賴的執行層和共識層解耦,從而實現擴展。上面提到,交易傳播、交易執行、存儲和賬本認證等環節都是批量、獨立運行的,基礎便是執行層和共識層解耦。在交易傳播過程中,交易被每個驗證者分組為批次,而在共識過程中,批次再次被合併為區塊——這其中與協議無關的交易流程可以不必通過一般區塊鏈的節點驗證過程(根據不可能三角,共識過程會降低效率),極大提升了效率。將這些非協議相關的任務從共識階段解耦出來,進行排序將消耗極小的算力資源(僅限區塊元數據和證明,如前區塊哈希值、梅克爾樹數據、時間戳等),從而實現交易高吞吐量和最小化延遲。共識協議接受節點提議的交易順序,在關聯性的甄別後,非協議相關的交易驗證可以在遠離關鍵路徑的不同協議中執行交易,驗證節點會對最終交易排序和執行結果達成一致。通過消除共識和執行之間的相互依賴性,可以實現更高的吞吐量和延遲。

上面提到,在批量化執行方面,執行、存儲和賬本認證階段也分批工作,以便在重新排序、減少操作(例如,重複計算或簽名驗證)和並行執行之間權衡機會。目前Aptos 區塊鏈利用了Diem項目共識協議BFTv4的最新迭代版本,在執行分發之前等待200毫秒來累積一批交易,並通過領導者信譽機制對有缺陷的驗證者進行動態調整。

解讀MOVE語言:MOVE生態項目都有哪些亮點?

我們可以這樣理解Aptos這種最終同步的平行共識引擎,如果區塊就像火車車廂,那麼在最開始貨物包裝、分發過程中,都是獨立、批量運行的,首先根據貨物的包裝特點進行分類,如只需要印Logo的流程(類似於非協議相關的流程)可以在外部進行(如客戶端本地,分擔驗證節點的運算壓力),然後,這些貨物最終都會被再次裝入車廂(區塊),形成區塊鏈條。

3.2SUI:單寫者和異步共識協議

我們在報告《Web3.0程序該跑在哪裡? 》中提到:“以以太坊為代表的公鏈在基礎性能方面的限制,光靠共識機制方面的創新是不夠的,靠多鏈之間的跨接亦不足以承載web3.0的數據和計算。於是以太坊2.0的分片、L2、波卡平行鍊等各類擴展方案成為當下現實的解決方案。這些方案細節盡不相同,但最終都傳遞了一種市場共識:即,Web3.0數據和計算不會都跑在底層區塊鏈這個獨木橋上,大量數據和計算處理會在主鏈之外實現(可以是L2、平行鏈,甚至可以是其他非區塊鏈方式)。也就是說,脫(主)鏈計算(off-chain)已經成為行業的共識,尤其是對於大量的數據處理和計算,會在主鏈之外完成。”

SUI的單寫者(Single-Writer)應用正是將那些單獨、簡單的交易放在客戶端本地運行,降低了驗證節點的共識壓力,提升了系統的擴展性。

鏈上存在著很多簡單交易需求,如用戶只是想將資產發送給收件人,這種簡單交易通常只與發件人相關。如我們前兩篇報告所述,Move的資產是一種資源類型,SUI區分了兩種類型的資產: i)只能由其特定所有者修改的資產,如發送資產給收件人;ii)沒有特定所有者而是由多個用戶修改的共享對象資源——這類資源的操作流程比較複雜。很顯然第一類是非常簡單的交易類型,這種區別使得SUI可以通過對第一類簡單事務簡化共識來實現非常低的延遲的設計。

簡單的“單寫者”發送的交易確定是獨立的,與其他用戶無關,因此完全可以將計算委託為發送者,而不必浪費驗證者算力,這樣計算即可在驗證者本地進行。來自單寫者的單交易會經過以下步驟:

1)發送者向網絡廣播簡單交易事務的數據;

2)驗證者將共識協議投票結果發回給發送者;

3)發送者對驗證者收到的所有投票進行統計,一旦符合要求,就會創建一個“驗證證書”,並發送回驗證者;

4)驗證者收到證書後會檢查其有效性後立即完成交易。

簡單來說,這類單寫者的簡單交易事務就像公司流程的請假會簽——類似休年假這種申請只與個人相關的簡單事務,請假人可以將申請文檔分別發給流程會籤的領導,然後將他們的簽字統一匯總到一份最終的請假書上,相當於申請者(單寫者)自己承擔了驗證計算過程,而不需要公司各級領導湊在一起開會決定(相當於共識驗證計算),這極大提高了效率。區塊鏈共識協議決定驗證者之間無需相互通信,因此上述流程幾乎不會增加驗證者的計算負擔,而證書機制也進一步確保交易安全。特別需要注意的是,簡單事務的計算負擔幾乎由發送者本地承擔,分擔了SUI區塊鍊主網的計算負擔,進一步提升擴展性。

解讀MOVE語言:MOVE生態項目都有哪些亮點?

為識別簡單事物交易,SUI使用基於拜占庭一致性廣播算法(Byzantine Consistent Broadcast)。這種簡單算法是的SUI在處理非關聯的簡單交易時,只對相關數據而不是整個鏈進行鎖定(或“停止區塊鏈世界”,如以太坊出塊延遲那樣),或者簡單理解為對這類非關聯簡單交易事務脫離交易排序進行特別處理——即識別單一作者應用程序( Sui Single-Writer-Friendly (SWF) Apps),官方文檔列有24類簡單事務的示例列表(如簡單的P2P2交易、公共信息公告),這些單一作者事務可以使用該算法進簡單快速處理。

解讀MOVE語言:MOVE生態項目都有哪些亮點?

Move強大的資源類型模型,助力SUI靈活地處理多種類型的交易,這些交易可能明確以來其他發送者等多個因素。明確交易者的依賴關係,SUI將多通道方法應用於交易驗證,確保這些獨立的交易流程可以獨立進行。 SUI的並行性還體現在單獨驗證交易,而不是將它們分批寫入區塊中。這種方法的主要優勢是低延遲,一筆交易一旦成功即得到網絡的確認,而不像以太坊那樣需要等整個區塊得到全網確認。 SIO交易的過程的核心是辨別交易之間是否關聯,具體來說需要驗證者投票進行辨別交易所是否獨立。

SUI除對簡單的單寫者交易進行了優化,當然也有全局共識機制(類似以太坊狀態機的工作模式),可處理更複雜的交易,並定期檢查區塊鏈的全局狀態。 SUI使用名為Narwhal 和Tusk的異步共識協議。這是一種有向無環圖數據結構的共識引擎,兩個部分的職責分工如下:

1)Narwhal內存池,充當管家角色,負責檢查待處理的共識交易,確認數據的可用性;

2)Tusk是確保共識交易有序進行的協議,使數據的特定排序達成一致。

本質上,Narwhal會聚合一批待處理交易(這裡有些類似以太坊的交易內存池Mempool),在等待處理時對它們進行“圖形化”。即Narwhal會為交易標記上版本號,以及指向先前交易版本號,形成類似文件樹的有向無環圖(DAG)。 Tusk也是HotStuff共識協議(HotStuff 是一個三階段投票的BFT類共識協議,該算法總結了PBFT、Tendermint等共識算法的特點,實現了一個既有安全性(safety)、活性(liveness),又有響應性(responsiveness)的共識算法)的修改版本,它針對Narwhal提供的DAG結構進行了優化,專注於減少網絡驗證者之間的通信障礙。 Sui 共識引擎算法達到每秒超過125000筆交易的吞吐量,延遲為兩秒。

採用這種異步共識協議的好處是:SUI通過使用“因果順序(causal ordering)”對交易的共識做了篩選,與大部分區塊鏈共識協議不同,SUI並不會對所有交易進行排序,或者說,有些交易並不需要SUI的全網共識——如上面提到的單寫者發起的簡單事務,SUI只需要對交易進行因果排序。因此SUI可以利用單寫者本地的算力,且可以同時執行多種任務。

值得注意的是,SUI也會利用遠端的非驗證節點執行部分計算,但SUI最終是異步共識,而在Aptos區塊鏈中,這些非驗證節點的計算部分最終也會合併進入區塊,所以Aptos是最終同步的平行共識。

風險提示

區塊鏈商業模式落地不及預期:區塊鏈、密碼學等相關技術和項目處於發展初期,存在商業模式落地不及預期的風險;Move生態發展不及預期。

監管政策的不確定性:區塊鏈項目實際運行過程中涉及到多項金融、網絡及其他監管政策,目前各國監管政策還處於研究和探索階段,並沒有一個成熟的監管模式,所以行業面臨監管政策不確定性的風險。

本文節選自國盛證券研究所已於2023年2月16日發布的報告《Web3底層語言(三):Move生態有哪些亮點? 》,具體內容請詳見相關報告。

前兩期內容:
Web3底層語言:Solidity問題重重,MOVE如何“乘虛而入”?

Move語言分析:如何避免閃電貸重入攻擊?