5分で理解したつもりになるBlockchain(ブロックチェーン)
P2Pのファイル共有ソフトの仕組みってご存知ですか?
実はブロックチェーンの基本的な仕組みはP2Pのファイル共有ソフトの仕組みと非常に似ています。
ちょっと簡単に説明してみましょう。
P2Pネットワークの模式図
ノード … P2Pのファイル共有ソフトを起動しているパソコンだと思ってください。
各パソコンはネットワーク(インターネット等)を経由して、それぞれのノード同士で通信が可能な状態となっています。
ファイル共有の仕組み
赤色のノードがあるファイルを入手しようとしたした場合を考えてみます。
赤色のノードが求めているファイルは青色のノードが持っています。
- 赤色のノードは自分が接続している他のノード(この場合、右側のノードと下のノード)に「ファイルをくれ」と要求します。
- 右側のノードと下のノードは「ファイル」を保持していないため、さらにそのノードが接続しているノードに同様に問い合わせていきます。
- 最終的に青色のノードが該当の「ファイル」を保持していることがわかります。
- ファイル要求を受けた青色のノードは「ファイル」を赤色のノードに転送します。
これにより赤色のノードは、P2Pネットワークを経由して欲しいファイルの入手が可能となります。
ファイルの転送について
ファイル自体は要求が伝搬してきた経路を同様に辿って転送したり、
青色のノードと赤色のノードが直接P2P通信できるようにして転送したりなど、
非常に凝った(なるべく早くファイル転送が完了させるために)様々な手法がありますが、ここでは割愛します。
絶対に落ちないネットワーク
P2Pネットワーク上で共有(誰でもダウンロードできるようにする状態)した場合には、(ほぼ)削除することが出来ません。
それにはこんな理由があります。
特定の管理者 がいない
もし削除したい場合は、保有している全ての人に対して削除を依頼する必要がありますが、
そもそも誰が共有しているかということさえも匿名化されていることが多く、
依頼すること自体が困難です
(IPアドレス等から情報開示請求等で公開者を特定することもできなくはないですが、海外の場合は完全にお手上げに近い状態になります)
簡単にノードとして参加できる
誰でも簡単にノードとしてP2Pネットワークに参加することが出来ます。
そしてそれを防ぐ方法もまた難しいです
このことにより、P2Pネットワーク自体が維持され続けることになります
Blockchain(ブロックチェーン)とは?
さてブロックチェーンの話に戻しましょう。
ブロックチェーンとP2Pファイル共有ソフトが似ているとしました。
ブロックチェーンもP2P技術を用いて構築されている分散ネットワークの1種類です。
ファイル共有ソフトと異なる点は次の点となります。
- 全部のノードが「ブロックチェーン」と呼ばれるデータを保有している
- 全部のノードが保有している「ブロックチェーン」のデータの中身は(ほぼ)同じ
- 「ブロックチェーン」への書き込み/読み込みは全てのノードが可能で書き込んだ内容は他のノードに共有される
まとめると、ブロックチェーンとは
P2Pネットワーク上で、誰でも(※1)書き込めかつ読み込めるファイル共有システム
といえます。
どうやって複数のノードで同一のファイルを共有しているのか?
ブロックチェーンはその名の通り、ブロックと呼ばれるデータが数珠つなぎになったデータ構造をしています
イメージしやすいようにExcelに例えると以下のような感じです。
- ブロックチェーン … Excelファイル
- ブロック … Excelのシート
さて、ご経験がある方もいるかと思いますが、Excelファイルを複数人で共有するとどのようなことが起こるでしょうか?
そう、同時編集の問題が発生しますね。
- 誰かがExcelファイルを開いていると編集できない => 開いている人のところへ行って閉じてくださいとお願いする
- 編集できないから、元ファイルをコピーして、
在庫管理表_最近.xlsx
というファイルを作ってそこに追記していく
分散ネットワークは 数百,数千,数万のノードが参加します、数人でもこんなに面倒なのにどのようにして同じファイルを共有しているのでしょうか?
それを解決するためにこんなルールがあります。
ブロックチェーンを更新するためのルール
「ブロックチェーン.xlsx」というファイルを複数の人が保有しているものとします。
複数の人がこのExcelファイルを更新してしまうと、 どのファイルが正しいのか、追加した内容が他の人によって消されてしまった などの問題が発生してしまいます。
そのため、このExcelファイルを更新する上では以下のルールがあります。
- 共有したい内容は「新しいシート」を追加して、そこに記載していくこととします。(既に何か記載されているシートの内容の変更ができません。)
- シートの中身には所定のフォーマットがあります。
- 「新しいシートを追加した」Excelファイルを保存する際にパスワードを聞かれるようになっています。
なお、
「新しいシートを追加する」 = 「ブロックを書き込む」
ことを「採掘」や「マイニング」と呼びます。
新しいシートを追加するためのパスワードを見つけた場合
- パスワードを見つけたノードは自分が管理している「ブロックチェーン.xlsx」にデータが追加されます。
- 他のノードに「前のシートの名前」、「共有したい内容」、「パスワード」を伝達します。
- 各ノードの「ブロックチェーン.xlsx」に対して、伝達された内容を入力し、「パスワード」を入力することで保存ができることを確認します。
ここでポイントなのは、ブロックチェーン.xlsxのファイル自体を送るのではなく、 「新しいシート」に書き込む内容を送る点です。
これには次の2つのメリットがあります
- 改造されたExcelファイルを受け付けない(正規のExcelファイルに対して送られてきた内容で書き込めるかのチェック)
- Excelファイルが巨大になった場合(数GBなど)、その伝達に時間がかかるが、新しいシートに書き込む内容のみを送ればそれほど時間はかからない
まとめ: 結局ブロックチェーンとは?
- ブロックチェーンは同じExcelファイルをみんなで共有しようとしているシステム
- みんなで共有するために、データの書き込みに制限が加えられている(新しいExcelシートを追加する、追加するにはパスワードを探さないといけない)
今回は既に何か記載されているシートの内容の変更ができません。
という文言でしか触れていませんが、
もう一つ重要な特徴として、過去のシートの中身の変更ができない => 改ざんが出来ないという点があります。
こちらについては次回説明しようと思います。
終わりに
5分制限でしたので、中々まとめるのが大変でした。 わかりにくいところが多々あるかと思いますが、ご容赦ください。
おすすめの本をご紹介しておきますね(アフィリエイト)
ついでに欲しいものリストも
※1: 誰でも
今回は全世界の誰でも書き込める/読み込めるパターンについて記述しているが、以下のパターンもある
Permissioned Blockchain(許可型ブロックチェーン)
- 限られた人のみしか書き込めない/読み込めない
- 限られた人のみしか書き込めない/誰でも読み込める
対義語は Permissionless Blockchain
許可型ブロックチェーンにおいて更に細分化された以下のような呼ばれ方をすることもある
- Consortium Blockchain(コンソシアム型ブロックチェーン)
(提携した)特定の企業間のみで書き込める/読み込めるBlockchain
Permissioned Blockchainの中でも、`特定の企業間`というところを強調したような言い方
銀行業界で積極的な様子 - Private Blockchain(プライベートブロックチェーン)
ある企業内のみでしか書き込めない/読み込めないBlockchain
ようするにBlockchainの分散データベース技術を使っただけのただのデータベース
IoTなどと相性が良い