ブロックチェーンとブロックチェーンと
形式検証形式検証
古瀬淳
Jan 31, 2019
自己紹介自己紹介
古瀬淳
ダイラムダ株式会社
Tezos Japan Foundation
Tezos blockchain のコア開発者の一人
TezosとはTezosとは
今日の話今日の話
ブロックチェーンとは何か
形式検証とは
Tezosにおける安全化
ブロックチェーン: コンピュータサイエンスの総合格闘技
ブロックチェーンとはブロックチェーンとは
台帳方式
分散環境
開かれたネットワーク
トークン
スマートコントラクト
台帳方式台帳方式
履歴蓄積型データベース
大福帳、通帳
Git
分散環境分散環境
複数のノードで情報のレプリカを
持つ
耐障害性
負荷分散
分散合意アルゴリズム分散合意アルゴリズム
ノード間での矛盾する更新を解消する
Bad news: 分散合意アルゴリズムは停止しない
[FLP85]
Good news: PaxosGood news: Paxos
ノード間投票による多数決
停止しないかもしれないが、実用
上問題はない
ただし閉じたネットワーク
開かれたネットワーク開かれたネットワーク
誰でもノードを建て参加できる公共データベース
改竄ほぼ不可能
中立
低コスト
開かれたネットワークの問題開かれたネットワークの問題
Sybil攻撃(なりすまし)による合意
操作、阻害
サトシ・ナカモトとBitcoinサトシ・ナカモトとBitcoin
Sybil attack を難しくする
無条件の投票ではなく、資源専有によ
る制限(PoW, PoS, ..)
正直であることを奨励する「トーク
ン」の導入
「仮想通貨」の誕生
スマートコントラクトスマートコントラクト
単なる台帳を超えて、アカウントにコードを紐づけ
る。
コードが紐づいているアカウントに送金するとコード
が動き出す
契約の自動執行
分散データベースを超えて、中央管理者のいない分散アプリケ
ーションへ
ブロックチェーンとはブロックチェーンとは
台帳方式
分散環境
開かれたネットワーク
トークン
スマートコントラクト
ブロックチェーンに求められるブロックチェーンに求められる
安全性安全性
開かれた分散データベースの解として
トークンを導入した結果:
投機的資金の流入
オープンソースとなる宿命
セキュリティホール⇨ハッカーによる窃盗
非常に高い安全性が求められる
スマートコントラクトの安全性スマートコントラクトの安全性
スマートコントラクトのバグは巨額の損失を引き起こ
しかねない。
The DAO事件(360万ETH, 52億円盗難)
Parity脆弱性事件#1 (15万ETH, 34億円盗難)
Parity脆弱性事件#2 (51万ETH, 174億円凍結)
ここでも非常に高い安全性が求められる
ブロックチェーンをどう安全にすブロックチェーンをどう安全にす
るかるか
テストでは不十分
形式検証を行おう、というのがトレンド
ソフトウェアテストソフトウェアテスト
システムを与えられた条件下で動かし、不具合が起き
ないことを確認する
システムを動かすだけ。簡単。
全てのケースをテストすることは
不可能。コーナーケースのみ。
テストしていないケースが不具合
を起こすかもしれない
形式検証形式検証
数理的にプログラムが好ましい性質を持っていること
を証明する。
テストとは違い、証明できれば絶対の安全を保証できる。
証明は一般的に難しい。
形式検証手法のいろいろ形式検証手法のいろいろ
静的型システム
モデル検査
定理証明
静的型システム静的型システム
プログラム中の値が持つ性質を型で表し、値の組み
合わせを適合する型の間のみに強制、プログラム全
体の性質を保証する。
利点: 推論があれば自動
欠点: あまり高度な性質を保証できない
モデル検査モデル検査
プログラムを有限状態遷移系としてモデル化し、モ
デルが検証したい性質を満たすかを自動的に検証す
る。
利点: 自動
欠点: 効率の良いモデル化が難しい
定理証明定理証明
プログラムの持つ性質を直接証明する。定理証明支
援器により一部を自動化できる。
利点: なんでも証明できる
欠点: 証明を書くのが難しい
形式検証をブロックチェーンへ形式検証をブロックチェーンへ
産業的には、形式検証はクリティカルシステムに使わ
れてきた:
航空宇宙産業
原子力発電
ブロックチェーンもクリティカルシステム。形式検
証して安全性を保証していく。
Tezosと形式検証Tezosと形式検証
暗号プリミティブの正しさ検証
定理証明によるインタプリタの形式化
静的型付されたスマートコントラクト
モデル検査によるスマートコントラク
トの停止性検査

ブロックチェーンと形式検証