ブロックチェーン連続講義 第3回 ビットコインの技術
-
Upload
kenji-saito -
Category
Technology
-
view
1.305 -
download
0
Transcript of ブロックチェーン連続講義 第3回 ビットコインの技術
ビットコインの技術ブロックチェーン連続講義第 3 回
慶應義塾大学 SFC研究所上席所員斉藤賢爾
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.1/47
今回のテーマビットコインの技術
ビットコイン・ブロックチェーンの仕組み、データ構造の特徴、Proof of Workとマイニングの意味、スクリプト、通信プロトコル、参照ソフトウェア、API、考えうる脆弱性と対策などについて解説し、また、ビットコインに追従し乱立したいわゆるオルトコインについても、主要なものについて、それぞれの特徴を解説します
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.2/47
ビットコインの技術1. ビットコインとは?2. ビットコインのシステム3. 基礎技術4. ビットコインの技術 -概要5. ビットコインの技術 -詳細6. オルトコイン
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.3/47
1. ビットコインとは?
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.4/47
郵便の電子化 vs. 貨幣の電子化日本郵便の電子系郵便サービスレタックス (電子郵便)
http://www.post.japanpost.jp/service/letax/index.html
電子内容証明郵便サービスhttp://enaiyo.post.japanpost.jp/mpt/
これらが「電子メール」だと言われたら?自分で「ポストオフィス」を立てられない従量課金されるし手続きが煩雑
現在の「電子マネー」のレベルとは?自分で「バンク」を立てられない(中央)銀行の手のひらから逃れていない
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.5/47
ビットコインとは?「必要なのは、信用ではなく暗号学的証明にもとづいた電子的支払いシステムである」
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
2. ビットコインのシステム
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.7/47
ビーカーモデルの世界 (1)
2,100万 cm3 の、人類にとっ
て無価値な液体があるタンクに入っている
1億分の 1cm3 まで計量できる
ビーカーを各自がいくつでも持てる平均 10分おきに選ばれた人だけが、自分のビーカーに今なら 25cm
3 くみ出せる特殊なくじ引きで選ぶ当たりくじは、各自の箱の中にあり、それぞれが全力でくじを引きまくる
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.8/47
ビーカーモデルの世界 (2)
ビーカーの間で比較的自由に液体のやり取りができる先の「選ばれた人」は、やり取りを「監査」し、台帳に記録を残す「追記人」でもある
やり取りのおこぼれももらえる
ときどき、ビーカーを割ってしまう人がいる
そんな仕組みをデジタルでつくり、通貨と見なしてみた→ ビットコイン
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.9/47
「通貨と見なしてみた」貨幣・通貨に、見なしを必要としない「ホンモノ」は存在しない通貨 =通用している貨幣 or貨幣の流通面
すべての貨幣・通貨は、それを「貨幣・通貨と見なす」ことにより存在する例 : 日本銀行が発行する券を通貨と見なしてみた→ 日本円
したがって、すべての通貨は仮想的な存在なので、「仮想通貨」という言葉は、ある意味ナンセンス
日本円は別に「実通貨」ではない
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.10/47
3. 基礎技術詳しくは第 4回「暗号技術のリテラシー」(3/18)で
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.11/47
基礎技術 -暗号学的ハッシュ関数
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.12/47
基礎技術 -デジタル署名
本人が送ったものであり改竄されていないことが証明できるRSA, DSA, ECDSA (楕円曲線 DSA)等取引はデジタル署名されるが、ビットコインでは PKIは用いない
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.13/47
4. ビットコインの技術 -概要
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.14/47
ビットコインのシステムの概要
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.15/47
取引とデジタル署名 (1)
参照済みの出力 (=コイン)は消費済み→二重消費されないブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.16/47
取引とデジタル署名 (2)
Mから Aに 60BTC送る例条件や署名は実際にはスクリプトのかたちで記述される
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.17/47
ウォレットは何をしているか
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.18/47
ブロックチェーンの維持
1. 各マイナーは、過去 10分ほどの間に収集した取引データをブロックに格納し、マイニング (くじ引き)を行う2. 成功したらネットワーク内にブロードキャストする3. 各マイナーは、それをチェインの新しい末尾と認めるなら、その後ろにブロックを繋げるべく 1に戻る
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.19/47
取引の連鎖
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.20/47
量の限界
21万ブロック毎 (約 4年毎)に、マイナーへの報酬 (手数料除く)は半減する
このことにより 2,100万 BTCという極限値が求まる1億分の 1 BTCが最小単位なので、2140年頃、手数料を除く報酬はゼロになる
20,999,999.9769 BTCを「採掘」し終えるブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.21/47
マイニング
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.22/47
マイナーの振る舞い効率を追求する専用ハードウェアの出現
マイニングには (電力)コストがかかるもし、期待される利益がコストよりも大きければ、より多くのマイナーが参入しハードウェアに投資するもし、期待される利益がコストよりも小さければ、マイナーは撤退する
マイニングは集団的になり、サービスになる個人がより簡単に参入し撤退しやすくなる
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.23/47
ターゲットの調整
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.24/47
POWによる保護
取引は改ざんできないが削除は可能 (ブロックは改ざんできる)
Proof Of Workを課すことで改ざんを抑止するというが . . .
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.25/47
過去2年間のハッシュレートの推移
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.26/47
コインの状態遷移
希ではあるが、後戻りの可能性をもつそして確率には頼れない
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.27/47
5. ビットコインの技術 -詳細
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.28/47
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
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
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
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
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
Script Processing
Concatinates scripts: input → output
Stack-based processing
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.34/47
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
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
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
Merkle Tree
Digest = double SHA-256 value
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.38/47
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
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
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
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
Transfer Protocol
block message is handled in the same mannerブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.43/47
For more detail, seehttps://bitcoin.org/en/developer-reference
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.44/47
6. オルトコイン
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.45/47
主要なコインと特徴BTC (ビットコイン)「ザ・ブロックチェーン」通貨
LTC (ライトコイン)ビットコインを改良する目的で作られ、多くのオルトコインのフォーク元に
DOGE (ドージコイン)ジョークとして生まれ、チップ感覚で手軽に使える通貨
ETH (イーサリアム)汎用のブロックチェーンエンジンであり、その「燃料」としての通貨詳しくは第 7回「スマートコントラクト」(4/8)で
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.46/47
ご質問や議論を
ブロックチェーン連続講義第 3 回「ビットコインの技術」— 2016-03-04 – p.47/47