Sui 的交易處理系統如何促成高效能網路?本文採訪 Mysten Labs 共同創辦人和首席科學家 George Danezis 。
(前情提要:Sui全鏈上儲存如何革新NFT:帶領DeFi走向大規模採用 )
(背景補充:深度分析 Sui 公鏈最新漏洞「倉鼠滾輪」為何被評為嚴重級? )
近日,我們 採訪了 George Danezis 探討 Sui 基礎設施的複雜性和可擴容性,以及 Sui 的交易處理系統如何促成高效能網路。 George Danezis 是 Mysten Labs 的共同創辦人和首席科學家(Sui 的最初貢獻者),也是倫敦大學學院安全與隱私工程領域的教授。
以下為本次採訪內容:
Q1 您來自學術領域,能介紹一下您的研究重點嗎?
我是倫敦大學學院(University College London,UCL)的教授,研究重點從廣義上說叫安全和隱私。 在 20 世紀早期,我在點對點系統和匿名系統方面進行了相當多的研究,這些系統許多都是以儲存為重點的大型分散式系統。當整個區塊鏈變得更加注重執行,尤其是以以太坊為代表的,我對分散式帳本和區塊鏈以及如何執行智慧合約產生了興趣。 其中無需許可的特性,我在早期點對點系統的工作中就非常熟悉。於是,我在 UCL 的研究小組開始著手研究如何構建更高效能的系統。我們創辦了 Chainspace 公司,將我們的一些想法商業化,後來團隊被 Facebook 收購。然後,我們幫助 Facebook 提出了擴容區塊鏈 Libra/Diem 的解決方案。但當方案沒有取得進展時,我離開了,繼續尋求其他機會來實現高效能區塊鏈的理念。
Q2 你還是一個教授,那您覺得應用和研究之間有什麼區別?
實際上並沒有太大的區別。當我們進行研究時,我們會考慮實現特定目標的所有可能性,比如構建一個高效能的區塊鏈或特定的功能。當然,在構建區塊鏈或選擇要在實際系統中使用的特定功能時,我們必須選擇其中一個可能。我們必須不斷地做出判斷,在所有這些好的想法中,哪一個實際上對人們最有用?哪個是人們正在尋求的?區塊鏈的採用存在哪些瓶頸?是什麼阻止了人們實現他們想要做的事情?在構建系統時,您仍然會考慮所有可能性,並試圖從學術文獻中瞭解可能的情況,然後選擇最相關的內容。 這不僅僅是知識興趣,而是為使用者創造價值。
Q3 從理論到實際應用時,您是如何確定要解決哪些問題的?
我在研究中解決的主要問題是如何擴容區塊鏈的不同功能。 我專注於區塊鏈的系統方面,比如,如何增加交易吞吐量並降低延遲。這方面的問題是顯而易見的,每當我們看到以太坊上的某個合約變得非常流行時,以太坊平臺就無法承受如此大的交易量,發生交易擁堵,費用暴漲。每當區塊鏈取得成功的時候,我們都看到它可處理的交易量都超過了現有的能力。因此,很明顯,問題在於沒有足夠的能力來滿足人們在這些區塊鏈上想要做的事情。這不僅僅是出於我們的想法,我們一次又一次地看到這種情況發生。在一段時間內,這被認為是一項有價值的挑戰,不僅僅在我的團隊,實際上整個學術界都在研究區塊鏈,大家都在用不同的方式解決這個問題。現在,已經有相當多的技術被開發出來擴容區塊鏈的能力,以解決這些挑戰。但在當時,眾所周知,很多人用不同的方式來解決它。
Q4 L2 網路是人們提出的解決擴容問題的一種方式,這與建立像 Sui 這樣的新型 L1 網路,有什麼區別和好處呢?
L2 是以太坊生態系統中擴容的解決方案。 但是對於應用程式開發者來說,使用 L2 網路有點棘手。當一個 L2 網路嘗試與以太坊進行互動時,必須進行橋接活動,雖然對於任何 L2/L1 的關係都是如此。在 L1 中代表 coin、資產或其他內容的狀態必須在 L2 中得到映象,反之亦然。除此之外,L2 還必須有一些機制,以便 L1 可以驗證在其中發生的一切。但這僅僅是第一部分,即存在於 L1 上的任何資產需要轉移到 L2 上,L2 上必須發生一些活動,然後以某種方式將資產轉回 L1。這是很麻煩的。
對於 tokens 這種可替代的資產,這種橋接活動還算順利,因為人們擁有兩個帳戶和一個橋接中介軟體。但是對於更一般的資產來說,效果並不好。要想在以太坊上實際使用 L2 網路開發比 tokens 更複雜的應用,您需要在兩邊都有智慧合約,一個用於鑄造(mint),另一個用於銷燬(burn)。它們必須在兩個不同的生態系統穿梭,這是每個合約的自定義活動。您不能簡單地說,我會建立一個 L2 網路,然後把所有資產帶走,然後按照自己的意願進行操作,再將它們帶回來,沒有這種概念。這是一個手動的過程,非常容易出錯。因此,這並不是一個很好的體驗。想像一下,您在多個不同的 L2 網路上都有資產,而且在不同的 L2 網路上都有這些自定義智慧合約。每次您想要對位於另一個 L2 網路上的某個狀態進行操作時,您都必須一路橋接回到 L1,然後再回到 L2。您不能輕鬆地說,我在這個區塊鏈上剛剛做了一些事情,然後我要在另一個區塊鏈上做另一些事情,我不需要考慮它是在哪個 L1 或 L2 上。一切都在這裡,我現在就拿在手上,已經準備好在我想要訪問的任何狀態上進行更多交易。這就是為什麼將狀態分散在 L2 網路中的體驗不好。在不同的鏈之間移動資產非常棘手,對使用者來說也顯而易見。這就是為什麼 L2 網路從未真正引起我興趣的原因。
還有一個例子是 Cosmos,它擁有一個非常有趣的生態系統,採用了另一種方法,即通過為不同的 apps 使用不同的區塊鏈來擴容。我們可以在不同的鏈上進行不同的交易速度,當需要在不同的 apps 之間進行操作時,可以在鏈之間橋接資產,但是它也面臨同樣的問題。每次您想要使用不同的 apps 時,您首先必須進行橋接操作,這對使用者來說是微妙且顯而易見的,然後您可以使用該 app 並橋接回來。您會發現自己花費更多的時間將資產從一條鏈轉移到另一條鏈,而不是做您真正想做的事情。
在 Sui 上,我們的方案是建立一個大型資料庫,實際上,它包含了所有被驗證節點複製的狀態。一旦您完成一筆交易,所有在同一個資料庫中的狀態都可以用於進行下一筆交易,而使用者不必在 L1 和 L2 上之間不斷地移動資產狀態。
Q5 Sui Lutris 是 Sui 協議的基礎,它的關鍵創新是什麼,能使得 Sui 具有高吞吐量和低延遲的特性?
Sui Lutris 由兩個關鍵理念組成:
(1)對於區塊鏈上的許多操作,實際上不需要進行共識;
(2)當您確實需要進行共識時,有一種非常高吞吐量的方法,它將這兩種方法結合在一起。
Sui Lutris 是 Sui 分散式系統的核心,確保在分散式網路上進行交易時,遵循協議的兩個不同驗證節點永遠不會處於不一致的狀態。從而不會出現一個驗證節點認為您花了一個 coin 並將其傳送給了 Alice,而另一個驗證節點認為同一個 coin 實際上發給了 Bob 的情況。
Sui Lutris:
https://tech.mystenlabs.com/sui-lutris-the-distributed-system-protocol-at-the-heart-of-sui
兩條不同的路徑,一條不需要共識(快速路徑),另一條需要共識(共識路徑)。 當您要操作的物件僅屬於您自己,例如您自己的 NFT 角色和您想要組合的帽子,以便您的角色可以戴上帽子,理論上其他人不應該對它們進行操作。在這些情況下,Sui 使用了快速路徑,它表示您可以操作自己的物件,您可以在沒有等待共識的情況下獲得交易的最終性,確保交易發生,帽子戴在了您的 NFT 頭上。
但在某些情況下,交易不僅僅只涉及屬於您自己的物件,它們由許多人共享。例如,如果有一個拍賣會出售小帽子,這種型別的拍賣會在 Sui 中表示為一個共享物件。人們可以競標,出價最高的人贏得帽子。這種拍賣是一種不屬於單個實體的物件,每個人都必須能夠競標、共享,並更新關於最新出價的狀態,這些型別的操作需要額外的共識。Sui Lutris 允許您擁有共享物件並在其上執行交易,從而您可以擁有其他物件,更改共享物件的狀態,或建立新的共享物件。它允許兩條路徑共存,並且由特定個體擁有的獨享物件或由多個人共享的共享物件之間相互作用。
這兩條不同的路徑具有不同的優勢。獨享物件的快速路徑的延遲極低,需要的時間少於一秒,非常快,並且可以廣泛地擴容。共識路徑的延遲則較高,通常超過一秒,容量也相當高,但是,與第一條路徑相比,它更難擴容。 在 Sui 上,那些真正通過每天數百萬次交易來推動鏈上 apps 的通常使用第一條路徑,並且在很大程度上將其 app 結構化為主要在獨享物件上進行最多的交易,而不是共享交易。另一方面,進行復雜工作的協議(例如 DeFi)通常實行第二種型別的交易,因為它們必須將許多不同人的競標或流動性結合在一起以執行操作。
Q6 Sui 上的 app 開發者是否可以設計他們的 apps 以利用快速路徑?
是的,絕對可以。我認為這是一個擴容 apps 設計者的核心工作。智慧合約開發者完全可以控制他們在合約中操作的物件在任何特定時間內是單個實體的獨享物件還是共享物件。在 Sui 中擴容 app 的一個訣竅是確保大部分操作基本上是在獨享物件上進行的,因為 Sui 可以在非常低的延遲下管理您想要的許多操作,這是一種很好的體驗。對於遊戲所必需的操作應該在這個類別中進行,與需要通過共享狀態和共享物件進行調解的操作相比,它們的延遲非常低。一旦點選,交易就可在網路上立刻完成。
智慧合約設計者對此有完全的控制權,他們基本上可以準確的指定每個類別中的交易是什麼。當然,合約的第一個版本可以將所有內容都視為共享狀態,而所有內容都會通過較高延遲的共識路徑進行,但隨著需要進行擴容,開發者需要考慮在多大程度上可以做到不需要這些部分。
Q7 可程式設計交易區塊在這其中如何發揮作用?
可程式設計交易區塊 可以在快速路徑或共識路徑上發揮作用。如果一個可程式設計交易區塊只涉及您的獨享物件,這意味著您可以在一個鏈上操作中執行多項操作。舉個例子,假設您是一個 CEX app,許多人在這裡買賣不同的 coins,您可以在鏈上進行一次交易,概念上對應於人們所買賣的內容。但因為您是交易所,它們都屬於您,因此可以同時結算一千個交易,這是快速路徑。另一方面,如果在可程式設計交易區塊內的一些物件是共享的,那就進入了共識路徑,這時延遲會稍高一些,不是不到一秒鐘而是要幾秒鐘。
Q8 主網上線了 100 多天,Sui 的表現有證實您假設的研究理論嗎?有沒有什麼讓您感到驚訝的?
有幾件事情證實了 Sui 的設計,但也有一些事情令人深思。一個是在交易量特別多的時候,甚至是在一個特別的時刻,每天的交易量甚至超過 6000 萬筆,其中大部分交易是處於快速路徑。 Sui Lutris 非常可擴容且具有非常低的延遲。 在那之前,尚不清楚是否會有人使用這條路徑,但當需要大量交易和低延遲時,它被使用了,而且非常有效!這很容易看到,就是這個方法。在那些日子裡,Sui 的交易量超過了所有其他區塊鏈的總和。 這是一個有趣的驗證,證明了 Sui 的設計是合理的。
與此同時,Sui 社群發現這個快速路徑有點微妙。因為物件的所有者在某種程度上必須管理他們自己物件上的操作順序,有時可能會出錯。有時他們甚至可能使用無法幫助他們的庫,而庫本身出錯,因此有時物件被鎖定。通常它們會在一天結束時,即一個 epoch 結束時解鎖,但這並不是一個很好的體驗。設計智慧合約的人對此可能會感到害怕,擔心這種情況可能會發生錯誤,這阻止了他們充分利用低延遲和擴容性的設施。一整套技術正在被開發,允許那些被錯誤地鎖定物件的人在幾秒鐘內快速解鎖它們。因此,如果您嘗試使用快速路徑,發生錯誤,您的物件被鎖定,那麼您可以立即使用共識路徑將其解鎖,而無需等到一個 epoch 結束。
而且,奇怪的是,這不僅僅是為了避免錯誤,它還允許開發人員通過快速路徑來表達更多的事情,存在一些潛在的技術,其中一些物件不僅僅是由一個當事方擁有。也許有一個物件是你和我共同擁有的,因為它是共享的,通常在該物件上的交易必須通過共識路徑進行。然而,如果 Sui 有一種快速解鎖物件的方法,開發人員實際上可以嘗試通過快速路徑進行交易。在你和我恰好在同一時間對同一物件進行交易的情況下,系統將被鎖定,無法決定哪個交易發生在下一個,然後 Sui 可以解鎖它,並使其經過共識路徑,使其變為共享並解決它。但除非人們故意試圖競爭,否則這種情況是不可能發生的。一旦 Sui 具備了允許解鎖物件的功能,它應該能夠讓屬於多個人的物件通過快速路徑。這是一種試圖通過快速路徑儘可能多地傳遞交易量的遊戲,這是正在開發以幫助構建者社群的一種型別的事情。
Q9 您能更詳細地分享一下當前導致物件鎖定的原因嗎?
當一個物件屬於你時,它之所以不需要通過共識來告訴 Sui 發生的一系列操作的順序,是因為沒有其他人可以對你的物件進行操作。Sui 依賴於你告訴系統,動作 A 將首先發生,動作 B 將其次發生,動作 C 將最後發生。系統仍然必須檢查 ABC 是否被所有人以相同的順序看到。該系統通過一個分散式協議來實現,只檢查我們是否都依次看到了 ABC。問題是,如果你犯了一個錯誤,或者你的軟體犯了一個錯誤。例如,如果你的手機控制你的資產,你的電腦控制你的資產,你的手機表示首先發生的是 A,而你的電腦表示首先發生的是 B。你錯誤地對兩件不同的事情進行了排序。這是一個矛盾。在這種情況下,Sui 會說:
「好吧,我委託告訴我順序的人似乎給了我兩個矛盾的事情,所以我不知道該怎麼做。我不知道如何解決這個問題。」
因為 Sui 通常通過共識路徑來解決這個問題。但在這裡,你正試圖使用快速路徑。所以 Sui 舉起了它的手說:
「好吧,在這裡出現了一個錯誤。」
最初的假設是,這種情況不會經常出現,但事實證明它經常發生,因為人們使用不同的裝置,或者試圖在同一時間對相同的物件進行多次交易。目前,當這些物件被鎖定時,Sui 會等到一個 epoch 結束才將它們解鎖,這非常令人擔憂。想像一下,如果你的資產在一天內無法使用,這實際上可能是一個嚴重的問題。
因此,現在 Sui 需要發展以在某物被鎖定時採取正確的行動。如果被委託提供正確順序的實體給出了一個不明確的順序,Sui 將把整個情況通過共識來解決。這將在幾秒鐘內發生,而不是在一個 epoch 結束時發生。
Q10 您的很多研究都是圍繞隱私展開的。您對公鏈如何最好地平衡透明度、可追溯性與隱私有何看法?
在公鏈中,如何平衡透明度、可追溯性和隱私,這是一個與應用非常相關的問題,而我在隱私方面的觀點是,什麼需要保持隱私在很大程度上取決於應用本身。 例如,在 Sui 上,讓應用開發者來開發合約以保護其使用者的隱私是很合理的。因為有些人只想開發遊戲,可能對隱私問題的關注不是那麼大。有些人想在區塊鏈上處理金融事務,隱私可能更令人擔憂,但與此同時,還會涉及到其他種類的監管問題。所以 Sui 的態度是,我們會提供給你一個很好的平臺,你需要在這個平臺上構建隱私。
為了幫助人們構建隱私,Sui 提供了一些加密原生支援,這些支援在設計智慧合約時可能會對他們有用。其中最重要的一個是在 Sui 上驗證 零知識證明 的能力。有一個本地函式可以驗證最廣泛使用和理解的方案之一,即由我的同事 Jens Groth 開發的 Groth16 方案 。這意味著,實際上,apps 的設計者可以在鏈下驗證某些事件,而不需要透露這些事件是什麼。這是構建一整類隱私友好型應用的基本構建模組,它們將一些狀態保持在鏈外,但在鏈上,您可以驗證鏈外發生的任何事情是正確的。
應用開發者決定了他們的應用需要什麼樣的隱私保護,並使用這些原生支援來組合鏈上、鏈下、鏈上加密等策略,以應對他們可能遇到的隱私問題。
Q11 在 Sui 上是否有更多的隱私原生支援?
社群正在思考開發者在更加隱私友好的情況下編寫智慧合約所需的支援,零知識證明就是其中之一,有些人可能會認為 Sui 需要更多通用的數學或密碼學函式在鏈上。我們很願意看到智慧合約的設計者就缺失的部分提供回饋,還有其他一整類的技術可以用來保護隱私,比如 多方計算 或可信硬體。不同的區塊鏈已經朝著這些方向發展,這些需要非常複雜的附加系統。社群中需要足夠的證據表明人們想要這些技術,因為它們代表了對 Sui 架構的一些基本變化。但是如果社群想朝著這個方向發展,就會有一個提出新增隱私保護方式的流程。
Q12 您認為在未來 6 到 12 個月內 Sui 會如何發展?
這取決於人們在 Sui 上開發了什麼樣的應用,在短期內,很多改進將針對人們實際構建的應用。從非常長遠的角度來看,在區塊鏈標準下,6 到 12 個月可以被視為非常長的時間,我們將會改進 Sui Lutris 協議,以實現更低的延遲,更簡單的協議,使 Sui 能夠更好地擴容。此外,還會使經濟更高效,使驗證節點能夠在更受限的硬體上執行,並將現有的硬體用於實際執行交易,而不是進行密碼學或區塊鏈的其他開銷。這是我們預期將會看到的內容。
📍相關報導📍
Sui基金會鎖倉代幣竟在質押?KOL痛罵內幕「挖提賣」,造成SUI瘋狂通膨