一文讀懂Solana交易原理!本文將帶領(lǐng)大家使用Phalcon Explorer來分析一筆簡單的Solana交易。不過在此之前,讓我們先來看看Solana上的Token是如何實現(xiàn)的。需要的朋友一起看看吧!
Solana上的Token可以分為兩類:Native Token和其它Token。
Native Token其實就是Solana Token (SOL)。我們在之前的文章里曾提到,Solana中的每一個賬戶都擁有一個Lamports字段,Lamports實際上是SOL Token的最小單位(1 SOL = 10億Lamports),它記錄了當(dāng)前賬戶Solana Token的余額。
而對于其它Token,Solana使用了一個程序賬戶(Token Program)以及兩種數(shù)據(jù)賬戶(Mint Account和Token Account),來實現(xiàn)Token需要的所有功能。
我們可以使用Solscan來查看一筆交易中Token賬戶的變化情況:
https://solscan.io/tx/byRn8qtNAYSdvgaGCK4kmZV1m89b7uuFuy1cn96W6femp7WgwymLqJ2MP9hPbegqN9EPe7NvghWpqDFqoCDjKph#tokenBalanceChange
Address一欄列出了該交易涉及到的所有Token Account;
Owner一欄則標(biāo)注了該Token真正的“擁有者”,也就是Token Account Data字段中的owner;
Token一欄則對應(yīng)了當(dāng)前Token的Mint Account,我們可以點進第一行的$SON進一步查看:
可以看到,Profile Summary中的Owner Program指明了當(dāng)前Mint Account的擁有者是Token Program,至此三類賬戶我們都在Solscan中進行了對應(yīng)。
不過,Solscan這種展示方法可能會給人帶來一些誤解。比如,在上一張圖中第一行增加的Balance到底屬于地址CHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuY,還是Raydium Authority V4?這種展示方式無疑增加了理解的成本。
除此之外,讀者也許還會發(fā)現(xiàn),Solscan中的Solana Token和其它Token在兩個板塊分開展示。盡管這種分割方式在技術(shù)上是合理的,但如果能在展示時將它們統(tǒng)一視作Token放置在相同板塊下則更加容易理解。
Phalcon Explorer不僅解決了上述問題,還針對Solscan做了很多其它創(chuàng)新,接下來讓我們再使用Phalcon Explorer來看看同一筆交易。
? 建議打開鏈接,跟隨我們的步驟一起分析,這樣可以更好地了解交易細(xì)節(jié),感受 Phalcon Explorer 的強大功能 ?
https://app.blocksec.com/explorer/tx/solana/byRn8qtNAYSdvgaGCK4kmZV1m89b7uuFuy1cn96W6femp7WgwymLqJ2MP9hPbegqN9EPe7NvghWpqDFqoCDjKph
在Phalcon Explorer的正上方可以看到,當(dāng)前交易被識別成了JITO的MEV交易,并且可以通過點擊交易簽名旁的Solana標(biāo)識來一鍵跳轉(zhuǎn)到Solscan。
關(guān)于這筆交易的信息被分成了四個板塊,分別是:Basic Info,F(xiàn)und Flow,Balance Changes和Invocation Flow,你可以通過點擊右上角的圖標(biāo)來切換到相應(yīng)的部分。
Basic Info
Basic Info一欄的信息相對簡單,它提供了一些關(guān)于當(dāng)前交易的關(guān)鍵信息。和交易簽名類似,你也可以點擊區(qū)塊號和簽名者地址來跳轉(zhuǎn)到Solscan上。
Fund Flow
Fund Flow一欄為分析者提供了交易執(zhí)行時產(chǎn)生的資金流轉(zhuǎn)移和時序信息。我們可以看到:
交易的發(fā)起者兼簽名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F首先向被標(biāo)記為Raydium Authority V4的地址轉(zhuǎn)移了一定數(shù)量的某種Token;
接著Raydium Authority V4向簽名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F轉(zhuǎn)賬了約6.747的Wrapped SOL Token;
最后,簽名者還向Jito提供了0.000003的SOL Token作為Jito驗證者執(zhí)行交易的小費。
下圖為Solscan中的資金流向圖。相較于Solscan,每一個地址在Phalcon Explorer中的資金流向圖唯一對應(yīng)到一個節(jié)點,故而能更容易發(fā)現(xiàn)地址之間的資金流向關(guān)系,提高分析時的效率。
如果你想要對交易的資金流向進行更深入的分析還可以點擊右上角的棕色標(biāo)識進入MetaSleush。
Balance Changes
Balance Changes一欄為我們清晰展示了不同賬戶在當(dāng)前交易結(jié)束后所有Token的變化情況。
比如,交易的簽名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F就有三種Token發(fā)生了變化,分別是原生的SOL Token、名為61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKp的Token,以及Wrapped SOL Token。
在Balance Changes中出現(xiàn)的每一個Account Address都擁有一個或多個Token Account,通過點擊相應(yīng)的地址能夠?qū)ζ溥M行拷貝或跳轉(zhuǎn)到solscan上。
我們可以看到,Phalcon Explorer并沒有對SOL Token和其它Token作區(qū)分,故而能直接反映出某一賬戶所有Token的變化情況,并且能更加直觀地展示Token Account和其Owner之間的關(guān)系。
Invocation Flow
Invocation Flow記錄了交易的指令執(zhí)行流程,其中的每一行都對應(yīng)了Solana交易執(zhí)行時的一條指令。
在這里,我們重點關(guān)注2和4這兩條涉及到Token轉(zhuǎn)移的指令。
第二條指令調(diào)用了Raydium的AMM的swapBaseIn來賣掉Token。展開該指令可以看到它由兩條CPI(Cross Program Invocation)指令組成,這兩條指令的作用是在Raydium Authority V4和交易簽名者之間進行Token轉(zhuǎn)移;第四條指令則是簽名者向Jito支付小費的過程。
如下圖所示,通過點擊指令后的Accounts標(biāo)簽,我們可以查看指令涉及到的所有賬戶。相較于Solscan,這種展示方式會更加簡潔,讓分析者將注意力放在交易中更關(guān)鍵的信息上。
在本文中我們首先介紹了Solana中Token的實現(xiàn)原理,隨后使用Solscan查看了一筆交易中Token Account的變化情況。最后,我們使用Phalcon Explorer對該交易作了進一步分析,并介紹了Phalcon Explorer功能上的創(chuàng)新和優(yōu)化細(xì)節(jié)。
Token Program 結(jié)構(gòu)示意圖
Token Program是由Solana Program Library(SPL)提供的一個程序賬戶,因此AccountInfo的Executable字段顯示為True。
正如我們在第一篇文章中介紹的那樣,所有程序賬戶的擁有者都是BPF Loader,Token Program也不例外。此外,和System Program一樣,Token Program也被部署在Solana鏈上的一個固定地址。
作為一個程序賬戶,它實現(xiàn)了數(shù)個指令來提供不同的功能。比如,一些指令被用于創(chuàng)建Mint Account以初始化一種新的Token,或是創(chuàng)建Token Account用于記錄某一個地址持有的Token數(shù)量;而另一些指令則提供了使用Token需要的所有功能,比如增加Token數(shù)量的MintTo指令,或是用于在一對地址之間轉(zhuǎn)移Token的Transfer指令。
需要注意,由于Token Program負(fù)責(zé)創(chuàng)建Mint Account和Token Account,它還是這兩種賬戶的擁有者。
Mint Account的結(jié)構(gòu)和關(guān)系如下所示:Mint Account是一種數(shù)據(jù)賬戶,這意味著其AccountInfo的Executable字段為False。
在Solana上,每一種Token都和一個Mint Account對應(yīng)。Mint Account記錄了該種Token的總供應(yīng)量,擁有Mint該Token權(quán)限的賬戶地址等信息。
Token Account用于記錄個體持有某種特定Token的數(shù)量。針對某一種Token,每一個持有該Token的賬戶都擁有一個Token Account。如果某用戶擁有5種Token,那么TA將擁有5個Token Account。
Token Account作為一種數(shù)據(jù)賬戶,其AccountInfo的Data部分由三個字段組成:
Mint: 該Token Account對應(yīng)的Mint Account的地址;
Owner: 有權(quán)將Token Account中Token轉(zhuǎn)出的賬戶,即該Token真正的“owner”;
Amount:當(dāng)前Token Account持有的Token數(shù)量。
Token Account 結(jié)構(gòu)圖
需要強調(diào)的是,AccountInfo中的owner字段和Data字段中的owner是完全不同的。前者是Solana中每一個賬戶都擁有的一個字段,它指明了哪一個地址擁有直接修改當(dāng)前賬戶數(shù)據(jù)的權(quán)限;后者則指明了該Token Account所記錄的Token實際上是屬于誰的,該字段本身是AccountInfo Data字段的一部分。
將上述的內(nèi)容串聯(lián)起來,我們便能得到下面這張賬戶關(guān)系的示意圖。不管是System Program還是Token Program,它們在區(qū)塊鏈上都部署在唯一的地址,以庫的形式存在;一個錢包賬戶可能同時持有多個Token Account,它是這些Token Account真正的“owner”;同一類Token Account的Mint字段指向了該種Token唯一的Mint Account,而該賬戶則記錄了Token的總供應(yīng)量等信息。
相關(guān)閱讀推薦
最新資訊
最新游戲
幻獸愛合成破解版內(nèi)購版2022 安卓最新版
查看看門狗2手機版
查看地鐵跑酷(附兌換碼)
查看劍客少年最新版
查看榮耀文明正版 最新版v3.0.4
查看會說話的拉里鳥(TalkingLarry)
查看愚公愛移山無廣告版
查看射殺僵尸防御MOD菜單
查看跑酷模擬器3d無限金幣版
查看熱門文章
熱門游戲
星球重啟 v1.1.11安卓最新版
查看極無雙2 v1.29.60手游版
查看弓箭傳說2手游 v1.1.0
查看重裝上陣網(wǎng)易官方版 v0.100.352
查看出發(fā)吧麥芬測試服 v.1.2
查看獸化實驗室(Changed) v1.0
查看狂扁小豆丁去廣告版 v1.1.2
查看王國紀(jì)元 v2.167官方正版
查看夢境食旅官方正版 v1.0.5.6
查看射箭沖突 v0.32.0安卓版
查看洛伊的移動要塞手機版 v.1.5.08
查看爆炒江湖 v1.42中文版
查看龍與劍 V1.1.1最新版
查看天道洪荒模擬器 v4.1無限靈氣/本源
查看龍之劍官方版 v0.1.3最新版
查看致命槍殺中文版 v12.0破解版
查看皇帝成長計劃2 v2.2.2手機版
查看開心酷跑安卓版 v4.6.5官方版
查看