ビットコインに学ぶブロックチェーンの真髄#4 P2P通信
昨今話題のブロックチェーン技術について、その概要と詳細な仕組みを10 回くらいの連載を通じて詳しめに解説していくシリーズの第4回目になります。
第3回目はこちら
シリーズ全体はこちら
前回までの記事を通じて、ブロックチェーンの概要や大まかな仕組み、メリット等の外枠の部分を理解していただけたかと思います。今後の記事ではより詳しく「なぜブロックチェーンという仕組みが成り立つのか」に焦点をあてて解説していきます。
さて、以前の記事でブロックチェーンは以下の3つの技術と仕組みで構成されていると説明しました。
・P2P通信
・暗号技術
・コンセンサス・アルゴリズム
これらの技術について一つずつ深堀りしながら、最終的には頭の中でブロックチェーン(主にビットコイン)を動かせるようになることを目標に解説を進めます。今回はP2P通信についてです。
デジタル通貨システムを一から構築する
さて、私たちの目的は「確実に安全性を保障できるトラストレスなデジタル通貨システムを作ること」であるとしましょう。トラストレスとは「特定の誰か(何か)を信頼していなくても使える」という意味であり、言い換えれば、どんなに悪い人がシステムに参加していたとしても他の利用者は問題なく利用できるということです。
たとえば、日常的なお金のやり取りを考えてみましょう。あなたが友人にお金を渡すとき、現金で直接渡せば、何の問題もなく取引が完了します。たとえ友人があなたのことを信頼していなかったとしても、紛れもなく現金は現金としての価値を持つので、取引に支障はありません。この取引はトラストレスであると言えます。
上記の取引は、現金を直接渡す必要があるので、両者が近くにいるときにだけ成立します。では、あなたと友人が遠く離れた場所にいる場合、あなたはどのようにして友人にお金を渡すでしょうか。きっと、銀行などの第三者機関を利用してお金を渡すと思います。実はここに「信頼」が発生しているのです。普段私たちはあまり意識していませんが、「銀行はちゃんと友人にお金を渡すだろう」と信頼してお金を預けているのです。
私たちの生活を振り返ってみると、銀行に限らず、政府や企業などあらゆる機関に依存していることが分かります。この状態が危険かどうかは個人の感覚によりますが、ブロックチェーンを推進する人々は「信頼しなければならないような機関を置かずともうまく機能するようなシステムがあってもいいよね」という思いでトラストレスなシステムの開発をしていると思います(たぶん)。
抽象的な説明になってしまったのでイメージしづらいかもしれませんが、とても簡単にいえば、権力が一極集中するような場所や機関をシステムの中に作りたくないということです。
さて、本題に戻ります。通貨システムを作るにあたって、最初に必要になるのは何でしょうか?
デジタル通貨のやり取りなので、まずは情報を電子的に送受信できるネットワークを構築することが必要になります。個人のデバイスを通信させてネットワークを構築する方法は大きく分けて「P2P型」と「クライアント・サーバー型」の2つがあります。ブロックチェーンで利用されるのはP2P型になります。
P2P型通信とクライアント・サーバー型通信
P2Pとは Peer to Peer の略で、訳すと「同等のもの同士(を繋ぐ)」という意味合いになります。P2P型では、個々の端末(ノード)同士を直接つなぐことによって全体としてネットワークを構築するという仕組みになっています。イメージとしては自分のコンピュータが近くの数台と繋がって、その数台がさらに数台のコンピュータと繋がって、ということを繰り返して最終的に個々のコンピュータを分岐点としたネットワークができあがるといった具合です。
一方でクライアント・サーバー型では、個々の端末が中央のサーバを経由してつながるという仕組みになっており、ネットワークを構築するノードがサーバーとクライアントという2つの役割に分かれることからその名がついています。
Twitterやメールなどでメッセージを相手に送ると、その内容がすぐに相手の端末に表示されるので、あたかも端末同士が直接つながっているかのように感じます。しかしそれらの多くは直接通信しているわけではありません。それぞれの端末がサービスを提供する企業が管理するサーバーを経由してデータを受け取っているにすぎないからです。このような方式はクライアント・サーバー型になります。
スマホやパソコンがあればP2P通信をすることが可能です。つまりスマホやパソコンが普及した現在においてはほとんどの人がP2P通信が可能であるということです。
P2P型のメリットは「障害への耐性」です。P2P型によるネットワークでは複数のコンピュータが相互につながっているため、どこかのコンピュータが攻撃されたり故障したりしてもネットワーク自体に支障はなく、データのやり取りを継続することが可能です。一方でクライアント・サーバ型の場合、サーバがダウンしてしまうと、たとえクライアントに問題がなかったとしてもクライアントはデータのやり取りができなくなります。
逆にP2P型のデメリットとなるのが「無法性」です。P2P型通信では中央で統括的に管理する機関が存在しないため、ネットワークの秩序や、情報の正確性を保証することが基本的にできません。したがって、P2P型通信を使ってある程度の機能を備えたネットワークを作るのであれば、ネットワークの参加者の行動を規定するようなルールを綿密に作り上げる必要があります。
先ほど書いた通り、ブロックチェーンではP2P型が採用されています。なぜなら、中央にサーバーを置くとなると、そこが単一障害点となり、外部から攻撃され、データが改ざんされてしまう可能性があるからです。それに「その中央サーバーを誰が管理するのか?」という問題が生じ、仮に管理者を置いた場合その管理者を信用する必要が出てきてしまうためトラストレスなシステムではなくなってしまいます。そのような理由からブロックチェーンでは、どの端末も平等に扱えるP2P型を基盤ネットワークの通信方式として採用します。
P2P型の種類
P2P型の中にも「ハイブリッドP2P」と「ピュアP2P」の2つの種類があります。
ハイブリッドP2P:ノード検索や認証はサーバが行い、データの転送はノード同士で直接行う方式のことです。セキュリティ管理が行いやすい、検索が速いといったメリットを持ちますが、サーバが単一障害点となるため、障害への耐性は低いです。
ピュアP2P:全てのノードが対等で、ノード同士の通信によって検索やデータ転送が自律的に行われる方式のことです。メリットは上記の通り「障害への耐性」であり、デメリットはサービスとしての実装の難しさなどが挙げられます。
ブロックチェーンはトラストレスにこだわるので、もちろん「ピュアP2P」を採用します。「ハイブリッドP2P」ではノード間で上下関係が生まれるため、ネットワークの平等性が失われてしまいます。
ブロックチェーンとP2Pファイル共有ソフト
P2Pネットワーク上でデータを共有するという意味では、2000年代初頭に流行したNapsterやWinnyなどのようなP2Pファイル共有ソフトとブロックチェーンは同じことをしているように感じるかもしれません。この2つの違いは何でしょうか。
P2Pファイル共有ソフトとブロックチェーンには「ノードのデータ保有量」と「ノードを維持するインセンティブ」という2つの違いがあります。
ノードのデータ保有量
P2Pファイル共有ソフトでは、ノードが持っている情報はそれぞれバラバラであったため、欲しい情報のリクエストを出して、その情報を持っているノードが見つかるまでバケツリレー的にリクエストを回し続けるという方法が一般的でした。一方ブロックチェーンでは全てのノードが全てのデータを保有しています。
ノードを維持するインセンティブ
P2Pファイル共有ソフトにはノードを常時オンラインにしておくメリットはありません。欲しいファイルがあるときにだけ接続すればよいのです。一方でブロックチェーンではノードを常にオンラインにしておくメリットがあります。なぜなら、帳簿の更新作業に参加すれば、一定の確率で報酬を得られるからです。この報酬がノードを維持するインセンティブとなり、それがネットワークの維持につながります。
*ノードの中にも、すべてのデータを持つノードと一部のデータだけを持つノードがあります。今回の記事で登場する「ノード」は「ブロックチェーンの情報を全て持ったノード(フルブロックチェーンノード)」を指しています。
おわりに
P2P型通信により、中央のサーバに依存しない、平等なデータ交換ネットワークを作ることができました。ただし、この状態のネットワークではルールが整備されていないため、お金のやり取りという正確性が要求される作業はとてもできません。次は安全にお金のやり取りを行うための環境づくりに入っていきます。次回のテーマは「暗号技術」です。
このシリーズは『あたらしい経済』で私が執筆した「ブロックチェーンは今までのシステムと違って何がすごいのか〜ノンプログラマーでも解るブロックチェーン入門」シリーズを大幅に加筆修正したものになっています。
この記事が気に入ったらサポートをしてみませんか?