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 (使用者階段)
交易的生命週期從使用者發起交易開始。通常這個過程包括以下幾個步驟:
- 連結錢包: 使用者首先需要將他們的加密貨幣錢包連結到去中心化應用程式 (DApp) 上。
- 組裝交易訊息: DApp 負責將交易所需的資料進行組裝,這包括參與的帳戶、交易數據以及智能合約指令等。
- 簽署交易: 組裝好的交易訊息會傳遞給使用者的錢包,使用者在錢包中進行簽署。這個過程使用到使用者的私鑰來驗證交易的合法性。
- 發送交易: 簽署完成後,DApp 會將簽署好的交易發送回應用程式,並透過 RPC (遠端程序呼叫) 將交易訊息傳送到 Solana 區塊鏈上。
在這個階段,使用者通過 DApp 與錢包的互動來發起並簽署交易,最終將交易提交到區塊鏈網絡中進行處理。
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 的經濟設計帶來了更多的靈活性。
Turbine
在 TPU 初步處理完 entry 後,會將這些 entry+執行完的狀態傳送給驗證者。而為了加速傳遞,會先將一個 entry 分解成很多個 shreds 再傳送給其他節點做驗證。這些節點會排列成一個樹狀的結構(如圖)稱作「Turbine Tree」。收到 shred 的驗證者們會先將收到的 shred 傳給他底下的其他節點,再在自己的機器中執行驗證的步驟。
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 一筆交易從發送到出塊的順序和過程已經有大致的了解,也發現了 Solana 強大的地方了吧!如果想要繼續挖掘 Solana 更深的秘密,可以查看其他文章了解更詳細的講解唷~
原文連結:https://zeusnetwork.notion.site/Transaction-Solana-8a4dc1447d5649949c038e3426ee3d8f?pvs=4