Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Bitcoinの技術

3,916 views

Published on

  • Be the first to comment

Bitcoinの技術

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

×