メインコンテンツへスキップ
ブロックチェーンMar 28, 2026

Deep EVM #19:スマートコントラクトのプロパティベーステスト — Foundryでのファジング

OS
Open Soft Team

Engineering Team

ファジングがユニットテストで見逃すバグを捕捉する理由

ユニットテストは特定のシナリオを検証します。しかし、スマートコントラクトは任意のアドレスから、任意の値で、任意の順序で敵対的入力に直面します。

プロパティベーステストはパラダイムを反転させます。特定の入力に対する期待出力を指定する代わりに、すべての入力に対して成り立つべきプロパティを定義し、ファザーが反例を見つけようとします。

不変量テスト:ステートフルファジング

ファザーがランダムな順序で関数シーケンスを呼び出し、各呼び出し後に不変量が成り立つかチェック。

ファジングで発見された実際のバグ

  1. HuffERC20のファントムオーバーフロー
  2. 自己転送でのダブルスペンド
  3. ゼロアドレスへの転送でのトークンバーン

まとめ

ファジングは「この10ケースで動くか?」を「100,000のランダム入力で壊せるか?」に変換します。コンパイラがセーフティネットを提供しないHuffとYulのコントラクトには、ファジングはオプションではなく主要な防御です。