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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

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

Avatar for Takeshi Kubo

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 ※ 中心性の定義は色々あります 要は、ネットワークの形(トポロジ)的にみて 特別なノードがいないこと 何を求めるかによるので一概には言えないが・・・