← 最新の論文
💻 computer science

Identifying and Characterizing Semantic Clones of Solidity Functions

本論文は、コードとコメントを分析することで Solidity スマートコントラクトにおけるセマンティッククローンを特定するスケーラブルな手法を提示し、コメントのないコードにおけるドキュメントのギャップを大規模言語モデルを活用して埋めながら、構造的な設計の代替案を検討しつつ、高い精度と再現率を達成するものである。

原著者: Ermanno Francesco Sannini, Francesco Salzano, Simone Scalabrino, Rocco Oliveto, Remo Pareschi, Corrado Aaron Visaggio, Andrea Di Sorbo

公開日 2026-04-30
📖 1 分で読めます☕ さくっと読める

原著者: Ermanno Francesco Sannini, Francesco Salzano, Simone Scalabrino, Rocco Oliveto, Remo Pareschi, Corrado Aaron Visaggio, Andrea Di Sorbo

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

スマートコントラクト(Ethereum などのブロックチェーン上で実行されるデジタル契約)の世界を、巨大な公共図書館だと想像してみてください。一度本(契約)が書かれて棚に置かれると、それは決して消去も変更もできません。本が公開されているため、作家たちは時間を節約するために、他の本からセクションをコピー&ペーストすることがよくあります。これを「クローン化」と呼びます。

ほとんどの場合、コピーは簡単に見分けがつきます。段落を一字一句そのままコピーすれば、それは明白です。しかし、もし誰かが全く異なる言葉を使って段落を書き換え、文構造を変え、いくつかの同義語を入れ替えたとしても、意味が全く同じままであるとしたらどうでしょうか?コーディングの世界では、これをセマンティッククローン(またはタイプ 4 クローン)と呼びます。

この論文は、Solidity(これらの契約を記述するために使用される言語)において、こうした隠された言い換えられたコピーを見つけるためのより優れた「司書」を構築することについて述べています。なぜなら、悪いロジックをコピーすることは、良いロジックをコピーすることと同じくらい簡単にセキュリティの穴を広げてしまうからです。

以下に、彼らの仕事を簡単なアナロジーを用いて解説します。

1. 問題:「書き換えられたレシピ」の罠

2 人のシェフが「チョコレートケーキ」のレシピを書く場面を想像してください。

  • シェフ Aはこう書きます:「小麦粉、砂糖、卵を混ぜる。350°F で焼く。」
  • シェフ Bはこう書きます:「乾いた材料と湿った材料を組み合わせる。175°C のオーブンに入れる。」

完全な一致を検索するコンピュータにとって、これらは全く異なって見えます。しかし、人間にとっては同じレシピです。ブロックチェーンの世界では、シェフ A のレシピに隠された欠陥(オーブンが熱いことを確認するのを忘れるなど)があり、シェフ B がその欠陥に気づかずにそのアイデアをコピーした場合、キッチン全体が危険にさらされます。

著者たちは、既存のツールが正確な単語の一致しか探さないロボットのようなものであることを発見しました。彼らはこれらの「書き換えられたレシピ」を見逃してしまいます。

2. 解決策:「シェフのメモ」を読む

研究者たちは、コード(材料と手順)は異なって見えるかもしれませんが、コメント(レシピの上にシェフが書いたメモ)は、意図を非常に似た方法で説明していることに気づきました。

  • アナロジー:コードを行動、コメントをその行動が何をしているかを説明するナレーションだと考えてください。
  • 手法:彼らは 2 つのものを比較するシステムを構築しました。
    1. コード:コードが異なるか(低類似度)を確認します。
    2. コメント:記述された説明が非常に似ているか(高類似度)を確認します。

コードは異なって見えてもナレーションが同じであれば、それを「セマンティッククローン」としてフラグを立てます。

3. 結果:高精度な探偵

彼らはこの手法を、ほぼ30 万の最新のスマートコントラクトからなる巨大なデータセットでテストしました。

  • 成功率:1,155 組のサンプルを手動で確認したところ、彼らの手法は全体として**59%**の確率で正解しました。
  • 「同じ名前」ボーナス:関数が同じ名前(どちらも transfer と呼ばれるなど)であった場合、精度は**84%**に跳ね上がりました。
  • 安全網:彼らは見逃しがないかも確認しました。彼らは実際のクローンの約**3%**しか見逃していないことがわかりました(97% の「リコール」率)。

彼らは、これらの「書き換えられたレシピ」は単なる事故ではなく、多くの場合設計上の選択であることを発見しました。開発者は、コードをより安全にするため、実行にかかる手数料である「ガス」を節約するため、またはコードをよりよく整理するために、それらを書き換えます。

4. 課題:「沈黙する」図書館

彼らが発見した大きな問題の一つは、これらの関数の**75%**にコメントが全くないということです。これは、本の 3 分の 2 にタイトルや要約がない図書館のようなものです。コメントがなければ、彼らの「ナレーション」手法は機能しません。

5. 解決策:「AI 書記」(LLM)

「沈黙する図書館」という問題を解決するために、彼らは大規模言語モデル(AI)を書記として使用しました。

  • アナロジー:本に要約がない場合、AI にコードを読んで要約を書いてもらうように依頼します。
  • 実験:彼らは AI にコードを与え、説明を書くように求め、その後、彼らのシステムを使って AI が書いた説明を比較しました。
  • 結果:人間が書いたメモがなくても、AI が生成した要約によって、隠されたクローンの**75%**を正しく発見することができました。

彼らはまた、異なる「プロンプト」(AI への指示)もテストしました。複雑で構造化されたレポートを要求するよりも、シンプルで直接的な要約を AI に求める方が効果的であることがわかりました。複雑なレポートはシステムを混乱させる余計な「肉付け」を追加するのに対し、シンプルな要約は核心の意味に焦点を当てていました。

6. なぜこれが重要なのか

著者たちは結論として、これは単に重複を見つけることではなく、代替案を見つけることだと述べています。

  • セキュアな契約を構築している開発者にとって、何かを行うための唯一の方法を知りたいわけではありません。同じ問題を解決するために他の人々がどのようなすべての異なる方法を用いたかを知りたいのです。
  • これらのセマンティッククローンを見つけることで、開発者は自分自身で構築する前に、異なる「書き換えられたレシピ」を比較し、どれがより安全で、安価で、効率的かを確認できます。

要約すると:この論文は、単に構文(コード)を比較するのではなく、意図(コメント)を比較することで、コード内の「隠れた双子」を見つける新しい方法を提示しています。コメントが欠落している場合、AI を使用してそれらを作成することで、ブロックチェーン契約をより安全で効率的にする可能性のある隠された設計上の代替案を成功裏に発見しています。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →