もずく・Ð・図解屋です。
オズモンの入門編シリーズの最後はP2Pネットワークについてです。
ネットワークと暗号通貨って直接関係なさそうやん…と思うかもしれませんが、国や企業などの権力に干渉されない通貨を実現するためには、管理者の存在しないP2Pネットワークでその台帳を維持・管理する必要があります。
しかし、管理者がいないということは誰でも自由に台帳を改ざんできるというなので、通貨の信頼性を担保することが難しくなります。
そうした課題のあるP2Pネットワーク上で電子コインを実現する方法を見つけたのがビットコインなのです。
この回が終わったら、当初の目的だったBitcoin論文(サトシ・ナカモト論文)の読み解きに入っていきたいと思いますが、Bitcoin論文では電子コインをP2Pネットワーク上で流通させる(台帳管理する)というところから話が始まっています。
なので、前提知識としてP2Pネットワークの基本は押さえておく必要があります。
ということで、オズモンに話を代わりましょう。
やあ、魔法使いのオズモンだよ💫
これまでは魔法の世界での“配送”の話を中心にしてきたけど、今日はちょっと趣旨を変えて、魔法の世界のデータ共有システムの話をしよう。
魔法の世界では、例えば、誰かが考えた魔法が魔法書に記されると、それを取り寄せて閲覧できるシステムがあるんだ。
え、魔法書といえば、厳かな図書館の天井にまでそびえ立った本棚に置かれているんじゃないの?って思ってる人も多いよね。
チッチッチ👆 古いんだな、情報が。
魔法も一つのテクノロジーだからね、社会を便利で快適なものにするために使用するのだよ。
というわけで、大昔、ボクが魔法学校を卒業してまず初めに作ったのが下の図にあるようなデータ共有システムなんだ。
魔法書のデータがたくさん記録されている水晶玉があって、閲覧用の水晶玉からそれに接続することで、記録されているデータを閲覧することができる。
そのうちみんな写真とか動画とか魔法書以外のデータまで記録するようになったから、データ記録用の水晶玉は無数に設置されて、それぞれに住所みたいな名前が付けられるようになった。
魔法国オズにある魔法学校ハグワーツの水晶玉なら「水晶玉.hugwarts.oz」…みたいに。
そして、指定住所にある水晶玉のデータを簡単に取り寄せるために、住所録を扱うための専用の水晶玉も用意した。
「どこに 何があるか 探す」ための水晶玉なので、略してDNSと呼ばれたりもするんだけど、今日はそれ以上踏み込まないでおこう。
ちなみに、データ記録用の水晶玉はデータのお世話(給仕)をするから給仕玉といい、閲覧用の水晶玉はそのデータを取り寄せて閲覧するお客様だからお客玉という。
そして、このシステムはこれら2種類の水晶玉が集まってネットワークを構成しているから、「給仕玉-お客玉ネットワーク」と呼ばれているんだ。
さて、この給仕玉-お客玉ネットワークなんだけど、給仕玉だけが重要な役割を担っていることから、いくつか欠点があるんだ。
1. 特定の給仕玉にたくさんのお客玉が接続すると、給仕玉の処理が追いつかなくなる(酷いときは停止する)
2. 何らかの要因で給仕玉が壊れると、そこに記録されていたデータが全部消えてしまう
3. 給仕玉の管理者(責任者)はそこに記録されたデータを自由にコントロールできる
このうち1と2の欠点については、ワルでお馴染みアクマくんがいたずらで大量接続や破壊攻撃してきたりもするから厄介。
給仕玉は「水晶玉.hugwarts.oz」というように住所までバレているわけだし、悪い人たちからしたら攻撃しやすいよね。
3の欠点は、管理者が悪い人だったりすると、給仕玉に記録されているデータを勝手に書き換えたり、他人に売っちゃうかもしれない。
通常は、個人データは暗号化して本人にしか閲覧できないようにしたりするんだけど、本当に安全かどうかは管理人次第なわけ。
それから小難しい話になるけど、「データの責任者」が明確であるということは、権力の介入を受けるということでもあるんだ。
例えば、給仕玉の責任者が魔法国の王様から「そのデータを消せ」と言われれば、もう消さざる得ないわけ。
ボクは、魔法使いは権力から自由であるべきだと思ってる。
だから、この3番目の欠点が特に気に食わないんだ。
ということで、給仕玉-お客玉ネットワークに代わる、別のデータ共有システムを考案したというわけ。
このシステムでは給仕玉という存在を無くしてしまう。
すべての水晶玉が同じ能力(役割)を持っていて、データはある水晶玉からある水晶玉へ、「水晶玉 to 水晶玉」で流れるんだ。
だからこの新しいシステムを、ボクは「玉2玉ネットワーク」と呼んでる。
二つのネットワークを並べて図示するとこんな感じ。
給仕玉がないならデータはどこに記録されているかというと、いくつかの水晶玉に重複して記録されている。(一つのデータを分割して複数の水晶玉に記録する方法もあるんだけど、難しいのでここでは割愛するね)
で、データが閲覧したいときには、近くの水晶玉に「データ○が欲しいんだけど」と伝える。
その希望を聞いた水晶玉は、自分がそのデータを持っていなければ、近くの水晶玉に「データ○が欲しいんだけど」と伝言する。
玉2玉ネットワークでは、こうやって伝言ゲームのようにして希望するデータを持っている水晶玉を探す。伝言は複数の水晶玉に伝えていくから、その数はねずみ講的に増えてあっという間に広がっていく。
そして、データ◯を持っている水晶玉△にまで伝言が伝わると、今度は「水晶玉△が持っているよ」という伝言を逆伝播させていきます。
そして最終的に、データ◯を欲しがった水晶玉に「水晶玉△が持っている」という伝言が伝わり、それらの水晶玉が直接接続してデータを送る。
なぜ伝言ゲームみたいなまどろっこしいことをするかというと、玉2玉ネットワークの水晶玉は住所を持っていないから。
そもそも、「どの水晶玉がどのデータを記録しているか」を誰も知らないので、近くの水晶玉に訊くしかないし、遠くの別の水晶玉に訊くには伝言ゲームしか方法がないんだ。
そのかわり、複数の水晶玉に同じデータを持たせることができるから、さっき挙げた給仕玉-お客玉ネットワークの欠点が解消される。
同じデータを複数の水晶玉が持っているから、すごく人気のあるデータでも一つの水晶玉に問い合わせが集中することがない。
もしアクマくんがいずれかの水晶玉を破壊しても、他の水晶玉が同じデータを持っているからネットワーク上から消失してしまうことはない。
それから、データの責任者(管理者)が一つに定まらないように、データはいろんな方法で複数の水晶玉にコピーされていく。
だから、偉い人の気に食わないデータを自分の水晶玉が記録していたとしても、「知らないうちに記録されてたもので自分の責任じゃない」と言い訳できるし、自分の水晶玉からデータを消したところでネットワーク上にはたくさんのコピーが残っている。
言い換えれば、玉2玉ネットワークに一度記録されたデータは、誰かが消そうとしても難しいんだ。(消せるようなシステムにすることもできるけどね)
そうそう、このデータ共有システム、人間界にはもちろん移植されていて、給仕玉-お客玉ネットワークは「サーバ-クライアント(方式)ネットワーク」と呼ばれているし、玉2玉ネットワークは「P2Pネットワーク」って呼ばれてるそうだ。
英語にすりゃいいってもんじゃないよね!
…というわけで、P2Pネットワークのお話でした。
P2Pネットワークには、誰がどのデータを持っているかが記録されたリスト(インデックス)を備えたハイブリッドP2Pやスーパーノード型P2Pというものもあるのですが、今回の話はビットコインで使用されているピュアP2Pの説明です。
また、P2Pネットワークの用途も色々とあるなかで、ビットコインに使用されている「分散データ管理」に絞って説明しました。
他の用途としては、ビデオチャットや動画配信などでもP2Pネットワークは使われています。これらは「特定のサーバに負荷を集中させない」というP2Pの特性を活かしたものです。
あと、ファイル共有システム Winny も覚えている人がいるかもしれません。ブロックチェーン界隈では2018年7月にTronに買収されたBitTorrentも有名ですね。
今回の話を真面目に理解しようとするとインターネット(ネットワーク)に関する知識が色々と必要になるので、読んでいて余計に疑問が募ったかもしれません。
この記事で大体の概要がつかめた人は、P2Pネットワークについてもう少し詳しく書かれたネット記事や書籍を参照してくださいね。
さて、これでBitcoin論文を解説するための下準備が整いました。次回からは、Bitcoinの元になったオズモンのMPcoinの解説に入ります。
そうなんです、なんとあのBitcoinも、オズモンの発明をサトシ・ナカモトがこっそり盗んだ技術だったんですね~(驚き!)
楽しみですね!