Skip to main content
QUICK REVIEW

[論文レビュー] Formal Verification of Solidity contracts in Event-B

Zhu Jian, Kai Hu|arXiv (Cornell University)|May 4, 2020
Blockchain Technology Applications and Security参考文献 9被引用数 7
ひとこと要約

本稿では、Solidityスマートコントラクトの形式的検証手法を提唱する。Event-Bを用い、制限されたSolidityのサブセットをEvent-Bモデルに翻訳することで、厳密な性質の検証を可能にする。このアプローチは階層的精錬と証明義務の生成をサポートし、Rodinプラットフォームを用いてそれらを処理することで、Ethereumスマートコントラクトにおける安全・セキュリティ性の証明が可能になる。

ABSTRACT

Smart contracts are the artifact of the blockchain that provide immutable and verifiable specifications of physical transactions. Solidity is a domain-specific programming language with the purpose of defining smart contracts. It aims at reducing the transaction costs occasioned by the execution of contracts on the distributed ledgers such as the Ethereum. However, Solidity contracts need to adhere safety and security requirements that require formal verification and certification. This paper proposes a method to meet such requirements by translating Solidity contracts to Event-B models, supporting certification. To that purpose, we define a restrained Solidity subset and a transfer function which translates Solidity contracts to Event-B models. Then we take advantage of Event-B method capabilities to refine models at different levels of abstraction to verify Solidity contracts' properties. And we can verify the generated proof obligations of the Event-B model with the help of the Rodin platform.

研究の動機と目的

  • セキュリティ脆弱性や高額取引のリスクが深刻なため、Solidityスマートコントラクトの形式的検証の必要性に対応すること。
  • 形式的モデリングと検証に適した、制限されたSolidityのサブセットを定義すること。
  • スマートコントラクトの形式的分析を可能にするために、SolidityコントラクトからEvent-Bモデルへの体系的翻訳を確立すること。
  • Event-Bの精錬機能を活用し、複数の抽象化レベルでコントラクトの性質を検証すること。
  • Rodinプラットフォームの定理証明器を用いて証明義務を自動処理することで、スマートコントラクトの性質の証明を可能にすること。

提案手法

  • 複雑な機能(継承や複雑な制御フローなど)を除外する制限されたSolidityサブセットを定義し、形式的モデリングとの互換性を確保する。
  • Solidityコントラクト構造を対応するEvent-B構造に正確にマッピングする形式的翻訳関数を設計し、意味的同等性を保持する。
  • 状態変数、不変条件、イベントベースの遷移を含む、Solidityコントラクトの状態と動作を表現するEvent-Bモデルを構築する。
  • 階層的精錬を用いて、抽象化レベルを段階的に高めたコントラクトのモデル化を実現し、モジュラーな検証を可能にする。
  • モデル構築時に証明義務を自動生成し、Rodinプラットフォームの定理証明器を用いてそれらを処理する。
  • すべての検証条件が形式的に証明されることを保証することで、正しさの性質を保証する。

実験結果

リサーチクエスチョン

  • RQ1意味的正しさを保持したまま、制限されたSolidityサブセットをEvent-Bモデルに形式的に翻訳できるか?
  • RQ2Event-Bの階層的精錬機能を活用して、複雑なスマートコントラクト性質を段階的に検証できるか?
  • RQ3Rodinプラットフォームは、SolidityからEvent-Bへの翻訳に伴う証明義務の処理をどの程度自動化できるか?
  • RQ4この手法は、実世界のスマートコントラクトの安全性およびセキュリティ性を効果的に検証できるか?
  • RQ5翻訳プロセスは、実用的なスマートコントラクト検証を支えるのに十分に整合的かつスケーラブルか?

主な発見

  • 提案されたSolidityからEvent-Bへの翻訳は、状態変数、関数、不変条件といったコントラクトの主要構造を形式的意味論を用いて正確にモデル化した。
  • Event-Bの精錬機能の活用により、コントラクト性質の段階的検証が可能となり、証明のモジュラリティと保守性が向上した。
  • Event-Bモデルから生成された証明義務は、Rodinプラットフォームを用いて正常に処理され、検証された性質の正しさが確認された。
  • 形式的証明を通じて、再入力攻撃の不在や状態の一貫性といったセキュリティ・安全性の性質の証明が可能になった。
  • 代表的なスマートコントラクトの例に対して、このアプローチは実現可能性を示し、複雑なコントラクト論理に対しても形式的検証が可能であることを示した。

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

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

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

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