ビットコインのブロックチェーンというものを超簡単にいってみる

仮想通貨がバブリーで何かと話題ですが

「ビットコイン」の終わりから「ブロックチェーン」の時代へ--中島真志

仮想通貨なんておまけみたいなもので、ブロックチェーンにこそ本当の価値があるという話をよく聞きます。


でも僕はこれには懐疑的な立場で、やっぱり仮想通貨にこそ本当の価値があってブロックチェーンはそれのおまけみたいなものだと思うのです。


世の中のブロックチェーンの解説って読んでもよくわかなかったりすることも多いですが、そこでブロックチェーンを超簡単にいってみることにチャレンジ。

ブロックチェーンは基本的にはただの配列。ただし、以下の特性がある。

  • 配列に要素を追加するのに(配列の要素を作るのに)あえてすごい計算コストがかかるような実装になっている
  • 配列の要素はその1つ前の要素の情報を復元する情報を持っている


これだけでまじでただの配列です。



仮想通貨では、P2Pを使ってこの配列を参加者みんながそれぞれのPCで持っている状態です。そして、誰かの送金があった場合は参加者みんなでこの配列に新しい要素(送金情報)を追加しようと試みて、一番速く要素を追加出来た人の配列がみんなに配布されることになります。

このように送金があった場合にはみんなのPCでそれを処理して一番速かった人の結果が採用されるので、特定の管理者がいない非中央集権型であるといわれているわけです。



ブロックチェーンでもう1つすごいと言われてるのが、この配列が改竄出来ないことです。しかしブロックチェーンがただの配列であるとすると、上記の特性の中にはどこにもセキュリティの特性はなく書き換えし放題のように見えます。


実はブロックチェーン自体には直接的に改竄を防ぐ仕組みはありません。ありませんが、ここまで述べた

  • 配列に要素を追加するのにあえてすごい計算コストがかかるような実装になっている
  • 配列の要素はその1つ前の要素の情報を復元する情報を持っている
  • 一番早く要素を追加出来た人の配列が最新版としてみんなに配布される

この3つの特徴を兼ね揃えることで、配列を書き換えることが不可能になるのです。


悪い人が配列を書き換えようとして失敗するまでの流れとしては、

  1. とりあえず配列の特定の要素を書き換える。(1億円げっと)
  2. ブロックチェーンの特性から、書き換えた要素の1つ後の要素は、書き換えた要素を復元出来なければならない。そのため1つ後の要素を作り直す必要がある。
  3. 1つ後の要素を作り直すと、こんどはその1つ後の要素も同様に作り直す必要がある。というのがどんどん連鎖するので、書き換えた後の要素を全て作り直すことになる。
  4. ブロックチェーンの特性から、配列の要素を作るのにはすごい計算コストがかかるので複数の要素を一気に作り直すのは超大変で時間がかかる。
  5. そうこうしてるうちに、他の誰かがどんどん配列に要素を追加していってしまうので、全部書き換えるのむりぽ。中途半端に書き換えた配列は誰からも見向きもされず電子の闇へ葬り去られる。


これがブロックチェーンが改竄出来ない仕組みです。

ただ同時にこれがブロックチェーンって流行らないのではと思う理由であり、この仕組みがちゃんと起動するシチュエーションってなかなか限られてると思うんですよね。

  • 常に(仮想通貨なら送金などで)配列に要素を追加するイベントが起き続ける必要がある。そうでないと改竄者が追い付いてしまう。
  • 悪意のある参加者のマシンスペックが他の参加者のマシンスペックの合計値を上回ってしまうと書き換えが可能。そのため、参加者はある程度たくさんいる必要がある。
  • 参加者は常にPCを立ち上げて配列に要素を追加する計算をし続けていなければならない。
  • あえて要素の追加に時間がかかるようにしているのでサーバー型に比べてイベント処理能力が低いため、イベントは処理能力を超えない程度の頻度である必要がある。


仮想通貨は、この制約自体が仮想通貨に合うように初めから設計されているので良い感じだと思うんですよ。ただ、今すであるものにこの制約を課すのはなかなか難易度が高いと思いますね。


もちろんその発想はなかった的なものが出てくるのかもしれないですが、少なくとも、うちの企業でも何か管理するのにちょっくらブロックチェーン使ってみよーみたいなノリで使えるようなものじゃないのではないですかねぇ。