歡迎來到「Solana 簡明教程」系列,本系列旨在協助您精通 Solana 錯綜複雜的生態系統。在第一篇文章中,我們探討了 Solana 的運作機制、帳戶模型以及交易結構。在第二篇文章中,我們引導您使用 Rust 編寫並測試了您的第一個 Solana 程式。
作為本系列的第三篇即最後一篇文章,本文將帶領您使用 Phalcon Explorer 分析一筆簡單的 Solana 交易。在我們深入研究實際的 Solana 交易分析之前,首先讓我們探討令牌 (Token) 在 Solana 上是如何實現的,這是理解交易流程的基本功。
理解 Solana 令牌實現
Solana 上的令牌大致可分為兩類:原生令牌 (Native Token) 和其他令牌 (SPL Tokens)。掌握這些區別對於進行有效的 Solana 交易分析至關重要。
原生令牌 (SOL)
原生令牌指的是 Solana 的主要加密貨幣 SOL。如第一篇文章所述,Solana 中的每個帳戶都有一個 Lamports 欄位,記錄該帳戶中的 SOL 餘額。Lamports 是 SOL 的最小單位,1 SOL 等於 10 億 Lamports。SOL 用於支付交易費用、質押以及參與網路運作。
其他令牌 (SPL Tokens)
對於其他令牌,Solana 使用了一個圍繞程式帳戶(Token Program)和兩種類型數據帳戶(Mint Account 與 Token Account)構建的強大框架。這種架構提供了在 Solana 區塊鏈上管理及與各種令牌互動所需的所有必要功能。
Solana Token Program
Token Program 是由 Solana 程式庫 (SPL) 提供的一個程式帳戶,這使得其 AccountInfo 中的 Executable 欄位為 True。
與系統程式 (System Program) 類似,Token Program 部署在 Solana 上的固定位址,且其擁有者為 BPF Loader。作為一個功能強大的程式帳戶,它實作了眾多指令以提供多樣化的令牌功能。例如,一些指令用於建立 Mint Account 以初始化新令牌,或建立 Token Account 以記錄特定位址持有的令牌數量。其他指令則促進了基本的令牌操作,例如增加令牌供應量的 MintTo 指令,或在兩個位址之間轉移令牌的 Transfer 指令。
需要注意的是,由於 Token Program 負責建立 Mint Account 和 Token Account,因此它也是這些帳戶的擁有者,這賦予了它控制這些帳戶生命週期與數據的權限。
Mint Account 結構
Mint Account 是一個數據帳戶,這意味著其 AccountInfo 中的 Executable 欄位為 False。在 Solana 上,每一種獨特的令牌(例如 USDC、RAY 等)都對應一個唯一的 Mint Account。此帳戶儲存了諸如令牌總供應量、小數位數 (Decimals) 以及擁有鑄造(建立)或銷毀令牌權限的帳戶位址等關鍵資訊。
Token Account 結構
Token Account 記錄了個人或其他程式持有的特定令牌數量。對於每一種令牌,每個持有該令牌的實體都有一個對應的 Token Account。例如,如果用戶持有五種不同的 SPL 令牌,他們將擁有五個不同的 Token Account,每種令牌類型一個。
Token Account 是一個數據帳戶,其 AccountInfo 的 Data 欄位通常包含三個關鍵子欄位:
- Mint: 對應此特定 Token Account 的 Mint Account 位址,用於識別它持有哪種令牌。
- Owner: 有權從此 Token Account 轉移令牌的帳戶公鑰。這是令牌真正的「擁有者」。
- Amount: 此 Token Account 中當前持有的令牌數量。
需要特別強調的是,
AccountInfo 中的 owner 欄位(決定了誰可以修改帳戶數據)與 Token Account 的 Data 內部的 owner 欄位(指定了誰擁有這些令牌)是截然不同的概念。前者是通用的 Solana 帳戶屬性,而後者則是 SPL Token Account 特有的。
將這些概念連結起來,我們可以直觀地看到下方的帳戶關係圖。System Program 和 Token Program 都部署在區塊鏈上唯一的固定位址,並作為核心函式庫運作。一個錢包帳戶可以持有多個 Token Account,而它就是這些 Token Account 內令牌的真正「擁有者」。同一類型的 Token Account 中的 Mint 欄位指向該令牌唯一的 Mint Account,該帳戶記錄了令牌總供應量等資訊。
使用 Phalcon Explorer 分析 Solana 交易
雖然 Solscan 等傳統瀏覽器提供了寶貴的數據,但它們有時呈現資訊的方式對於詳細的 Solana 交易分析來說並不夠直觀。我們先看看 Solscan 中的一筆交易,然後看看 BlockSec 的 Phalcon Explorer 如何提供更清晰、更全面的檢視。
在 Solscan 中檢視 Token Account
我們可以使用 Solscan 來檢視此範例交易中 Token Account 的變動:
Address 欄位列出了交易中涉及的所有 Token Account。Owner 欄位標示了令牌真正的「擁有者」(即 Token Account Data 欄位中的 owner)。Token 欄位對應於當前令牌的 Mint Account。我們可以點擊第一行右側的「$SON」來取得更多詳細資訊:
概況摘要中的 Owner Program 表明當前 Mint Account 的擁有者是 Token Program。至此,我們已經在 Solscan 中對應了所有三種類型的帳戶。
然而,Solscan 的這種顯示方式可能有點誤導。例如,在上圖中,第一行增加的餘額到底是屬於 CHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuY 位址,還是屬於 Raydium Authority V4,尚不清楚。這種歧義增加了用戶理解交易真實流程的難度。此外,讀者可能會注意到 Solscan 將 SOL 令牌和其他令牌分開顯示。雖然這種分離在技術上是合理的,但如果能將它們放在統一的令牌區塊下呈現,對於全面掌握資產變動會更容易理解。
Phalcon Explorer 不僅解決了這些問題,還針對詳細的 Solana 交易分析引入了許多其他創新功能。現在,讓我們使用 Phalcon Explorer 來檢查同一筆交易。
我們強烈建議打開此交易的 Phalcon Explorer 連結,並跟隨我們的步驟一起分析。這種互動式的方法將讓您更好地理解交易細節,並體會 Phalcon Explorer 在 Solana 交易分析方面的強大功能!
在 Phalcon Explorer 中檢視與分析交易
在頁面左上角,您可以看到該交易已被識別為一筆 JITO MEV 交易,這對於安全分析師來說是一項有價值的資訊。如果需要,您也可以點擊交易簽名旁邊的 Solana 圖示直接跳轉至 Solscan。
關於這筆 Solana 交易的資訊在邏輯上被分為四個關鍵區塊:基本資訊 (Basic Info)、資金流向 (Fund Flow)、餘額變動 (Balance Changes) 以及 調用流程 (Invocation Flow)。您可以通過點擊右上角的圖示在這些區塊之間無縫切換,從而進行全面的 Solana 交易分析。
基本資訊
基本資訊區塊提供了關於當前 Solana 交易的核心詳情。您可以點擊區塊編號和簽名者位址跳轉至 Solscan 進行交叉參考或獲取更多背景資訊。在深入研究交易執行的具體細節之前,該區塊提供了一個快速概覽。
資金流向
資金流向區塊提供了在交易執行過程中資金移動與時序的清晰視覺化表示,使 Solana 交易分析變得直觀:
- 交易發起者與簽名者
59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F,首先向標記為Raydium Authority V4的位址轉移了一定數量的令牌。 - 接著,
Raydium Authority V4向簽名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F轉回了約 6.747 個 Wrapped SOL 令牌。 - 最後,簽名者向 Jito 提供了 0.000003 SOL 作為執行該交易給 Jito 驗證者的小費,這顯示出是一項與 MEV 相關的活動。
下方是 Solscan 的資金流向圖以供比較。與 Solscan 相比,Phalcon Explorer 資金流向圖中的每個位址都唯一對應一個節點,這使得識別位址之間的關係變得容易得多,從而提高了分析效率,特別是在處理複雜的 Solana 交易時。
如果您希望對交易的資金流向進行更深入的分析(例如用於事後響應或取證調查),您可以點擊右上角的棕色圖示進入 BlockSec 的進階鏈上分析工具 MetaSleuth。
餘額變動
餘額變動區塊清晰地顯示了 Solana 交易結束後不同帳戶的令牌變動。對於 Solana 交易分析而言,這種統一的檢視視角是一項重大優勢。
例如,交易簽名者 59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F 在三種令牌上發生了變動:原生令牌 SOL、名為 61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKp 的令牌(極有可能是 SPL 令牌),以及 Wrapped SOL 令牌。
餘額變動中顯示的每個帳戶位址都有一個或多個與之關聯的 Token Account。通過點擊各自的位址,您可以複製它或跳轉至 Solscan 以獲取更多上下文。
Phalcon Explorer 在此檢視中不區分 SOL 令牌和其他 SPL 令牌,這直接反映了給定帳戶所有令牌的變動。這種統一的呈現方式使得視覺化 Token Account 及其擁有者之間的關係變得容易得多,從而為 Solana 交易期間的資產移動提供了更完整的畫面。
調用流程
調用流程記錄了交易指令的執行過程,每一行對應於 Solana 交易執行期間執行的指令。對於理解智能合約互動或程式呼叫內部的精確操作順序,此區塊非常無價。
這裡我們關注涉及令牌轉移的指令 2 和 4。
第二條指令呼叫了 Raydium AMM 的 swapBaseIn 來賣出一個令牌。展開此指令會發現它包含兩條 CPI(跨程式調用)指令,這些指令推動了 Raydium Authority V4 與交易簽名者之間的令牌轉移。第四條指令是簽名者向 Jito 支付小費的流程,確認了該交易的 MEV 性質。
如下圖所示,通過點擊每條指令後的 Accounts 分頁,我們可以檢視該特定指令中涉及的所有帳戶。與 Solscan 相比,這種顯示方式更加簡潔,使分析師能夠專注於交易中更關鍵的資訊,而不必被無關的細節所干擾。這種細粒度的檢視方式對於進行深入的 Solana 交易分析與調試至關重要。

總結
在本文中,我們首先介紹了 Solana 令牌的實現原理,涵蓋了原生 SOL、Token Programs、Mint Accounts 以及 Token Accounts。隨後,我們使用 Solscan 檢查了一筆特定交易的 Token Account 變動,並強調了其部分侷限性。最後,我們利用 BlockSec 的 Phalcon Explorer 對同一筆 Solana 交易進行了進一步、更深入的分析,展示了其創新功能,這些功能為 Solana 交易分析提供了卓越的清晰度與洞察力。
至此,「Solana 簡明教程」系列全部結束。希望這些內容對您理解 Solana 的核心概念以及進行實際的交易分析有所幫助。如果您還有想了解的其他主題,例如具體安全事件、生態系統介紹或其他 BlockSec 產品,歡迎留言告訴我們!🫡


