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