5分鐘教你看懂Solana交易

歡迎來到《玩轉Solana》系列的第3期。在第1期文章中,我們學習了Solana區塊鏈的運行機制、帳戶模型和交易結構;在第2期文章中,我們學習了如何使用Rust來編寫一個用於發布和展示文章的Solana程序並利用TypeScript腳本對其進行測試。

作為本系列的最後一期,本文將帶領大家使用Phalcon Explorer來分析一筆簡單的Solana交易。 不過在此之前,讓我們先來看看Solana上的Token是如何實現的。

關於Tokens

Solana上的Token可以分為兩類:Native Token和其它Token。

Native Token其實就是Solana Token (SOL)。我們在之前的文章裡曾提到,Solana中的每一個帳戶都擁有一個Lamports欄位,Lamports實際上是SOL Token的最小單位(1 SOL = 10億Lamports),它記錄了當前帳戶Solana Token的餘額。

而對於其它Token,Solana使用了一個程序帳戶(Token Program)以及兩種數據帳戶(Mint Account和Token Account),來實現Token需要的所有功能。

Token Program

Token Program 結構示意圖

Token Program是由Solana Program Library(SPL)提供的一個程序帳戶,因此AccountInfo的Executable欄位顯示為True。

正如我們在第一篇文章中介紹的那樣,所有程序帳戶的擁有者都是BPF Loader,Token Program也不例外。此外,和System Program一樣,Token Program也被部署在Solana鏈上的一個固定地址。

作為一個程序帳戶,它實現了數個指令來提供不同的功能。比如,一些指令被用於創建Mint Account以初始化一種新的Token,或是創建Token Account用於記錄某一個地址持有的Token數量;而另一些指令則提供了使用Token需要的所有功能,比如增加Token數量的MintTo指令,或是用於在一對地址之間轉移Token的Transfer指令。

需要注意,由於Token Program負責創建Mint Account和Token Account,它還是這兩種帳戶的擁有者。

Mint Account

Mint Account的結構和關係如下所示:Mint Account是一種數據帳戶,這意味著其AccountInfo的Executable欄位為False。

在Solana上,每一種Token都和一個Mint Account對應。Mint Account記錄了該種Token的總供應量,擁有Mint該Token權限的帳戶地址等信息。

Token Account

Token Account用於記錄個體持有某種特定Token的數量。針對某一種Token,每一個持有該Token的帳戶都擁有一個Token Account。如果某用戶擁有5種Token,那麼TA將擁有5個Token Account。

Token Account作為一種數據帳戶,其AccountInfo的Data部分由三個欄位組成:

  • Mint: 該Token Account對應的Mint Account的地址;

  • Owner: 有權將Token Account中Token轉出的帳戶,即該Token真正的「owner」;

  • Amount:當前Token Account持有的Token數量。

  • Token Account 結構圖

需要強調的是,AccountInfo中的owner欄位和Data欄位中的owner是完全不同的。前者是Solana中每一個帳戶都擁有的一個欄位,它指明了哪一個地址擁有直接修改當前帳戶數據的權限;後者則指明了該Token Account所記錄的Token實際上是屬於誰的,該欄位本身是AccountInfo Data欄位的一部分。

將上述的內容串聯起來,我們便能得到下面這張帳戶關係的示意圖。不管是System Program還是Token Program,它們在區塊鏈上都部署在唯一的地址,以庫的形式存在;一個錢包帳戶可能同時持有多個Token Account,它是這些Token Account真正的「owner」;同一類Token Account的Mint欄位指向了該種Token唯一的Mint Account,而該帳戶則記錄了Token的總供應量等信息。

在Solscan查看Token帳戶變化情況

我們可以使用Solscan來查看一筆交易中Token帳戶的變化情況:

https://solscan.io/tx/byRn8qtNAYSdvgaGCK4kmZV1m89b7uuFuy1cn96W6femp7WgwymLqJ2MP9hPbegqN9EPe7NvghWpqDFqoCDjKph#tokenBalanceChange

Address一欄列出了該交易涉及到的所有Token Account;

Owner一欄則標註了該Token真正的「擁有者」,也就是Token Account Data欄位中的owner;

Token一欄則對應了當前Token的Mint Account,我們可以點進第一行的$SON進一步查看:

可以看到,Profile Summary中的Owner Program指明了當前Mint Account的擁有者是Token Program,至此三類帳戶我們都在Solscan中進行了對應。

不過,Solscan這種展示方法可能會給人帶來一些誤解。比如,在上一張圖中第一行增加的Balance到底屬於地址CHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuY,還是Raydium Authority V4?這種展示方式無疑增加了理解的成本。

除此之外,讀者也許還會發現,Solscan中的Solana Token和其它Token在兩個板塊分開展示。儘管這種分割方式在技術上是合理的,但如果能在展示時將它們統一視作Token放置在相同板塊下則更加容易理解。

Phalcon Explorer不僅解決了上述問題,還針對Solscan做了很多其它創新,接下來讓我們再使用Phalcon Explorer來看看同一筆交易。

? 建議打開連結,跟隨我們的步驟一起分析,這樣可以更好地了解交易細節,感受 Phalcon Explorer 的強大功能 ?

https://app.blocksec.com/explorer/tx/solana/byRn8qtNAYSdvgaGCK4kmZV1m89b7uuFuy1cn96W6femp7WgwymLqJ2MP9hPbegqN9EPe7NvghWpqDFqoCDjKph

使用Phalcon Explorer查看和分析交易

在Phalcon Explorer的正上方可以看到,當前交易被識別成了JITO的MEV交易,並且可以通過點擊交易籤名旁的Solana標識來一鍵跳轉到Solscan。

關於這筆交易的信息被分成了四個板塊,分別是:Basic Info,Fund Flow,Balance Changes和Invocation Flow,你可以通過點擊右上角的圖標來切換到相應的部分。

Basic Info

Basic Info一欄的信息相對簡單,它提供了一些關於當前交易的關鍵信息。和交易籤名類似,你也可以點擊區塊號和籤名者地址來跳轉到Solscan上。

Fund Flow

Fund Flow一欄為分析者提供了交易執行時產生的資金流轉移和時序信息。我們可以看到:

  • 交易的發起者兼籤名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F首先向被標記為Raydium Authority V4的地址轉移了一定數量的某種Token;

  • 接著Raydium Authority V4向籤名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F轉帳了約6.747的Wrapped SOL Token;

  • 最後,籤名者還向Jito提供了0.000003的SOL Token作為Jito驗證者執行交易的小費。

下圖為Solscan中的資金流向圖。相較於Solscan,每一個地址在Phalcon Explorer中的資金流向圖唯一對應到一個節點,故而能更容易發現地址之間的資金流向關係,提高分析時的效率。

如果你想要對交易的資金流向進行更深入的分析還可以點擊右上角的棕色標識進入MetaSleush。

Balance Changes

Balance Changes一欄為我們清晰展示了不同帳戶在當前交易結束後所有Token的變化情況。

比如,交易的籤名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F就有三種Token發生了變化,分別是原生的SOL Token、名為61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKp的Token,以及Wrapped SOL Token。

在Balance Changes中出現的每一個Account Address都擁有一個或多個Token Account,通過點擊相應的地址能夠對其進行拷貝或跳轉到solscan上。

我們可以看到,Phalcon Explorer並沒有對SOL Token和其它Token作區分,故而能直接反映出某一帳戶所有Token的變化情況,並且能更加直觀地展示Token Account和其Owner之間的關係。

Invocation Flow

Invocation Flow記錄了交易的指令執行流程,其中的每一行都對應了Solana交易執行時的一條指令。

在這裡,我們重點關注2和4這兩條涉及到Token轉移的指令。

第二條指令調用了Raydium的AMM的swapBaseIn來賣掉Token。展開該指令可以看到它由兩條CPI(Cross Program Invocation)指令組成,這兩條指令的作用是在Raydium Authority V4和交易籤名者之間進行Token轉移;第四條指令則是籤名者向Jito支付小費的過程。

如下圖所示,通過點擊指令後的Accounts標籤,我們可以查看指令涉及到的所有帳戶。相較於Solscan,這種展示方式會更加簡潔,讓分析者將注意力放在交易中更關鍵的信息上。

結論

在本文中我們首先介紹了Solana中Token的實現原理,隨後使用Solscan查看了一筆交易中Token Account的變化情況。最後,我們使用Phalcon Explorer對該交易作了進一步分析,並介紹了Phalcon Explorer功能上的創新和優化細節。

  • Related Posts

    一場事先張揚的死亡:Jeffy假死背後的金錢和人性

    Jessy,比特鏈視界 幣圈Meme又出新敘事:死亡賽道。 …

    被幣安下架卻暴漲 羊駝幣莊家的極限操盤

    Jessy,比特鏈視界 按照常理,一個代幣被交易所下架,是一…

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    You Missed

    值得關注的八大敘事方向及相關項目

    • By jakiro
    • 14 5 月, 2025
    • 0 views
    值得關注的八大敘事方向及相關項目

    比特幣和加密貨幣正在佔領華爾街

    • By jakiro
    • 14 5 月, 2025
    • 1 views
    比特幣和加密貨幣正在佔領華爾街

    以太坊這輪上漲的真正推手是什麼?

    • By jakiro
    • 14 5 月, 2025
    • 0 views
    以太坊這輪上漲的真正推手是什麼?

    MEV的必然性:你看不見的鏈上博弈

    • By jakiro
    • 14 5 月, 2025
    • 1 views
    MEV的必然性:你看不見的鏈上博弈

    SOL 的交易價格是否應該比 ETH 低 68%?

    • By jakiro
    • 14 5 月, 2025
    • 1 views
    SOL 的交易價格是否應該比 ETH 低 68%?

    Web3律師解密:大家理解的RWA是哪種?

    • By jakiro
    • 14 5 月, 2025
    • 1 views
    Web3律師解密:大家理解的RWA是哪種?
    Home
    News
    School
    Search