Skip to main content
QUICK REVIEW

[論文レビュー] Smart Contract Design Meets State Machine Synthesis: Case Studies

Dmitrii Suvorov, Vladimir Ulyantsev|arXiv (Cornell University)|Jun 7, 2019
Security and Verification in Computing参考文献 15被引用数 5
ひとこと要約

本稿では、線形時相論理(LTL)の合成と有限状態機械(FSM)モデリングを用いて、正しく構築されたスマートコントラクトを自動生成する仕様駆動のアプローチを提案する。コントラクトの振る舞いをLTL式として符号化し、テストシナリオを統合することで、形式的正しさ保証付きの安全な実行可能Solidityコードにコンパイル可能なFSMを合成する。クラウドファンディング、オークション、ライセンス契約の事例研究を通じて、形式的正しさ保証付きのエンドツーエンドの検証とコード生成が可能であることを示している。

ABSTRACT

Modern blockchain systems support creation of smart contracts -- stateful programs hosted and executed on a blockchain. Smart contracts hold and transfer significant amounts of digital currency which makes them an attractive target for security attacks. It has been shown that many contracts deployed to public ledgers contain security vulnerabilities. Moreover, the design of blockchain systems does not allow the code of the smart contract to be changed after it has been deployed to the system. Therefore, it is important to guarantee the correctness of smart contracts prior to their deployment. Formal verification is widely used to check smart contracts for correctness with respect to given specification. In this work we consider program synthesis techniques in which the specification is used to generate correct-by-construction programs. We focus on one of the special cases of program synthesis where programs are modeled with finite state machines (FSMs). We show how FSM synthesis can be applied to the problem of automatic smart contract generation. Several case studies of smart contracts are outlined: crowdfunding platform, blinded auction and a license contract. For each case study we specify the corresponding smart contract with a set of formulas in linear temporal logic (LTL) and use this specification together with test scenarios to synthesize a FSM model for that contract. These models are later used to generate executable Solidity code which can be directly used in a blockchain system.

研究の動機と目的

  • デプロイ前に正しく構築されたコントラクトを自動生成できるようにすることで、スマートコントラクトのセキュリティという重要な課題に対処すること。
  • スマートコントラクトの相対的に小さなサイズと状態依存性を考慮すると、有限状態機械(FSM)を用いたプログラム合成がスマートコントラクト開発に効果的に適用可能かどうかを検討すること。
  • LTLの仕様とテストシナリオからFSMを合成することで、形式的仕様と実行可能コードの橋渡しをし、時相論理準拠を保証すること。
  • クラウドファンディング、暗号化オークション、ライセンス契約を含む事例研究を通じて、本アプローチの実現可能性と実用性を示すこと。
  • 将来のスマートコントラクトにおける合成とソースレベルの検証、ガスコストを考慮したプロパティモデリングの統合の基盤を築くこと。

提案手法

  • 本アプローチは、入力イベントがコントラクトメソッドに対応し、出力アクションがメソッド実装を表す拡張有限状態機械(EFSM)としてスマートコントラクトをモデル化する。
  • 形式的仕様は、不変性、安全性、ライブネス条件といった望ましい振る舞い特性を捉える線形時相論理(LTL)で表現される。
  • 正しく構築されたFSMモデルの合成を導くために、LTL式に加えてテストシナリオが使用され、振る舞いの適合性が保証される。
  • 合成されたFSMは、複数の遷移を1つのイベントに対して許容する(VeriSolidなどの既存ツールとは異なり)独自のコード生成ツール(fsmc)を用いて実行可能Solidityコードにコンパイルされる。
  • 本手法はEFSMツールを活用してFSMの合成を実行し、生成されたコントラクトが指定された安全性およびライブネス特性を満たすことを保証するための時相論理検証を統合する。
  • 本フレームワークは、複数コントラクトシステムへの拡張が可能であり、信頼性を高めるためにソースレベルの検証技術と組み合わせて利用可能である。

実験結果

リサーチクエスチョン

  • RQ1LTLに基づくプログラム合成は、形式的振る舞い保証付きで正しく構築されたスマートコントラクトを効果的に生成できるか?
  • RQ2有限状態機械の合成は、クラウドファンディングやオークションシステムなどの実世界のスマートコントラクトの制御フローをどの程度正確にモデル化できるか?
  • RQ3テストシナリオをLTL仕様とどのように統合することで、合成されたFSMモデルの精度と実用性を向上させられるか?
  • RQ4LTLは特定のスマートコントラクトのプロパティを表現するのに不十分である場合があるが、実際にはどのようにその制限を緩和できるか?
  • RQ5合成パイプラインは、ガスコストやコイン送金といったオンチェーンの関心事も形式的仕様に組み込むように拡張可能か?

主な発見

  • 提案手法は、クラウドファンディング、暗号化オークション、ライセンス契約という3つの異なるスマートコントラクトユースケースについて、形式的LTL仕様に基づく検証を経てFSMモデルを正常に合成した。
  • 各事例研究において合成処理が数秒で完了し、一般のプログラム合成の不決定性を考慮しても、本アプローチの実用的効率性が裏付けられた。
  • 生成されたSolidityコードは、指定されたLTLプロパティ(例:"noRemove"という不変性、"donate"が発生すると最終的に承認が行われるというライブネス条件)に関して、正しく構築されたものであった。
  • 独自ツールfsmcにより、1イベントに複数の遷移を許容する仕様が実現され、VeriSolidなどの既存ツールの主な制限を克服し、信頼性の高いコード生成が可能になった。
  • 本アプローチは、LTLを用いたFSM合成がスマートコントラクトに実用的であることを示しており、形式的検証付きの自動化されたコントラクトデプロイの道筋を示している。
  • LTLは一部のプロパティ(例:"φがψが発生する前に無限回発生する可能性がある")を表現するのに不十分であるが、これについては十分に長いテストシナリオを用いることで、すべてのFSM遷移をカバーする形で制限を緩和した。

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

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

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

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