SolanaUniverse|認識海灣流(GulfStream)以及海平面(Sealevel)

Solana在技術底層架構上,不得不提到的兩個技術層面一個就是海灣流(Gulf Stream)以及海平面(Sealvel),這兩個技術相輔相成,是支撐Solana成為新的世界級公鏈的兩大支柱。今天Solana Uni

Solana在技術底層架構上,不得不提到的兩個技術層面一個就是海灣流(Gulf Stream)以及海平面(Sealvel),這兩個技術相輔相成,是支撐Solana成為新的世界級公鏈的兩大支柱。今天Solana Universe將為大家展示這兩股力量的如何推動Solana的運行。

海灣流(Gulf Stream):無內存交易轉發協議

內存池(MemPool)是一組已經提交,但尚未被網路處理的交易。

比特幣和以太坊而言,內存池的大小通常以未確認交易的數量來衡量,取決於區塊空間的供應和需求。即使在區塊鏈時代早期,當內存池增加時,也會對整個網路造成嚴重的瓶頸影響。

那麼,Solana是如何精益求精的?

SolanaUniverse|認識海灣流(GulfStream)以及海平面(Sealevel)

在不增加網路吞吐量的情況下,Solana驗證器可以管理10萬筆交易的內存池大小。這意味著,在網路吞吐量為5萬TPS的情況下,10萬筆交易的內存池在幾秒鐘內就能執行。這就是讓Solana成為世界上性能最強無許可區塊鏈的原因。

Solana網路對這個問題的解決方案是將交易緩存和轉發(forwarding)推送到網路邊緣,這被稱之為海灣流(Gulf Stream)。

由於每個驗證器都知道未來領導者的順序,客戶和驗證器提前將交易轉發給預期的領導者。這使得驗證器可以提前執行交易,減少確認時間,更快地切換領導者,並減少未確認交易池對驗證器的內存壓力,讓Solana每秒可處理5萬筆交易。這種解決方案在領導者不確定的區塊鏈網路中是不可能的。

它又是如何工作的呢?

客戶端(比如錢包)簽署引用特定區塊哈希的交易。客戶端選擇一個已經被網路完全確認的、最近的區塊哈希。區塊大約每800毫秒被提出一次,每增加一個區塊都需要成倍的增加時間來展開。使用默認的超時曲線,在最壞的情況下,完全確認的區塊哈希是32個區塊。

一旦一筆交易被轉發到任何驗證器,驗證器就會將其轉發到未來的領導者之一。客戶端可以訂閱驗證器的交易確認信息。客戶端知道區塊哈希在有限的時間內過期,或者交易被網路確認。這允許客戶端簽署對保證執行或失敗的交易進行簽名。

SolanaUniverse|認識海灣流(GulfStream)以及海平面(Sealevel)

一旦網路過了回滾點,交易引用的區塊哈希就會過期,客戶就可以保證交易現在是無效的,且永遠不會在鏈上執行。

到目前為止,很明顯,區塊鏈網路的功能只有在其內存池最小的情況下才會發揮作用。

當交易吞吐量有限的網路承擔著嘗試改造全新的擴展技術來解決不斷增加的內存池的努力時,Solana從一開始就通過海灣流等優化設計來解決第一代區塊鏈網路的問題,並實現巨大的交易吞吐量。

海平面(Sealevel):智能合約運作并行引擎

以太坊的EVM和EOS的基於WASM的runtime都是單線程的。這意味著每次都會有一個智能合約修改區塊鏈的狀態。

而Solana建立的智能合約運作并行引擎——海平面(Sealevel),可以并行處理數以萬計的合約,並使用驗證器作為核心。它可以使Solana的執行時間更有效率,還可讓交易在相同狀態的區塊鏈上同時執行。

Solana之所以能夠并行處理交易,是因為Solana的一筆交易在執行時,將讀取或寫入所有狀態。這不僅允許非重疊的交易併發執行,而且允許只讀取相同狀態的交易也併發執行。

Solana的帳戶資料庫Cloudbreak是一個公鑰到帳戶的映射。所有者是管理賬戶狀態轉換的程序的公鑰。程序是代碼,無狀態。它們依靠分配給它們的賬戶中的數據向量進行狀態轉換。

默認情況下,所有賬戶開始時都是由系統程序擁有的。用戶定義的程序由載入器程序載入。載入器程序能夠將賬戶中的數據標記為可執行。

此時,載入器驗證了位元組碼,位元組碼被載入到的賬戶可以作為一個可執行程序使用。新賬戶可以被標記為由用戶定義的程序所擁有。

SolanaUniverse|認識海灣流(GulfStream)以及海平面(Sealevel)

這裡的關鍵是,程序是代碼,在鍵值存儲中,存在一些鍵的子集,這個程序並且只有這個程序有寫訪問許可權。

交易指定一個指令向量。每條指令都包含程序、程序指令和交易要讀寫的賬戶列表。

像readv或writeev這樣的介面會提前告訴內核用戶想要讀取或寫入的內存。這允許操作系統預取、準備設備並在設備允許的情況下同時執行操作。

在Solana上,每條指令都會提前告訴虛擬機它要讀和寫哪些賬戶。

SolanaUniverse|認識海灣流(GulfStream)以及海平面(Sealevel)

SIMD指令允許單段代碼在多個數據流上執行。這意味著Sealevel可以執行一個額外的優化,這是Solana設計所特有的。

在性能方面沒有免費的午餐。為了使SIMD優化可行,所執行的指令應該包含少量的分支,而且應該都採取相同的分支。

通過海平面的并行處理,與單線程運行時相比,Solana能夠實現極高的吞吐量和可用性。

—-

編譯者/作者:Solana_Universe

玩幣族申明:玩幣族作為開放的資訊翻譯/分享平台,所提供的所有資訊僅代表作者個人觀點,與玩幣族平台立場無關,且不構成任何投資理財建議。文章版權歸原作者所有。

0

發表迴響