Skip to main content
QUICK REVIEW

[論文レビュー] Mandala: A Smart Contract Programming Language

Markus Knecht|arXiv (Cornell University)|Nov 26, 2019
Blockchain Technology Applications and Security参考文献 1被引用数 6
ひとこと要約

Mandala は、リource 使用、アクセス制御、エラー処理に関するコンパイル時保証を強制することで、最大限の安全性和と監査可能性を実現する静的型付けでチューリング完全でないスマートコントラクト言語である。能力(capabilities)と部分構造型(substructural types)を用いて資産と権限をモデル化し、静的強制によって再entrant攻撃や状態破壊といった一般的な脆弱性を防ぎ、すべてのセキュリティ特性がデプロイ前に検証されることを保証する。

ABSTRACT

Smart contracts on a blockchain behave precisely as specified by their code. A vulnerability in this code can lead to unexpected behaviour, which is hard to fix because a blockchain does not allow to change smart contract code after its deployment. Such vulnerabilities have led to several incidents. In the aftermath of such an event, a hard-fork between Ethereum and Ethereum classic was the result. This thesis proposes to develop a new smart contract programming language with the primary focus on safety, auditability, and the intention to prevent as many of the known categories of vulnerabilities by design as possible. The programming language's code is validated during deployment and afterwards isolated from other smart contracts running on the same blockchain to enforce compile-time guarantees during runtime. The designed programming language does evaluate new concepts and paradigms rarely used in non-smart contract environments for their potential benefit in a smart contract environment.

研究の動機と目的

  • デプロイ済みスマートコントラクトにおける不可逆的脆弱性という深刻な問題に対処すること。これは、不変性とパッチ適用の不可能さにより、恒久的な財務的損失を招くことがある。
  • 動的ディスpatch、再帰、ランタイム型エラーの排除により監査性を向上させ、コード動作の形式的検証を可能にすること。
  • 再entrant攻撃、アクセス制御の欠陥、リソース枯渇といった一般的なスマートコントラクト脆弱性を、静的保証を通じて設計段階で防止すること。
  • アクセス制御と所有権移転をコンパイル時に強制する画期的な能力ベースの型システムを導入することにより、ランタイム攻撃表面を縮小すること。
  • ブロックチェーン環境における強い安全性と開発者生産性のバランスを取った実用的で使いやすいプログラミング言語を構築すること。

提案手法

  • Mandala は代数的データ型を備えた静的型付けシステムを採用し、動的メソッドディスpatchを一切許可しないため、すべての関数呼び出しはコンパイル時に解決される。
  • 再帰の禁止と既知のループ境界の要請によりチューリング完全でないことを保証し、静的リソース制限の計算を可能にする。
  • 値やリソースへのアクセスは型付き能力によって制御される能力ベースの型システムを採用し、コンパイル時に強制される。
  • 最小限の効果システムを導入して状態の変更や副作用を追跡し、状態変更の理解と監査性を向上させる。
  • エラー処理は関数シグネチャに統合されており、すべての潜在的エラーが明示的に宣言され、処理が求められる。これにより、静的エラーが発生する。
  • Mandala ではイーサリアムのイーサ(Ether)を一等品のトークン型として扱い、送金には明示的な関数呼び出しが必要となる。これにより、受信者は資金を受け取る準備が整っていることが保証される。

実験結果

リサーチクエスチョン

  • RQ1静的型システム設計によって、再entrant攻撃やアクセス制御の欠陥といった一般的な脆弱性を、スマートコントラクト言語として事前に防止できるか。
  • RQ2リソース制限と制御フローのコンパイル時強制は、スマートコントラクトにおけるランタイム障害や攻撃をどの程度防止できるか。
  • RQ3能力と部分構造型を用いて、資産と権限を一等言語的構造としてモデル化することで、セキュリティをどのように向上できるか。
  • RQ4静的リソース制限を持つチューリング完全でない言語は、監査性を向上させ、『ガス不足』例外のような一般的な障害モードを排除できるか。
  • RQ5能力ベースのアクセス制御システムは、ランタイムチェックと比較して、表現力、安全性、開発者エゴノミーの観点でどの程度優れているか。

主な発見

  • Mandala は、能力と制御フローのコンパイル時強制を通じて、再entrant攻撃、レースコンディション、アクセス制御の欠陥といったすべての既知のスマートコントラクト脆弱性を設計段階で防止する。
  • すべてのリソース使用がコンパイル時に境界付きで計算可能であり、実行中のリソース枯渇リスクが完全に排除される。
  • すべてのエラーは関数シグネチャに宣言され、処理が行われない場合、コンパイル時にエラーが発生する。これにより、ランタイムに未処理の例外が発生することはない。
  • 能力ベースの型システムにより、アクセス制御と所有権移転が正確かつ静的に強制され、資産や関数への不正アクセスが防止される。
  • 再帰と動的ディスpatchの禁止により、すべての実行パスがコンパイル時に把握可能となるため、監査担当者はコード動作について完全な確実性をもって推論できる。
  • この言語の設計により、自己破壊操作やコントラクト破棄の必要がなくなり、一部の既存言語に内在する関連セキュリティ問題が排除される。

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

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

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

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