38
7 SFC [email protected] 7 — 2016-04-08 – p.1/38

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

Embed Size (px)

Citation preview

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

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

慶應義塾大学 SFC研究所上席所員斉藤賢爾

[email protected]

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.1/38

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

今回のテーマスマートコントラクト

金融・法曹などさまざまな応用を見据え、ブロックチェーンをソフトウェアプラットフォームとして活用する技術について、

スマートコントラクト基盤として開発されたイーサリアムを中心に、イーサリアム仮想マシン (EVM)、外部アクター、自律オブジェクトなどの概念とスマートコントラクトの応用可能性について解説します

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.2/38

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

スマートコントラクト1. スマートコントラクトって何だろう2. イーサリアム (Ethereum)

3. ブロックチェーンとスマートコントラクト4. 地球規模OSがある暮らし

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.3/38

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

1. スマートコントラクトって何だろう

狭い意味で語る広い意味で語るスマートコントラクトと自動販売機契約って何だっけ?

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.4/38

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

狭い意味で語るスマートコントラクトとはデジタルに表現される資産を予め定められたルールに従って自動的に移転させる仕組み

語感とは合わないしかし、この狭義の意味には意味がある

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.5/38

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

広い意味で語るスマートコントラクトとは契約を機械で実装する仕組みまた、そのようにして実装された契約

原初的には自動販売機などもスマートコントラクトに当たる自動販売機 . . .

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.6/38

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

スマートコントラクトと自動販売機

自動販売機にまつわるつれづれなる連想をマインドマップにしてみました関連する領域でいつも例として出てきます

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.7/38

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

Q. 自動販売機は1. おカネを入れると品物が出てくる機械である2. おカネの物理量を判定して動作する機械である3. 何がおカネであるかを定義する機械である

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.8/38

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

自動販売機とコインの正当性

自動販売機は、何がおカネであるかを決める私たちの「心」の機能を実装している

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.9/38

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

補題1⇒ スマートコントラクトは私たちの「心」の機能を実装している

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.10/38

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

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

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

補題2⇒ 人間はスマートコントラクトの一部である

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.12/38

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

現実 vs. ブロックチェーン思考実験ビットコインで支払うと、上空を飛ぶドローンが運んできた缶ジュースを落としてくれるというサービスを作るとする

ドローンはいつ缶ジュースを落とせばよいのか?

実時間で進行する現実と、ブロックチェーンの動作はかけ離れているこのドローンによる自販機の例は派手なだけ普通の自販機でもまったく同じことが言える

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.13/38

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

補題3⇒ ブロックチェーンでスマートコントラクトを実装することは不可能である

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.14/38

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

これまでにわかったこと1. スマートコントラクトは私たちの「心」の機能を実装している⇒ (約束事に関わるので)社会制度として議論する必要がある

2. 人間はスマートコントラクトの一部である⇒ 人間を系の一部として議論する必要がある

3. ブロックチェーンでスマートコントラクトを実装することは不可能である⇒ 狭い意味に込められた意味は?

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.15/38

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

契約って何だっけ?契約とは (by広辞苑)

1. 約束2. 対立する複数の意思表示の合致によって成立する法律行為贈与・売買・交換・貸借・請負・雇用・委任・寄託などがその例

成立の本質的要件当事者間の意思表示の合致そのためのメディアは口頭、握手、石に彫る、紙 (手書き)、紙 (印刷)、. . .

機械でできることは?cf.「メディアがメッセージだ」by McLuhan

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.16/38

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

2. イーサリアム (Ethereum)ブロックチェーンと状態遷移EVM (Ethereum Virtual Machine)

プログラミング言語特徴と課題

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.17/38

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

イーサリアムとは?Vitalik Buterin, “Ethereum White Paper: A NEXTGENERATION SMART CONTRACT &DECENTRALIZED APPLICATION PLATFORM”

ブロックチェーン技術を応用平均ブロック間隔約 12秒

そこにプログラミング言語を載せるチューリング完全

分散アプリケーションのための基盤現在の金融・貨幣経済システムを時代遅れにしようとする意図が見える

スマートコントラクトとはそもそもそういうもの

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.18/38

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

ブロックチェーンと状態遷移

ブロックチェーン =状態マシンの run

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.19/38

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

用語体系Ether

Ethereumにおける通貨外部アクターデジタル署名できる実在で、アカウントをもつ

EOA : Externally-Owned Account

自律オブジェクトシステム内で自律動作し、アカウントをもつ

アカウントEther残高をもち、ストレージや EVMコードをもてる

EVMコードスマートコントラクトのプログラム

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.20/38

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

EVM : Ethereum Virtual Machine

自律オブジェクトがメッセージを受けると起動し、コントラクトを実行実行ステップ毎に Gasの供給が必要

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.21/38

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

プログラミング言語EVMが解釈するのはバイトコードその他に高級言語のコンパイラを用意高級言語 : 人間が読み書きできる言語

例 :

Solidity — JavaScriptに似た言語現在のプライマリ言語

LLL — Lispに似た言語

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.22/38

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

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

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

特徴と課題特徴ブロックの検証の過程でプログラムを実行し、その結果を状態に反映させる複数の検証者が冗長に実行ブロックチェーンの中に閉じる

イーサリアムの体系の中では整合的

課題プログラムの中から入出力コマンドを出せない外部アクター以外の外界の影響を受けたり、外界に直接影響を及ぼすことができない

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.24/38

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

3. ブロックチェーンとスマートコントラクト

ADEPTと洗濯機狭い意味で語る意味コントラクトの真正性

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.25/38

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

ADEPTと洗濯機ADEPT : IBMの IoT研究プロジェクト

ブロックチェーンを用いた洗濯機の例が出てくる一体何をやる?モーターは制御できない

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.26/38

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

狭い意味で語る意味スマートコントラクトとはデジタルに表現される資産を予め定められたルールに従って自動的に移転させる仕組み

語感とは合わないしかし、ブロックチェーンで可能なのはこのこと契約には対価が伴い決済と不可分なので、これだけでも重要といえば重要

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.27/38

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

コントラクトの真正性誰もが検証者としてブロックの検証とコントラクトの実行に参加できる

⇒ 誰もがコントラクトのコードにアクセスできる

正しいコントラクトが実行されているかは原理的には検証可能

入出力はブロックチェーンの外側にあるので、契約の内容全部を知られることなくそれが可能

ただし、イーサリアムの方法は唯一のやり方ではない

cf. observabilityと verifiability

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.28/38

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

4. 地球規模OSがある暮らし

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.29/38

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

地球規模OS (2007)

複数主体による地球上の資源の利用を調整する

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.30/38

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

基盤としての地球規模OS

金融・貨幣経済システムを時代遅れにする決済システムを内包プログラミング言語を内包↑ cf. イーサリアム

人的資源を含む地球上の資源の会計システム新たな「法」を定義できる人々が業を起こすための基盤営利組織も、政府も、NPO/NGOも利用できる

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.31/38

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

地球規模OSのための応用問題ヒッチハイク問題走行中の自動車の空席は近傍の人間が共有できる資源である歩行者と運転手がランデヴーし、目的地へのヒッチハイクを可能にするようにネットワークをプログラムせよ

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.32/38

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

Uber

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.33/38

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

現在の視点から見たゴールUberのような企業をプログラムとして記述・実行できるような環境を整え、提供する実際の Uberもかなり自動化されている

それにより誰もが公益性に主体的に関与するためのコスト・敷居を下げる地球上の限られた資源を有効に活用し、持続的に生きられる文明への変化に寄与する

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.34/38

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

アプリケーションから発想することは大事

遺言自動車保険無尽/頼母子講...

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.35/38

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

頼母子講講元が信用のおける仲間を集めてスタートする仮に毎月 10万円ずつ持ち寄る仲間が 12名

→ 毎月 120万円が持ち寄られる毎月、仲間のひとりが 120万円を受け取る12ヶ月後に 12人目が 120万円を受け取って終了

地域からお金が逃げない仕組み

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.36/38

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

そして自動販売機に立ち返ってそのスマートコントラクトには「呼び出しボタン」はついていますか?

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.37/38

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

ご質問や議論を

ブロックチェーン連続講義第 7 回「スマートコントラクト」— 2016-04-08 – p.38/38