一文讀懂Solana交易原理!本文將帶領(lǐng)大家使用Phalcon Explorer來分析一筆簡(jiǎn)單的Solana交易。不過在此之前,讓我們先來看看Solana上的Token是如何實(shí)現(xiàn)的。需要的朋友一起看看吧!
Solana上的Token可以分為兩類:Native Token和其它Token。
Native Token其實(shí)就是Solana Token (SOL)。我們?cè)谥暗奈恼吕镌岬剑琒olana中的每一個(gè)賬戶都擁有一個(gè)Lamports字段,Lamports實(shí)際上是SOL Token的最小單位(1 SOL = 10億Lamports),它記錄了當(dāng)前賬戶Solana Token的余額。
而對(duì)于其它Token,Solana使用了一個(gè)程序賬戶(Token Program)以及兩種數(shù)據(jù)賬戶(Mint Account和Token Account),來實(shí)現(xiàn)Token需要的所有功能。
我們可以使用Solscan來查看一筆交易中Token賬戶的變化情況:
https://solscan.io/tx/byRn8qtNAYSdvgaGCK4kmZV1m89b7uuFuy1cn96W6femp7WgwymLqJ2MP9hPbegqN9EPe7NvghWpqDFqoCDjKph#tokenBalanceChange
Address一欄列出了該交易涉及到的所有Token Account;
Owner一欄則標(biāo)注了該Token真正的“擁有者”,也就是Token Account Data字段中的owner;
Token一欄則對(duì)應(yīng)了當(dāng)前Token的Mint Account,我們可以點(diǎn)進(jìn)第一行的$SON進(jìn)一步查看:
可以看到,Profile Summary中的Owner Program指明了當(dāng)前Mint Account的擁有者是Token Program,至此三類賬戶我們都在Solscan中進(jìn)行了對(duì)應(yīng)。
不過,Solscan這種展示方法可能會(huì)給人帶來一些誤解。比如,在上一張圖中第一行增加的Balance到底屬于地址CHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuY,還是Raydium Authority V4?這種展示方式無疑增加了理解的成本。
除此之外,讀者也許還會(huì)發(fā)現(xiàn),Solscan中的Solana Token和其它Token在兩個(gè)板塊分開展示。盡管這種分割方式在技術(shù)上是合理的,但如果能在展示時(shí)將它們統(tǒng)一視作Token放置在相同板塊下則更加容易理解。
Phalcon Explorer不僅解決了上述問題,還針對(duì)Solscan做了很多其它創(chuàng)新,接下來讓我們?cè)偈褂肞halcon Explorer來看看同一筆交易。
? 建議打開鏈接,跟隨我們的步驟一起分析,這樣可以更好地了解交易細(xì)節(jié),感受 Phalcon Explorer 的強(qiáng)大功能 ?
https://app.blocksec.com/explorer/tx/solana/byRn8qtNAYSdvgaGCK4kmZV1m89b7uuFuy1cn96W6femp7WgwymLqJ2MP9hPbegqN9EPe7NvghWpqDFqoCDjKph
在Phalcon Explorer的正上方可以看到,當(dāng)前交易被識(shí)別成了JITO的MEV交易,并且可以通過點(diǎn)擊交易簽名旁的Solana標(biāo)識(shí)來一鍵跳轉(zhuǎn)到Solscan。
關(guān)于這筆交易的信息被分成了四個(gè)板塊,分別是:Basic Info,F(xiàn)und Flow,Balance Changes和Invocation Flow,你可以通過點(diǎn)擊右上角的圖標(biāo)來切換到相應(yīng)的部分。
Basic Info
Basic Info一欄的信息相對(duì)簡(jiǎn)單,它提供了一些關(guān)于當(dāng)前交易的關(guān)鍵信息。和交易簽名類似,你也可以點(diǎn)擊區(qū)塊號(hào)和簽名者地址來跳轉(zhuǎn)到Solscan上。
Fund Flow
Fund Flow一欄為分析者提供了交易執(zhí)行時(shí)產(chǎn)生的資金流轉(zhuǎn)移和時(shí)序信息。我們可以看到:
交易的發(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驗(yàn)證者執(zhí)行交易的小費(fèi)。
下圖為Solscan中的資金流向圖。相較于Solscan,每一個(gè)地址在Phalcon Explorer中的資金流向圖唯一對(duì)應(yīng)到一個(gè)節(jié)點(diǎn),故而能更容易發(fā)現(xiàn)地址之間的資金流向關(guān)系,提高分析時(shí)的效率。
如果你想要對(duì)交易的資金流向進(jìn)行更深入的分析還可以點(diǎn)擊右上角的棕色標(biāo)識(shí)進(jìn)入MetaSleush。
Balance Changes
Balance Changes一欄為我們清晰展示了不同賬戶在當(dāng)前交易結(jié)束后所有Token的變化情況。
比如,交易的簽名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2F就有三種Token發(fā)生了變化,分別是原生的SOL Token、名為61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKp的Token,以及Wrapped SOL Token。
在Balance Changes中出現(xiàn)的每一個(gè)Account Address都擁有一個(gè)或多個(gè)Token Account,通過點(diǎn)擊相應(yīng)的地址能夠?qū)ζ溥M(jìn)行拷貝或跳轉(zhuǎn)到solscan上。
我們可以看到,Phalcon Explorer并沒有對(duì)SOL Token和其它Token作區(qū)分,故而能直接反映出某一賬戶所有Token的變化情況,并且能更加直觀地展示Token Account和其Owner之間的關(guān)系。
Invocation Flow
Invocation Flow記錄了交易的指令執(zhí)行流程,其中的每一行都對(duì)應(yīng)了Solana交易執(zhí)行時(shí)的一條指令。
在這里,我們重點(diǎn)關(guān)注2和4這兩條涉及到Token轉(zhuǎn)移的指令。
第二條指令調(diào)用了Raydium的AMM的swapBaseIn來賣掉Token。展開該指令可以看到它由兩條CPI(Cross Program Invocation)指令組成,這兩條指令的作用是在Raydium Authority V4和交易簽名者之間進(jìn)行Token轉(zhuǎn)移;第四條指令則是簽名者向Jito支付小費(fèi)的過程。
如下圖所示,通過點(diǎn)擊指令后的Accounts標(biāo)簽,我們可以查看指令涉及到的所有賬戶。相較于Solscan,這種展示方式會(huì)更加簡(jiǎn)潔,讓分析者將注意力放在交易中更關(guān)鍵的信息上。
在本文中我們首先介紹了Solana中Token的實(shí)現(xiàn)原理,隨后使用Solscan查看了一筆交易中Token Account的變化情況。最后,我們使用Phalcon Explorer對(duì)該交易作了進(jìn)一步分析,并介紹了Phalcon Explorer功能上的創(chuàng)新和優(yōu)化細(xì)節(jié)。
Token Program 結(jié)構(gòu)示意圖
Token Program是由Solana Program Library(SPL)提供的一個(gè)程序賬戶,因此AccountInfo的Executable字段顯示為True。
正如我們?cè)诘谝黄恼轮薪榻B的那樣,所有程序賬戶的擁有者都是BPF Loader,Token Program也不例外。此外,和System Program一樣,Token Program也被部署在Solana鏈上的一個(gè)固定地址。
作為一個(gè)程序賬戶,它實(shí)現(xiàn)了數(shù)個(gè)指令來提供不同的功能。比如,一些指令被用于創(chuàng)建Mint Account以初始化一種新的Token,或是創(chuàng)建Token Account用于記錄某一個(gè)地址持有的Token數(shù)量;而另一些指令則提供了使用Token需要的所有功能,比如增加Token數(shù)量的MintTo指令,或是用于在一對(duì)地址之間轉(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都和一個(gè)Mint Account對(duì)應(yīng)。Mint Account記錄了該種Token的總供應(yīng)量,擁有Mint該Token權(quán)限的賬戶地址等信息。
Token Account用于記錄個(gè)體持有某種特定Token的數(shù)量。針對(duì)某一種Token,每一個(gè)持有該Token的賬戶都擁有一個(gè)Token Account。如果某用戶擁有5種Token,那么TA將擁有5個(gè)Token Account。
Token Account作為一種數(shù)據(jù)賬戶,其AccountInfo的Data部分由三個(gè)字段組成:
Mint: 該Token Account對(duì)應(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)圖
需要強(qiáng)調(diào)的是,AccountInfo中的owner字段和Data字段中的owner是完全不同的。前者是Solana中每一個(gè)賬戶都擁有的一個(gè)字段,它指明了哪一個(gè)地址擁有直接修改當(dāng)前賬戶數(shù)據(jù)的權(quán)限;后者則指明了該Token Account所記錄的Token實(shí)際上是屬于誰的,該字段本身是AccountInfo Data字段的一部分。
將上述的內(nèi)容串聯(lián)起來,我們便能得到下面這張賬戶關(guān)系的示意圖。不管是System Program還是Token Program,它們?cè)趨^(qū)塊鏈上都部署在唯一的地址,以庫的形式存在;一個(gè)錢包賬戶可能同時(shí)持有多個(gè)Token Account,它是這些Token Account真正的“owner”;同一類Token Account的Mint字段指向了該種Token唯一的Mint Account,而該賬戶則記錄了Token的總供應(yīng)量等信息。
相關(guān)閱讀推薦
最新資訊
最新游戲
逆轉(zhuǎn)裁判復(fù)蘇的逆轉(zhuǎn)手機(jī)版
查看第一棵樹手機(jī)版
查看單挑王
查看名將無雙PVP對(duì)戰(zhàn)版
查看明星制作人
查看繪真妙筆千山手機(jī)版
查看口袋怪物大戰(zhàn)
查看開心釣魚王
查看急速行進(jìn)
查看熱門文章
熱門游戲
飛行棋手機(jī)版 安卓版v1.50
查看執(zhí)劍之刻手機(jī)版 v2.4.2官方版
查看紙嫁衣4紅絲纏最新版 v1.4.0手機(jī)版
查看粉末游戲 安卓正版v3.8.4
查看瘋狂醫(yī)院達(dá)什醫(yī)生(Happy ASMR Hospital) v1.0.116最新版
查看賽特斯2免費(fèi)版 v5.1.0安卓版
查看葫蘆娃手游破解版 安卓版v4.10.45
查看靈魂潮汐手游 v0.49.0安卓版
查看300大作戰(zhàn) v3.60.2官網(wǎng)安卓版
查看戰(zhàn)爭(zhēng)警戒二戰(zhàn)手機(jī)版 v3.7.5官網(wǎng)版
查看重裝上陣2024最新版 v0.100.356
查看涂鴉跳躍豪華版(Doodle Jump)
查看王國紀(jì)元官方版 v2.167安卓版
查看恐怖躲貓貓2官方版 v2.0.0手機(jī)版
查看阿瑞斯病毒2手游修改版 v1.5.0最新版
查看背包亂斗 v0.15.2安卓版
查看像素火影五條悟官方版 v1.17
查看銹湖旅館(Rusty Lake Hotel) v3.1.4
查看