ブロックチェーンMar 28, 2026
Deep EVM #19:スマートコントラクトのプロパティベーステスト — Foundryでのファジング
OS
Open Soft Team
Engineering Team
ファジングがユニットテストで見逃すバグを捕捉する理由
ユニットテストは特定のシナリオを検証します。しかし、スマートコントラクトは任意のアドレスから、任意の値で、任意の順序で敵対的入力に直面します。
プロパティベーステストはパラダイムを反転させます。特定の入力に対する期待出力を指定する代わりに、すべての入力に対して成り立つべきプロパティを定義し、ファザーが反例を見つけようとします。
不変量テスト:ステートフルファジング
ファザーがランダムな順序で関数シーケンスを呼び出し、各呼び出し後に不変量が成り立つかチェック。
ファジングで発見された実際のバグ
- HuffERC20のファントムオーバーフロー
- 自己転送でのダブルスペンド
- ゼロアドレスへの転送でのトークンバーン
まとめ
ファジングは「この10ケースで動くか?」を「100,000のランダム入力で壊せるか?」に変換します。コンパイラがセーフティネットを提供しないHuffとYulのコントラクトには、ファジングはオプションではなく主要な防御です。