media Image
由 Transaction 的生命週期看 Solana 的底層架構
Back Icon Image

Outline

  • Overview
  • Solana Transaction Lifecycle
    • User
    • Gulf Stream
    • Block Building
    • Turbine Tree
    • Block Verification
    • Consensus

References

延伸內容:

  • TBFT
  • SWQoS
  • Firedancer
  • validator投票完然後呢?
  • 怎麼接收正確的共識
  • Archive更新
  • 不同節點的PoH時鐘如何維持一致
  • How does PoH make Solana different from other Blockchain?
  • How does a sequencer work?

綜覽

Solana 區塊鏈的交易生命週期可以分為六個階段:User、Gulf Stream、Block Building、Turbine Tree、Block Verification 和 Consensus。這篇文章將帶你一步步了解每個階段的運作方式,並探索 Solana 如何透過這些技術實現高效能的區塊鏈運作。

User (使用者階段)

交易的生命週期從使用者發起交易開始。通常這個過程包括以下幾個步驟:

  1. 連結錢包: 使用者首先需要將他們的加密貨幣錢包連結到去中心化應用程式 (DApp) 上。
  2. 組裝交易訊息: DApp 負責將交易所需的資料進行組裝,這包括參與的帳戶、交易數據以及智能合約指令等。
  3. 簽署交易: 組裝好的交易訊息會傳遞給使用者的錢包,使用者在錢包中進行簽署。這個過程使用到使用者的私鑰來驗證交易的合法性。
  4. 發送交易: 簽署完成後,DApp 會將簽署好的交易發送回應用程式,並透過 RPC (遠端程序呼叫) 將交易訊息傳送到 Solana 區塊鏈上。

在這個階段,使用者通過 DApp 與錢包的互動來發起並簽署交易,最終將交易提交到區塊鏈網絡中進行處理。

深入探討:Solana - User (使用者階段)

Gulf Stream

一旦交易被提交,Solana 的 Gulf Stream 技術就會啟動。Gulf Stream 可以被類比為一個快速通道,負責在交易正式記錄到區塊鏈之前的傳遞和儲存。這種技術使得交易可以直接被發送到當前的「領導者」(Leader)節點,就像直接將包裹送到快遞中心,而不是先放在郵箱等待收取。這樣的設計使 Solana 能夠更加快速地處理交易,降低延遲。

在 2024 年,Solana 引入了 "Stake-Weighted Quality of Service" (SWQoS) 機制。這個機制類似於展場的快速通道,擁有更多質押的節點可以獲得更高的傳輸優先權,並且可以將這一權限租借給其他節點。這種設計有效提高了交易處理的效率,並減少了網路擁塞的風險。同時,Solana 採用了 QUIC 協議來管理交易訊息的傳輸,這相當於為網路提供了一條更快速、更穩定的通道來應對高峰時段的流量。

Block Building

在交易被成功傳遞到領導者節點後,進入了 Solana 的 Block Building 階段。Solana 採用的是「連續區塊構建」技術,而不是等待交易池累積後再構建區塊。這就像是一邊打包貨物一邊運送,而不是等所有貨物都準備好再一起發出。這種方法大大降低了交易延遲。

Solana 將時間分割為 400 毫秒的「時間槽」(slot),每四個時間槽由一個「領導者」(Leader)負責處理。領導者在連續處理四個時間槽後,會將控制權轉交給下一個節點。當一個節點準備成為領導者時,它會提前停止接收新交易,以應對即將到來的大量數據流量。

在這個階段,交易通過交易處理單元(TPU)進行處理,經過簽名驗證後這些交易會被分組成一個一個 entry,並由 Solana 的虛擬機(SVM)執行。SVM 是 Solana 特別設計的執行環境,能夠同時處理多筆不衝突的交易 (一個entry),大大提高了處理效率。交易完成後,變更會記錄到區塊鏈中,並更新帳戶狀態。值得注意的是,Solana 的設計允許驗證者在區塊內靈活排序交易,這為 Solana 的經濟設計帶來了更多的靈活性。

深入探討:Block Building

Turbine

在 TPU 初步處理完 entry 後,會將這些 entry+執行完的狀態傳送給驗證者。而為了加速傳遞,會先將一個 entry 分解成很多個 shreds 再傳送給其他節點做驗證。這些節點會排列成一個樹狀的結構(如圖)稱作「Turbine Tree」。收到 shred 的驗證者們會先將收到的 shred 傳給他底下的其他節點,再在自己的機器中執行驗證的步驟。

深入探討:Solana - Turbine

Block Verification

在這個階段,驗證者使用 Transaction Verification Unit (TVU) 進行驗證。驗證者收到領導者傳來的 shreds 後會進行簽名驗證,確定收到的 shred 的簽名者是當下時刻的 leader。確認後就會先傳遞下去給其他驗證者,再還原成 entry 並在 Replay Stage 中進行狀態驗證。簡單來說就是驗證者也會跑一次收到的交易,看看最後驗證者的 bank 狀態是否與 entry 給的狀態一樣。如果一樣的話他就會認定這包交易沒有問題,就會投票給他 (vote)。因此一包交易「獲得投票」表示某個驗證者認為這包交易是正確無誤的,應該被存在鏈上,成為一區塊 (block)。

深入探討:Solana - Block Verification

Consensus

所謂共識要達成的目的有兩個:第一是排除掉虛假的交易;第二是確認所有交易之間的順序。Solana 使用 Tower BFT (TBFT) 演算法來達成區塊鏈網路的共識。相對於其他區塊鏈使用 Practical Byzantine Fault Tolerance (PBFT) 演算法來達成共識,TBFT的優勢在於有效的利用 PoH 機制來達成交易順序上的共識。因此能夠大幅減少達成共識所需要花費的時間。

這邊也順便介紹一下一個交易在 Solana 網路中的三種不同狀態: Processed, Confirmed, Finalized。Processed 表示該交易已經進入 leader TPU 中處理並傳給驗證者做驗證;Confirmed 表示他所在的 block 已獲得 2/3 的驗證者投票;Finalized 則表示該 block 的後面已經接了 31 個 blocks 以上,那就是完全被出塊了,無法再被倒退 (rollback)。截至目前為止,所有被 confirmed 的區塊都有成功被 finalized 喔!

深入探討:Solana - Consensus

結語

看完以上的文章,相信你對 Solana 一筆交易從發送到出塊的順序和過程已經有大致的了解,也發現了 Solana 強大的地方了吧!如果想要繼續挖掘 Solana 更深的秘密,可以查看其他文章了解更詳細的講解唷~

原文連結:https://zeusnetwork.notion.site/Transaction-Solana-8a4dc1447d5649949c038e3426ee3d8f?pvs=4