Upload
shigeichiro-yamasaki
View
1.599
Download
2
Embed Size (px)
Citation preview
Bitcoinの技術
近畿大学 山崎重一郎
オリジナル論文
Satoshi Nakamoto (仮名) Bitcoin: A Peer-to-Peer Electronic Cash System,
2008
電子貨幣の技術的跳躍 p 利用されている暗号技術、P2P技術は古典的
p 技術的跳躍の核心は?
電子的取引の非可逆性の保証
電子貨幣の二重使用の防止方法
技術的跳躍としてのBitcoin p 電子貨幣の理想像 岡本、大田の電子貨幣の6条件 (1991年)
(1) 独立性: 物理媒体に依存せず、ネットワークで送受信可能 (2) 安全性 : 複製や偽造ができない
(3) プライバシ: 使用者や使用履歴が特定されない (4) オフライン性: 支払時にオンライン検査をともなわない (5) 転々流通性 : 当事者間で直接譲渡可能
(6) 分割可能性: 額面を分割して使用可能
Bitcoinは5条件をほぼ完全に実現 (1) 独立性:ソフトだけ、インターネット経由で決済 (2) 安全性:複製も偽造もできない (3) プライバシ:実用上十分なレベル (4) オフライン性:△ P2P型の「確認」が必要 (でも現在は、この要件の重要性は低下している)
(5) 転々流通性:実現されている (6) 分割可能性:実現されている
p ネット上の「出来事」の存在証明 「そんなの知らない」と言われない方法
電子的取引の非可逆性
取引
架空の出来事?
p タイムスタンプサービス TSA(信頼できる第三者機関) 時間:国家による標準時(暦)
従来の非可逆性保証の方法
取引
電子署名
p 多数決による合意 時間:取引間の因果関係の順序にもとづく構造
信用モデル:「信頼できる第三者」を利用しない
Bitcoin取引の非可逆性
取引記録
出来事の因果関係 合意 多数決
多数決による合意 p 投票権はどうするのか? 計算能力の保有量=投票権(確率的計算)
少数派 多数派
取引記録
もし合意が覆されると? p 過去の取引を取り消すことができる だけ、なので、頑張っても利益は小さい
多数派 少数派
取引記録
p 現実のコインは、使えば手元からなくなる p 電子コインは、使っても、まだ手元にある!
電子貨幣の二重使用問題
従来の二重使用防止方法 p 電子コインにIDを付与 使用すると使用済み状態に 二重使用者を追跡する場合 使用者の本名を要求
ID1234
本人A 100円
100円 100円
本人B
ID1235
ID1234
100円 100円
ID1235
従来の二重使用防止方法 p 問題 額面の分割が困難 プライバシ保護が困難 高度な暗号技術 D. Chaum, T. Okamoto など多数
100円
本人A 本人B
Bitcoinの二重使用防止 p 三式簿記(過去、現在、未来) outputは次のinputに連鎖(1対1対応)
input (3BTC)
input (5BTC)
output (4BTC)
output (4BTC)
input(4BTC)
input(4BTC)
8BTC 過去
8BTC 現在
8BTC 未来
output
output
取引
時間軸 取引のハッシュ値で参照
送金者 受領者
送金者の公開鍵 送金者の電子署名
Bitcoinの二重使用防止 p inputには 受領者の公開鍵と送金者の電子署名
input (3BTC)
input (5BTC)
output (4BTC)
output (4BTC)
input(4BTC)
input(4BTC)
8BTC 過去
8BTC 現在
output
output
トランザクション
時間軸 送金者
受領者
取引のハッシュ値で参照
二重使用状態とは p 一つのoutputに複数のinput これがないことを確認すればよい
input (3BTC)
input (5BTC)
output (4BTC)
output (4BTC)
input(4BTC)
input(4BTC)
8BTC 過去
8BTC 現在
output
output
取引記録 input(4BTC)
☓
時間軸
Bitcoinの二重使用防止 p 電子コインに識別子はない 価値の分割に制限がない(原理的に) プライバシ問題を回避(仮名によって)
input (3BTC)
input (5BTC)
output (4BTC)
output (4BTC)
input(4BTC)
input(4BTC)
8BTC 過去
8BTC 現在
output
output
トランザクション input(4BTC)
☓
ソフトウェアだけで実現されている p 主なbitcoinウォレット
iPhone bitWallet 送金機能なし!
コールドストレージ p 秘密鍵を紙に印刷などでオフライン保管 電子的状態の秘密鍵を完全に削除 秘密鍵を盗む攻撃に対して安全
p ペーパーウォレット 秘密鍵を紙に印刷したもの 紙の形で相手に譲渡することも可能
bitcoinウォレットの使い方 p 新しいウォレットを作成 (1) 秘密鍵を生成 (ECDSA Secp256k1)
(2) 秘密鍵から公開鍵を生成
(3) 公開鍵からBitcoinアドレスを生成
例 197bCWJMXpiYENn4ksAYgz9vwdF5EUpn4c
bitcoinウォレットの使い方 p bitcoinを受け取る 自分のbitcoinアドレスを相手に教える
bitcoinウォレットの使い方 p bitcoinを送金する 相手のbitcoinアドレスと金額を入れて送金
bitcoinウォレットの使い方 p 取引履歴の確認 日時、アドレス、金額、ステータス(確認済みか?) ステータスが確認済みなら、次の支払いに使用できる
p Bitcoinの中核は取引記録の帳簿
ブロックチェイン ヤップ島の巨大石貨説
参加者全員 に見える 大福帳
全員が 誰のものか 知っている
一反もめん説(岡田先生)
見える人にだけ 見える大福帳 ブロックチェイン
は、抽象的な情報 P2Pネットワーク 上に冗長に存在
ブロックチェイン
ブロック ブロック
ブロック
送金者
AがBに 50BTC 支払った
取引の記録 ブロック ブロック
ブロック
秘密鍵
A B 電子署名
受領者
送金者が 取引の記録を 「放送」
A 送金者
B 受領者
「放送」は実際は P2Pネットワーク内でリレー
ブロック ブロック
ブロック
取引記録を受け取ったマイナーたちが確率的計算競争
A 送金者
B 受領者
ブロック ブロック
ブロック
マイナー
マイナー マイナー マイナー
ブロック
勝利したマイナーは 新規ブロックを生成 取引記録をブロックに登録し ブロックチェインに接続
A 送金者
B 受領者
報酬獲得 25BTC
ブロック
ブロック
ブロック 取引記録
マイナー
全員で取引記録を 承認
ミトドケター
ミトドケター ミトドケター
ミトドケター
A 送金者
B 受領者
この時点で 決済が完了
ブロック ブロック
ブロック
ブロック 取引記録
決済の コンファーム処理
ミトドケター
ミトドケター
全員で取引記録を 保存
A 送金者
B 受領者
P2P型分散 ファイルシステム
ブロック ブロック
ブロック
ブロック 取引記録
実際のブロックチェイン
ブロック・チェインには p bitcoin経済開闢以来の全ての取引記録が入っている
直前ブロック のHash
新ブロック
nonce
... 取引
ブロックチェイン
取引 取引
直前ブロック のHash
... 新取引 新取引 新取引
25BTC
bitcoinのP2P型ネットワーク p ノードは、自由に離脱/再接続が可能
新規参加者
一時的に ネットに繋がっていない人
DNS seed 登録ノード
DNS seed 登録ノード
P2Pネットワークへの接続方法 p DNS seed 以下のようなDNで(wellknownな)ノードのIPアドレスがわかる seed.bitcoin.sipa.be dnsseed.bitcoin.dashjr.org bitseed.xf2.org
$ host bitseed.xf2.org bitseed.xf2.org has address 91.121.164.210 bitseed.xf2.org has address 46.19.139.72 bitseed.xf2.org has address 184.174.153.96 bitseed.xf2.org has address 187.139.68.233 bitseed.xf2.org has address 212.7.21.46 bitseed.xf2.org has address 69.164.206.88 bitseed.xf2.org has address 62.75.216.13 bitseed.xf2.org has address 207.164.207.54 bitseed.xf2.org has address 78.129.167.5 bitseed.xf2.org has address 177.71.192.164 bitseed.xf2.org has address 69.64.34.118 bitseed.xf2.org has address 62.75.253.91
ブロックのコンパクト化 p ブロックヘッダーにはルートHashだけ p マークルツリー構造で情報圧縮
ブロック
ブロックヘッダー(ブロックのHash)直前ブロックのHash Nonce
Hash01 Hash23
Hash0 Hash1 Hash2 Hash3
ルートHash
取引0 取引1 取引2 取引3
ブロック
ブロックヘッダー(ブロックのHash)直前ブロックのHash Nonce
Hash01 Hash23
Hash2 Hash3
ルートHash
取引3
マークルツリー構造化した取引のハッシュ 取引3に関してブロック内を枝刈りした結果
p 「信頼できる第三者」が決済方法を提供 決済コストが大きく見える
決済コストの(見かけ上の)低減
支払い
調停コスト 与信コスト
p bitcoinにおける決済の正統性の確認 (1) 参加者全員が決済の確認コストを互恵的に分担 (2) 三式簿記を利用したネットワーク型の取引正統性の証明
決済コストの(見かけ上の)低減
支払い 互恵的確認
取引ネットワーク 三式簿記
インターネットの 通信資源の
互恵的利用に似ている?
Bitcoinの安全性の拠り所 p コミュニティの互恵的良心?→ ☓ p 法制度? → ☓ p 金融機関や大企業の信用? → ☓
人々の欲望! (コミュニティ、国家、金融機関が滅びても) 人々の欲望が続く限り機能しつづけるシステム
金融機関の破綻 国民通貨の危機への耐性
地下経済や違法取引での利用
プルーフ・オブ・ワーク p 時間がかかる計算を頑張った証拠 p ハッシュ関数を使う例 データ + nonce (いろいろ変えてみる)
SHA-256 000000001000111010001…1
ハッシュ値がゼロ8個で始まるnonceが見つかれば 勝利!
プルーフ・オブ・ワーク p 難易度を上げる方法 ネットワーク上の計算資源の総量が増えたとき データ + nonce (いろいろ変えてみる)
SHA-256 000000000000111010001…1
ハッシュ値がゼロ9個で始まるnonceが見つかれば 勝利!
プルーフ・オブ・ワークの 計算難易度の調整
p 2016ブロックの計算ごとに難易度を調整 p 平均10分で答えが出るようにする 2016☓10分=2週間 計算完了が2週間より早ければ→難しくする 計算完了が2週間より遅ければ→簡単にする
プルーフ・オブ・ワーク の難易度の変遷
Bitcoin
ライトコイン
p 情報がインターネット経由で「もの」のように個人から個人に転々流通する
★流通する情報の所在は、ネットワーク全体である! 特定の媒体やサーバなどではない
Bitcoin技術がもたらしたもの
情報 情報
抽象的な「情報」を 「もの」のように 扱う必要が発生
例:Bitcoinの盗難
「情報」=対象 秘密鍵=操作手段
秘密鍵 具体的データ
情報
送金操作
Bitcoinを盗む2つの方法
(1)抽象的な「情報」を盗む (2)秘密鍵(データ)を盗む
Bitcoin取引の例(シナリオ)
Bitcoinアドレス(山崎) 1.0 BTC
Bitcoinアドレス(ピンクカウ) 1.0 BTC
0.1 BTC
Bitcoinアドレス(山崎) 0.8999 BTC
Bitcoinアドレス(ピンクカウ) 1.1 BTC
0.2 BTC
手数料0.0001 BTC
手数料0.0001 BTC
Bitcoinアドレス(岡田) 1.0 BTC
Bitcoinアドレス(ピンクカウ) 1.3 BTC
0.1 BTC
手数料0.0001 BTC
取引1
取引2
取引3
Bitcoinの取引データ Bitcoinアドレス(山崎)1.0 BTC Bitcoinアドレス(ピンクカウ)1.0 BTC
0.1 BTC
手数料0.0001 BTC
output 1 ピンクカウ 0.1 BTC
output 2 山崎 0. 8999 BTC
手数料 0. 0001 BTC
取引1データ
取引1(送金者は山崎)
1.0 BTC 1.0 BTC
output 1 山崎1.0 BTC
直前の取引のoutput
直前の 送金先 金額 input1 山崎
input1 新規 output 未使用 0.8999 BTC
input1 山崎
1.0 BTC
直後の取引
直前の 送金者 output 未使用
0.1 BTC
送金者 送金者
過去 現在 未来
Bitcoinの取引データ Bitcoinアドレス(山崎)0.8999 BTC Bitcoinアドレス(ピンクカウ)1.1 BTC
0.2 BTC
手数料0.0001 BTC
output 1 ピンクカウ 0.2 BTC
output 2 山崎 0. 6998 BTC
手数料 0. 0001 BTC
取引2データ
取引2(送金者は山崎)
0.8999 BTC 0.8999 BTC
output 1 山崎 0. 8999 BTC
直前の取引のoutput
input1 山崎
input1 山崎 output 未使用 0.6998 BTC
input1 山崎
0.8999 BTC
直後の取引
output 未使用 0.2 BTC
過去 現在 未来
Bitcoinの取引データ Bitcoinアドレス(岡田)1.0 BTC Bitcoinアドレス(ピンクカウ)1.0 BTC
0.1 BTC
手数料0.0001 BTC
output 1 ピンクカウ 0.1 BTC
output 2 岡田 0. 8999 BTC
手数料 0. 0001 BTC
取引3データ
取引3(送金者は岡田)
1.0 BTC 1.0 BTC
output 1 岡田1.0 BTC
直前の取引のoutput
input1 岡田
input1 新規 output 未使用 0.8999 BTC
input1 岡田
1.0 BTC
直後の取引
output 未使用 0.1 BTC
過去 現在 未来
取引グラフの例 は取引でinputとoutputが連鎖接続
トランザクション・グラフの成長 p 10分間に成長した部分 p 成長した部分のみ新規ブロックに組み込まれる
p 各取引の先端は、次に成長を始める成長点
新規ブロック 新規取引 新規取引 ...
Double Entry Accounting p 複式簿記(資本主義、株式会社の発達) 株式会社が株主に資産と利益を報告 対象は1企業の閉じたシステム 会計期:1年
株主
説明義務 株式会社
Triple Entry Accounting p 三式簿記(bitcoin) 取引ネットワーク全体の正統性を検査 参加者全員に報告 会計期:約10分間 過去、現在、未来 タイムスタンプサービス
参加者 全員
説明義務
取引ネットワーク全体
Bitcoinの アイデンティティとプライバシ
p ブロックチェイン bitcoin開闢以来の全取引履歴を誰でも確認可能
p Bitcoinアドレスは仮名 仮名:「本人」とリンクしない 匿名性(アイデンティティの積極的隠蔽)はない
仮名を追跡する方法 p 再利用アドレスの調査 p "taint" 解析 p 支払い履歴の追跡 p IP アドレス追跡 p web-spidering
ブロックチェインの追跡方法 p 取引情報を取得 https://blockchain.info のAPIを利用 http://blockexplorer.com/rawtx/d1c6b8140246950475735394b0ac68f9ada60d313d2b5308afbc569c84f7fd08
{ "hash":"d1c6b8140246950475735394b0ac68f9ada60d313d2b5308afbc569c84f7fd08", "ver":1, "vin_sz":1, "vout_sz":1, "lock_time":0, "size":168, "in":[ { "prev_out":{ "hash":"0000000000000000000000000000000000000000000000000000000000000000", "n":4294967295 }, "coinbase":"038349040d00456c69676975730052d8f72ffabe6d6dd991088decd13e658bbecc0b2b4c87306f637828917838c02a5d95d0e1bdff9b0400000000000000002f73733331312f00906b570400000000e4050000" } ], "out":[ { "value":"25.08660927", "scriptPubKey":"OP_DUP OP_HASH160 5399c3093d31e4b0af4be1215d59b857b861ad5d OP_EQUALVERIFY OP_CHECKSIG" } ]}
電子貨幣の「ギュゲスの指輪」 p プラトンの著書「国家」 透明人間による、知られることのない悪事の物語 秩序ある活発な経済と個人の尊厳
p ネットの登場以来繰り返された議論 匿名発言、通信履歴、位置情報、人間関係
p 仮想通貨のアイデンティティとプライバシ 国家、超国家企業 (仮想通貨のGoogle, facebookが登場?) 仮名の世界での秩序形成
flexcoin社のコイン盗難経路 2014年3月2日にこのアドレスに盗まれました
カナダflexcoin社の残高
カナダflexcoin社の盗難取引
Bitcoinの匿名化技術は存在
p mixing service 意図的に取引履歴を匿名化のためのサービス
p Dark Wallet P2P型のmixing service
p 匿名化の目的 非合法取引、マネーロンダリング 人権としての決済プライバシ
mixing service p Bitcoinの取引の流れを匿名化する 仮名から仮名への取引の流れを撹乱する
ミクシング サービス
A
B
C
E
F
G
mixing serviceの原理
送金者
受領者
アドレス
アドレス
ミクシングサービス 共有ウォレット
10BTC +手数料
10BTC
アドレス
.
.
.
p 共有ウォレット
mixing serviceの原理2
ミクシングサービス 共有ウォレット
10BTC +手数料
2BTC
5BTC
3BTC
支払い金額を 分割し 統計的な 特徴を消す
数日間に わたって 時間的にも 分散
何ヶ月か 放っておく
送金者
受領者
p プロファイリング防止技術の例
mixing serviceの弱点 p 信用問題(運営主体が信用できない)
p mixing serviceには取引履歴が残る
p mixing serviceは扱い額の2倍以上の大量のコイン保有が必要
CoinJoin p 取引履歴の特徴を消すサービス
1BTC
2BTC
input
input
output
output
1BTC
output
1BTC
1BTC
CoinJoin p CoinJoinの実例
ダークウォレット p 開発者はかなり悪そうな人 Cody Wilson (1)、Amir Taaki (2) (1)最初に3Dプリンタで実射可能な銃を作った人 (2) DarkMarketを作った人
Wilson and Taaki
ダークウォレット p 開発目的はたぶん マネーロンダリングや違法取引
p しかし、プライバシ保護にも有効な技術 mixingサービスの信用問題を解決
ダークウォレット 送金開始時 「内部ミクサー」が「coinjoinチャンネル」に接続
coinjoin
Dark wallet
Dark wallet
Dark wallet
Dark wallet
Dark wallet
内部 mixer
ダークウォレット 受領者の公開鍵をリポジトリに登録
coinjoin
Dark wallet
Dark wallet
Dark wallet
Dark wallet
Dark wallet
内部 mixer
公開鍵 (吉井)(Q)
秘密鍵 (吉井)(d) 公開鍵 (A)(Q)
公開鍵 (A)(Q)
公開鍵 (A)(Q)
受領者
送金者
パブリックな 公開鍵
ダークウォレット p ステルスアドレス 送金者と受領者だけがわかるアドレス
受領者 送金者
ECDSAのミニ知識 公開鍵: Q 秘密鍵: d 楕円曲線のベースポイント: G * :楕円曲線上の掛け算 Q = d * G
楕円曲線上の 割り算は事実上 不可能
公開鍵 (吉井)(Q) 秘密鍵 (吉井)(d)
パブリックな 公開鍵
ステルスアドレス
公開鍵 (山崎)(Q)
秘密鍵 (山崎)(d)
ダークウォレット p ステルスアドレスの作り方 二人だけの秘密S
受領者
秘密鍵 (吉井)(d)
送金者
公開鍵 (山崎)(Q)
秘密鍵 (山崎)(d) 公開鍵 (吉井)(Q)
S = * = * = 山崎(d) * 吉井(d) * G
公開鍵 (吉井)(Q)
公開鍵 (山崎)(Q) 秘密鍵 (吉井)(d)
秘密鍵 (山崎)(d)
ステルスアドレス
S
ダークウォレット p ステルスアドレスの作り方 ステルスアドレスの秘密鍵も作れる (次の送金に必要)
受領者
送金者
公開鍵 (吉井)(Q) + S*G
( + S) *G 秘密鍵 (吉井)(d)
(秘密鍵 (吉井)(d) + S)
ステルスアドレスの秘密鍵
ステルスアドレス
受領者が 次の送金に 使用する
プライバシ保護技術と 法令遵守技術は
bitcoinの今後の 技術的課題の一つ
マイニングのコスト
p 実際はブロックチェインを伸ばす作業
p 計算競争に勝利すると新規コイン
p 専用ハード無しで勝利できる確率は僅少
p 現状は非常に電力を消費する
マイニングのインセンティブ p 新ブロック生成時の報酬 最初の4年 50BTC、次の約4年 25BTC
p 取引手数料報酬 現在の実装では手数料の支払いは自発的行為で、無料でもOK
0"
5,000,000"
10,000,000"
15,000,000"
20,000,000"
25,000,000"
2005" 2010" 2015" 2020" 2025" 2030" 2035" 2040" 2045" 2050" 2055"
設計思想としては
消費電力量=採掘コインの価値
ではないが、人間の欲望で加熱
神託計算の省エネ化などの 研究が必要
激しい価格変動 決済には使いにくい
ハイエクの貨幣発行自由化論
ユーロ批判の議論から始まる 複数の民間発行通貨が競争すれば、安定するだろう
サフォーク銀行 NII 岡田先生からの受け売りです~
p アメリカの地域銀行券間の交換所銀行 Bank of Mutual Redemption (1818年~1858年) ボストン茶会事件 1773年
アメリカ独立戦争 ~ 1783年 →イングランド銀行の支配からの独立が目的の1つ でも アメリカの地域銀行券はまるで仮想通貨(不安定)
サフォーク銀行 p アメリカの地域銀行の親分銀行(地域ごと) 地方銀行券を一定率(1/3)預かり、価格調整 地方銀行券間の交換所
p 連邦準備銀行 (FRB) の前身になった 12主要都市のFRB シカゴ連銀 ニューヨーク連銀 ボストン連銀 ...
仮想通貨サフォーク銀行の提案 p 「サフォーク福岡」みたいな 仮想通貨間の相互交換
仮想通貨を一定比率預かり、価格調整
p よりインテリジェントな通貨価格調整 仮想通貨の種類 ≒ 業種、業界
地域単位の景気 → 業界の景気/価格調整