Skip to main content
QUICK REVIEW

[論文レビュー] Obsidian: Typestate and Assets for Safer Blockchain Programming

Michael Coblenz, Reed Oei|arXiv (Cornell University)|Sep 8, 2019
Blockchain Technology Applications and Security参考文献 43被引用数 12
ひとこと要約

Obsidian は、型状態と線形型を組み合わせることで、不適切な状態遷移や資産損失などの一般的なスマートコントラクトバグを静的に検出するドメイン特化プログラミング言語である。コンパイル時に所有権と状態の整合性を強制することで、ボイラープレートを削減し、安全性を向上させる。これは、パラメトリック保険やサプライチェーン管理における事例研究を通じて、Solidity と比較して明らかになった。

ABSTRACT

Blockchain platforms are coming into broad use for processing critical transactions among participants who have not established mutual trust. Many blockchains are programmable, supporting smart contracts, which maintain persistent state and support transactions that transform the state. Unfortunately, bugs in many smart contracts have been exploited by hackers. Obsidian is a novel programming language with a type system that enables static detection of bugs that are common in smart contracts today. Obsidian is based on a core calculus, Silica, for which we proved type soundness. Obsidian uses typestate to detect improper state manipulation and uses linear types to detect abuse of assets. We describe two case studies that evaluate Obsidian's applicability to the domains of parametric insurance and supply chain management, finding that Obsidian's type system facilitates reasoning about high-level states and ownership of resources. We compared our Obsidian implementation to a Solidity implementation, observing that the Solidity implementation requires much boilerplate checking and tracking of state, whereas Obsidian does this work statically.

研究の動機と目的

  • スマートコントラクトにおける一般的なプログラミングエラーに起因するセキュリティ脆弱性の増加に対処すること。
  • 状態操作関連および資産の不正利用に関連するバグの静的検出を可能にするプログラミング言語を設計すること。
  • 型状態と線形型を実用的で使いやすいブロックチェーン開発者向けの言語に統合すること。
  • 保険およびサプライチェーン管理分野における実世界の事例研究を通じて、言語の有効性を評価すること。
  • コア計算体系 Silica を通じて、スマートコントラクトプログラミングのための健全で形式的に検証済みの基盤を提供すること。

提案手法

  • 形式的に健全であることが証明されたコア計算体系 Silica の上に構築された表面言語として Obsidian を設計すること。
  • 型状態を用いて正しい状態遷移を強制し、オブジェクトが有効な状態にある場合にのみメソッドが呼び出されるようにすること。
  • 線形型を用いて資産所有権を追跡し、デジタル資産の誤っての損失や重複生成を防止すること。
  • アリスティングの制限を設えることで、安全保証を維持しながら実用的なプログラミングを可能にするパーミッションシステムを実装すること。
  • オンチェーンのスマートコントラクトとオフチェーンのクライアントプログラムを統一された言語でサポートすることで、エンドツーエンドの安全性を確保すること。
  • Hyperledger Fabric などのブロックチェーンプラットフォームと統合し、Ethereum への対応も計画すること。

実験結果

リサーチクエスチョン

  • RQ1型状態と線形型を実用的なプログラミング言語に効果的に統合することで、一般的なスマートコントラクトバグを防げるか?
  • RQ2Obsidian のアプローチは、Solidity などの既存言語と比較して、コードの簡潔さと安全性の面でどのように異なるか?
  • RQ3Obsidian の型システムを用いて、強力な安全保証を備えた非自明な実世界のスマートコントラクトを構築できるか?
  • RQ4スマートコントラクトとクライアントプログラムの両方を統一言語で記述することのアーキテクチャ的影響は何か?
  • RQ5形式的基盤(Silica)は、言語の信頼性および拡張性をどのように支援するか?

主な発見

  • Obsidian の型システムは、不適切な状態遷移や資産損失といった一般的なバグを静的に防止し、実行時における脆弱性を低減する。
  • Solidity と比較して、Obsidian は状態および資産の追跡に必要なボイラープレートを大幅に削減し、より簡潔で保守性の高いプログラムを実現する。
  • パラメトリック保険およびサプライチェーン管理における事例研究を通じて、Obsidian の型状態と資産モデリングが、価値移転および状態依存操作を伴う分野に適していることが示された。
  • 文書化が限られた研究プロトタイプであるにもかかわらず、開発者は非自明なスマートコントラクトを Obsidian で成功裏に実装した。
  • コア計算体系 Silica は形式的に健全であることが証明されており、Obsidian や将来の型状態指向言語の信頼できる基盤を提供する。
  • 言語がオンチェーンとオフチェーンのプログラミングを統一的に扱うアプローチにより、アプリケーションスタック全体にわたる一貫性のある安全保証が実現された。

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

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

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

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