聲明:本文僅作為行業研究探討,不代表任何投資建議。
作者: Beam
2022 年9 月15 日,以太坊合併(Merge)。這是一個歷史性的時刻,以太坊為此準備了5 年、推遲了6 次,由於反复的調試與長期的開發、萬眾矚目的暈輪效應,很多人誤以為合併會自然而然地帶來更高的可擴展性、安全性和可持續性,實際上並不是— — 我們還是用兩個列車的比喻,從PoW(工作量證明)到PoS(權益證明)的過渡,只是更換了軌道和輪子,它並不會直接地帶來更快的速度、更大的容量、更低的車票費用,真正能完成以上三點的,是一整套解決方案:擁有分片能力的主網搭配增強可擴展性的Layer2解決方案。
正如以太坊創始⼈Vitalik Buterin 所指出的,分⽚是可擴展性三難困境下的一種擴容解決⽅案,通過將⽹絡中的節點分成更⼩的組,處理不同的事務集並實現並行處理。通過分擔處理整個網絡上匯總所需的大量數據的負擔,就像我們在Walmart 購物結賬時一樣,通過多開設幾條購物結賬的收銀通道,可以直觀地減少排隊時間和提升結賬效率。
這就是分片的邏輯,直接而簡單,然而,魔鬼都在細節中— — 原理和方向沒錯,但在實施中總會遇到很多問題。本文想通過理順在“分片” 這條路上的方向和困局,繪製一張仰望星空與腳踏實地的分片探索者地圖。同時通過比較現有的分片解決方案,找到一些共性的問題,並提出一種可行的探索方向: Shardeum 與動態分片。
一、關於“分片”
簡單來說,考慮不可能三角的製約,從以太坊作為坐標係原點(0,0)出發,按照“縱向” 和“橫向” 兩種思路,我們將當前的區塊鏈的擴展性方法分為兩大類:
縱向擴容(Vertical Scaling) :通過提高系統現有硬件的性能來實現。建立一個去中心化網絡,而網絡中的每個節點都具有超級計算能力,即每個節點都需要“更好”的硬件— — 這種方式簡單有效,可以達成吞吐量的初步改進,尤其適用於高頻交易、遊戲以及其他對延遲比較敏感的應用場景。然而這種擴容方式會限製網絡的去中心化水平,因為運行驗證節點或全節點的成本變高了。維持去中心化水平受限於計算硬件性能的大致增長速度(這就是所謂的“摩爾定律”:芯片上的晶體管數量每兩年會翻一倍,計算成本則會減半)。
橫向擴容(Horizontal Scaling) :橫向擴容一般有幾種思路。一種是在區塊鏈的語境下,將某一生態中的交易計算量分散到多個獨立的區塊鏈上,每條鏈都擁有自己的區塊生產者和執行能力,這種方式可以充分定制化每條鏈的執行層,比如節點硬件要求、隱私功能、gas 費用、虛擬機以及許可設置等。另一種橫向擴容方案是模塊化區塊鏈,將區塊鏈的基礎架構劃分成執行層、數據可用性層(DA)以及共識層。最主流的區塊鏈模塊化機制就是rollup。還有一種是將一條區塊鏈分成很多片,並行執行。每個分片可以看成一個區塊鏈,也就是說許多區塊鏈可以並行執行。另外,通常還會有一條主鏈,其唯一的任務就是保持所有分片同步。
需要指出的是,以上的擴容思路都不是孤立存在的,每一種解決方案都是在不可能三角中找到一個權衡點,配合系統中經濟力量創造的激勵機制設計,達到宏觀和微觀層面的有效平衡。
為了討論“分片”,我們需要從頭開始梳理。
依然假設這樣一種情景,Walmart 購物結賬,為了提高結賬效率,降低客戶等待時間,我們從單一的結賬通道,擴展到10 個結賬窗口,為了避免賬本錯誤,這個時候我們需要製定統一的規則:
第一,如果我們有10 個收銀員,該如何分配他們去哪個窗口工作?
第二,如果我們有1000 個客戶排隊等待,該如何決定每一個客戶去哪個窗口結賬?
第三,這10 個窗口對應的10 個單獨賬本,該如何進行匯總?
第四,為了避免發生賬目不匹配的情況,該如何防止收銀員出現錯誤?
這幾個問題其實對應了分片中的幾個關鍵問題,分別是:
該如何確定全網的節點/ 驗證者屬於哪個分片?即:如何進行網絡分片(NetworkSharding) ;
該如何確定每一筆交易分配給哪個分片?即:如何進行交易分片(Transaction Sharding) ;
區塊鏈資料如何在不同分片中儲存?即:如何進行狀態分片(State Sharding) ;
複雜意味著風險,在以上所有的基礎上,該如何避免整個系統安全性的分裂?
01 網絡分片(Network Sharding)
如果我們將區塊鏈簡單理解成一種去中心化賬本,無論是PoS 還是PoW 的共識機制,都是為了讓各個節點按一定的既定規則爭奪記賬權,在這個過程中保證賬本的正確性。而網絡分片是指,需要另一種既定規則,將區塊鍊網絡分片,在盡量降低互相通信的前提下,由各個分片處理鏈上交易,爭奪記賬權— — 即,節點的分組規則。
而在這個過程中遇到的問題是,隨著區塊鏈內部節點被劃分成不同的片,攻擊者的難度和成本會直線下降。我們可以推理,假定這個分組過程的規則和結果是固定且可以預知的,那攻擊者想要控制整個區塊鍊網絡,只需要定向地控制其中一個分片,收買分片內的部分節點即可。
Near 的創始人Alexander Skidanov 這樣描述這個問題:如果一個有X 個驗證者的單一鏈決定硬分叉成一個分片鏈,並將X 個驗證者分成10 個分片,每個分片現在只有X /10 個驗證者,破壞一個分片只需要破壞5.1%(51% / 10) 的驗證者總數。這就引出了第二點:誰為每個分片選擇驗證者?只有當所有這5.1% 的驗證者都在同一個分片中時,控制5.1% 的驗證者才是有害的。如果驗證者無法選擇在哪個分片中進行驗證,則控制5.1% 的驗證者的參與者極不可能將所有驗證者都放在同一個分片中,從而大大降低了他們破壞系統的能力。
分片系統必須開發一種機制來信任網絡不會從外部分片中逆轉這些交易。迄今為止,可能最好的答案是確保分片內的驗證者數量高於某個最小閾值,這樣不誠實的驗證者壓倒單個分片的機率就會很低。最常見的辦法是構建一定程度上的無偏隨機性,依靠數學的方式,將攻擊者的成功概率降到最低。比如以太坊,以太坊的解決辦法是隨機從所有驗證者中選出某個分片的驗證者,並且每6.4 分鐘(一個epoch的長度)更換一次驗證者。
說的簡單一點就是將節點隨機分組,再將工作分配給各組節點獨立驗證。
然而需要指出的是,區塊鏈中的隨機性是一個非常具有挑戰性的話題,按照邏輯來說,這個隨機數的生成過程不應該依賴於任何特定分片的計算。對於該計算,很多的現有設計思路都是開發一個單獨的區塊鏈,維護整個網絡。這樣的鏈在Ethereum和Near 中稱為Beacon 鏈,在PolkaDot 中稱為Relay 鏈,在Cosmos 中稱為Cosmos Hub。
02 交易分片(Transaction Sharding)
交易分片是指關於“哪些交易要被分配到哪些分片” 的規則制定,則既能夠達到並行處理的目的又能避免雙花問題的出現。區塊鏈的帳本模型的不同會對交易分片的開發造成影響。
目前區塊鍊網絡中存在兩類記賬方式,分別為UTXO(Unspent Transaction Outputs,未使用交易輸出)模型和賬戶/ 餘額模型,前者的典型代表是BTC,後者如ETH。
UTXO 模型:在BTC 交易中,每筆交易都會有一個或多個輸出,UTXO 指尚未花費的區塊鏈交易的輸出,可以作為新交易的輸入,而已花費的交易輸出不可再花費,類似紙幣交易情況下的支付和找零,顧客將一張或多張紙幣支付給店家,店家則將一張或多張紙幣找零給顧客。 UTXO 模型下,交易分片需要跨分片通信。一筆交易可能包括多個輸入和多個輸出,沒有帳戶的概念,也不會有餘額的紀錄,一個可能的方式是:按照其交易的某個輸入值將其放入哈希函數處理成為離散型的哈希值以確定數據應該去哪個分片。如下:
為了確保條目以一致的方式放置在正確的分片中,輸入到哈希函數中的值都應該來自同一列。此列稱為Shard Key 。之後,將產生為1 值的交易都分入分片1,將產生為2 值的交易都分入分片2。而這種方式的弊端在於,分片之間不得不進行通信以避免雙花攻擊。如果限制跨分片交易將限制平台的可用性,而允許跨分片交易則不得不權衡跨分片通信的成本和性能提升帶來的收益。
賬戶/ 餘額模型:系統記錄每個賬戶的餘額,在進行交易時,系統檢查賬戶是否有足夠餘額用於支付,類似於銀行轉賬時,銀行會記錄每個賬戶的餘額,只有賬戶餘額大於所需轉賬金額時,交易才能夠進行。在賬戶/ 餘額模型下,由於一筆交易只有一個輸入,因此只要將交易按照發送者地址進行分片,就可以保證同一個賬戶的多筆交易在同一個分片中處理,有效防止雙花。因此,大多數採用分片技術的區塊鏈,都是像以太坊一樣的賬戶帳本系統。
03 狀態分片(State Sharding)
狀態分片指的是,在區塊鏈資料是如何分配在不同分片中儲存的。
依舊沿用我們Walmart 排隊的例子,每個窗口都有一筆賬,他們的賬本是如何記錄的?如果:客戶來排哪個隊,就記哪個賬,比如A 客戶去了A 窗口,那第二天該客戶去了別的結賬窗口比如B 窗口,而B 窗口並沒有該客戶的過往賬戶信息(比如涉及到了儲值卡等結賬方式),該怎麼辦?向A 窗口調用該客戶的賬戶信息?
狀態分片是分片最大的難題,比上述的網絡分片和交易分片更棘手。因為在分片機制下,交易會根據地址分配在不同的分片處理,也就是說,狀態只會儲存在其地址所在的分片中,此時要面臨的一個問題是,交易不會只在一個分片中進行,時常會涉及到跨分片(Cross-Sharding) 。
考慮一種轉賬情形,A 賬戶轉賬10U 給B 賬戶,而A 的地址分配在分片1,交易的紀錄也會儲存在分片1。 B 的地址分配在分片2,交易的紀錄就會儲存在分片2。
一但A 要轉賬給B,就會形成跨分片交易,分片2 就會向分片1 調用過去的交易紀錄,確認交易的有效性,如果A 頻繁地打幣給B,分片2 就必須不斷跟分片1 互動,交易的處理效率便會因此降低。但是,如果不下載和驗證特定分片的整個歷史,參與者則不一定能確定他們之間交互的狀態是某些有效塊序列的結果,且這樣的塊序列確實是分片中的規範鏈。
因此,相比於無分片的單一鏈,分片系統面臨的新挑戰是用戶無法直接完全驗證任何給定鏈的有效性和可用性,因為數據太多。必須為用戶提供最大限度的去信任和實用的間接方法來驗證哪條鍊是完全可用且有效,以便於他們可確定哪條鍊是規範鏈。在實踐中,區塊鏈開發者可以使用如下技術解決驗證中的一些問題:如委員會、SNARKs/STARKs、漁夫機制、以及欺詐和數據可用性證明等。
有兩種思路可以解決這個問題,一個是同步跨分片(Synchronous) ,即緊耦合(Tight Coupling) ,每當需要執行跨分片交易時,包含狀態轉換的相關塊都同時發生,每個分片上的節點協作執行交易。看起來很自然,使用體驗也最好,該模型最著名的設計稱為Merge Blocks,但在實踐中實現這一點很複雜。要完成以上,需要分片之間的驗證器彼此同步通信。如果對跨分片事務的需求足夠高,性能可能會降低,因為更多的分片工作者必須一起協作來處理跨分片事務。
另一種方式是異步跨分片(Asynchronous) ,即松耦合(Loosely Coupling) 。這種思路的採用更廣泛,比如NEAR、以太坊、Cosmos、Kadena 等。而在這個過程中,最具有挑戰的事項是交易的原子性。根據Scalar Capital 的聯合創始人Jordan Clifford,如果我們想像收據(Receipt)的概念,接收者通過提供源分片中的交易的默克爾路徑來證明他們將從外部分片接收了Token。目標分片使用收據並將其記入收件人的帳戶。這必須以原子方式完成。發件人和收件人的帳戶要么一起修改,要么不一起修改。如果存在差距或一端失敗,發件人可能會欺騙收件人,讓他們相信他們已經收到了他們永遠不會得到的資金。
這裡對原子性一詞做出一種生活化的比喻,比如我們想要進行一趟海邊旅行,需要同時訂購機票以及酒店,如果預定不到酒店,我希望也不要購買飛機票,如果預定不到飛機票,則也不要預定酒店。這就叫做原子性— — 要不然都成功,要不然就都不要成功。
二、分片的探索與嘗試
我們回顧一下以上有關於分片的討論時,提到的一些關鍵性問題:
一是如何進行狀態分片,即區塊鏈資料是如何分配在不同分片中儲存,如果要進行跨分片通訊時,該如何保證其中的效益平衡。
二是如何處理交易的原子性問題,一個分片對於共同訪問的狀態的修改,需要及時地讓另一個分片知道,否則就容易出現狀態錯亂。
在下文中,我們梳理了業內比較知名的公鏈以及其技術解決方案。其中可以窺見部分脈絡,並在此基礎上討論Shardeum 的前沿性和革新性。
01 計算分片
Zilliqa 是最早嘗試分⽚的智能合約平台之⼀,是分片技術的一種很有益也很有效的嘗試。
其成立於2017 年,由與新加坡國立大學相關的專門研究人員和學者組成的團隊推動,主要目標是解決可擴展性問題,專為計算密集型任務而構建。 Zilliqa 網絡能夠通過稱為計算分片的並行化過程,在其網絡上處理高吞吐量的交易。在分片式區塊鍊網絡上,計算交易的任務分佈在網絡的各個分片上。
從分片過程來說,Zilliqa 將其分為兩部分。首先,選擇目錄服務(DS)委員會節點,然後啟動分片過程並將節點分配給每個分片。一旦在分片中驗證了交易,便可以通過整個網絡對其進行驗證,並進入一個全局狀態,該狀態將所有分片中的交易組合到Zilliqa 區塊鏈上的單個可驗證真相來源。
簡單來說,對於區塊鏈中的節點具有的三個主要功能:
- 處理交易
- 打包交易並廣播到其他節點
- 存儲整個網絡的歷史賬本
Zilliqa 利用了一種簡潔有效的思路來解決我們提到的跨分片通訊以及原子性問題,即:只進行計算分片,不進行網絡和儲存的分片。該平台中的所有節點都存儲了完整的狀態,並且每個交易都被每個節點接收。為了驗證交易,⽹絡根據賬⼾的地址空間被分割成多個分區。這被稱為計算分⽚,因為它劃分了驗證交易的⼯作,這通常是計算密集型的。由於每個節點仍然接收每筆交易並更新所有賬⼾的狀態,因此⽹絡帶寬和存儲操作仍然成為瓶頸— — ⽹絡和存儲沒有分⽚,因此⽆法真正擴展。
02 靜態狀態分片
更為通用的分片方法是將帳戶的地址空間劃分為多個稱為分片的固定大小區域,並將網絡中的節點分配給不同的分片。這稱為狀態分片。 Near、Elrond 和Harmony 等平台正在採用這種方法。儘管以太坊最初計劃實施狀態分片,但新方法僅對數據進行分片以增加可訪問性。
2.1 以太坊的數據分片構想
在以太坊環境中,分片將通過分擔處理整個網絡上匯總所需的大量數據的負擔,與Layer2 協同工作。這將繼續減少網絡擁塞並增加每秒交易量。
應該指出的是,隨著更有效的擴展路徑的開發,以太坊的分片計劃也在不斷發展。以太坊對於未來分片構想其中一個方案版本是基於“數據可用性” 的分片,“Danksharding” 是一種新的分片方法,它不使用分片“Chain” 的概念,而是使用分片“ Blob”來分割數據,同時使用“數據可用性抽樣” 來確認所有數據是否可用。
而另一種方案版本涉及到在方案一的基礎上,為每個分片添加額外的功能,使每一個分片更像今天的以太坊主網,允許分片存儲和執行代碼並處理交易,因為每個分片都將包含其獨特的智能合約和賬戶餘額集,跨分片通信將允許分片之間的交易。然而這種方案還在社區辯論中,因為方案一的數據可用性加上Layer2 的協同,已經可以為以太坊提供足夠的可拓展性,因此社區還在評估版本二的經濟成本與收益價值。
2.2 Harmony
Harmony 是一個基於PoS 的分片網絡,採用了一種更為標準的分片方法,這種方法的想法是擁有多個稱為分片的小型區塊鏈,每個分片負責狀態的一部分,以及一個協調它們的區塊鏈,在Harmony 中稱為信標鏈。我們按照之前的討論,先看看Harmony 是如何從下到上解決網絡分片、交易分片和狀態分片的問題。
網絡分片:Harmony 將驗證者網絡分為不同分片,每個分片都包含一組不同的驗證器,它們彼此緊密相連,在它們之間運行共識。
交易分片:Harmony 的交易由單個分片處理和處理。這使得分片能夠同時處理交易,提高了區塊鏈的總交易容量。對於交易,用戶只需在簽名交易中指定shard_id字段,表示交易所屬的分片。
狀態分片:在Harmony 中,每個分片的驗證者都需要存儲1/N 的全局狀態,因為他們維護自己的區塊鍊和狀態數據庫(N= 分片數)。這減輕了驗證者對數據可用性的擔憂。此外,交叉分片進一步提高了分片之間的狀態一致性。
Harmony 主網支持多個分片中的數千個節點,在幾秒鐘內生成具有即時確定性的塊。通過質押機制的安排減少了中心化,同時支持質押委託、獎勵複合和雙簽削減。採用了EPoS (Effective Proof-of-Stake) 的有效抵押機制和安全的隨機分片技術(Random Sharding),靠協議的規定把大戶抵押的代幣打散成許多細小的部分,並隨機分配到多個分片裡,這樣任何人就無法把他抵押的代幣集中到單一分片內,從而無法攻擊單一分片。
而關於跨分片,在跨分片交易和信標鏈同步的情況下,來自不同分片的驗證者通過全球連接的網絡跨分片發送消息。根據Harmony 官方文檔,採用了「Kademlia 跨片路由技術」 ,來控制跨片間通信的網絡開銷,並且利用「糾刪碼」對區塊廣播過程進行優化,使廣播者的網絡壓力更小,避免發送者的網絡瓶頸問題,從而實現高效的橫向分片擴展。已經裝備自己成為第一個完成跨分片消息傳遞的分片區塊鏈。借助有效的跨分片消息傳遞協議和全網狀設計,分片之間將能夠進行無縫通信,隨著團隊積極朝著這個目標努力,用戶和開發人員可以期待今年晚些時候在Harmony上的跨分片消息傳遞協議。
對於Harmony 上的構建者和開發者來說,這是一個重大突破,因為他們可以通過整理特性和使用駐留在不同分片上的數據來構建。此外,分片間數據的一致性也很重要。這兩種追求將決定這種無限可擴展性的可持續性。
2.3 Elrond
Elrond 是一個高吞吐量的公共區塊鏈,旨在提供安全性、效率、可擴展性和互操作性。使Elrond 與眾不同的兩個最重要的特性是自適應狀態分片和安全的權益證明共識機制。
對於交易、數據和網絡,Elrond 採用所有級別的自適應狀態分片。動態自適應分片機制將執行分片合併和分片拆分,同時考慮可用驗證節點的數量和網絡使用情況。由於跨分片的定期節點改組,對惡意攻擊保持高彈性。每個epoch,每個分片中最多1/3 的節點被重新洗牌到其他分片,以防止串通。在隨機性方面,使用BLS 簽名保護隨機源,這使其無偏見和不可預測。
而對於分片狀態架構上的智能合約採用跨分片執行過程處理,分片負載均衡。跨分片平衡智能合約允許Elrond 並行運行多個智能合約。
同時,對於跨分片,Elrond 採用他們稱為元鏈(Meta Chain)的設計,可以做到在幾秒鐘內快速確定跨分片交易(Finality)。通過研究其技術白皮書,我們簡化其過程如下:假定Elrond 網絡僅有兩個分片和元鏈。假設用戶從他的錢包中生成一筆交易,該錢包的地址位於分片0,並希望將EGLD 發送給另一個錢包地址位於分片1的用戶,則需要下圖所示的步驟來處理跨分片交易。
塊的結構由包含有關塊的信息(塊隨機數、輪次、提議者、驗證者時間戳等)的塊頭表示,以及包含內部實際交易的每個分片的小塊(miniblock)列表。在我們的例子中,對於分片0 中的一個塊,通常會有3 個小塊(miniblock):
- miniblock 0:包含分片0 的分片內交易
- miniblock 1:包含與分片0 中的發送者和分片1 中的目的地的跨分片交易
- miniblock 2:包含跨分片交易,發件人在分片1,目的地在分片0。這些交易已經在發件人分片1 中處理,將在當前分片處理後完成。
一個塊中具有相同發送者和接收者的小塊的數量沒有限制。這意味著具有相同發送者和接收者的多個小塊(miniblock)可以出現在同一個塊中。在這個過程中,跨分片執行的原子處理單元是一個小塊(miniblock):要么立即處理小塊(miniblock)的所有事務,要么不處理,小塊(miniblock)的執行將在下一輪重試。
Elrond 的跨分片交易策略使用異步模型。驗證和處理首先在發送者的分片中完成,然後在接收者的分片中完成。交易首先在發送者的分片中分派,因為它可以完全驗證從該分片中的帳戶發起的任何交易。之後,在接收者的分片中,節點只需要元鏈提供的執行證明,進行簽名驗證和檢查重放攻擊,最後為接收者更新余額,添加交易金額。
分片0 處理小塊0 (miniblock 0)中的分片內交易和一組跨分片交易,這些交易的地址來自分片1 作為小塊1 (miniblock 1)中的接收者。塊頭和小塊(miniblock)被發送到元鏈。元鏈通過創建一個新的元鏈塊(元塊)來公證分片0 的塊,其中包含有關每個小塊(miniblock)的以下信息:發送者分片ID、接收者分片ID、小塊哈希。
分片1 從元塊中獲取小塊1 (miniblock 1)的哈希,從分片0 請求小塊(miniblock),解析交易列表,請求丟失的交易(如果有),在分片1 中執行相同的小塊1 (miniblock 1)並發送到元鏈結果塊。經過公證,交叉交易集可以被認為是最終確定的。下圖顯示了完成交易所需的輪數。這些輪次被認為是從第一個包含在小塊(miniblock)中到最後一個小塊(miniblock)被公證。
2.4 Near
Near 是一個全狀態分片、對開發者友好的可拓展性公鏈,他們提出了一種新的協議和解決方案,稱之為夜影協議(Nightshade)。
與上述兩個分片公鏈不同的是,它的技術架構並不是由一個信標鍊和多個分片鏈組成的,而是把系統建模成一個單獨的區塊鏈,在區塊級別進行了分片,每個分片中有很多“段”。
Nightshade 將系統建模為單個區塊鏈,其中每個塊在邏輯上包含所有分片的所有事務,並更改所有分片的整體狀態。在物理上,沒有參與者下載完整狀態或完整邏輯塊。相反,網絡的每個參與者只維護與他們驗證交易的分片相對應的狀態,並且塊(Block)中所有交易的列表被分成物理塊(Chunk),每個分片一個塊。
在理想條件下,每個塊每個塊的每個分片恰好包含一個塊,這大致對應於具有分片鏈的模型,其中分片鏈以與信標鏈相同的速度生成塊。然而,由於網絡延遲,一些塊可能會丟失,因此實際上每個塊的每個分片都包含一個或零個塊。
在Nightshade 中有兩個角色:區塊生產者和驗證者。在任何時候,系統都包含w個塊生產者(Block Producer)和wv 個驗證者(Validator),在near 的模型中w=100 v = 100, wv = 10, 000。系統包含n 個分片,在near 的模型中n = 1000。在Nightshade 中沒有分片鏈,而是所有的區塊生產者和驗證者都在構建一個單一的區塊鏈,稱之為主鏈。主鏈的狀態被分割成n 個分片,每個區塊生產者和驗證者在任何時候都只在本地下載了與該分片的某個子集對應的狀態子集,並且只處理和驗證影響這些部分的交易狀態。網絡的維護是按時期完成的,其中一個時期是幾天的時間段。
塊生產者和塊生產者根據固定的時間表輪換每個塊。區塊生產者有一個訂單,並按該順序重複生產區塊。例如,如果有100 個區塊生產者,第一個區塊生產者負責生產區塊1、101、201 等,第二個區塊生產者負責生產2、102、202 等)。由於塊生產與塊生產不同,需要維護狀態,並且對於每個分片,只有sww/n 個塊生產者維護每個分片的狀態,相應地,只有那些sww/n 個塊生產者輪換創建塊。
而關於跨分片,如果一個事務需要影響Near 中的多個分片,則需要分別在每個分片中連續執行。完整的交易被發送到第一個受影響的分片,一旦該交易被包含在該分片的塊中,並在該塊被包含在一個塊中後應用,它會生成一個收據交易,該交易被路由到下一個需要在其中執行事務的分片。如果需要更多步驟,則收據事務的執行會生成新的收據事務,依此類推。具體見下圖:
三、Shardeum 與動態狀態分片
由上述對Harmony、Elrond 以及Near 的分析中,我們可以看到對於我們提出的兩個問題的解答:
1. 目前的Layer1,最通⽤的分⽚⽅法是將賬戶的地址劃分為多個稱為分⽚的固定⼤⼩區域,並將⽹絡中的節點分配給不同的分⽚。
2. 在具有狀態分片的網絡中,同一分片中的合約之間的交易快速而簡單,而跨多個分片的交易則慢得多,但並非不可能。如果一個事務需要影響多個分片,則需要在每個分片中連續執行。因為交易被分組到塊中並且共識是在塊級別完成的,所以影響多個分片的交易有可能在一個分片中被確認,但在另一個分片中被回滾。此外,影響多個分片的事務將需要與它們影響的分片數量成比例的額外處理時間。
但是同時,通過分析目前市場上的探索與解決方案,我們發現了目前階段公鏈分片的一些新問題:
1. 在跨分片交易時,如何在避免分片連續執行的基礎上,同時保證交易的原子處理?
2. 如果要網絡中增加了不足一個分片節點數量的節點,網絡如何處理多出來的這部分節點?
作為一個專注於促進區塊鏈的大規模應用、重塑web3 價值範式與賦能未來的專業投資公司,Jsquare 一直關注區塊鏈的擴展性和安全性,在關注Web3 運用層的同時,對更去中心化的基礎架構、無感的區塊鏈使用體驗以及依託於加密技術的安全性未來抱有極大的信心。即使分片的概念並不是新的,即使在這個道路上人們已經探索了一年又一年,我們在接觸Shardeum 的時候,依然覺得他們對於分片賽道的洞察以及他們所做出的革命性技術改善值得我們下注。與這兩個問題對應的,Shardeum 提出了兩種新穎的解決方式。
3.1 Shardeum 與交易級共識
Shardeum 形成了一種獨特的技術與共識算法,該算法將法定人數證明(PoQ) 與權益證明(PoS) 相結合,共識算法將通過trustless 投票收集和驗證節點的質押來幫助保護網絡。每個交易會在被分組到塊/ 分區之前按照收到的順序進行處理。
而與上述成名已久的公鍊網絡不同,Shardeum 網絡上的共識是在每個交易(Transaction)級別而不是塊(Block)級別完成的,允許跨分片同時處理事務,而不是像Near 的塊(Block)級共識那樣連續處理。這種交易級共識消除了確保原子處理(Atomic Processing)所需的複雜性。因此可以做到秒級的finality 和低延遲,從而防止網絡擁塞。
3.2 Shardeum 與線性擴展
要解釋什麼叫線性擴展,我們需要想像下面一種情形:
Near 主⽹ 1 個100 個節點的分⽚。預計將來會添加更多分⽚。 Harmony 有4 個分片,每個分片250 個節點,主網共1000 個節點。所有的合約在同一個分片。 Elrond 有3 個分片與1 個元鏈,每個分片800 個節點,主網共3200 個節點。
如果在Harmony 中添加100 個節點,不足一個分片中需要的250 個節點,Harmony 該如何處理這部分節點?是否可以考慮將這共1100 個節點分成11 個分片,每片100 個節點?
聽起來更美好,但是由於某些分片的靜態特性,許多額外的節點需要加入網絡才能創建新的分片。假如,我們要向上述網絡中加入一些節點,如果只增加1 個單獨的節點,是無法提高整個區塊的表現的,至少要為目前“最小分片大小” 數量的節點(在Near 中即為100 個節點) — — 因為目前的分片都是靜態分片,不支持線性擴展,還沒有生產網絡實際能做到靜態分片的拆分和合併。
在“交易級別的共識” 之外,Shardeum 的白皮書提到,一個獨特功能是它使用動態狀態分片,不同於靜態分片中的所有節點都覆蓋相同的地址範圍,Shardeum 的虛擬分片(也即動態分片)可以讓每個節點持有不同的地址範圍,覆蓋的地址之間存在重疊節點— — 這樣做具有更大的複雜性,但是好處是它允許真正的線性縮放。
通過地址空間和節點對應關係的動態變化,加上一種新的數據可用性證明來做跨分片驗證,Shardeum 可以做到擬合或者近似的“線性擴展”。這種按照“交易級別” 進行驗證和確認的方式,可能會一定程度上犧牲單片內的性能,但是對於網絡整體,是非常有益的擴展。
Shardeum 目前擁有10 個分片,每個分片128 個節點,共1280 個節點,主網預計2022 年第四季度上線。雖然Shardeum 仍在開發中,但在協議層面使用的Shardus技術已被證明可以實現線性擴展。在2021 年第三季度的更新活動中,shardus 運行在AWS t3.medium 硬件上的1000 個節點的網絡被證明可以達到5000 TPS 的跨分片交易。
2022 年8 月,Shardeum 在具有完整分片功能的測試網Liberty 2.0 上,通過ERC20 代幣轉移成功展示了100TPS 的能力。通常來說,一個區塊鏈需要幾年的時間才能建立並達到更高的TPS,但Shardeum 在推出Liberty 1.0 後不到4 個月就實現了這一目標。目前,Shardeum 用50 個節點測試並發布了Liberty 2.0,其中每個節點存儲了約1/5 的總數據,執行了1/5 的總交易。
四、結語
一個真正的分片和可擴展的區塊鏈需要從頭開始。同樣,一個擁有鑽石般共識的社區也需要從無到有地構建,而社區的建設從來不比技術的研究和突破輕鬆容易。我們看到了Shardeum 測試網上線後,活躍的測試人數以及測試交易數,興奮於我們發現的革新之路有更多人攜手同行,同時也看到了一些質疑的聲音,只是我們相信進步的道路是螺旋而曲折的,任何的創意和探索都值得一試。
正如《抱朴子·用刑》中說,“國有六職,百工與居一焉。或坐而論道,或作而行之”。也有一說,與其坐而論道,不如起而行之,Jsquare 始終以開放的態度,希望更多建設者們加入去中心化與分片的測試與探索中。 2022 年4 月26 日Shardeum推出了Shardeum alphanet(Liberty)1.0,從那時起,很多用戶參與了Shardeum測試,超過100K+ 的錢包創建,1000+ 的智能合約部署,導致更大的TPS 要求。正如我們相信,只有在Web3 大面積採用的時候,那些高質量高性能去中心化的公鏈才會在市場競爭中脫穎而出,也正如我們所相信的,那些經歷了質疑、指責、公開討論和反复論證的社區,才能在去中心化的路上走得越來越遠。
Reference
1.https://blog.chain.link/blockchain-scalability-approaches-zh/
2.https://www.odaily.news/post/5147856
3.https://docs.near.org/concepts/basics/transactions/overview
4.https://medium.com/nearprotocol/the-authoritative-guide-to-blockchain-sharding-part-1-1b53ed31e060
5.https://medium.com/nearprotocol/unsolved-problems-in-blockchain-sharding-2327d6517f43
6.https://medium.com/nearprotocol/why-doesnt-near-just-replicate-ethereum-serenity-design-3e2cfa2f960c
7.https://ethereum.org/en/upgrades/sharding/#what-is-sharding
8.https://blog.ethereum.org/2020/03/27/sharding-consensus
9.https://www.web3.university/article/ethereum-sharding-an-introduction-to-blockchain-sharding
10.https://medium.com/harmony-one/enabling-cross-shard-communication-at-harmony-22f26483d0d1
11.https://en.elrondwiki.com/article/multi-shard-the-answers-to-certain-questions
12.https://docs.elrond.com/technology/cross-shard-transactions/
13.https://near.org/papers/nightshade/
14.https://shardus.com/whitepaper.pdf
關於Jsquare
Jsquare 是一家投研和技術驅動的投資機構,專注於賦能Web3 行業的Alpha 項目,以推進區塊鏈技術的大規模應用。目前我們的自有資金管理規模超過1.5 億美元。投資組合包括CeFi (CoinList, 3iQ, Republic, FV Bank),遊戲/ NFT (Efinity, Big Time, Thetan Arena, Apeiron),基礎設施/ 工具(Pocket, Render, ChainSafe, GSN) 等。
網站|www.jsquare.co
推特|@JSquare_co