Repolode
crytic

crytic/echidna

Echidnaは、ユーザー定義の不変条件やSolidityのアサーションを破る呼び出しシーケンスを試して、EthereumスマートコントラクトをテストするHaskell製ファザーです。

スター
3,189
フォーク
437
未解決の Issue
107
最終コミット
19 時間前

これは何?

Echidnaは、Ethereumスマートコントラクト向けのファジングおよびプロパティベーステストツールです。コントラクトのABIから文法ベースの呼び出しシーケンスを生成し、ユーザー定義の不変条件(echidna_で始まりboolを返す関数)やSolidityのassert()文を検証します。プロパティを偽にするシーケンスが見つかると、そのシーケンスを報告し、トリアージしやすいようにテストケースを最小化することもできます。

property、assertion、Foundry形式のテスト、単一トランザクションの形式的検証、整数オーバーフロー検出、int256の戻り値の最適化、カバレッジのみの探索など、複数のテストモードに対応しています。crytic-compileを介してFoundry、Hardhat、Truffleでビルドされたコントラクトを扱い、ファジングの前にSlitherを使って情報を抽出します。結果は対話型ターミナルUI、プレーンテキスト、JSONで表示でき、カバレッジを最大化するコーパスを保存してソースコードに注釈を付けることもできます。

主な機能

  • 01コントラクトのABIとソースコードに合わせた呼び出しシーケンスを生成します。
  • 02echidna_で始まるbool型の不変条件とSolidityのアサーションを検証します。
  • 03トリアージを迅速化するため、失敗したテストケースを最小化します。
  • 04ソースコードへの注釈付きで行カバレッジを報告します。
  • 05テキスト、JSON、対話型ターミナル出力に対応しています。
  • 06crytic-compileを介してFoundry、Hardhat、Truffleのプロジェクトと連携します。

ユースケース

  • デプロイ前にDeFiプロトコルのコントラクトで不変条件違反を見つける。
  • トークンコントラクトの残高やオーバーフローに関するバグをチェックする。
  • GitHub Actionsのワークフローでスマートコントラクトのプロパティテストを実行する。
  • Solidityコントラクトを使ってファジング研究の事例を再現する。

クイックスタート

  1. 1

    HomebrewでEchidnaをインストールする(macOS / Linux)

    brew install echidna
  2. 2

    READMEにあるサンプルコントラクトでEchidnaを実行する

    echidna tests/solidity/basic/flags.sol

使う前に知っておきたいこと

  • Vyperのサポートは限定的です。
  • テスト用のライブラリサポートは一部に限られています。
  • EchidnaのインストールにはSlitherが必要で、追加の依存関係としてセットアップする必要があります。
  • コンテナイメージをビルドできるのは現在、x86システムのみです。

収録されている特集

トピック

よくある質問

echidna とは?
Echidnaは、ユーザー定義の不変条件やSolidityのアサーションを破る呼び出しシーケンスを試して、EthereumスマートコントラクトをテストするHaskell製ファザーです。 Echidnaは、Ethereumスマートコントラクト向けのファジングおよびプロパティベーステストツールです。コントラクトのABIから文法ベースの呼び出しシーケンスを生成し、ユーザー定義の不変条件(echidna_で始まりboolを返す関数)やSolidityのassert()文を検証します。プロパティを偽にするシーケンスが見つかると、そのシーケンスを報告し、トリアージしやすいようにテストケースを最小化することもできます。
echidna は無料で使えますか?ライセンスは?
echidna は AGPL-3.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
echidna は今もメンテナンスされていますか?
活発にメンテナンス中。echidna の最終コミットは 2026年11月5日 です。
echidna は何に使えますか?
デプロイ前にDeFiプロトコルのコントラクトで不変条件違反を見つける。 トークンコントラクトの残高やオーバーフローに関するバグをチェックする。 GitHub Actionsのワークフローでスマートコントラクトのプロパティテストを実行する。 Solidityコントラクトを使ってファジング研究の事例を再現する。
echidna のインストール方法は?
HomebrewでEchidnaをインストールする(macOS / Linux): brew install echidna READMEにあるサンプルコントラクトでEchidnaを実行する: echidna tests/solidity/basic/flags.sol
echidna はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/crytic/echidna

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト