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
920
ブロックチェーンを支えるP2Pネットワーク技術
株式会社ブロックチェーンハブの講義資料です
Takeshi Kubo
June 14, 2017
Tweet
Share
More Decks by Takeshi Kubo
See All by Takeshi Kubo
Corda勉強資料 その2 State、Transaction編
quvox
0
120
Corda勉強資料 その1 概要編
quvox
0
130
Interop Tokyo 2018 BBc-1 ハンズオン
quvox
0
450
Other Decks in Technology
See All in Technology
ServiceNow Knowledge 24の歩き方 EYストラテジー・アンド・コンサルティング
manarobot
0
180
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
2k
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
160
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
340
継続的な改善 x ⾮連続的な進化
sansantech
PRO
3
130
テストプロセスで大事にしていること #jasstnano
makky_tyuyan
0
160
エンジニアのキャリアをちょっと楽しくする3本の軸/Three Pillars to Make an Engineer's Career More Enjoyable
kwappa
0
2.6k
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.7k
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
420
Postman v10リリース後を振り返る
nagix
0
170
現代CSSフレームワークの内部実装とその仕組み
poteboy
8
3.5k
ワールドカフェI /チューターを改良する / World Café I and Improving the Tutors
ks91
PRO
0
110
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
16
6.4k
Designing Experiences People Love
moore
136
23k
Principles of Awesome APIs and How to Build Them.
keavy
120
16k
Thoughts on Productivity
jonyablonski
57
3.8k
Embracing the Ebb and Flow
colly
79
4.1k
What the flash - Photography Introduction
edds
64
11k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Infographics Made Easy
chrislema
238
18k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
Making the Leap to Tech Lead
cromwellryan
123
8.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
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より