P2P NETWORK BASICS

P2P

Peer-to-Peer(ピアツーピア)

動画配信もファイル共有もブロックチェーンも、裏側では「サーバーに頼らず端末同士が直接つながる」仕組みが動いています。このサイトでは、クライアント・サーバー型との違いから、NAT越えやDHTといった仕組み、実際のアプリケーションまでを図解とインタラクティブなシミュレーションで解説します。

コンテンツ一覧

P2P詳説

01. P2Pの歴史
1999

Napster:中央インデックス型の衝撃

大学生ショーン・ファニングが開発した音楽共有サービスNapsterは、「誰がどの曲を持っているか」という索引だけを中央サーバーで管理し、実際のファイル転送は利用者同士で直接行うという画期的な構成を採用しました。最盛期には数千万人が利用しましたが、索引サーバーという「急所」を持っていたため、著作権訴訟によってサーバーが停止されるとサービス全体が終わりを迎えることになったのです。この出来事は「中央に依存する限り、システムは一点を突かれて止まる」という教訓を残しました。

2000

Gnutella:完全分散への挑戦

Napsterの弱点を克服すべく登場したGnutellaは、中央サーバーを完全に排除しました。各ピアは数個の隣接ピアとだけつながり、検索クエリを隣から隣へと洪水のように転送(フラッディング)して目的のファイルを探します。誰にも止められない反面、参加者が増えるほど検索メッセージがネットワークを埋め尽くすというスケーラビリティの問題に直面し、後に「スーパーノード」を設ける階層型の設計へと進化していきました。

2001

BitTorrent:チャンク分割とスウォームの発明

ブラム・コーエンが設計したBitTorrentは、「ファイルを探す仕組み」ではなく「ファイルを効率よく配る仕組み」に焦点を当てました。ファイルを細かなピース(チャンク)に分割し、ダウンロード中のピア同士が持っているピースを交換し合うことで、人気のファイルほど速く落とせるという従来の常識を覆す特性を実現しました。アップロードに協力するピアを優遇する「しっぺ返し(tit-for-tat)」戦略により、フリーライダー問題への対策も組み込まれています。後にDHTが導入され、トラッカーサーバーすら不要になりました。

2001〜

DHT研究の開花:Chord、Kademlia

同時期、学術界では分散ハッシュテーブル(DHT)の研究が花開きました。MITのChordは「ハッシュ空間をリング状に並べ、各ノードが担当範囲を持つ」という美しいモデルを提示し、KademliaはXOR(排他的論理和)に基づく距離計算という実用的な設計でBitTorrentやEthereumなど多くの実システムに採用されました。DHTの登場により、中央サーバーなしでもO(log n)の効率でデータの所在を特定できるようになり、P2Pは「力技」から「工学」へと成熟しました。

2008

ビットコイン:P2Pが「価値」を運ぶ

サトシ・ナカモトの論文「Bitcoin: A Peer-to-Peer Electronic Cash System」は、タイトルそのものにP2Pを掲げています。全ピアが取引台帳(ブロックチェーン)の複製を保持して相互に検証することで、銀行のような中央機関なしに通貨システムを成立させました。P2Pネットワークはファイルだけでなく「信頼」や「価値」を運べることが実証され、その後のWeb3ムーブメントの土台となりました。

2015〜

IPFS・WebRTC:ブラウザ時代の分散へ

IPFS(InterPlanetary File System)は、コンテンツの内容から計算したハッシュ値をそのままアドレスとして使う「コンテンツ指向」の分散ファイルシステムを提唱し、KademliaベースのDHTでデータの所在を解決します。一方、W3CとIETFで標準化されたWebRTCにより、特別なソフトを入れなくてもブラウザ同士が直接つながる時代が到来しました。ビデオ会議や画面共有など、P2Pは今や意識されないほど日常に溶け込んでいます。

こうして振り返ると、P2Pの進化は一直線ではなく、「検索の効率」「配布の効率」「信頼の分散」という異なる課題への解答が、それぞれ別の系譜として発展し、やがて合流してきたことが分かります。

02. アーキテクチャの違い

クライアント・サーバー型 vs P2P型

ネットワークアプリケーションの設計は、大きく「中央集権型」と「分散型」に分けられます。両者の構造的な違いを理解することが、P2Pを学ぶ出発点です。

私たちが普段利用しているWebサイトや動画配信サービスのほとんどはクライアント・サーバー型です。この方式では、データやサービスを提供する「サーバー」と、それを利用する「クライアント」の役割が明確に分かれています。ブラウザでWebページを開くとき、あなたの端末はクライアントとしてサーバーにリクエストを送り、サーバーがレスポンスを返します。この一問一答の繰り返しによってすべてが成り立っています。役割が固定されているため、データの一貫性を保ちやすく、アクセス制御や課金、監視といった「管理」がしやすいのが最大の強みです。

一方のP2P(Peer-to-Peer)型では、参加する端末はすべて対等な「ピア(peer=仲間、対等な相手)」であり、各ピアがクライアントとサーバーの両方の役割を同時にこなします。あるピアはファイルの一部を他のピアから受け取りながら、同時に別のピアへ自分の持つデータを提供します。つまり利用者自身がインフラの一部になるという発想の転換こそがP2Pの本質です。

クライアント・サーバー型

Server

全ての要求は中央サーバーを経由する(一極集中)

  • 管理・運用がしやすく、データの一貫性を保ちやすい
  • アクセス制御・認証・課金などの実装が容易
  • サーバーがボトルネック・単一障害点(SPOF)になりやすい
  • 利用者が増えるほどサーバー費用と負荷が増大する

P2P型

ピア同士が網目状に直接通信する(分散)

  • 参加者が増えるほど全体の処理能力・帯域も増える
  • 一部のピアが離脱してもネットワーク全体は動き続ける
  • 中央の巨大なサーバー投資が不要
  • データの一貫性維持や不正ピア対策が難しくなる

帯域の視点で考える

両者の違いが最も際立つのは「大きなファイルを大勢に配る」場面です。たとえば10GBのファイルを100人に配布する場合、クライアント・サーバー型ではサーバーが合計1TB(10GB×100人)をアップロードしなければならず、サーバーの回線速度が全体の上限になります。P2P型では、ファイルを受け取り始めたピアがすぐに他のピアへの供給源となるため、必要なアップロード量が参加者全体に分散されます。理論上、配布完了までの時間は参加人数に対して緩やかにしか増えません。これがP2Pのスケーラビリティの源泉です。後半のシミュレーションで、この違いを実際に体感できます。

観点クライアント・サーバー型P2P型
役割分担サーバーとクライアントに固定全ピアが対等(両方の役割を兼務)
障害耐性サーバー停止で全体が停止一部離脱でも全体は継続
スケールサーバー増強が必要(費用増)参加者増=供給力増
データ一貫性中央で管理でき容易合意形成の仕組みが必要
代表例Webサイト、クラウドサービスBitTorrent、ブロックチェーン、WebRTC通話
03. P2Pの種類

3つのP2Pモデル:「どうやって相手を見つけるか」の進化

P2Pネットワークの設計は、突き詰めると「目的のデータを持つピアをどうやって見つけるか」という一点に集約されます。この探索方法の違いによって、P2Pは大きく3つのモデルに分類されます。

純粋型(非構造化)

中央サーバーを一切持たず、各ピアは数個の隣接ピアとだけ接続します。データを探すときは、隣接ピアへ検索クエリを送り、受け取ったピアがさらに自分の隣へ転送するというフラッディング(洪水)方式で、ネットワーク中に問い合わせを広げます。初期のGnutellaが代表例です。

  • 単一障害点が存在せず、誰にも止められない
  • ネットワーク構造の維持コストがほぼゼロ
  • 検索メッセージが指数的に増殖し、大規模化すると破綻しやすい
  • ネットワークの「遠く」にあるデータは見つからないことがある

ハイブリッド型

「誰が何を持っているか」という索引(インデックス)だけを中央サーバーが管理し、実際のデータ転送はピア同士が直接行います。検索は中央サーバーへの一回の問い合わせで済むため高速です。初期のNapsterや、トラッカーを使うBitTorrentがこのモデルにあたります。

  • 検索が高速・確実で、実装もシンプル
  • データ転送の負荷は分散される(サーバーは軽量でよい)
  • インデックスサーバーが単一障害点かつ法的な弱点になる
  • サーバー運営者にアクセス情報が集中する

構造化型(DHT)

分散ハッシュテーブル(DHT)により、「どのピアがどのキーを担当するか」を数学的なルールで決めるモデルです。データのキー(ハッシュ値)から担当ピアを計算で導けるため、フラッディングのような無駄な問い合わせをせずに、少ないホップ数で目的のピアへたどり着けます。

  • 中央サーバー不要で、かつ検索効率が高い(O(log n)ホップ)
  • データの所在が保証される(存在すれば必ず見つかる)
  • ピアの頻繁な出入り(チャーン)への再構成コストがかかる
  • 完全一致検索が基本で、あいまい検索が苦手

DHTの代表例: Chordのしくみ

MITで開発されたChord(コード)は、DHTの考え方を最も美しく示したアルゴリズムです。ノードのIDとデータのキーを同じハッシュ関数(例: SHA-1)で0〜2^m−1の数値に変換し、この数値空間をリング(円環)とみなします。各データは「キー以上で最も近いIDを持つノード(後継ノード)」が担当する、というただ一つのルールで全データの担当が一意に決まります。

単純にリングを一周して探すと最悪n回のホップが必要ですが、各ノードは「自分から2^k先の担当ノード」を記録したフィンガーテーブルという近道表を持ちます。探索のたびに目的地までの距離が半分以下になるため、100万ノードのネットワークでも約20ホップで目的のデータに到達できます。ノードが参加・離脱したときは、担当範囲の引き継ぎとフィンガーテーブルの更新が局所的に行われるだけで、ネットワーク全体を作り直す必要はありません。

実際のシステムでは、XOR距離を使うKademliaという別のDHTが広く使われています。BitTorrentのトラッカーレス運用も、IPFSのコンテンツ探索も、Kademliaの系譜に連なる技術です。

N0N8N16N24N32N40N48N56ハッシュ空間(0〜2^m-1 のリング)

Chordリングの概念図。点線はN0のフィンガーテーブルによる「近道」。探索のたびに残り距離が半減していく。

詳しく読む →DHT
04. 主要な仕組み

P2Pを支える3つの技術要素

ピア同士が直接つながるのは簡単そうに見えて、実際には「相手を見つける」「NATの壁を越える」「効率よくデータを分けあう」という3つの技術的課題を解決する必要があります。ここでは接続確立からデータ交換までの流れを順を追って見ていきます。

STEP 01

ピア発見(Peer Discovery):まず「誰がいるか」を知る

P2Pネットワークに参加した直後のピアは、他の参加者を一人も知りません。最初の足がかりとして、あらかじめソフトウェアに組み込まれたブートストラップノード(既知の入口ノード)へ接続し、そこから他のピアの情報を教えてもらうのが一般的です。

その後のピア収集には、システムに応じて複数の方法が併用されます。

  • トラッカー方式: BitTorrentの古典的な方法。トラッカーサーバーに「このファイルのスウォームに参加中のピア一覧」を問い合わせる。確実だがトラッカーへの依存が残る。
  • DHT方式: ファイルのハッシュ値をキーとしてDHTを検索し、そのファイルを持つピアのアドレスを取得する。サーバー不要で検閲にも強い。
  • ピア交換(PEX): すでに接続しているピアから「自分が知っている他のピア」を教えてもらう。口コミ的にネットワークが広がっていく。
STEP 02

NAT越え(STUN / TURN / ホールパンチング):「つながらない」を越える

相手が見つかっても、すぐに接続できるとは限りません。家庭やオフィスの端末は通常ルーターのNATの内側におり、プライベートIPアドレスしか持たないため、外部から直接接続を受けられないのです。P2Pでは双方がNATの内側にいるケースが大半で、これがP2P実装最大の難所と言われます。

解決は次の3段構えで行われます。

  1. STUN: 外部のSTUNサーバーに問い合わせ、「NATの外から見た自分のIPアドレスとポート番号」を知る。
  2. ホールパンチング: 互いの外部アドレスをシグナリングで交換し、双方がほぼ同時にパケットを送り合う。NATは「内側から送った通信への返信」を通すため、この同時送信で双方向の穴が開く。
  3. TURN: 対称型NATなどでホールパンチングが失敗した場合の最終手段。TURNサーバーがすべての通信を中継する。確実だが、P2Pの利点である「直接通信」は失われ、サーバーの帯域コストがかかる。

WebRTCでは、これらの候補(直接・STUN経由・TURN経由)をすべて試して最良の経路を自動選択するICEという枠組みが標準化されています。

STUNNAT ANAT BPeer APeer B(1) 自分の外部アドレスを確認(2) 同時送信でホールパンチング直接通信路が開通失敗した場合は (3) TURNサーバーが中継
STEP 03

チャンク分割とスウォーム:「もらいながら配る」効率化

接続が確立したら、いよいよデータ交換です。BitTorrentに代表される現代のP2P配布では、ファイルを数百KB〜数MBのチャンク(ピース)に分割し、チャンク単位でやり取りします。この分割には2つの重要な意味があります。

第一に、ダウンロード中のピアも供給者になれること。ファイル全体の1%しか持っていないピアでも、その1%を必要とする誰かに提供できます。同じファイルを求めるピアの集団(スウォーム)の中で、全員が「もらいながら配る」ことで、配布能力が参加者数に比例して成長します。

第二に、改ざん検証が容易になること。各チャンクのハッシュ値はあらかじめメタデータ(.torrentファイルなど)に記録されており、受信のたびに照合されます。不正なデータは即座に破棄されるため、見知らぬ相手からのダウンロードでも完全性が保証されます。

さらにBitTorrentは、スウォーム内で最も希少なチャンクから取得する「レアレストファースト」戦略や、アップロードしてくれる相手を優遇する「しっぺ返し(tit-for-tat)」戦略により、全体効率と公平性を同時に高めています。

互いに持っていないチャンクを交換

4つのチャンクに分割されたファイルを、各ピアが不足分を交換しながら完成させていく

詳しく読む →NAT越えBitTorrent
05. インタラクティブシミュレーション

配布速度を体感してみよう

同じファイルを配布する場合でも、クライアント・サーバー型とP2P型ではピア数が増えたときの速度の伸び方が大きく異なります。モードを切り替えて比較してみましょう。

ラウンド数: 0完了ピア: 0 / 14全体進捗: 0%
シード / サーバー未取得完了ピアリング = 保有チャンクの割合
06. 実例

身近なP2P技術

「P2P=ファイル共有ソフト」という印象は一面的です。実際には、私たちが毎日使うサービスの裏側で、P2Pの考え方が静かに活躍しています。代表的な事例を見てみましょう。

ファイル共有プロトコルBitTorrent

ファイル配布に特化したP2Pプロトコルの金字塔。ファイルをピースに分割し、スウォーム内のピア同士がピースを交換し合うことで、人気コンテンツほど高速に配布できます。LinuxディストリビューションのISO配布や、ゲームのアップデート配信など、合法的な大容量配布の現場で今も広く使われています。トラッカー方式から始まり、現在はKademliaベースのDHTによるトラッカーレス運用が主流です。

リアルタイム通信標準WebRTC

ブラウザ同士が音声・映像・任意のデータを直接やり取りするためのW3C/IETF標準。STUN/TURN/ICEによるNAT越えとDTLSによる暗号化を標準装備し、JavaScriptから数行で扱えます。ビデオ会議、画面共有、オンライン対戦ゲーム、ブラウザ間ファイル転送など、「サーバーを介さないリアルタイム性」が求められる場面で幅広く活躍しています。

分散台帳技術ブロックチェーン

BitcoinやEthereumの基盤。全ノードが取引台帳の複製を保持し、新しいブロックをP2Pネットワークで伝播・検証し合うことで、中央管理者なしに改ざん耐性のある記録システムを実現します。トランザクションは、ランダムな相手へ次々に伝える**ゴシッププロトコル**(噂のように広がる伝播方式)で全体に広がり、ノード発見にはKademlia系のDHTが使われるなど、P2P技術の集大成といえる構成です。

分散ファイルシステムIPFS

「場所(URL)ではなく内容(ハッシュ)でデータを指す」コンテンツアドレッシングを採用した分散ファイルシステム。同じファイルなら世界中どこの誰が保持していても同一のCID(コンテンツID)で参照でき、DHTで保持者を探索します。Webの中央集権化への対案として、NFTのメタデータ保存や検閲耐性のあるコンテンツ配信に利用されています。

インターネット電話Skype(初期)

2003年登場の初期Skypeは、Kazaaの開発陣によるスーパーノード型P2Pアーキテクチャで通話を実現し、サーバー費用を抑えながら爆発的に普及しました。NAT越えの工夫やスーパーノードによる中継など、後のP2P通信技術に大きな影響を与えた歴史的事例です(後年、クラウド型へ移行)。

ハイブリッド活用配信最適化 / ゲーム配信

Windows Updateの「配信の最適化」機能は、同一LAN内やインターネット上のPC同士でアップデートファイルの断片を融通し合うP2P配信を採用しています。CDNとP2Pを組み合わせて配信コストとダウンロード時間を同時に削減する手法は、動画ライブ配信やゲームクライアント配布でも実用化されています。

これらの事例に共通するのは、「純粋なP2P」にこだわらず、中央サーバーとP2Pを適材適所で組み合わせている点です。シグナリングや認証はサーバーが担い、大量のデータ転送はP2Pが担うという役割分担は、現代の分散システム設計の定石になっています。なお、当サイトの運営チームもOSSのP2Pライブラリmistlibと、それを用いたブラウザアプリ群(TC Home でアプリ一覧を見る)を公開しています。インストール不要でP2P通信や空間同期を実際に体験できます。

07. メリット・デメリット

P2Pの光と影

P2Pは万能薬ではありません。中央集権の弱点を鮮やかに解決する一方で、分散ならではの新しい課題も抱えています。設計思想のトレードオフを整理しましょう。

メリット

  • スケーラビリティ: 参加者が増えるほど、アップロード帯域や計算能力の総量も増える。需要の増加が供給の増加を伴う稀有な構造
  • 耐障害性: 単一障害点がなく、一部のピアが落ちても全体は動き続ける。災害時のメッセージ配信網としても研究されている
  • 低コスト: 巨大な中央サーバーや帯域を用意する必要が少なく、小さな組織や個人でも大規模な配布が可能
  • 検閲耐性: 特定の管理者やサーバーを狙い撃ちしてもネットワークを止めにくく、情報統制への耐性が高い
  • プライバシーの可能性: 中央にデータやメタデータが集積しないため、事業者による一括監視が構造的に困難

デメリット

  • セキュリティ: 不特定多数と直接通信するため、悪意あるピア、改ざんデータ、IPアドレスの露出といったリスクへの対策が不可欠
  • フリーライダー問題: ダウンロードだけして貢献しない参加者が増えると全体の供給力が低下する。インセンティブ設計が必要
  • 一貫性の維持: 「今この瞬間の正しいデータ」を全員で共有するのが難しく、合意アルゴリズムなど複雑な仕組みが必要になる
  • 管理・監査の難しさ: 誰が何を保持・配信しているかを一元的に把握できず、違法コンテンツ対策やコンプライアンス対応が困難
  • 端末負荷と非対称回線: 利用者の端末に帯域・ストレージ負荷がかかる。家庭回線はアップロードが細く、供給力の制約になりがち

フリーライダー問題とインセンティブ設計

P2P特有の課題として深掘りしておきたいのがフリーライダー問題です。P2Pネットワークは参加者の貢献(アップロード帯域やストレージの提供)で成り立ちますが、個々の参加者にとっては「もらうだけ」が最も得な行動です。初期のGnutellaでは、実に大半のピアがファイルを一切共有していなかったという調査もあり、放置すればネットワークは痩せ細っていきます。

この問題への解答が、プロトコルへのインセンティブ(動機付け)の埋め込みです。BitTorrentの「しっぺ返し(tit-for-tat)」戦略は、自分にアップロードしてくれる相手を優先的にアップロード先として選ぶことで、「貢献した方が速くダウンロードできる」状況を作り出しました。ブロックチェーンでは、ブロック生成への報酬(マイニング報酬)がネットワーク維持への貢献を動機付けています。「善意に頼らず、合理的な利己心が全体の利益につながるように設計する」。この考え方は、P2Pがコンピュータ科学とゲーム理論・経済学の交差点にある技術であることを示しています。

08. 用語集

P2P用語集

P2P関連の記事や仕様書を読むときに頻出する用語をまとめました。本文とあわせて辞書的にご活用ください。

ピア(Peer)
P2Pネットワークに参加する個々の端末・ノードのこと。「対等な相手」を意味し、クライアントとサーバーの両方の役割を兼ねる。
ノード(Node)
ネットワークを構成する参加点の総称。P2Pの文脈ではピアとほぼ同義に使われるが、ルーターや中継サーバーを含む広い意味で使われることもある。
オーバーレイネットワーク
物理的なインターネットの上に論理的に構築された仮想的なネットワーク。P2Pネットワークは、IPネットワークの上に独自の接続関係を築いたオーバーレイネットワークの一種。
DHT(分散ハッシュテーブル)
キーと値の対応表(ハッシュテーブル)を多数のノードに分割して保持する仕組み。各ノードがハッシュ空間の一部を担当し、中央サーバーなしで「どのノードがどのデータを持つか」を効率的に特定できる。
Chord(コード)
DHTの代表的なアルゴリズムの一つ。ノードとキーを同じハッシュ空間のリング上に配置し、各ノードが「フィンガーテーブル」という近道表を持つことで、O(log n)ホップでの探索を実現する。
Kademlia(カデムリア)
XOR(排他的論理和)をノード間の距離として使うDHTアルゴリズム。実装が比較的単純で耐障害性が高く、BitTorrentのDHTやEthereumのノード探索など実システムで広く採用されている。
スウォーム(Swarm)
同じファイルを共有しているピアの集団。BitTorrentでは、1つのトレントに参加している全ピア(シーダーとリーチャーの両方)を指す。スウォームが大きいほど配布は速くなる傾向がある。
チャンク / ピース
ファイルを分割した小さなデータ片。ピアはチャンク単位でデータを交換し、全チャンクが揃うとファイルが完成する。各チャンクはハッシュ値で改ざん検証される。
シーダー(Seeder)
ファイルの全チャンクを保持し、アップロード専門で他のピアに提供している参加者。シーダーが多いほどスウォームは健全で、ダウンロードも速い。
リーチャー(Leecher)
まだ全チャンクが揃っておらず、ダウンロード中の参加者。ダウンロードと並行して、既に持っているチャンクを他のピアへアップロードする。
トラッカー(Tracker)
BitTorrentにおいて、スウォームに参加しているピアのIPアドレス一覧を管理・提供するサーバー。ピア発見の窓口となるが、ファイル本体は一切扱わない。DHTの普及によりトラッカーなしでも動作可能になった。
NAT(Network Address Translation)
家庭やオフィスのルーターが、プライベートIPアドレスとグローバルIPアドレスを変換する仕組み。NATの内側の端末は外部から直接接続できないため、P2P通信の大きな障壁となる。
STUN(スタン)
NATの内側にいる端末が「外部から見た自分のIPアドレスとポート番号」を知るためのプロトコル。ホールパンチングの前提となる情報を提供する軽量なサーバー。
TURN(ターン)
ホールパンチングでも直接接続できない場合に、通信を中継するサーバーおよびそのプロトコル。確実につながる反面、中継サーバーの帯域コストがかかるため最後の手段として使われる。
ホールパンチング
NATの内側にいる2つの端末が、互いに同時にパケットを送り合うことでNATに「穴」を開け、直接通信路を確立するテクニック。STUNで得た情報をもとに行う。
シグナリング
WebRTCなどでP2P接続を確立する前に、互いの接続情報(IPアドレス候補、暗号鍵情報など)を交換する手続き。この交換自体は通常、中央のシグナリングサーバーを介して行われる。
フラッディング
検索クエリなどのメッセージを、隣接する全ピアへ次々に転送していく方式。単純で確実だがネットワーク負荷が大きく、非構造化P2Pのスケーラビリティ問題の原因となった。
フリーライダー
ダウンロードだけ行い、アップロード(貢献)をしない参加者。フリーライダーが増えるとネットワーク全体の供給力が低下する。BitTorrentのtit-for-tat戦略はこの対策の代表例。
コンテンツアドレッシング
データの「置き場所(URL)」ではなく「内容のハッシュ値」でデータを指し示す方式。IPFSが採用しており、同じ内容なら誰が保持していても同じアドレスになるため、分散環境での重複排除や検証が容易になる。
ブートストラップノード
P2Pネットワークへ新規参加する際、最初の接続先となる既知のノード。ここから他のピアの情報を得てネットワークに合流する。完全分散システムにも「最初の入口」は必要となる。
ビザンチン障害
停止するだけでなく、嘘のメッセージを送る・相手によって矛盾した応答をするなど、任意の(悪意的な)振る舞いをする故障。この障害に耐えられる合意アルゴリズムをBFT(ビザンチン・フォールト・トレラント)と呼ぶ。
ファイナリティ
記録された取引が「もう覆らない」と確定する性質。PBFTなどのBFT型は合意した瞬間に確定する即時ファイナリティを持ち、PoWは後続ブロックが積まれるほど覆りにくくなる確率的ファイナリティを持つ。
ナカモトコンセンサス
Bitcoinが導入した合意方式。PoWでブロック追加権を抽選し、分岐時は最も累積計算量の多いチェーンを正とする。参加自由なオープン環境で初めて実用的な合意を実現した。
スラッシング
PoSにおいて、矛盾した二重投票などの違反をしたバリデータの預け金(ステーク)を没収するペナルティ。Nothing at Stake問題への対策であり、PoSの安全性の要となる仕組み。
バリデータ
PoSネットワークで通貨をステークし、ブロックの提案・検証・投票を行う参加者。PoWのマイナーに相当する役割で、正しく稼働すれば報酬を得て、違反すればスラッシングされる。
DID(分散型識別子)
W3C標準の分散型識別子。did:メソッド名:識別子の形式を持ち、解決すると公開鍵などを含むDIDドキュメントが得られる。特定の事業者に依存せず、本人が管理できるのが特徴。
検証可能クレデンシャル(VC)
発行者のデジタル署名付きで属性(学位、資格、年齢など)を証明する電子証明書。保有者が自分のウォレットで管理し、検証者は発行者へ問い合わせることなく署名だけで真正性を確認できる。
マルチシグ
資産移動などの操作に、N人の鍵保有者のうちM人以上の署名を要求する仕組み(M-of-N)。単一の鍵の盗難・紛失がすべての喪失につながる単一障害点を排除する。
しきい値署名(TSS)
秘密鍵を断片として複数者に分散したまま、完全な鍵をどこにも復元せずに協調計算で単一の署名を生成する暗号技術。外部からは通常の署名と区別が付かない。
スマートコントラクト
ブロックチェーン上にデプロイされ、定めた条件が満たされると自動実行されるプログラム。仲介者なしに合意内容を確実に執行できる反面、コードのバグも確実に実行される。
ガス(Gas)
Ethereumなどでスマートコントラクトを実行する際に必要な手数料の単位。処理量に比例して課金され、無限ループなどによるネットワーク濫用を防ぐ役割も持つ。
再入攻撃(リエントランシー)
送金処理の途中で外部呼び出しの隙を突き、状態が更新される前に同じ関数を再帰的に呼んで資金を抜き取る攻撃。2016年のThe DAO事件の原因となった。
オラクル問題
決定論的に動くスマートコントラクトが、価格や天候など外部の現実世界の情報を自力で取得できない問題。橋渡し役のオラクルが誤ったデータを流すと、正しいコントラクトも誤動作する。
シビル攻撃
一人の攻撃者が大量の偽アイデンティティを作り、多数派を装ってネットワークを支配する攻撃。PoW/PoSは偽造できない希少資源(計算力・資産)で発言権を測ることでこれに耐性を持つ。
Eclipse攻撃
標的ノードの接続先を攻撃者ノードで包囲し、正常なネットワークから隔離する攻撃。標的に偽の情報だけを見せ、二重支払いなどに悪用される。接続先の多様化が対策。
自己利益的マイニング
掘り当てたブロックを秘匿し、他者に無駄な採掘をさせてから公開することで取り分を不正に増やすPoWの攻撃戦略。過半数未満の計算力でも成立しうる。
DApps(分散型アプリ)
フロントエンド・スマートコントラクト・分散ストレージから構成され、中央サーバーに依存しないアプリケーション。運営者が勝手に停止・変更できないのが特徴。
DAO(分散型自律組織)
トークン保有者による投票で運営される組織。資金庫(トレジャリー)はマルチシグやスマートコントラクトで管理される。
L2 / ロールアップ
ブロックチェーン本体(L1)の外で取引をまとめて処理し、結果だけをL1に記録することで手数料と混雑を軽減するスケーリング技術。多数の取引を1つに圧縮するロールアップが主流。
ゴシッププロトコル
各ノードがランダムに選んだ相手へ情報を伝えることを繰り返し、疫学的な拡散でO(log n)ラウンドの全体伝播を実現する方式。構造を持たないため障害やチャーンに極めて強い。
チャーン(Churn)
P2Pネットワークでノードが頻繁に参加・離脱を繰り返す現象。DHTのルーティングテーブル維持やデータ複製の設計は、チャーンへの耐性を中心に組み立てられる。
AOI(関心領域)
仮想空間内でアバターが情報を受け取る必要のある範囲(Area of Interest)。P2P仮想環境では、AOIが重なるピア同士だけが接続・同期することでスケーラビリティを確保する。
デッドレコニング
位置情報を毎回送る代わりに、速度などから相手の現在位置を外挿し、誤差が閾値を超えたときだけ補正を送る同期技法。ネットワークゲームの帯域削減の古典。
CRDT
更新の到着順序が入れ替わっても全レプリカが同じ状態に収束するよう設計されたデータ型(競合フリー複製データ型)。中央調停なしの共同編集やP2P状態同期に使われる。
ICE
直結・STUN経由・TURN経由といった通信経路の候補をすべて試し、疎通確認のうえ最良の経路を自動選択するNAT越えの統合フレームワーク。WebRTCで標準採用。
ランデブーサーバー
NAT配下のピア同士がホールパンチングを行う前に、互いのパブリック/プライベートエンドポイントを交換するための仲介サーバー。接続確立後は不要になる。
Symmetric NAT
通信の宛先ごとに異なる外部ポートを割り当てるNAT。STUNで調べたポートが相手との通信では使われないため、標準的なホールパンチングが通用しない。ポート予測や多ポート同時試行、TURNで対処する。
クォーラム
分散システムで操作の成立に必要な最小限の賛成ノード集合。過半数クォーラムは「どの2つのクォーラムも必ず交わる」性質を持ち、PaxosやRaftの安全性の土台となる。
リーダー選出
分散合意で調整役となる1ノードを選ぶ手続き。Raftではランダム化タイムアウトとterm(任期)により、票割れを避けつつ迅速に新リーダーを立てる。
ログレプリケーション
リーダーが受け付けた命令列(ログ)をフォロワーへ複製し、過半数へ行き渡った時点でコミットとする仕組み。RaftやMulti-Paxosによる状態機械複製の中核。
term(任期)
Raftにおける論理的な時間の単位。単調増加する番号で、各termには高々1人のリーダーしか存在しない。古いtermのメッセージを拒否することで、時代遅れのリーダーによる混乱を防ぐ。

関連する学術文献は参考文献ページにまとめています。

09. よくある質問

FAQ:P2Pの疑問に答えます

P2Pについて初学者の方からよく寄せられる質問と、その回答をまとめました。質問をクリックすると回答が開きます。

いいえ。P2Pはあくまで通信方式の一つであり、技術そのものは完全に合法です。ビデオ会議(WebRTC)、Windows Updateの配信最適化、オンラインゲームの通信、ブロックチェーンなど、日常的なサービスの多くがP2P技術を利用しています。違法となるのは、著作権で保護された映画や音楽などを権利者の許可なく共有・ダウンロードするといった「使い方」です。日本では著作権法により、違法にアップロードされたコンテンツと知りながらダウンロードする行為も規制対象となっています。技術と用途を区別して理解することが大切です。