Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ブロックチェーンを支えるP2Pネットワーク技術
Search
Takeshi Kubo
June 14, 2017
Technology
1
990
ブロックチェーンを支えるP2Pネットワーク技術
株式会社ブロックチェーンハブの講義資料です
Takeshi Kubo
June 14, 2017
Tweet
Share
More Decks by Takeshi Kubo
See All by Takeshi Kubo
Corda勉強資料 その2 State、Transaction編
quvox
0
140
Corda勉強資料 その1 概要編
quvox
0
140
Interop Tokyo 2018 BBc-1 ハンズオン
quvox
0
500
Other Decks in Technology
See All in Technology
『Firebase Dynamic Links終了に備える』 FlutterアプリでのAdjust導入とDeeplink最適化
techiro
0
170
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
240
Engineer Career Talk
lycorp_recruit_jp
0
190
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
190
Mastering Quickfix
daisuzu
1
150
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
560
SDN の Hype Cycle を一通り経験してみて思うこと / Going through the Hype Cycle of SDN
mshindo
1
140
心が動くエンジニアリング ── 私が夢中になる理由
16bitidol
0
100
Next.jsとNuxtが混在? iframeでなんとかする!
ypresto
1
130
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
3
160
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
The Role of Developer Relations in AI Product Success.
giftojabu1
0
150
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Designing for humans not robots
tammielis
250
25k
Become a Pro
speakerdeck
PRO
25
5k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
A Tale of Four Properties
chriscoyier
156
23k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
The Cult of Friendly URLs
andyhume
78
6k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Transcript
ブロックチェーンを支える P2Pネットワーク技術 シニアアーキテクト 久保 1 ©BlockchainHub Inc.
自己紹介 • 久保 健(くぼ たけし) • 所属 – 株式会社 ブロックチェーンハブ
• シニアアーキテクト – 株式会社 ゼタント • 代表取締役 – ビヨンドブロックチェーン株式会社 • シニアアーキテクト – Yume cloud Inc. • シニアアーキテクト • 経歴 – 大手通信会社にて研究および技術企画 の業務に従事(16年在籍) – 研究 • LTEのインフラネットワーク • P2P、センサーネットワーク • 自律分散コンピューティング • ゲーム理論、インセンティブメカニズム – 大規模案件のプロジェクトマネージャー • 電話サービス • 通信インフラ構築 – その他 • メディアアート作品の制作(結果出ず) • 卓上自動運転ロボの開発(賞を受賞) • 証券アナリスト(1次 2/3合格) 2 ©BlockchainHub Inc.
アウトライン • ブロックチェーン技術の概要 • ブロックチェーンとP2P • P2Pネットワーク技術 • インターネットの仕組み •
P2Pで起こる問題 • ブロックチェーンシステムで起こりうる問題 3 ©BlockchainHub Inc.
アウトライン • ブロックチェーン技術の概要 • ブロックチェーンとP2P • P2Pネットワーク技術 • インターネットの仕組み •
P2Pで起こる問題 • ブロックチェーンシステムで起こりうる問題 4 ©BlockchainHub Inc.
ブロックチェーンとは • ブロックと呼ばれる順序付けられたレコードの連続的に増加 するリストを持つ分散データベースである – by Wikipedia 5 データ データ
データ データ タイムスタンプ ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト ハッシュ計算 ハッシュ計算 ハッシュ計算 ブロック ブロック ブロック ©BlockchainHub Inc.
ブロックチェーンとは • しかも、過去のデータを改ざんすることを非常に困難にする しくみを持つ 6 データ データ データ データ タイムスタンプ
ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト 例:ダイジェストの値に制約を設ける(上位xx桁は0であること) Nonce Nonce Nonce ハッシュ計算 ハッシュ計算 ハッシュ計算 制約条件を満たすようなNonceを見つけなければならない ©BlockchainHub Inc.
ブロックチェーンとは • 改ざんしたら、その後に続く全てのブロックのNonceも計算し 直さなければならない!→そんなのほぼ無理 7 データ データ データ データ タイムスタンプ
ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト データ データ データ データ タイムスタンプ ダイジェスト ダイジェスト Nonce Nonce Nonce ハッシュ計算 ハッシュ計算 ハッシュ計算 改竄 ©BlockchainHub Inc.
ブロックチェーンとは • そんなブロックチェーンを、参加者みんなで保持し、だれでも 中身を確認できる。 8 ブロックチェーン ブロックチェーン ブロックチェーン ブロックチェーン ©BlockchainHub
Inc.
ブロックチェーンとは • 誰もが同じ情報を参照できる • 過去のデータが容易には改竄できない • 分散型台帳 9 ©BlockchainHub Inc.
具体事例(ビットコイン) • データはトランザクションと呼ばれる • ブロックを作るビットコインノードをマイナーという 10 transaction transaction transaction transaction
タイムスタンプ ダイジェスト ダイジェスト transaction transaction transaction transaction タイムスタンプ ダイジェスト ダイジェスト transaction transaction transaction transaction タイムスタンプ ダイジェスト ダイジェスト Nonce Nonce Nonce マイナーがtransactionを束ねてブロックにする transactionはビット コインの取引記録 ©BlockchainHub Inc.
マイナーのインセンティブ • マイナーの役割 = ビットコインシステムの運営 – トランザクションを束にしてブロックを作る – 新しいブロックを既存のブロックチェーンに繋ぎ、全体に伝搬させる –
ブロックの正しさを検証する • 報酬が得られるようにして、システムを維持する – トランザクションをブロックに組み込むときに、手数料をもらう – ブロックを作ったときに「無からマイナーに」ビットコインが支払われる 11 ©BlockchainHub Inc.
マイナーのインセンティブ • 手数料支払 • マイニング報酬 (2017/6月現在12.5BTC) 12 transaction transaction transaction
transaction タイムスタンプ ダイジェスト ダイジェスト transaction transaction transaction 無→俺 タイムスタンプ ダイジェスト ダイジェスト transaction transaction transaction transaction タイムスタンプ ダイジェスト ダイジェスト Nonce Nonce Nonce transactionには マイナーへの手数 料も含まれている マイナーはこれを 含める事ができる! ©BlockchainHub Inc.
マイニング • 誰でも好き勝手にブロックを作れるわけではない! 13 ブロックには番号がついていて、 次の番号のブロックを作れるのは ただ一人のマイナーのみ 早い者勝ち。皆一番乗りを狙う ルールに合致したダイジェストになるように 必死にNonceを探しまくる
©BlockchainHub Inc.
マイニング • 一番乗りを名乗るためには、結果を他のマイナーに検証して もらわなければならない – 不正があれば破棄される 14 ©BlockchainHub Inc. OK
ブロック ブロック ブロック ブロック ブロック できた! OK OK OK OK
6ブロックは待て • ブロックが破棄される可能性がある – 破棄されると、その中にあった取引(トランザクション)は歴史に刻ま れていない状態に逆戻りする! 15 ルール 内容が異なるブロックチェーンを見つ けたら「より長い方」を本物だと思え!
©BlockchainHub Inc.
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 16 ©BlockchainHub Inc.
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 17 ©BlockchainHub Inc. 2人のマイナーがほぼ 同時にブロックを作った
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 18 ©BlockchainHub Inc. 2パターンのチェーンが伸びる
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 19 ©BlockchainHub Inc. 別の2人のマイナーがほぼ 同時にブロックを作った
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 20 ©BlockchainHub Inc. たまたまちょっと早めに伸びた
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 21 ©BlockchainHub Inc. 2つのブロックチェーンが出会った
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 22 ©BlockchainHub Inc. 長い方を生き残らせる ここに含まれていたブロックは破棄される 破棄されたブロックに入っていたトランザクションは また別のブロックに組み込まれるのを待たなければならない
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 23 ©BlockchainHub Inc. ここまでは確定(=全ノードが同じチェーンを持っている)
6ブロックは待て • 6ブロック生き残れば、破棄される確率は極めて低いはず 24 ©BlockchainHub Inc. ここまでは確定(=全ノードが同じチェーンを持っている) ここでは3ブロックが破棄される例だったが、 7ブロックが破棄される可能性は極めて低い
ところで、、 25 なぜブロックの破棄が 起こるのか? ©BlockchainHub Inc.
大事な要素 26 ©BlockchainHub Inc. 人によって持っているブロックが 異なるということが普通に起こる 全てのビットコインノードが 同じブロックをもっていること
具体例で見てみましょう 27
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 28
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 29 できた!
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 30 できた!
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 31
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 32
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 33 できた!
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 34
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 35 できた! できた!
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 36
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 37 できた!
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 38
チェーンの分岐 • 大きなネットワークではチェーンは簡単に分岐する 39 3系統の歴史に分岐している 参加者が多くなり、伝搬遅延が 大きくなればもっと分岐が起こる
ここからが今日の本題です 40 ©BlockchainHub Inc.
アウトライン • ブロックチェーン技術の概要 • ブロックチェーンとP2P • P2Pネットワーク技術 • インターネットの仕組み •
P2Pで起こる問題 • ブロックチェーンシステムで起こりうる問題 41 ©BlockchainHub Inc.
少し高尚な話 • ブロックの破棄に限らず、世の中の多くの問題は、光の速度 と電子の移動速度が有限だから発生する 42 電波や光ケーブルの中は 光の速度でしか伝わらない 情報処理速度は電子回路の中 の電子の移動速度に制約される &
つまり、離れた場所同士の情報は なかなか一致しない ©BlockchainHub Inc.
技術のつながり • 離れた場所になるべく速く、効率よく、情報を伝える方法 43 通信ネットワーク技術 光通信技術 無線通信技術 音波通信技術 符号化技術 回線交換技術
P2Pネットワーク技術 インターネット技術 パケット交換技術 ©BlockchainHub Inc. インターネット上に特定の サーバなしにサービスを 構築するための基盤技術
P2P • インターネット上に特定のサーバなしにサービスを構築する 44 ©BlockchainHub Inc. サーバ クライアント クライアント サービス提供
サーバ&クライアント サーバ&クライアント サーバ&クライアント サーバ&クライアント サービス提供 全てのノードは対等 でサーバにもクライ アントにもなる
ビットコインの場合 • ビットコインノードだけでビットコインサービスを構築する 45 ©BlockchainHub Inc. サーバ クライアント クライアント サービス提供
マイニング&取引 マイニング&取引 マイニング&取引 マイニング&取引 ブロック伝搬 取引 取引 取引 機能の異なるノード (ウォレットなど)も 参加する
ビットコインの場合 • ビットコインノードだけでビットコインサービスを構築する 46 ©BlockchainHub Inc. マイニング&取引 マイニング&取引 マイニング&取引 マイニング&取引
ブロック伝搬 取引 取引 取引 Ø 全マイナーに素早く新ブロック を伝搬させる Ø 不正ブロックをすぐに棄却する Ø 全マイナーに素早くトランザク ションを伝搬させる P2Pネットワークの役割
ブロックチェーンシステムの特殊性 • P2Pネットワーク観点からはブロックチェーンシステムは特殊 47 • みんなで同じことをやろうとする • みんなで同じ情報を共有しようとする 多くのP2Pネットワークシステムは、情報を分散配置するけど、なるべく 同じ情報の複製の数を少なく、でも検索効率上げることを目指している
比較 • Bittorrent • 昔のSkype • Napstar • winny 48
これまでにあったP2Pサービスたち 所望のファイルや人が「どこに いるか」を探す必要があった ブロックチェーンシステム 全員が同じものを持てばいい ©BlockchainHub Inc. P2P技術として見ると 比較的単純
P2Pなシステムに必要な機能 P2Pネットワークに参加する 隣接ノードを決定し、P2Pネットワークトポロジを構成する 必要に応じて、情報を隣接ノードに伝達する P2Pネットワーク上の情報を検索し、必要な情報を取得する 49 ©BlockchainHub Inc. ブロックチェーン では不要
アウトライン • ブロックチェーン技術の概要 • ブロックチェーンとP2P • P2Pネットワーク技術 • インターネットの仕組み •
P2Pで起こる問題 • ブロックチェーンシステムで起こりうる問題 50 ©BlockchainHub Inc.
P2Pの主要な機能 P2Pネットワークに参加する(ブートストラップ) P2Pネットワークトポロジー形成・維持 隣接ノードへの情報伝達 ルーティングと情報検索 51 ©BlockchainHub Inc. ブロックチェーン では不要
P2Pネットワーク ブートストラップ • まずはとにかく誰か既存メンバにコンタクトする – 以前つながっていたメンバに繋いでみる – DNSを使う 52 ©BlockchainHub
Inc. 前繋がってた ので試してみる
P2Pネットワーク ブートストラップ • まずはとにかく誰か既存メンバにコンタクトする – 以前つながっていたメンバに繋いでみる – DNSを使う 53 ©BlockchainHub
Inc. Aさん AさんのIP アドレス DNS 一番初めはどうしてもサーバが必要
トポロジー形成 • 情報を伝達する道すじを作る – 隣の人はだれ?を認識する 54 まずは繋ぐ 紹介してもらう
トポロジー形成 • 情報を伝達する道すじを作る – 隣の人はだれ?を認識する 55
トポロジー形成 • 情報を伝達する道すじを作る – 隣の人はだれ?を認識する 56
トポロジー維持 • 隣の人はいなくなるかもしれないので定期的に更新する 57
トポロジー維持 • 隣の人はいなくなるかもしれないので定期的に更新する 58
トポロジー維持 • 隣の人はいなくなるかもしれないので定期的に更新する 59 つなぎ直す
フラッディング • 同じ情報を全員に効率よく配布する 60 同じものは無視する 初めて受け取ったものは とにかく隣に転送する
フラッディング • 同じ情報を全員に効率よく配布する 61 全員に同じ情報が行き渡る この仕組によって、トランザクションや ブロックがみんなに共有される
次数とネットワーク直径 62 ◯ 次数 → 自分とつながっている人の数 ◯ ネットワーク直径 →一番遠くの人に到達するまでの距離 次数=4
※正確な定義は違うものです 5ホップ 3ホップ 直径が大きい
トレードオフ 63 次数を増やす 次数を減らす VS. ネットワーク直径は小さくなり、素早く ネットワークに情報が伝わる 通信量増、 接続管理コスト増 障害に強くなる
通信量減、 接続管理コスト減 情報伝達速度が遅くなる 障害に弱くなる このバランスが技術の 腕の見せどころ
学問分野 • グラフ理論 • 線形代数学 • 最適化理論 – 線形計画法 –
動的計画法 – 離散最適化問題 • 集合論 • 複雑系理論 64 ※ wikipedia: グラフ理論 より
閑話休題 • ブロックチェーンには使われていませんが、P2Pの代表的な 課題、技術を少し紹介します 65
ルーティング • 所望の人に、伝言ゲームのように情報を伝達する 66
ルーティング • どうやって都合のいい経路を見つけるのか? 67 Aさん Bさん Cさん Dさん Eさん Fさん
Gさん 私はB,C,D,E,F,G さんと繋がってます • 各人が自分とつながっている人が誰かを 隣の人に伝える • みんなでその情報を共有する • 隣接行列というものを作成できる • 隣接行列があれば、だれかに情報を伝 えたいときに、とりあえず隣のどの人に 伝えればいいかが計算で求められる Aさんの向こうに B,C,D,E,Gさんがい ることがわかる ※ダイクストラ法などがあります
情報検索 • 所望の情報を持っている人を探して送ってもらう 68
情報検索 • 所望の情報を持っている人を探して送ってもらう 69 A B C D E F
G H I J K L M N O P Q
情報検索 • 所望の情報を持っている人を探して送ってもらう – フラッディングを使う 70 A B C D
E F G H I J K L M N O P Q A A A A A,F A,F A,F,J A,F,J A,F,J A,F,J
情報検索 • 所望の情報を持っている人を探して送ってもらう – 逆順に送っていけば良い(H→J→F→A) 71 A B C D
E F G H I J K L M N O P Q A A,F A,F,J
もっといい方法 72 いちいち検索とかしなければ良い! DHT(Distributed Hash Table)が発明された 検索のたびに毎回フラッディングするのは大変
DHTを利用したP2P技術 • 代表例 – Chord – Pastry – Tapestry –
Kademlia 73 全ての情報に対してハッシュ値(ダイジェスト)を求めておく ハッシュ値ごとに予め「誰がその情報を管理しておくべきか」 についてルールを決めておく 欲しい情報があれば、ハッシュ値を求めると誰に問い合わ せればいいかがわかる
Chordアルゴリズム • 160ビットのハッシュ値を用いる(値の範囲は0〜2160-1) • 2160を参加者数で割って、それぞれが均等な範囲を担当する 74 chordリング (数直線ではなくあえて円状に書く) 0 2160-1
Aさんが担当 Bさんが担当 Cさんが担当 Dさんが担当 2158 2159 3*2158
ブロックチェーンでの課題に入る前に 75 ©BlockchainHub Inc.
アウトライン • ブロックチェーン技術の概要 • ブロックチェーンとP2P • P2Pネットワーク技術 • インターネットの仕組み •
P2Pで起こる問題 • ブロックチェーンシステムで起こりうる問題 76 ©BlockchainHub Inc.
インターネット 77 ©BlockchainHub Inc. インターネット パケット インターネット(TCP/IP)技術は エンドホスト同士がパケット形 式で情報をやり取りすることを 可能にする
ソケット通信という考え方で プログラムを書けば簡単に 相手と通信できる 途中がどうなってるかは 気にする必要がない だから雲
雲の中 • たくさんのInternet Service Provider(ISP)の階層構造 78 ISP ISP ISP ISP
ISP ISP ISP ISP ISP ISP ISP Tier 1 Tier 2 Tier 3 ISPの中はルータと いう装置がたくさん 設置されている
IPアドレス • IP = Internet Protocol – Protocolとは、協定、手続き、という意味 • IPアドレス
– 識別子(Identifier)の役割をもつ • ホストを識別するためのID – 位置指定子(Locator)の役割を持つ • ホストのネットワーク上での位置を指し示すための住所 79
IPアドレス • すべてのホスト(Network Interface Card: NIC)にはIPアドレス が割り当てられる – IPv4アドレス、IPv6アドレス 80
ifconfigというコマンドでIPアドレスを調べられる (Windowsの場合はipconfig) NIC IPv6 IPv4
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のところは省略する
IPパケット • パケット=小包 – データはパケットに分割して、各パケットにヘッダを付けて送信する 82 パケット パケット パケット パケット
パケット パケット パケット パケット パケット パケット パケット パケット パケット パケット パケット パケット 送りたいデータ 分割 送信元アドレス 宛先アドレス ペイロード ※ 実際のヘッダには他にも情報が入る IPヘッダ
ネットワーク/ホスト アドレス • IPアドレスは2つのパートに分割して考える – ネットワークアドレス • ネットワーク(LAN)を指し示す部分 – ホストアドレス
• ネットワーク(LAN)の中のどこかを指し示す部分 83 192.168.0.100 ネットワークアドレス ホストアドレス 192.168.0.100/24 前半24ビットが ネットワークアドレス
ネットワークアドレスとルーティング • ルータがIPパケットを転送する – ヘッダの宛先ネットワークアドレスを見て、次にどこに転送するか決める – 次々と転送していき、最終的に宛先に届く 84 パケット ルータ
この最後のルータが ホストアドレスを見る
グローバル/プライベート アドレス • グローバルアドレス – インターネット全体で唯一性のあるアドレス • プライベートアドレス – 事業所や家庭などの中(LAN)だけで使っていいアドレス
– 例えば192.168.0.1など 85 事業所A 事業所B 家C 192.168.0.1 192.168.0.1 192.168.0.1 インターネット
中間ノード 86 ©BlockchainHub Inc. インターネット パケット 実は、雲の中にはルータ 以外にも色々なことをする ノードがいる
NAT • プライベートアドレスとグローバルアドレスを変換する装置 87 事業所A NAT 出ていくパケットの送信 元アドレスを書き換える 入ってくるパケットの宛先 元アドレスを書き換える
プライベートアドレスを使う グローバルアドレスを使う インターネット
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
NAT • プライベートアドレスとグローバルアドレスを変換する装置 89 事業所A NAT 外から通信が開始されても、 変換表がないのでパケット が破棄される ???
プライベートアドレスを使う グローバルアドレスを使う インターネット Dst: 120.1.2.3 Src: X
ファイアウォール • 許可された宛先、アプリケーションのパケット以外は封鎖 90 宛先123.4.5.6/アプリHTTP 宛先123.4.5.6/アプリ 怪しい 某国でFacebookが使えない、とかはこの装置によるもの ※ 正確にはポート番号とかプロトコルを監視しています
アウトライン • ブロックチェーン技術の概要 • ブロックチェーンとP2P • P2Pネットワーク技術 • インターネットの仕組み •
P2Pで起こる問題 • ブロックチェーンシステムで起こりうる問題 91 ©BlockchainHub Inc.
P2Pが正しく動くには 92 それぞれのノードが正しくつながっていて、 同じ情報がくまなく全体で共有できなければならない • ネットワークが分断される • 接続関係(次数)が異常に偏る ダメパターン 悪意のあるなしに関わらず
ネットワークの分断 • 例えば、ファイアウォールがあると分断されるかもしれない 93
ネットワークの分断 • 実際にはこういうパターン 94 ISP ISP ISP ISP ISP ISP
ISP ISP ISP ISP ISP
ネットワークの分断 • 例えば、両方NATの中だと分断されるかもしれない 95
ネットワークの分断 • 実際にはこういうパターン 96 ISP ISP NAT NAT 別のNATの中の相手とは繋げない
ネットワークの分断 • ネットワークが分断されると、フラッディングが行き渡らない 97 フラッディング が届かない 情報が共有 できない
接続関係の偏り • 極端に次数の大きい(お隣さんが多い)ノードがいると、、、 – 負荷が高まりすぎて、遅延が発生するかもしれない – 障害、離脱で簡単にネットワークの分離が起こるかもしれない 98
接続関係の偏り • 極端に次数の大きい(お隣さんが多い)ノードがいると、、、 – 負荷が高まりすぎて、遅延が発生するかもしれない 99 たくさん転送する 必要がある
接続関係の偏り • 極端に次数の大きい(お隣さんが多い)ノードがいると、、、 – 障害、離脱で簡単にネットワークの分離が起こるかもしれない 100
アウトライン • ブロックチェーン技術の概要 • ブロックチェーンとP2P • P2Pネットワーク技術 • インターネットの仕組み •
P2Pで起こる問題 • ブロックチェーンシステムで起こりうる問題 101 ©BlockchainHub Inc.
とにかく大事なこと 102 ©BlockchainHub Inc. ネットワークをコントロールするこ とで、これを阻害することが可能 全てのビットコインノードが 同じブロックをもっていること
イクリプス攻撃 • 次数を増やしてハブになり、分断が起こりやすいトポロジを 作る 103 反対側にパケットを 転送しない 切断してないけど分断したのと同じこと!
何がまずいのか? • チェーンがフォークしてしまう – 2つ以上の歴史が刻まれる • 特定のノードが不当にトランザクションを操作できてしまう – 都合の悪いトランザクションだけ破棄してしまう 104
どうやればこの状況を作れるか 105
シビル攻撃 • たくさんの架空のノードのふりをしてネットワークトポロジを不 当に大きなものに見せる 110
シビル攻撃 • たくさんの架空のノードのふりをしてネットワークトポロジを不 当に大きなものに見せる 111
シビル攻撃 • たくさんの架空のノードのふりをしてネットワークトポロジを不 当に大きなものに見せる 112
シビル攻撃 • たくさんの架空のノードのふりをしてネットワークトポロジを不 当に大きなものに見せる 113 実際のネットワークはこんな形に、、、
何がまずいのか • 結局、イクリプス攻撃が可能になる – もともとはSNSなどで評判を不当に上げるための不正操作 114
P2Pネットワークの良し悪し • 参加ノードの次数(隣のノードの数)がだいたい均一 – ハブになるような人がいない • 誰から見てもネットワークの直径がだいたい同じ • 適当な2つのノード間の最短経路に入る回数がだいたい同じ –
中心性が極端に大きいものがない 116 ※ 中心性の定義は色々あります 要は、ネットワークの形(トポロジ)的にみて 特別なノードがいないこと 何を求めるかによるので一概には言えないが・・・
まとめ 117 ©BlockchainHub Inc. 全てのビットコインノードが 同じブロックをもっていること ブロックチェーンが正しく動作するためには そのためには P2Pネットワークがなるべく フラットな形になっているべき
最後に • ブロックチェーンの解説本が出ます! 118 ※ Amazonより