Sui 創始人親筆:以“擠公車”为例闡述 Sui 的性能優勢

MystenLabs
2022-09-13 14:41:13
收藏
並行提效。

作者:Mysten Labs 首席執行官兼聯合創始人 Evan Cheng

來源:https://twitter.com/EvanWeb3/status/1569414553322274818

編譯:Azuma,Odaily 星球日報

Sui創始人親筆:以“擠公交”为例闡述Sui的性能優勢

過去一段時間,市面上出現了解析 Sui 的文章,但這些文章大多數都錯過了一項最關鍵的創新 ------ Sui 的數據模型及交易處理通道。我將在接下來的推文中分三部分就此進行解釋:

Part1:傳統區塊鏈的交易處理通道

Part2:Sui 的交易處理通道

Part3:Sui 的優勢

區塊鏈的運行邏輯是,隨著時間的推移,驗證者們會共同向鏈上添加新的區塊。交易處理通道位於「構建區塊------共識------執行------更新默克爾樹」這套流程的最前方,所有交易在向該流程的下游繼續推進之前必須被處理。而當新的區塊開始構建之時,交易的處理也會被暫停。

下面是一幅關於傳統區塊鏈的交易處理通道及其問題的示意圖。我們已看到許多項目都在嘗試用不同的方法解決這些問題。

Sui創始人親筆:以“擠公交”为例闡述Sui的性能優勢

Sui 的做法是通過「對象(objects)」來區分、組織數據。某款 NFT、某個代幣的餘額、某項智能合約,這些都是不同的對象(可以理解為類型),意味著 Sui 鏈上的交易可以根據對象的不同來分組處理。

下圖是一個簡單的例子,描述了可分為 3 組的 5 筆不同交易(稍後我們將回來繼續聊特定對象和共享對象)。這 3 組交易完全可以實現並行處理。

Sui創始人親筆:以“擠公交”为例闡述Sui的性能優勢

而在其他傳統的區塊鏈中,單個區塊內所有不相關的交易都需要依次處理。比如 Bob 向 Bruce 發送了一個 BAYC NFT,Alice 向 Alex 發送了一個 Punk NFT,Jane 用了某個 DEX 等等,所有這些交易都需要按照共識集體排序,執行,並最終表現在默克爾樹上。

打個比方,這就像是坐公交車。在傳統區塊鏈上,所有乘客必須排隊(共識)上車,每一位乘客都需要在發車前檢票(執行),然後再於同一個地點下車(默克爾樹更新),只有當公交車再次空開之後才能繼續容納新乘客,鏈才能繼續向前運行;而在 Sui 之上,鏈會根據目的地(對象)對所有旅客進行分組,各組旅客的票都會並行檢查,然後再由不同的車輛並行送往目的地。

Sui 的創新並不僅僅在於交易的並行處理(關於這點,未來會分享更多內容),交易結果在執行之後也會被提交至對象(比如某個代幣的餘額為 10,發送了 5,餘額還剩 5),它們可以被立即用作未來交易的輸入(input)。Sui 將默克爾樹作為了新建區塊的部分檢查點,待一系列相關交易最終確定後才會記帳。

此外需要注意的一點是,在前文的案例中,有些交易只對應一個特定的對象,比如只有 Bob 可以發起關於他所擁有的 BAYC NFT 的交易。特定對象類的交易可以跳過共識(只需要拜占庭一致廣播),因為所有者可以確認交易順序。

而對於另一類的交易,即所謂的共享對象型交易(比如 DEX 智能合約),則必須經過協商一致,因為沒有單一的所有者來決定順序。這就是我們 Narwhal & Bullshark 共識的用武之地。

簡單來說就是,特定對象類交易可以並行執行,共享對象型交易彼此間也可並行執行,但在各個共享的對象是需要順序執行的(這裡應用了其他靜態/動態技術)。

總而言之,你可以理解為:

  • 對於常規區塊鏈來說,所有交易都需要集體排序,然後執行。

  • 對於 Sui 來說,所有交易都會根據一定的邏輯區分、整理後再排序,然後執行。數據模型可以使不同交易之間的依賴關係更清晰,只有共享對象的交易才需要集體排序,特定對象的交易則不需要這一共識協商過程。

那麼,Sui 的這一架構可以解決哪些產品問題呢?讓我們繼續往下看。

首先是水平擴容的能力。在 Sui 之上,每組交易都是並行處理的,這就好比是前文說的每組旅客都會乘坐不同的車,所以如果有更多組旅客(交易),Sui 只需要再配備更多的車。關於這一點,Sui 可以通過內部驗證器來分片擴容 ------ 更多的工作者去處理更多的交易。

為什麼水平擴展擴容的能力很重要?想一想一些大型項目在考慮底層時的需求吧,他們需要確保底層可以承載其規模的持續增長,有性能上限的區塊鏈將成為這些項目入駐的阻礙,Sui 的設計正是為了應對這樣的需求高峰。

其次是可組合性。有什麼是在 Sui 上可行,但在其他智能合約平台上不可行的?比如將資產作為參數傳遞給函數,比如從函數中返還某種資產,再比如將資產存儲在一個數據結構內,或是直接存儲在另一個資產內。

以後我可能會專門再寫一篇關於可組合性的推文,因為這是一個相當複雜的主題。我只想說,Sui 在合約級別和資產級別(不同類型的對象可以嵌套在其他對象中)顯著提高了可組合性。

再然後是部分重播的能力。區塊鏈提供了所有交易的歷史記錄,這對檢查過往信息很有幫助。然而,如果某個產品需要關心一些鏈上數據,讀取可能會非常昂貴。Sui 的構架允許這些項目只關注它們所關心的對象的演化,即部分重播。

例如,一款將所有角色放在 Sui 上的 RPG 遊戲可以簡單地觀看代表著這些角色的對象。他們不需要從默克爾樹數據結構中挖掘所有數據。

最後是鏈上存儲。各類資產數據,比如遊戲的種族、等級、經驗等等,都可以存儲在 Sui 的對象中。Sui 可以使用傳統的方法來擴展鏈上存儲,現在更新鏈上資產的成本要低得多。

這一篇長推到此結束。這些內容維度較高,但並不是很全面。不過,我希望你能通過這些內容加深對 Sui 的了解。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
ChainCatcher 與創新者共建Web3世界