スマートコントラクト
ブロックチェーン連続講義 第 7 回
慶應義塾大学 SFC 研究所 上席所員
斉藤 賢爾
ks91@sfc.wide.ad.jp
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.1/38
今回のテーマ
スマートコントラクト
金融・法曹などさまざまな応用を見据え、ブロックチェーンを
ソフトウェアプラットフォームとして活用する技術について、
スマートコントラクト基盤として開発されたイーサリアムを
中心に、イーサリアム仮想マシン (EVM)、外部アクター、
自律オブジェクトなどの概念とスマートコントラクトの応用
可能性について解説します
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.2/38
スマートコントラクト
1. スマートコントラクトって何だろう
2. イーサリアム (Ethereum)
3. ブロックチェーンとスマートコントラクト
4. 地球規模 OS がある暮らし
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.3/38
1. スマートコントラクトって
何だろう
狭い意味で語る
広い意味で語る
スマートコントラクトと自動販売機
契約って何だっけ?
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.4/38
狭い意味で語る
スマートコントラクトとは
デジタルに表現される資産を予め定められた
ルールに従って自動的に移転させる仕組み
語感とは合わない
しかし、この狭義の意味には意味がある
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.5/38
広い意味で語る
スマートコントラクトとは
契約を機械で実装する仕組み
また、そのようにして実装された契約
原初的には自動販売機などもスマートコントラクトに
当たる
自動販売機 . . .
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.6/38
スマートコントラクトと自動販売機
自動販売機にまつわるつれづれなる連想をマインド
マップにしてみました
関連する領域でいつも例として出てきます
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.7/38
Q. 自動販売機は
1. おカネを入れると品物が出てくる機械である
2. おカネの物理量を判定して動作する機械である
3. 何がおカネであるかを定義する機械である
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.8/38
自動販売機とコインの正当性
自動販売機は、何がおカネであるかを決める私たちの「心」の機能
を実装している
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.9/38
補題1
⇒ スマートコントラクトは私たちの「心」の機能を
実装している
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.10/38
CSP とチョコレート自動販売機
CSP : Communicating Sequential Processes
並行システム内の相互作用を記述する形式言語
例 : チョコレート自動販売機と人間の相互作用
VendingMachine = coin → choc → STOP
Person = (coin → STOP) [] (card → STOP)
合成すると . . .
VendingMachine |[{coin,card}]| Person
≡ coin → choc → STOP
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.11/38
補題2
⇒ 人間はスマートコントラクトの一部である
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.12/38
現実 vs. ブロックチェーン
思考実験
ビットコインで支払うと、上空を飛ぶドローンが
運んできた缶ジュースを落としてくれるという
サービスを作るとする
ドローンはいつ缶ジュースを落とせばよいのか?
実時間で進行する現実と、ブロックチェーンの動作は
かけ離れている
このドローンによる自販機の例は派手なだけ
普通の自販機でもまったく同じことが言える
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.13/38
補題3
⇒ ブロックチェーンでスマートコントラクトを実装する
ことは不可能である
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.14/38
これまでにわかったこと
1. スマートコントラクトは私たちの「心」の機能を
実装している
⇒ (約束事に関わるので) 社会制度として議論する必要がある
2. 人間はスマートコントラクトの一部である
⇒ 人間を系の一部として議論する必要がある
3. ブロックチェーンでスマートコントラクトを実装
することは不可能である
⇒ 狭い意味に込められた意味は?
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.15/38
契約って何だっけ?
契約とは (by 広辞苑)
1. 約束
2. 対立する複数の意思表示の合致によって成立
する法律行為
贈与・売買・交換・貸借・請負・雇用・委任・寄託などが
その例
成立の本質的要件
当事者間の意思表示の合致
そのためのメディアは
口頭、握手、石に彫る、紙 (手書き)、紙 (印刷)、. . .
機械でできることは?
cf.「メディアがメッセージだ」by McLuhan
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.16/38
2. イーサリアム (Ethereum)
ブロックチェーンと状態遷移
EVM (Ethereum Virtual Machine)
プログラミング言語
特徴と課題
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.17/38
イーサリアムとは?
Vitalik Buterin, “Ethereum White Paper: A NEXT
GENERATION SMART CONTRACT &
DECENTRALIZED APPLICATION PLATFORM”
ブロックチェーン技術を応用
平均ブロック間隔約 12 秒
そこにプログラミング言語を載せる
チューリング完全
分散アプリケーションのための基盤
現在の金融・貨幣経済システムを時代遅れにしようと
する意図が見える
スマートコントラクトとはそもそもそういうもの
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.18/38
ブロックチェーンと状態遷移
ブロックチェーン = 状態マシンの run
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.19/38
用語体系
Ether
Ethereum における通貨
外部アクター
デジタル署名できる実在で、アカウントをもつ
EOA : Externally-Owned Account
自律オブジェクト
システム内で自律動作し、アカウントをもつ
アカウント
Ether 残高をもち、ストレージや EVM コードを
もてる
EVM コード
スマートコントラクトのプログラム
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.20/38
EVM : Ethereum Virtual Machine
自律オブジェクトがメッセージを受けると起動し、コントラクトを実行
実行ステップ毎に Gas の供給が必要
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.21/38
プログラミング言語
EVM が解釈するのはバイトコード
その他に高級言語のコンパイラを用意
高級言語 : 人間が読み書きできる言語
例 :
Solidity — JavaScript に似た言語
現在のプライマリ言語
LLL — Lisp に似た言語
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.22/38
Solidity サンプルコード
contract metaCoin {
mapping (address => uint) balances;
function metaCoin() {
balances[msg.sender] = 10000;
}
function sendCoin(address receiver, uint amount) returns(bool sufficient) {
if (balances[msg.sender] < amount) return false;
balances[msg.sender] -= amount;
balances[receiver] += amount;
return true;
}
}
by hshimo さん
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.23/38
特徴と課題
特徴
ブロックの検証の過程でプログラムを実行し、
その結果を状態に反映させる
複数の検証者が冗長に実行
ブロックチェーンの中に閉じる
イーサリアムの体系の中では整合的
課題
プログラムの中から入出力コマンドを出せない
外部アクター以外の外界の影響を受けたり、
外界に直接影響を及ぼすことができない
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.24/38
3. ブロックチェーンと
スマートコントラクト
ADEPT と洗濯機
狭い意味で語る意味
コントラクトの真正性
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.25/38
ADEPT と洗濯機
ADEPT : IBM の IoT 研究プロジェクト
ブロックチェーンを用いた洗濯機の例が出てくる
一体何をやる?
モーターは制御できない
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.26/38
狭い意味で語る意味
スマートコントラクトとは
デジタルに表現される資産を予め定められた
ルールに従って自動的に移転させる仕組み
語感とは合わない
しかし、ブロックチェーンで可能なのはこのこと
契約には対価が伴い決済と不可分なので、
これだけでも重要といえば重要
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.27/38
コントラクトの真正性
誰もが検証者としてブロックの検証とコントラクトの
実行に参加できる
⇒ 誰もがコントラクトのコードにアクセスできる
正しいコントラクトが実行されているかは原理的には
検証可能
入出力はブロックチェーンの外側にあるので、契約の内容全部
を知られることなくそれが可能
ただし、イーサリアムの方法は唯一のやり方ではない
cf. observability と verifiability
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.28/38
4. 地球規模OSがある暮らし
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.29/38
地球規模OS (2007)
複数主体による地球上の資源の利用を調整する
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.30/38
基盤としての地球規模OS
金融・貨幣経済システムを時代遅れにする
決済システムを内包
プログラミング言語を内包
↑ cf. イーサリアム
人的資源を含む地球上の資源の会計システム
新たな「法」を定義できる
人々が業を起こすための基盤
営利組織も、政府も、NPO/NGO も利用できる
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.31/38
地球規模OSのための応用問題
ヒッチハイク問題
走行中の自動車の空席は近傍の人間が共有できる
資源である
歩行者と運転手がランデヴーし、
目的地へのヒッチハイクを可能にするように
ネットワークをプログラムせよ
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.32/38
Uber
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.33/38
現在の視点から見たゴール
Uber のような企業をプログラムとして記述・実行
できるような環境を整え、提供する
実際の Uber もかなり自動化されている
それにより
誰もが公益性に主体的に関与するためのコスト・
敷居を下げる
地球上の限られた資源を有効に活用し、持続的に
生きられる文明への変化に寄与する
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.34/38
アプリケーションから発想する
ことは大事
遺言
自動車保険
無尽/頼母子講
...
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.35/38
頼母子講
講元が信用のおける仲間を集めてスタートする
仮に毎月 10 万円ずつ持ち寄る仲間が 12 名
→ 毎月 120 万円が持ち寄られる
毎月、仲間のひとりが 120 万円を受け取る
12ヶ月後に 12 人目が 120 万円を受け取って終了
地域からお金が逃げない仕組み
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.36/38
そして自動販売機に立ち返って
そのスマートコントラクトには「呼び出しボタン」は
ついていますか?
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.37/38
ご質問や議論を
ブロックチェーン連続講義 第 7 回「スマートコントラクト」 — 2016-04-08 – p.38/38

ブロックチェーン連続講義 第7回 スマートコントラクト