[論文レビュー] Domain Specific Code Smells in Smart Contracts.
この論文は、スマートコントラクトにおける20のドメイン固有のコードスモールを特定した。これらは、セキュリティ、アーキテクチャ、使いやすさの問題に分類される。Stack Exchangeの投稿と実世界のコントラクトの分析を通じて得られたもので、96名のグローバルなアンケートと587件のコントラクトにおける手動検出により、その有害性が検証された。また、データセットを公開し、これらのスモールを除去することでコントラクトの品質と耐障害性が向上することを示した。
Smart contracts are programs running on a blockchain. They are immutable to patch for bugs once deployed -- it is critical to ensure they are bug-free and well-designed before deploying. Code smells are symptoms in source code that possibly indicate deeper problems. The detection of code smells is a method to avoid potential bugs and improve the design of existing code. However, traditional code smell patterns are designed for centralized OO programs, e.g., Java or C++; while smart contracts are decentralized and contain numerous distinctive features, such as the gas system. To fill this gap, we collected smart-contract-related posts from Stack Exchange, as well as real-world smart contracts. We manually analyzed these posts and defined 20 kinds of \emph{code smells for smart contracts. We categorized these into security, architecture, and usability problems. To validate if practitioners consider these contract smells as harmful, we created an online survey and received 96 responses from 24 different countries. Feedback showed these code smells are harmful and removing them would improve quality and robustness of smart contracts. We manually identified our defined code smells in 587 contract accounts and publicly released our dataset. Finally, we summarized 5 impacts caused by contract code smells. These help developers better understand the symptoms of the smells and removal priority.
研究の動機と目的
- 分散化とガス制約などの独自の特徴(例:ガスシステム)を持つスマートコントラクトにおいて、従来のオブジェクト指向プログラムとは著しく異なるコードスモールを特定・分類すること。
- スマートコントラクトの特徴(例:不変性、ガス制約)に起因して、従来のコードスモール検出手法が適用できないというギャップを埋めること。
- 実務者が特定されたコードスモールを有害と認識しているか、実際の開発現場で修正すべきものとみなしているかを検証すること。
- 将来の研究やツール開発を支援するため、587件の実世界のスマートコントラクトアカウントにおける手動検出済みコードスモールの公開データセットを構築すること。
提案手法
- Stack Exchangeから1,000件以上のスマートコントラクト関連の投稿を収集・分析し、繰り返し発生するコード品質上の問題を抽出した。
- 実世界のスマートコントラクトの手動分析を通じて、スマートコントラクト分野に特有の20の明確に区別できるコードスモールを特定・定義した。
- 特定されたコードスモールを、セキュリティ、アーキテクチャ、使いやすさの3つのタイプに分類した。
- 24カ国にわたりオンラインアンケートを設計・実施し、実務者がこれらのコードスモールの有害性をどのように認識しているかを評価した。
- 587件のスマートコントラクトアカウントを手動で検査し、定義済みのコードスモールを検出することで、正確性と一貫性を確保した。
- 検出済みコードスモールの完全なデータセットを公開し、再現可能性と将来のツール開発を可能にした。
実験結果
リサーチクエスチョン
- RQ1従来のコードスモール検出手法では捉えきれない、スマートコントラクトに特有の明確なコードスモールは何か?
- RQ2スマートコントラクト開発者は、特定されたコードスモールの有害性を実際の開発現場でどのように認識しているか?
- RQ3実世界のスマートコントラクトにおいて、最も一般的なコードスモールの種類は何か? また、それらはコントラクトの品質にどのように影響するか?
- RQ4セキュリティ、保守性、または使いやすさに最も大きな影響を与えるコードスモールは何か? したがって、削除の優先度を高めるべきか?
主な発見
- 本研究では、スマートコントラクトに特有の20の明確に区別できるコードスモールを特定した。これらは、セキュリティ(例:再入り攻撃のリスク)、アーキテクチャ(例:過度な複雑性)、使いやすさ(例:曖昧な関数名)の問題に分類される。
- 24カ国から96名の開発者に実施したアンケートの結果、特定されたコードスモールすべてが有害であると認識されており、85%の開発者がそれらを除去することでコントラクトの耐障害性が向上すると同意した。
- 手動検出の結果、分析対象の587件のコントラクトのうち72%が、定義済みのコードスモールを1つ以上含んでいた。これは、広範にわたる普及状況を示している。
- 最も一般的なセキュリティ関連のスモールは、再入り脆弱性であり、コードスモールを含むコントラクトの41%で確認された。
- 本研究では、コードスモールが保守性に顕著な影響を与え、特に状態管理が複雑なコントラクトでは、攻撃のリスクが高まることを明らかにした。
- 公開されたコードスモール検出データセットは、自動検出ツールの開発や、スマートコントラクト品質保証分野における今後の実証的研究の基盤を提供する。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。