OpTrace — 高性能EVMステップデバッガ(デスクトップ)
概要
OpTraceは、EVM(Ethereum Virtual Machine)レベルでトランザクション実行を「オペコード単位」で再生・追跡できるデスクトップアプリケーションです。REVMというRust製EVM実行エンジンを用いて高性能にトレースを取り、開発者は任意のトランザクションをロードして、各オペコード実行時点のスタック、メモリ、ストレージ、ログ、および呼び出し(コール)ツリーの状態を確認できます。UIはTypeScriptとReactで作られ、Tauriを通じてRustバックエンドと連携。ローカルでネイティブに動くため、ブラウザベースのツールよりも高速で詳細な解析が可能です。なお個人プロジェクトのため全機能が完全にテスト済みではありません。
リポジトリの統計情報
- スター数: 3
- フォーク数: 0
- ウォッチャー数: 3
- コミット数: 3
- ファイル数: 19
- メインの言語: TypeScript
主な特徴
- オペコード単位でのステップ実行と状態検査(スタック/メモリ/ストレージ/ログ/コールツリー)
- 高性能なRust製EVM(REVM)をコアにしたネイティブ実行
- Tauri + React によるデスクトップGUIで使いやすいインターフェース
- 任意のEthereumトランザクションを入力して再現できるトレース機能
技術的なポイント
OpTraceの設計は「高速なEVM再現」と「操作性の高い可視化」に重きが置かれています。実行エンジンにREVM(Rust製EVM)の採用により、オペコードごとのステップ実行やスナップショット取得が低レイテンシで可能です。フロントエンドはTypeScriptとReact(READMEにReact 19と記載)で構築され、Tauri 2がネイティブアプリケーションとしてのラッパー兼ブリッジを担い、UIからRustバックエンドへ安全かつ効率的にコマンドやデータをやり取りします。
トレース実装の肝は「同一の前状態(pre-state)で正確にEVMを再実行する」点です。トランザクションを正しく再現するためには、対象ブロックのブロックヘッダ/状態ルート/アカウント・ストレージのスナップショット取得や、外部コールや環境依存の非決定性(例:ランダム値、時刻、外部RPC結果)の扱いに注意が必要です。OpTraceはREVM上で逐次的に各オペコード実行後のフル状態(スタック、メモリ、ストレージ差分、ログイベント、ガス消費、呼び出しスタック)を取得し、UI側で差分表示やツリー構造で可視化します。
さらに、コントラクトの実行フローを追いやすくするための「コールツリー表示」や、ログ(イベント)をタイムライン的に紐付ける仕組みを備えている点が解析の効率化に寄与します。TypeScript側はABIデコードやアドレスラベリング、可読性の高い変数表示などのUX機能を担います。現時点ではまだ機能の一部が検証段階であるため、特に複雑なコンストラクタやdelegatecall/create2等の特殊ケースで挙動確認が必要です。
(上記はリポジトリ記載の技術スタックとEVMトレース一般の実装上の注意点に基づく解説です)
プロジェクトの構成
主要なファイルとディレクトリ:
- .github: dir
- .gitignore: file
- .vscode: dir
- LICENSE: file
- README.md: file
…他 14 ファイル
まとめ
REVMとTauriを組み合わせた高速なEVMステップデバッガ。開発者向けに深い実行レベルの可視化を提供する期待のツール(50字程度)。
リポジトリ情報:
- 名前: op_trace
- 説明: OpTrace is a desktop EVM step debugger built with Tauri 2 + React 19 + Rust + REVM. It replays any Ethereum transaction opcode-by-opcode, letting you inspect the full execution state at every step — stack, memory, storage, logs, call tree, and more.
- スター数: 3
- 言語: TypeScript
- URL: https://github.com/tanghaosuan11/op_trace
- オーナー: tanghaosuan11
- アバター: https://avatars.githubusercontent.com/u/192933431?v=4