近日,我們採訪了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能夠更好地擴展。此外,還會使經濟更高效,使驗證節點能夠在更受限的硬件上運行,並將現有的硬件用於實際執行交易,而不是進行密碼學或區塊鏈的其他開銷。這是我們預期將會看到的內容。