Skip to main content
QUICK REVIEW

[論文レビュー] WhylSon: Proving your Michelson Smart Contracts in Why3

Luís Pedro Arrojado da Horta, João Santos Reis|arXiv (Cornell University)|May 29, 2020
Blockchain Technology Applications and Security参考文献 7被引用数 6
ひとこと要約

WhylSon は、Why3 フレームワークを用いてミケルソンスマートコントラクトを形式的検証可能な WhyML に翻訳するツールであり、統合された定理証明器を介して自動証明生成を可能にする。このツールはミケルソンの意味論を浅い埋め込みとして提供し、開発者が Tezos スマートコントラクトの正しさを高い自動化度と既存の形式的検証パイプラインへの統合を伴って検証できるようにする。

ABSTRACT

This paper introduces WhylSon, a deductive verification tool for smart contracts written in Michelson, which is the low-level language of the Tezos blockchain. WhylSon accepts a formally specified Michelson contract and automatically translates it to an equivalent program written in WhyML, the programming and specification language of the Why3 framework. Smart contract instructions are mapped into a corresponding WhyML shallow-embedding of the their axiomatic semantics, which we also developed in the context of this work. One major advantage of this approach is that it allows an out-of-the-box integration with the Why3 framework, namely its VCGen and the backend support for several automated theorem provers. We also discuss the use of WhylSon to automatically prove the correctness of diverse annotated smart contracts.

研究の動機と目的

  • スマートコントラクトの不変性と金融論理への応用が増加する中で、Tezos スマートコントラクトの形式的検証の重要性に対応するため。
  • ミケルソンスマートコントラクトの検証プロセスを自動化し、手動での証明作業を最小限に抑えるため。
  • 既存の自動的および対話的定理証明ツールを活用できるように、Why3 フレームワークへのシームレスな統合を提供するため。
  • 高レベルの抽象化ではなく、実際の実行レベル(ミケルソン)での検証を可能にし、検証されたコードの正確性と信頼性を保証するため。
  • 将来的な LIGO や SmartPy などの高レベル言語向け検証パイプラインを可能にするために、ミケルソンを検証済みバックエンドとして提供するため。

提案手法

  • ツールはミケルソンコントラクトを解析し、ミケルソンの公理的意味論の浅い埋め込みを用いて同等の WhyML コードに翻訳する。
  • Why3 に、ミケルソンのためのカスタム公理的意味論を定義し、各命令をその対応する形式的動作にマッピングする。
  • ミケルソンの基本型(例:nat, int, bytes, bool, option)を対応する Why3 の型にマッピングし、nat のような型に対しては独自の不変条件を定義して正しさを保証する。
  • 比較関数(例:compare_bool)は、ミケルソン仕様に準拠するように手動で Why3 に実装し、-1、0、1 のいずれかを返すようにする。
  • Why3 の検証条件生成ツール(VCGen)が自動的に証明義務を生成し、Z3 や CVC4 などの外部自動定理証明器がそれらを解決する。
  • ツールは OCaml を基盤とする Why3 API を用いた Why3 プラグインとして実装されており、形式的検証ワークフローへの統合を可能にする。

実験結果

リサーチクエスチョン

  • RQ1ミケルソンスマートコントラクトは、形式的検証を保証するように、自動的に WhyML に翻訳可能か?
  • RQ2Why3 を用いたミケルソンコントラクトから生成された証明義務は、どの程度自動定理証明器が解決可能か?
  • RQ3浅い埋め込みアプローチは、WhyML においてミケルソンのスタックベース意味論の表現力と検証可能性をどの程度維持できるか?
  • RQ4複雑なミケルソンコントラクトへの自動検証をスケーリングする際の実用的課題は何か、そしてそれらはどのように軽減できるか?
  • RQ5WhylSon は、LIGO や SmartPy などの高レベルスマートコントラクト言語のバックエンド検証レイヤーとして機能可能か?

主な発見

  • WhylSon はミケルソンコントラクトを WhyML に成功裏に翻訳し、Why3 の自動定理証明器を用いた形式的検証を可能にした。
  • 証明義務は Why3 の VCGen を通じて自動生成され、Z3 や CVC4 などの外部証明器によって解決されたため、高い自動化度を達成した。
  • 自動化にもかかわらず、一部の証明木が大きくなり、ユーザーの介入が必要となった。これは現在の型エンコード戦略の限界を示唆している。
  • ミケルソン型に木構造のデータ構造を用いたことが、複雑な証明義務を生じさせた。これにより、最適化されたエンコード戦略の必要性が浮き彫りになった。
  • Why3 のドキュメント化が整った OCaml API に起因し、統合は容易だった。これにより、プラグイン開発が迅速に進んだ。
  • このアプローチは、将来的に認証済みコンパイラや、Archetype や LIGO などの高レベル言語との統合を可能にし、コンパイルの検証済みバックエンドとしての役割を果たすことができる。

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

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

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

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