Phalcon Debug は、単なる表面的な分析では理解が難しい複雑なトランザクションの分析を大幅に容易にします。高レベルのトランザクショントレースで止まるのではなく、実行フローをステップ実行し、検証済みのコードを検査し、内部ロジックを詳細に追跡することができます。これにより、エクスプロイト分析、根本原因調査、チームコラボレーションに特に役立ちます。
このガイドでは、Euler プロトコルのエクスプロイトトランザクションを例として使用します。目標は、Phalcon Debug がユーザーを疑わしいトランザクションステップから、何が起こり、なぜそれが重要だったのかについての明確な説明へと導く方法を示すことです。
トランザクションは、Phalcon トランザクションページで直接開くことができます。
デバッグモードに入る方法
Phalcon でデバッグモードに入るには、主に 2 つの方法があります。
1 つ目は、Invocation Flow ビューの特定の行から入る方法です。2 つ目は、トランザクションページの右上隅にある Debug ボタンから入る方法です。どちらも同じデバッグ環境にアクセスできますが、Invocation Flow から開始すると、すでに疑わしいステップが見えている場合に、その正確なポイントにジャンプしたいときに役立つことがよくあります。
Euler エクスプロイトの例では、トランザクションには、Aave からフラッシュローンを借り、Euler に DAI を預け入れるなど、多くのステップが含まれています。特に疑わしいステップの 1 つは donateToReserves() への呼び出しであり、攻撃者はプロトコルに非常に大量の金額を寄付しています。これは、より詳細なレビューに値することが多いアクションであり、Phalcon Debug を使用すると、ユーザーはその場から分析を開始できます。

デバッグビューのレイアウト
デバッグモードに入ると、Phalcon はステップごとのトランザクション分析のために構築されたワークスペースを表示します。レイアウトは 5 つの主要なパネルで構成されています。
Call Trace Panel は、外部呼び出しとイベントのトレースを表示します。Source Code Panel は、現在のコントラクトのソースコードを表示し、関連する行をハイライトします。Debug Console は、呼び出しレベルのステップ制御を提供します。Debug Trace Panel は、内部呼び出しと外部呼び出しの両方を含む現在のコントラクトのコールスタックを表示します。Parameters & Return Values Panel は、現在の呼び出しの入力と出力を表示します。
このレイアウトは、ユーザーがトランザクションの 1 つの部分を理解するために複数のツールを切り替える必要がないため便利です。トレースを読み、コードを検査し、実行ロジックを 1 か所で追跡できます。
場合によっては、ソースコードパネルにコードが表示されないことがあります。これは通常、現在の呼び出しが検証されていないコントラクトを指している場合に発生します。この Euler のケースでは、攻撃者コントラクトは検証されていないため、ソースコードは利用できません。しかし、eDai コントラクトは検証されているため、ユーザーは Step In して検証済みのロジック内で分析を続けることができます。

検証済みの eDai コントラクトにステップインした後、ユーザーは donateToReserves() の実装をさらに深く掘り下げ、疑わしいトランザクションステップの背後にある正確なコードパスを検査できます。

デバッグコンソールの使い方
デバッグコンソールは、ユーザーがトランザクション実行を詳細に移動できるように設計されています。これは、Call Trace Panel が外部呼び出しとイベントのみを表示し、内部関数呼び出しを表示しないため重要です。デバッグコンソールはこのギャップを埋めます。
Phalcon は、このパネルにいくつかのナビゲーションコントロールを提供します。Next と Previous はそれぞれ 2 つのバージョンがあります。赤いボタンは完全なコールトレースを移動し、青いボタンは現在の関数内を移動します。Step In は呼び出し先の関数に入ります。Step Out は現在の関数の呼び出し元に戻ります。
これらのコントロールを使用すると、ユーザーはコントラクトロジックを 1 行ずつ移動し、状態がどのように変化したかを理解できます。Euler のケースでは、これにより donateToReserves() の背後にあるより深い問題が明らかになります。分析によると、攻撃者は 1 億 eDAI を寄付し、eDAI と dDAI の関係を変更し、ポジションが清算可能になりました。根本原因は、donateToReserves() に清算可能な流動性チェックが欠けていたため、攻撃者が清算して価値を抽出できるようになりました。
そこで Phalcon Debug は単なるビューアを超え、コントラクト実行内の根本原因を見つけるための実践的なトランザクション分析ツールとなります。


デバッグビューの共有
もう 1 つ便利な機能は、デバッグビューを URL で直接共有できることです。共有リンクには選択したトレース行が含まれているため、別のユーザーがそれを開くと、同じデバッグビューがすぐに表示されます。
これは、セキュリティチームにとって特に役立ちます。長い説明を書いたり、チームメイトに同じビューを手動で再現するように依頼したりする代わりに、アナリストは正確なコンテキストを共有できます。これにより、インシデント分析または内部レビュー中のコラボレーションが大幅にスピードアップします。
典型的なワークフローは次のようになります。まず、Invocation Flow で疑わしいステップを見つけます。次に、デバッグモードを使用してコード、内部呼び出し、およびパラメータを検査します。3 番目に、正確なデバッグビューをチームメイトと共有して、同じコンテキストを確認し、議論を続けることができます。
その他の便利な機能
Phalcon Debug には、分析効率を向上させるいくつかの追加機能が含まれています。
パラメータスイッチがオンになっている場合、Call Trace View は完全なパラメータを表示できます。これにより、ユーザーは各ステップを 1 つずつ開くことなく、より豊富なコンテキストを検査できます。
外部呼び出しの場合、ユーザーは Rawdata をクリックして生の呼び出しパラメータを検査することもできます。これは、デコードされたデータが不十分な場合や、呼び出しデータが実際にどのように構造化されたかを確認したい場合に役立ちます。
これらの詳細は小さいように見えるかもしれませんが、実際の分析中に多くの時間を節約できます。エクスプロイト調査、監査作業、またはコントラクトレビューでは、ワークフローの小さな改善が大きな違いを生むことがよくあります。


トランザクションを超えて、より広範な攻撃パスにわたる資産の移動を追跡したいチームにとっては、MetaSleuth が自然な次のステップとなります。トランザクションレベルの根本原因が明らかになった後、調査員がアドレスやエンティティにわたる資金を追跡するのに役立ちます。
Phalcon Debug は、トランザクションが表面的な読み取りには複雑すぎるが、明確な説明が必要な場合に最も役立ちます。ユーザーが疑わしいトレースエントリから実際のコードパス、内部ロジック、および根本原因へと移行するのを支援します。これにより、セキュリティリサーチだけでなく、インシデントレビュー、エクスプロイト分析、およびスマートコントラクト評価にも価値があります。デプロイ前にコードを強化したいチームにとって、この同じ考え方は、複雑な動作がライブリスクになる前にレビューされる Smart Contract Audit および Infrastructure Audits に自然につながります。



