Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ブロックチェーンを支えるP2Pネットワーク技術

 ブロックチェーンを支えるP2Pネットワーク技術

株式会社ブロックチェーンハブの講義資料です

Takeshi Kubo

June 14, 2017
Tweet

More Decks by Takeshi Kubo

Other Decks in Technology

Transcript

  1. 自己紹介 • 久保 健(くぼ たけし) • 所属 – 株式会社 ブロックチェーンハブ

    • シニアアーキテクト – 株式会社 ゼタント • 代表取締役 – ビヨンドブロックチェーン株式会社 • シニアアーキテクト – Yume cloud Inc. • シニアアーキテクト • 経歴 – 大手通信会社にて研究および技術企画 の業務に従事(16年在籍) – 研究 • LTEのインフラネットワーク • P2P、センサーネットワーク • 自律分散コンピューティング • ゲーム理論、インセンティブメカニズム – 大規模案件のプロジェクトマネージャー • 電話サービス • 通信インフラ構築 – その他 • メディアアート作品の制作(結果出ず) • 卓上自動運転ロボの開発(賞を受賞) • 証券アナリスト(1次 2/3合格) 2 ©BlockchainHub Inc.
  2. ブロックチェーンとは • ブロックと呼ばれる順序付けられたレコードの連続的に増加 するリストを持つ分散データベースである – by Wikipedia 5 データ データ

    データ データ タイムスタンプ ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト ハッシュ計算 ハッシュ計算 ハッシュ計算 ブロック ブロック ブロック ©BlockchainHub Inc.
  3. ブロックチェーンとは • しかも、過去のデータを改ざんすることを非常に困難にする しくみを持つ 6 データ データ データ データ タイムスタンプ

    ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト 例:ダイジェストの値に制約を設ける(上位xx桁は0であること) Nonce Nonce Nonce ハッシュ計算 ハッシュ計算 ハッシュ計算 制約条件を満たすようなNonceを見つけなければならない ©BlockchainHub Inc.
  4. ブロックチェーンとは • 改ざんしたら、その後に続く全てのブロックのNonceも計算し 直さなければならない!→そんなのほぼ無理 7 データ データ データ データ タイムスタンプ

    ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト Nonce Nonce Nonce ハッシュ計算 ハッシュ計算 ハッシュ計算 改竄 ©BlockchainHub Inc.
  5. 具体事例(ビットコイン) • データはトランザクションと呼ばれる • ブロックを作るビットコインノードをマイナーという 10 transaction transaction transaction transaction

    タイムスタンプ ダイジェスト ダイジェスト transaction transaction transaction transaction タイムスタンプ ダイジェスト ダイジェスト transaction transaction transaction transaction タイムスタンプ ダイジェスト ダイジェスト Nonce Nonce Nonce マイナーがtransactionを束ねてブロックにする transactionはビット コインの取引記録 ©BlockchainHub Inc.
  6. マイナーのインセンティブ • マイナーの役割 = ビットコインシステムの運営 – トランザクションを束にしてブロックを作る – 新しいブロックを既存のブロックチェーンに繋ぎ、全体に伝搬させる –

    ブロックの正しさを検証する • 報酬が得られるようにして、システムを維持する – トランザクションをブロックに組み込むときに、手数料をもらう – ブロックを作ったときに「無からマイナーに」ビットコインが支払われる 11 ©BlockchainHub Inc.
  7. マイナーのインセンティブ • 手数料支払 • マイニング報酬 (2017/6月現在12.5BTC) 12 transaction transaction transaction

    transaction タイムスタンプ ダイジェスト ダイジェスト transaction transaction transaction 無→俺 タイムスタンプ ダイジェスト ダイジェスト transaction transaction transaction transaction タイムスタンプ ダイジェスト ダイジェスト Nonce Nonce Nonce transactionには マイナーへの手数 料も含まれている マイナーはこれを 含める事ができる! ©BlockchainHub Inc.
  8. 技術のつながり • 離れた場所になるべく速く、効率よく、情報を伝える方法 43 通信ネットワーク技術 光通信技術 無線通信技術 音波通信技術 符号化技術 回線交換技術

    P2Pネットワーク技術 インターネット技術 パケット交換技術 ©BlockchainHub Inc. インターネット上に特定の サーバなしにサービスを 構築するための基盤技術
  9. P2P • インターネット上に特定のサーバなしにサービスを構築する 44 ©BlockchainHub Inc. サーバ クライアント クライアント サービス提供

    サーバ&クライアント サーバ&クライアント サーバ&クライアント サーバ&クライアント サービス提供 全てのノードは対等 でサーバにもクライ アントにもなる
  10. ビットコインの場合 • ビットコインノードだけでビットコインサービスを構築する 45 ©BlockchainHub Inc. サーバ クライアント クライアント サービス提供

    マイニング&取引 マイニング&取引 マイニング&取引 マイニング&取引 ブロック伝搬 取引 取引 取引 機能の異なるノード (ウォレットなど)も 参加する
  11. ビットコインの場合 • ビットコインノードだけでビットコインサービスを構築する 46 ©BlockchainHub Inc. マイニング&取引 マイニング&取引 マイニング&取引 マイニング&取引

    ブロック伝搬 取引 取引 取引 Ø 全マイナーに素早く新ブロック を伝搬させる Ø 不正ブロックをすぐに棄却する Ø 全マイナーに素早くトランザク ションを伝搬させる P2Pネットワークの役割
  12. 比較 • Bittorrent • 昔のSkype • Napstar • winny 48

    これまでにあったP2Pサービスたち 所望のファイルや人が「どこに いるか」を探す必要があった ブロックチェーンシステム 全員が同じものを持てばいい ©BlockchainHub Inc. P2P技術として見ると 比較的単純
  13. トレードオフ 63 次数を増やす 次数を減らす VS. ネットワーク直径は小さくなり、素早く ネットワークに情報が伝わる 通信量増、 接続管理コスト増 障害に強くなる

    通信量減、 接続管理コスト減 情報伝達速度が遅くなる 障害に弱くなる このバランスが技術の 腕の見せどころ
  14. 学問分野 • グラフ理論 • 線形代数学 • 最適化理論 – 線形計画法 –

    動的計画法 – 離散最適化問題 • 集合論 • 複雑系理論 64 ※ wikipedia: グラフ理論 より
  15. ルーティング • どうやって都合のいい経路を見つけるのか? 67 Aさん Bさん Cさん Dさん Eさん Fさん

    Gさん 私はB,C,D,E,F,G さんと繋がってます • 各人が自分とつながっている人が誰かを 隣の人に伝える • みんなでその情報を共有する • 隣接行列というものを作成できる • 隣接行列があれば、だれかに情報を伝 えたいときに、とりあえず隣のどの人に 伝えればいいかが計算で求められる Aさんの向こうに B,C,D,E,Gさんがい ることがわかる ※ダイクストラ法などがあります
  16. DHTを利用したP2P技術 • 代表例 – Chord – Pastry – Tapestry –

    Kademlia 73 全ての情報に対してハッシュ値(ダイジェスト)を求めておく ハッシュ値ごとに予め「誰がその情報を管理しておくべきか」 についてルールを決めておく 欲しい情報があれば、ハッシュ値を求めると誰に問い合わ せればいいかがわかる
  17. インターネット 77 ©BlockchainHub Inc. インターネット パケット インターネット(TCP/IP)技術は エンドホスト同士がパケット形 式で情報をやり取りすることを 可能にする

    ソケット通信という考え方で プログラムを書けば簡単に 相手と通信できる 途中がどうなってるかは 気にする必要がない だから雲
  18. 雲の中 • たくさんのInternet Service Provider(ISP)の階層構造 78 ISP ISP ISP ISP

    ISP ISP ISP ISP ISP ISP ISP Tier 1 Tier 2 Tier 3 ISPの中はルータと いう装置がたくさん 設置されている
  19. IPアドレス • IP = Internet Protocol – Protocolとは、協定、手続き、という意味 • IPアドレス

    – 識別子(Identifier)の役割をもつ • ホストを識別するためのID – 位置指定子(Locator)の役割を持つ • ホストのネットワーク上での位置を指し示すための住所 79
  20. IPアドレス • すべてのホスト(Network Interface Card: NIC)にはIPアドレス が割り当てられる – IPv4アドレス、IPv6アドレス 80

    ifconfigというコマンドでIPアドレスを調べられる (Windowsの場合はipconfig) NIC IPv6 IPv4
  21. IPv4とIPv6 • IPv4 – 32ビットの値(約43億通り) – 8ビットずつ区切って4つの10進数で表現されることが多い – もう全てのアドレスを使い果たしてしまった •

    IPv6 – 128ビットの値(約340澗(かん)通り) – 16ビットずつ区切って8つの16進数で表現されることが多い 81 192.168.0.100 fe80::474:d166:d0a8:6257 ※ 0000のところは省略する
  22. IPパケット • パケット=小包 – データはパケットに分割して、各パケットにヘッダを付けて送信する 82 パケット パケット パケット パケット

    パケット パケット パケット パケット パケット パケット パケット パケット パケット パケット パケット パケット 送りたいデータ 分割 送信元アドレス 宛先アドレス ペイロード ※ 実際のヘッダには他にも情報が入る IPヘッダ
  23. ネットワーク/ホスト アドレス • IPアドレスは2つのパートに分割して考える – ネットワークアドレス • ネットワーク(LAN)を指し示す部分 – ホストアドレス

    • ネットワーク(LAN)の中のどこかを指し示す部分 83 192.168.0.100 ネットワークアドレス ホストアドレス 192.168.0.100/24 前半24ビットが ネットワークアドレス
  24. NAT • プライベートアドレスとグローバルアドレスを変換する装置 88 事業所A NAT 中から通信が開始されると、プ ライベートアドレスとグローバル アドレスの変換表に記録する 192.168.0.100

    <-> 120.1.2.3 プライベートアドレスを使う グローバルアドレスを使う インターネット Dst: X Src: 192.168.0.100 Dst: X Src: 192.168.0.100 Src: 120.1.2.3 Dst: 120.1.2.3 Src: X Dst: 120.1.2.3 Src: X Dst: 192.168.0.100
  25. アウトライン • ブロックチェーン技術の概要 • ブロックチェーンとP2P • P2Pネットワーク技術 • インターネットの仕組み •

    P2Pで起こる問題 • ブロックチェーンシステムで起こりうる問題 101 ©BlockchainHub Inc.
  26. P2Pネットワークの良し悪し • 参加ノードの次数(隣のノードの数)がだいたい均一 – ハブになるような人がいない • 誰から見てもネットワークの直径がだいたい同じ • 適当な2つのノード間の最短経路に入る回数がだいたい同じ –

    中心性が極端に大きいものがない 116 ※ 中心性の定義は色々あります 要は、ネットワークの形(トポロジ)的にみて 特別なノードがいないこと 何を求めるかによるので一概には言えないが・・・