「Solana Simplified」シリーズへようこそ。このシリーズは、Solanaの複雑なエコシステムをマスターできるように設計されています。最初の記事では、Solanaのオペレーティングメカニズム、アカウントモデル、トランザクション構造を探りました。2番目の記事では、Rustで最初のSolanaプログラムを書き、テストする方法を説明しました。
このシリーズの3番目にして最後のパートとなるこの記事では、Phalcon Explorerを使用して簡単なSolanaトランザクションを分析する方法を説明します。実践的なSolanaトランザクション分析に進む前に、まずSolanaでのトークンの実装方法を探り、トランザクショントラフィックを理解するための基本的な側面を理解しましょう。
Solanaトークン実装の理解
Solanaのトークンは、大きく分けてネイティブトークンとその他のトークン(SPLトークン)の2つのカテゴリに分類できます。これらの違いを把握することは、効果的なSolanaトランザクション分析にとって非常に重要です。
ネイティブトークン(SOL)
ネイティブトークンとは、Solanaの主要な暗号通貨であるSOLを指します。最初の記事で述べたように、SolanaのすべてのアカウントにはLamportsフィールドがあり、そのアカウントのSOL残高を記録します。LamportsはSOLの最小単位であり、1 SOLは10億Lamportsに相当します。SOLは、トランザクション手数料、ステーキング、ネットワーク参加に使用されます。
その他のトークン(SPLトークン)
その他のトークンについては、Solanaはプログラムアカウント(トークンプログラム)と2種類のデータアカウント:ミントアカウントとトークンアカウントを中心に構築された堅牢なフレームワークを利用しています。このアーキテクチャは、Solanaブロックチェーン上のさまざまなトークンを管理および操作するために必要なすべての機能を提供します。
Solanaトークンプログラム
トークンプログラムは、Solana Program Library(SPL)によって提供されるプログラムアカウントであり、AccountInfo内のExecutableフィールドがTrueになります。
システムプログラムと同様に、トークンプログラムはSolana上の固定アドレスにデプロイされ、そのオーナーはBPF Loaderです。強力なプログラムアカウントとして、多数の命令を実装して多様なトークン機能を提供します。たとえば、新しいトークンを初期化するためにミントアカウントを作成したり、特定のアドレスが保有するトークン数を記録するためにトークンアカウントを作成したりする命令があります。その他の命令は、トークン供給を増やすためのMintTo命令、または2つのアドレス間でトークンを転送するためのTransfer命令など、基本的なトークン操作を容易にします。
トークンプログラムはミントアカウントとトークンアカウントの作成を担当しているため、これらのアカウントのオーナーでもあり、そのライフサイクルとデータに対する制御を付与していることに注意することが重要です。
ミントアカウント構造
ミントアカウントはデータアカウントであり、AccountInfoのExecutableフィールドはFalseです。Solanaでは、各ユニークなトークン(例:USDC、RAYなど)は単一のミントアカウントに対応します。このアカウントには、トークンの総供給量、小数点以下の桁数、トークンをミント(作成)またはバーン(削除)する権限を持つアカウントのアドレスなどの重要な情報が格納されます。
トークンアカウント構造
トークンアカウントは、個人または他のプログラムが保有する特定のトークンの量を記録します。各種類のトークンについて、そのトークンを保有する各エンティティには対応するトークンアカウントがあります。たとえば、ユーザーが5種類の異なるSPLトークンを保有している場合、各トークンタイプについて5つの異なるトークンアカウントを持つことになります。
トークンアカウントはデータアカウントであり、そのAccountInfoのDataフィールドは通常、3つの主要なサブフィールドで構成されます。
- Mint: この特定のトークンアカウントに対応するミントアカウントのアドレス。どのトークンを保有しているかを識別します。
- Owner: このトークンアカウントからトークンを転送する権限を持つアカウントの公開鍵。これがトークンの真の「オーナー」です。
- Amount: このトークンアカウントに現在保有されているトークンの数。
AccountInfoのownerフィールド(アカウントのデータを変更できるユーザーを決定します)と、トークンアカウントのData内のownerフィールド(トークンを所有するユーザーを指定します)は、全く異なる概念であることに注意が必要です。前者は一般的なSolanaアカウントのプロパティであり、後者はSPLトークンアカウントに固有のものです。
これらの概念を接続すると、以下のようなアカウント関係図を視覚化できます。システムプログラムとトークンプログラムの両方がブロックチェーン上のユニークで固定されたアドレスにデプロイされ、コアライブラリとして機能します。ウォレットアカウントは複数のトークンアカウントを保有している可能性があり、それらのトークンアカウント内のトークンの真の「オーナー」です。同じタイプのトークンアカウントのMintフィールドは、トークンの総供給量などの情報を記録する、そのトークンの一意のミントアカウントを指します。
Phalcon ExplorerによるSolanaトランザクションの分析
Solscanのような従来のExplorerは貴重なデータを提供しますが、詳細なSolanaトランザクション分析にとって直感的ではない方法で情報が表示される場合があります。まずSolscanでトランザクションを確認し、次にBlockSecのPhalcon Explorerがより明確で包括的なビューをどのように提供するかを見てみましょう。
Solscanでのトークンアカウントの表示
Solscanを使用して、この例のトランザクション内のトークンアカウントの変更を表示できます。
Address列には、トランザクションに関与するすべてのトークンアカウントがリストされます。Owner列は、トークンの真の「オーナー」(トークンアカウントデータフィールドのowner)を示します。Token列は、現在のトークンのミントアカウントに対応します。最初の行の右側にある「$SON」をクリックすると、詳細が表示されます。
プロフィールサマリーのOwner Programは、現在のミントアカウントのオーナーがトークンプログラムであることを示しています。これで、Solscanで3種類すべてのアカウントを一致させました。
しかし、Solscanのこの表示はいくぶん誤解を招く可能性があります。たとえば、前の画像では、最初の行の残高増加がアドレスCHS9WajyFfuaAZRk2JC7hRJvPHXmG5fC94gtAPbnLjuYのものであるか、それともRaydium Authority V4のものであるかは不明確です。このような曖昧さは、ユーザーがトランザクションの真の流れを理解するのを困難にします。さらに、読者は、SOLトークンと他のトークンがSolscanで別々のセクションに表示されていることに気づくかもしれません。この分離は技術的には合理的ですが、統合されたトークンセクションの下でまとめて表示されると、資産変更の全体像を把握しやすくなります。
Phalcon Explorerはこれらの問題に対処するだけでなく、詳細なSolanaトランザクション分析のために他の多くの革新を導入しています。それでは、Phalcon Explorerを使用して同じトランザクションを調べてみましょう。
Phalcon Explorerのトランザクションへのリンクを開き、手順に従って一緒に分析することを強くお勧めします。このインタラクティブなアプローチにより、トランザクションの詳細をよりよく理解し、Solanaトランザクション分析のためのPhalcon Explorerの強力な機能を高く評価できます。
Phalcon Explorerでのトランザクションの表示と分析
ページ左上隅で、現在のトランザクションがJITO MEVトランザクションとして識別されていることがわかります。これはセキュリティアナリストにとって貴重な情報です。必要に応じて、トランザクション署名の横にあるSolanaアイコンをクリックして、直接Solscanにジャンプすることもできます。
このSolanaトランザクションに関する情報は、基本情報、資金の流れ、残高変更、呼び出しフローの4つの主要セクションに論理的に分割されています。右上のアイコンをクリックすることで、これらのセクションをシームレスに切り替えることができ、包括的なSolanaトランザクション分析が可能です。
基本情報
基本情報セクションには、現在のSolanaトランザクションに関する重要な詳細が表示されます。ブロック番号と署名者のアドレスをクリックすると、Solscanにジャンプして参照したり、追加のコンテキストを得たりできます。このセクションでは、トランザクション実行の詳細に入る前に、簡単な概要を提供します。
資金の流れ
資金の流れセクションは、トランザクション実行中の資金の移動とタイミングを明確に視覚的に表現しており、Solanaトランザクション分析を直感的に行えます。
- トランザクションの開始者および署名者である
59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2Fは、まず一定量のトークンをRaydium Authority V4というラベルのアドレスに転送しました。 - 次に、
Raydium Authority V4は、約6.747 Wrapped SOLトークンを署名者59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2Fに送り返しました。 - 最後に、署名者は、トランザクションを実行したJitoバリデーターへのチップとしてJitoに0.000003 SOLを提供しました。これはMEV関連の活動を示唆しています。
以下は比較のためのSolscanからの資金の流れ図です。Solscanと比較して、Phalcon Explorerの資金の流れ図の各アドレスは一意のノードに対応しており、アドレス間の関係を特定することが significantly 容易になり、特に複雑なSolanaトランザクションでの分析効率が向上します。
トランザクションの資金の流れを、インシデント対応やフォレンジック調査のために、より深く分析したい場合は、右上の茶色のアイコンをクリックして、BlockSecの高度なオンチェーン分析ツールであるMetaSleuthに入ることができます。
残高変更
残高変更セクションは、Solanaトランザクション完了後の各アカウントのトークン変更を明確に示しています。この統合されたビューは、Solanaトランザクション分析にとってsignificantな利点です。
たとえば、トランザクションの署名者である59vLEsmV5VCCGTxjHCoRiXkNgHDVcq7dGx98v9HCn2Fは、ネイティブトークンSOL、61Hh8Udg7zruvG3BhyNiHF4UmULnC8reB9RBFtwi8uKpという名前のトークン(おそらくSPLトークン)、およびWrapped SOLトークンの3種類のトークンに変更がありました。
Balance Changesに表示される各Account Addressには、1つ以上のToken Accountが関連付けられています。各アドレスをクリックすると、コピーしたり、Solscanにジャンプして追加のコンテキストを取得したりできます。
Phalcon ExplorerはこのビューではSOLトークンと他のSPLトークンを区別しておらず、これは特定のアカウントのすべてのトークンの変更を直接反映しています。この統合された表示により、トークンアカウントとそのオーナーの関係を視覚化することがはるかに容易になり、Solanaトランザクション中の資産移動のより完全な画像を提供します。
呼び出しフロー
呼び出しフローは、トランザクション命令の実行プロセスを記録し、各行はSolanaトランザクション中に実行された命令に対応します。このセクションは、スマートコントラクトの相互作用やプログラム呼び出し内の操作の正確なシーケンスを理解するために非常に役立ちます。
ここでは、トークン転送に関与する命令2と4に焦点を当てます。
2番目の命令は、トークンを売却するためにRaydium AMMのswapBaseInを呼び出します。この命令を展開すると、Raydium Authority V4とトランザクション署名者間でのトークン転送を容易にする2つのCPI(Cross Program Invocation)命令で構成されていることがわかります。4番目の命令は、署名者がJitoにチップを支払い、トランザクションのMEV性質を確認するプロセスです。
以下の図に示すように、各命令の後のAccountsタブをクリックすると、その特定の命令に関与するすべてのアカウントを表示できます。Solscanと比較して、この表示方法はより簡潔であり、アナリストは余分な詳細に圧倒されることなく、トランザクションでより重要な情報に集中できます。この詳細なビューは、Solanaトランザクションの深い分析とデバッグに不可欠です。

結論
この記事では、まずネイティブSOL、トークンプログラム、ミントアカウント、トークンアカウントをカバーするSolanaトークンの実装原則を紹介しました。次に、Solscanを使用して特定のトランザクションのトークンアカウントの変更を調査し、そのいくつかの制限を強調しました。最後に、BlockSecのPhalcon Explorerを使用して同じSolanaトランザクションのさらなる、より詳細な分析を行い、Solanaトランザクション分析に優れた明瞭さと洞察を提供する革新的な機能を紹介しました。
これにより、「Solana Simplified」シリーズは終了します。Solanaのコアコンセプトと実践的なトランザクション分析の理解に役立ったことを願っています。特定のセキュリティインシデント、エコシステム紹介、または他のBlockSec製品など、他に学びたいトピックがあれば、コメントを残してください。🫡



