ブロックチェーン連続講義 第3回 ビットコインの技術

47
3 SFC [email protected] 3 — 2016-03-04 – p.1/47

Transcript of ブロックチェーン連続講義 第3回 ビットコインの技術

Page 1: ブロックチェーン連続講義 第3回 ビットコインの技術

ビットコインの技術ブロックチェーン連続講義第 3 回

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

[email protected]

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.1/47

Page 2: ブロックチェーン連続講義 第3回 ビットコインの技術

今回のテーマビットコインの技術

ビットコイン・ブロックチェーンの仕組み、データ構造の特徴、Proof of Workとマイニングの意味、スクリプト、通信プロトコル、参照ソフトウェア、API、考えうる脆弱性と対策などについて解説し、また、ビットコインに追従し乱立したいわゆるオルトコインについても、主要なものについて、それぞれの特徴を解説します

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.2/47

Page 3: ブロックチェーン連続講義 第3回 ビットコインの技術

ビットコインの技術1. ビットコインとは?2. ビットコインのシステム3. 基礎技術4. ビットコインの技術 -概要5. ビットコインの技術 -詳細6. オルトコイン

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.3/47

Page 4: ブロックチェーン連続講義 第3回 ビットコインの技術

1. ビットコインとは?

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.4/47

Page 5: ブロックチェーン連続講義 第3回 ビットコインの技術

郵便の電子化 vs. 貨幣の電子化日本郵便の電子系郵便サービスレタックス (電子郵便)

http://www.post.japanpost.jp/service/letax/index.html

電子内容証明郵便サービスhttp://enaiyo.post.japanpost.jp/mpt/

これらが「電子メール」だと言われたら?自分で「ポストオフィス」を立てられない従量課金されるし手続きが煩雑

現在の「電子マネー」のレベルとは?自分で「バンク」を立てられない(中央)銀行の手のひらから逃れていない

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.5/47

Page 6: ブロックチェーン連続講義 第3回 ビットコインの技術

ビットコインとは?「必要なのは、信用ではなく暗号学的証明にもとづいた電子的支払いシステムである」

Satoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic

Cash System”, 2008

最初のボタンをかけ違えている?その信念にもとづいて開発された P2Pデジタル通貨

http://bitcoin.org/

設計の随所にインフレーションへの敵意が見られる単位は BTC (ISO標準に基づき、コードは XBTとなるか)

商品として売買されている2013年 11月末、1BTCの価格が 10万円を超え、騒ぎに

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.6/47

Page 7: ブロックチェーン連続講義 第3回 ビットコインの技術

2. ビットコインのシステム

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.7/47

Page 8: ブロックチェーン連続講義 第3回 ビットコインの技術

ビーカーモデルの世界 (1)

2,100万 cm3 の、人類にとっ

て無価値な液体があるタンクに入っている

1億分の 1cm3 まで計量できる

ビーカーを各自がいくつでも持てる平均 10分おきに選ばれた人だけが、自分のビーカーに今なら 25cm

3 くみ出せる特殊なくじ引きで選ぶ当たりくじは、各自の箱の中にあり、それぞれが全力でくじを引きまくる

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.8/47

Page 9: ブロックチェーン連続講義 第3回 ビットコインの技術

ビーカーモデルの世界 (2)

ビーカーの間で比較的自由に液体のやり取りができる先の「選ばれた人」は、やり取りを「監査」し、台帳に記録を残す「追記人」でもある

やり取りのおこぼれももらえる

ときどき、ビーカーを割ってしまう人がいる

そんな仕組みをデジタルでつくり、通貨と見なしてみた→ ビットコイン

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.9/47

Page 10: ブロックチェーン連続講義 第3回 ビットコインの技術

「通貨と見なしてみた」貨幣・通貨に、見なしを必要としない「ホンモノ」は存在しない通貨 =通用している貨幣 or貨幣の流通面

すべての貨幣・通貨は、それを「貨幣・通貨と見なす」ことにより存在する例 : 日本銀行が発行する券を通貨と見なしてみた→ 日本円

したがって、すべての通貨は仮想的な存在なので、「仮想通貨」という言葉は、ある意味ナンセンス

日本円は別に「実通貨」ではない

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.10/47

Page 11: ブロックチェーン連続講義 第3回 ビットコインの技術

3. 基礎技術詳しくは第 4回「暗号技術のリテラシー」(3/18)で

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.11/47

Page 12: ブロックチェーン連続講義 第3回 ビットコインの技術

基礎技術 -暗号学的ハッシュ関数

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.12/47

Page 13: ブロックチェーン連続講義 第3回 ビットコインの技術

基礎技術 -デジタル署名

本人が送ったものであり改竄されていないことが証明できるRSA, DSA, ECDSA (楕円曲線 DSA)等取引はデジタル署名されるが、ビットコインでは PKIは用いない

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.13/47

Page 14: ブロックチェーン連続講義 第3回 ビットコインの技術

4. ビットコインの技術 -概要

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.14/47

Page 15: ブロックチェーン連続講義 第3回 ビットコインの技術

ビットコインのシステムの概要

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.15/47

Page 16: ブロックチェーン連続講義 第3回 ビットコインの技術

取引とデジタル署名 (1)

参照済みの出力 (=コイン)は消費済み→二重消費されないブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.16/47

Page 17: ブロックチェーン連続講義 第3回 ビットコインの技術

取引とデジタル署名 (2)

Mから Aに 60BTC送る例条件や署名は実際にはスクリプトのかたちで記述される

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.17/47

Page 18: ブロックチェーン連続講義 第3回 ビットコインの技術

ウォレットは何をしているか

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.18/47

Page 19: ブロックチェーン連続講義 第3回 ビットコインの技術

ブロックチェーンの維持

1. 各マイナーは、過去 10分ほどの間に収集した取引データをブロックに格納し、マイニング (くじ引き)を行う2. 成功したらネットワーク内にブロードキャストする3. 各マイナーは、それをチェインの新しい末尾と認めるなら、その後ろにブロックを繋げるべく 1に戻る

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.19/47

Page 20: ブロックチェーン連続講義 第3回 ビットコインの技術

取引の連鎖

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.20/47

Page 21: ブロックチェーン連続講義 第3回 ビットコインの技術

量の限界

21万ブロック毎 (約 4年毎)に、マイナーへの報酬 (手数料除く)は半減する

このことにより 2,100万 BTCという極限値が求まる1億分の 1 BTCが最小単位なので、2140年頃、手数料を除く報酬はゼロになる

20,999,999.9769 BTCを「採掘」し終えるブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.21/47

Page 22: ブロックチェーン連続講義 第3回 ビットコインの技術

マイニング

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.22/47

Page 23: ブロックチェーン連続講義 第3回 ビットコインの技術

マイナーの振る舞い効率を追求する専用ハードウェアの出現

マイニングには (電力)コストがかかるもし、期待される利益がコストよりも大きければ、より多くのマイナーが参入しハードウェアに投資するもし、期待される利益がコストよりも小さければ、マイナーは撤退する

マイニングは集団的になり、サービスになる個人がより簡単に参入し撤退しやすくなる

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.23/47

Page 24: ブロックチェーン連続講義 第3回 ビットコインの技術

ターゲットの調整

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.24/47

Page 25: ブロックチェーン連続講義 第3回 ビットコインの技術

POWによる保護

取引は改ざんできないが削除は可能 (ブロックは改ざんできる)

Proof Of Workを課すことで改ざんを抑止するというが . . .

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.25/47

Page 26: ブロックチェーン連続講義 第3回 ビットコインの技術

過去2年間のハッシュレートの推移

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.26/47

Page 27: ブロックチェーン連続講義 第3回 ビットコインの技術

コインの状態遷移

希ではあるが、後戻りの可能性をもつそして確率には頼れない

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.27/47

Page 28: ブロックチェーン連続講義 第3回 ビットコインの技術

5. ビットコインの技術 -詳細

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.28/47

Page 29: ブロックチェーン連続講義 第3回 ビットコインの技術

Transaction Data Structure

Field Description Size (bytes)

Version Currently 1 4# of inputs Positive var-int 1∼9List of inputs Variable# of outputs Positive var-int 1∼9List of outputs VariableLock time 4

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.29/47

Page 30: ブロックチェーン連続講義 第3回 ビットコインの技術

Output Data Structure

Field Description Size (bytes)

Amount Value in 10−8BTC 8

Script length Positive var-int 1∼9Script Variable

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.30/47

Page 31: ブロックチェーン連続講義 第3回 ビットコインの技術

Input Data Structure

Field Description Size (bytes)

Referred TX Double SHA-256 value 32Referred output Index of the output 4Script length Positive var-int 1∼9Script VariableSequence # 4

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.31/47

Page 32: ブロックチェーン連続講義 第3回 ビットコインの技術

Major Script Operators

Operator Code Description

OP_0 0 Push 0 byte

N/A 1∼0x4b Push # bytes

OP_PUSHDATA1 0x4c Push length specified by 1-byte suffix

OP_PUSHDATA2 0x4d Push length specified by 2-byte suffix

OP_PUSHDATA4 0x4e Push length specified by 4-byte suffix

OP_NOP 0x61 Do nothing

OP_VERIFY 0x69 TX invalid if not true

OP_DUP 0x76 Copy 1 item

OP_EQUAL 0x87 If 2 items match

OP_EQUALVERIFY 0x88 OP_EQUAL → OP_VERIFY

OP_HASH160 0xa9 Apply SHA-256→RIPEMD-160

OP_CHECKSIG 0xac If signature for TX verified

OP_CHECKMULTISIG 0xae If multiple signatures for TX verified

Script is a stack-oriented language with postfix notation

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.32/47

Page 33: ブロックチェーン連続講義 第3回 ビットコインの技術

Script (General)

Output:

OP_DUP OP_HASH160

OP_PUSHDATA* <Public-key digest>

OP_EQUALVERIFY OP_CHECKSIG

Input:

OP_PUSHDATA* <Signature>

OP_PUSHDATA* <Public key>

TX output addressed to a public-key digest and referring

input

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.33/47

Page 34: ブロックチェーン連続講義 第3回 ビットコインの技術

Script Processing

Concatinates scripts: input → output

Stack-based processing

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.34/47

Page 35: ブロックチェーン連続講義 第3回 ビットコインの技術

Script (Generation)

Output:OP_PUSHDATA* <Public key> OP_CHECKSIG

Input:OP_PUSHDATA* <Signature>

Gen. TX otuput and referring input

No need to specify public key by its digest

Can avoid compromising security down to 160bit

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.35/47

Page 36: ブロックチェーン連続講義 第3回 ビットコインの技術

Block Data Structure

Field Description Size (bytes)

Block header 6 items 80

# of TXs Positive var-int 1∼9

List of TXs Variable

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.36/47

Page 37: ブロックチェーン連続講義 第3回 ビットコインの技術

Block Header Data Structure

Field Description Size (bytes)

Version 4

Digest Double SHA-256 value 32

Merkle root Double SHA-256 value 32

Time Seconds (since 1970-01-01T00:00 UTC) 4

Target Compressed format 4

Nonce Appropriate value 4

Merkle root is the digest of all TXs

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.37/47

Page 38: ブロックチェーン連続講義 第3回 ビットコインの技術

Merkle Tree

Digest = double SHA-256 value

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.38/47

Page 39: ブロックチェーン連続講義 第3回 ビットコインの技術

Networking

No structure

All TCP, default port number: 8333

IPv6 supported since v0.7 of referenceimplementation (v0.9.4 as of Jan. 2015)

Can use IPv4, IPv6 or Tor

In reference implementationMax # of outbound connections : 8

Max # of all connections : 125 (by default)

Only one outbound connection to an address groupHigh 16bit in IPv4High 32bit in IPv6

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.39/47

Page 40: ブロックチェーン連続講義 第3回 ビットコインの技術

Major Messages

Category Name Function

Connection version Sends version and block #

verack Acknowledges version

addr (address) Sends list of IP address/port #

getaddr Requests addr

Data inv (inventory) Sends (new) blocks and/or txs

transfer getblocks Requests inv for all blocks within range

getdata Requests block/tx by the digest

block Sends block replying to getdata

tx (transaction) Sends tx replying to getdata

Header getheaders Requests headers for all blocks within range

transfer headers Sends block headers up to 2,000

Others alert Broadcasts alert

ping Confirms connection

pong Acknowledges ping

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.40/47

Page 41: ブロックチェーン連続講義 第3回 ビットコインの技術

Message Structure

Field Description Size (bytes)

Magic number 0xd9b4bef9 4

Command Message name (ASCII string) 12

Payload length Size of payload in bytes 4

Checksum Double SHA-256 value of payload First 4

Payload Message data Variable

All integers are encoded in Little Endian except IP address

and port #

We’ve just seen the payloads for block and tx messages

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.41/47

Page 42: ブロックチェーン連続講義 第3回 ビットコインの技術

DNS Seed

seed.bitcoin.sipa.be

dnsseed.bluematt.me

dnsseed.bitcoin.dashjr.org

seed.bitcoinstats.com

seed.bitnodes.io

bitseed.xf2.org

Maintained by volunteers

None of these uses DNSSEC

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.42/47

Page 43: ブロックチェーン連続講義 第3回 ビットコインの技術

Transfer Protocol

block message is handled in the same mannerブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.43/47

Page 44: ブロックチェーン連続講義 第3回 ビットコインの技術

For more detail, seehttps://bitcoin.org/en/developer-reference

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.44/47

Page 45: ブロックチェーン連続講義 第3回 ビットコインの技術

6. オルトコイン

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.45/47

Page 46: ブロックチェーン連続講義 第3回 ビットコインの技術

主要なコインと特徴BTC (ビットコイン)「ザ・ブロックチェーン」通貨

LTC (ライトコイン)ビットコインを改良する目的で作られ、多くのオルトコインのフォーク元に

DOGE (ドージコイン)ジョークとして生まれ、チップ感覚で手軽に使える通貨

ETH (イーサリアム)汎用のブロックチェーンエンジンであり、その「燃料」としての通貨詳しくは第 7回「スマートコントラクト」(4/8)で

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.46/47

Page 47: ブロックチェーン連続講義 第3回 ビットコインの技術

ご質問や議論を

ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.47/47