Back to Blog

Phalcon Explorer 2.0でDeFiトランザクション分析を極める方法

Phalcon
January 5, 2023
5 min read

BlockSec Phalconが2.0にアップデートされました。Phalconで飛行し、トランザクションの深淵へ飛び込みましょう!

Phalconは、DeFiコミュニティ向けに設計された強力なトランザクションエクスプローラーです。トランザクションの呼び出しフロー、残高の変化、資金の流れに関する包括的なデータを提供し、トランザクションのシミュレーションにも対応しています。

Phalconは、開発者、セキュリティ研究者、トレーダーがトランザクションを直感的に理解できるように支援することを目的としています。

このユーザーガイドでは、Phalconのさまざまな機能や働きを紹介します。わかりやすく説明するため、Ethereum上のこちらのトランザクションを例として使用します。

トランザクション検索

トランザクションを検索するには、Phalcon Explorerのホームページにアクセスし、検索ボックスにトランザクションハッシュを入力します。結果をクリックすると、トランザクション解析の詳細ページが表示されます。

Phalconは現在、Ethereum、Binance Smart Chain、Polygon、Cronos、Avalanche C-Chainでのトランザクション解析をサポートしています。対応チェーンは今後も順次拡大予定です。

トランザクション解析

トランザクションの結果ページは、以下の4つの主要なモジュールに分かれています。

  • 基本情報 (Basic Info)
  • 資金の流れ (Fund Flow)
  • 残高の変化 (Balance Changes)
  • 呼び出しフロー (Invocation Flow)
  • コードビュー (Code View)(新機能)

基本情報

Basic Infoモジュールには、実行ステータス(Status)、送信者(Sender)、受信者(Receiver)など、トランザクションの基本的な情報が表示されます。

内部トランザクション数は、そのトランザクションの複雑さを判断するために使用できます。値が大きいほど、そのトランザクションは複雑であることを示します。

右上の[Simulate This Tx]ボタンを使用すると、異なるブロック番号 [BlockNum] と位置 [position in the block] で現在のトランザクションの結果を迅速にシミュレートできます(トランザクションシミュレーションについては、本セクションで後述します)。

資金の流れ

資金の流れモジュールは、トランザクションに関与するトークンのフローを有向グラフとして示します。各ノードはアドレスを表しており、送信者や受信者であるノードは背景色で区別されます。

有向エッジとその上の情報は、転送の方向、トークンの種類、および転送されたトークン数を示します。

  • エッジ上の異なるシリアル番号は、トークン転送の時系列順を区別するために使用されます。
  • 同色のエッジは、同じトークンの転送を示しています。
  • 2つのアドレス間で同じ方向に流れる同じトークンは統合され、トークン転送の特性を保持しつつ資金フロー図を簡略化しています。

このモジュールでは、右上からフローチャートを拡大・縮小することも可能です。資金フロー図は、SVGまたはPNGファイルとしてダウンロードできます。

残高の変化

Balance Changesモジュールには、トランザクション実行後にトークン残高が変化したアカウントが表示されます。

  • 1列目:トークンの純流入または純流出があったアドレスがリストされます。
  • 2列目:流入または流出したトークンの名前など、トークン情報がリストされます。
  • 3列目:残高の増減、つまりトークンの流入量または流出量が表示されます。
  • 4列目:トランザクション発生時における、各アカウントに流入または流出したトークン量の価値が表示されます。

呼び出しフロー

呼び出しフロー (Invocation Flow) は、トランザクション内の一連の関数呼び出しをツリー構造で表示します。

各ノードは関数呼び出しまたはイベントのトリガーを表し、呼び出しスタックの深さ、呼び出しタイプ、呼び出しパラメーターなどの情報を含みます。モジュールの上部には、検索ボックスや、呼び出しタイプ・展開を制御するためのドロップダウン選択ボックスが用意されており、トランザクションの実行フローの解釈を助けます。

ユーザーは、検索ボックスにアドレス、関数シグネチャ、または関数セレクターを入力することで、目的の呼び出しフロー情報を検索・フィルタリングできます。下図は、WETHアドレスでフィルタリングした結果を示しています。

呼び出しスタックの深さは、ドロップダウン選択ボックスを使用してユーザーが選択可能です。下図は、スタックの深さを2に設定した際の呼び出しフローの表示です。

コードビュー

解析中、検証済みのコントラクトコードをコードビューに表示できます。コードビューは、トレースと連動したさまざまなレイアウトをサポートしており、独立したコード表示も可能です。

  • Trace Only: 呼び出しフロー(コードトレース)のみを表示します。

  • Trace & Code (LR): 左右分割レイアウト(左に呼び出しフロー、右にコードビュー)を表示します。呼び出しフローで検証済みコントラクトの呼び出しをクリックすると、コードビューの上部に該当コントラクトのソースコードが表示され、下部にはパラメーターと戻り値が表示されます。

  • Trace & Code (TB): Trace & Code (LR)と同様ですが、上下分割レイアウトになります。

  • Separate Code View: ブラウザの別タブでコードビューを表示します。別のモニターに移動できるため、マルチディスプレイ環境の方に適しています。

さらに、ユーザーはコードビュー右上のボタンから素早くモジュールを切り替えることができます。該当トランザクション内でのソースコード閲覧履歴が提供されるため、他のソースコードへのアクセスも容易です。

カスタマイズ

Phalconは、解析を容易にするためのカスタマイズ機能を備えています。

カスタムハイライト

解析中、アドレス、関数、イベントに対してカスタムカラーを指定してハイライトできます。

カスタムラベル

アドレス、関数、イベントにカスタムラベルを設定できます。

カスタム関数シグネチャ

コントラクトのcalldataに対して、カスタム関数シグネチャを指定してデコードすることが可能です。

トランザクションシミュレーション

カスタムトランザクションのシミュレーション

トランザクションをシミュレートするには、[Simulation]ボタンをクリックし、パネルに必要な情報を入力します。その後、[Simulate]ボタンをクリックすると、詳細ページでシミュレーション結果を確認できます。また、[Simulation]ボタンの横にあるアイコンをクリックすると、ウェブサイトのテーマを変更できます。

既存トランザクションのシミュレーション

トランザクション詳細ページの右上にある[Simulate This Tx]ボタンを使用すると、異なるブロック番号 [BlockNum] と位置 [position in the block] で、現在のトランザクション結果を迅速にシミュレートできます。