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
1.1k
ブロックチェーンを支えるP2Pネットワーク技術
株式会社ブロックチェーンハブの講義資料です
Takeshi Kubo
June 14, 2017
Tweet
Share
More Decks by Takeshi Kubo
See All by Takeshi Kubo
Corda勉強資料 その2 State、Transaction編
quvox
0
160
Corda勉強資料 その1 概要編
quvox
0
150
Interop Tokyo 2018 BBc-1 ハンズオン
quvox
0
520
Other Decks in Technology
See All in Technology
Clineを含めたAIエージェントを 大規模組織に導入し、投資対効果を考える / Introducing AI agents into your organization
i35_267
4
1.6k
OpenHands🤲にContributeしてみた
kotauchisunsun
1
430
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
2
210
Javaで作る RAGを活用した Q&Aアプリケーション
recruitengineers
PRO
1
110
GeminiとNotebookLMによる金融実務の業務革新
abenben
0
230
初めてのAzure FunctionsをClaude Codeで作ってみた / My first Azure Functions using Claude Code
hideakiaoyagi
1
220
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
180
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
2
540
Github Copilot エージェントモードで試してみた
ochtum
0
100
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
4
730
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
3
1.2k
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
3
470
Featured
See All Featured
It's Worth the Effort
3n
185
28k
Optimizing for Happiness
mojombo
379
70k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
How to Ace a Technical Interview
jacobian
277
23k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
210
The Cost Of JavaScript in 2023
addyosmani
51
8.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Done Done
chrislema
184
16k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
BBQ
matthewcrist
89
9.7k
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より