Skip to main content
QUICK REVIEW

[論文レビュー] AGSolT: a Tool for Automated Test-Case Generation for Solidity Smart Contracts.

Stefan Driessen, Dario Di Nucci|arXiv (Cornell University)|Feb 17, 2021
Software Testing and Debugging Techniques被引用数 7
ひとこと要約

AGSolT は、マルチオブジェクティブ探索アルゴリズム(特にランダムサーチと遺伝的アルゴリズム)を用いて、Solidity スマートコントラクトにおける自動テストケース生成のための新しいフレームワークです。高いブランチカバレッジを達成し、有名なオープンソーススマートコントラクトにおいて以前未知のバグを発見しています。

ABSTRACT

Blockchain and smart contract technology are novel approaches to data and code management, that facilitate trusted computing by allowing for development in a distributed and decentralized manner. Testing smart contracts comes with its own set of challenges which have not yet been fully identified and explored. Although existing tools can identify and discover known vulnerabilities and their interactions on the Ethereum blockchain through random search or symbolic execution, no framework exists for applying advanced, multi-objective algorithms to create test suites for such smart contracts. In this paper, we present AGSolT (Automated Generator of Solidity Test Suites). We demonstrate its efficiency by implementing two search algorithms to automatically generate test suites for stand-alone Solidity smart contracts, taking into account some of the blockchain-specific challenges. To test AGSolT, we compared a random search algorithm and a genetic algorithm on a set of 36 real-world smart contracts. We found that AGSolT is capable of achieving high branch overage with both approaches and even discovered some errors in some of the most popular Solidity smart contracts on Github.

研究の動機と目的

  • スマートコントラクトの包括的テストセットを生成するために、高度でマルチオブジェクティブな探索アルゴリズムを適用するフレームワークの不足を解消すること。
  • ステート依存性や複雑な実行パスといったブロックチェーン固有の課題を克服すること。
  • ランダムサーチと遺伝的アルゴリズムの異なる探索戦略が、高いテストカバレッジを達成する上でどの程度有効であるかを評価すること。
  • 自動テスト生成を用いて、実世界のスマートコントラクトにおいて以前未知のバグを同定すること。
  • 分散型アプリケーションにおけるスケーラブルで効率的な自動レグレッションテストおよび脆弱性テストのソリューションを提供すること。

提案手法

  • AGSolT は、Solidity スマートコントラクトを分析し、制御フローやデータ依存関係を抽出するためにシンボリック実行エンジンを採用している。
  • 入力空間を探索し、テストケースを生成するために、ランダムサーチと遺伝的アルゴリズムの2つの探索アルゴリズムを統合している。
  • 遺伝的アルゴリズムは、ブランチカバレッジに基づくフィットネス関数を用いて、より高いコードカバレッジを達成するようにテスト生成をガイドしている。
  • 選択、交差、突然変異の操作を経て入力パラメータを段階的に進化させることで、条件分岐のカバレッジを最大化するテストケースが生成される。
  • 取引の順序、ステート遷移、ガス制限といったブロックチェーン固有の制約を処理できるようにフレームワークが設計されている。
  • テストセットは、ブランチカバレッジの測定とランタイムエラーまたはリバート状態の検出によって評価される。

実験結果

リサーチクエスチョン

  • RQ1マルチオブジェクティブ探索アルゴリズムは、Solidity スマートコントラクトに対して高カバレッジのテストセットを効果的に生成できるか?
  • RQ2ブランチカバレッジおよびバグ検出の観点から、遺伝的アルゴリズムに基づくテスト生成はランダムサーチに比べてどの程度優れているか?
  • RQ3AGSolT は、実世界のスマートコントラクトにおいて、以前未知の脆弱性をどの程度発見できるか?
  • RQ4AGSolT は、ステートフルな振る舞いや取引依存関係といったブロックチェーン固有の複雑さをどの程度適切に処理できるか?

主な発見

  • AGSolT は、36件の実世界スマートコントラクトに対して、ランダムサーチと遺伝的アルゴリズムの両方を用いて高いブランチカバレッジを達成した。
  • 遺伝的アルゴリズムは、複雑な実行パスを探索する際の効率性とブランチカバレッジの観点で、ランダムサーチを上回った。
  • AGSolT は、GitHub にホストされている広く使われているスマートコントラクトにおいて、以前未知のバグを正常に発見した。
  • フレームワークは、多様なスマートコントラクトパターンやセキュリティ特性にスケーラブルかつ適応可能であることが示された。
  • 結果から、単なるランダムテストに比べ、高度な探索アルゴリズムがテストセットの品質を顕著に向上させることを確認した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。