最近、よく「ブロックチェーン」というキーワードをよく耳にするようになったかと思います。
Web3.0とかNFTとか仮想通貨の話題になると必ずと言っていいほど出てきますよね。
しかしそれが何なのか、それの何がすごいのかよくわからないという方も少なくないのではないかと思います。
ということで、できるだけ簡単にまとめてみました!
ブロックチェーンって要するに何?
一応、日本ブロックチェーン協会(協会があるんですね)の定義によれば、以下のようになっています。
1)「ビザンチン障害を含む不特定多数のノードを用い、時間の経過とともにその時点の合意が覆る確率が0へ収束するプロトコル、またはその実装をブロックチェーンと呼ぶ。」
2)「電子署名とハッシュポインタを使用し改竄検出が容易なデータ構造を持ち、且つ、当該データをネットワーク上に分散する多数のノードに保持させることで、高可用性及びデータ同一性等を実現する技術を広義のブロックチェーンと呼ぶ。」
https://jba-web.jp/news/642
はい、意味不明ですね。筆者も訳が分かりません。「わかりやすく解説」と銘打っているので、かみ砕きたいと思います。
誤解を恐れずできるだけ簡単に説明すると、
複数のマシンで共有されている、改竄が非常に困難で安定した
一種のデータベース
と考えてもらえればいいと思います。
簡単にしすぎかもしれないかもしれないですね(笑) だけど、「ビザンチン障害」だとか「ハッシュポインタ」だとかは、その道の技術者のような方以外は知らなくても大丈夫です。
どうしてこんなに騒がれているの?
ここまで読むと、「結局データベースやろ、何がすごいん?」と思うかもしれません。しかしブロックチェーンには驚きの特徴があるのですね。その特徴とはなんと……
- 特定の誰かが管理者になっているわけではない
「複数のマシンで共有されている」という部分です。これらは対等な立場で、誰がリーダーなどという区別はありません。 - 改竄や削除を行うのが非常に困難
複数のマシンで共有されているので、その中の一つのマシンがサイバー攻撃に見舞われたとしても、他のマシンのデータですぐに復旧できます。同様の理屈で、そのマシンの中の一人が都合のいいように改竄・削除しようとしても、他のマシンたちと異なるデータと照らし合わせて無駄に終わるのですね。 - システムダウンが起きにくい
複数のマシンで構成されていますので、どれか一つのサーバーがダウンしても全体としては機能できます。 - 実質匿名で利用可能
ブロックチェーンで本人確認に必要とされるのは、その参加者に割り当てられたアドレスのみです。このアドレスというのは、規則性のない乱数ですので、個人と紐づくことはなく(その人が自分のアドレスを触れ回らないかぎり)、プライバシーは守られるというわけです。 - 透明性に優れている
各アドレス間の取引はすべてのネットワーク参加者に共有されますので、裏金などということが起こりません。
どうですか? すごいでしょう?
「え~、たしかにすごいかもしれないけど、騒ぐほどかぁ?」という声が聞こえてくる気がします。いまいちピンとこない方もいるかもしれません。
要するに、ブロックチェーンによって、
データが実在する物と遜色ない信頼性を持つようになった
と考えてもらえたらと思います。
どういうふうに使われるの? 何ができるようになったの?
ブロックチェーンによって、データの信頼性が現物レベルにまで跳ね上がりました。これによって、今までは「所詮形のないモノだし、ハッキングされるかもしれないし、さすがにデータには任せられないよね」とされていたものが、データで実現されるようになったのです。
ブロックチェーンは、「特定の管理者が存在しない」、「改竄されない」、「システムダウンしない」データベースだからです。
仮想通貨(データのお金)
まずは「データでできたお金」です。
データにお金を任せられるようになったのです。皆さんも聞いたことありますよね。お金をデータで実現した、ビットコインなどの「仮想通貨」です。
ブロックチェーンもまだ発展途上なので、価値が暴騰したり暴落したりと慌ただしい投資対象になっていますが、いずれ安定して、円やドルなどの法定通貨などと遜色ない信用を得るようになるかもしれません。
NFT(データのモノ)
次はデータ上の「データでできたモノ」です。
画像データや楽曲などは、今まではコピーとかできまくりで誰のものだったかわかったものではありませんでした。しかしながら、ブロックチェーンでその「モノ」の取引履歴がはっきりと記録されるようになりました。ブロックチェーンの外でその画像データなどの「モノ」をコピーしたところで、ブロックチェーンからはその人のものだとは認められません。ブロックチェーンの取引を介していないからです。そうして、データに明確な持ち主が定義されるようになりました。
デジタルアートに高値がついているのは有名な話かと思います。それも、そのアートを誰が所有しているかが明確になるからですね。
メタバース(データの土地)
そして、「データでできた土地」です。
メタバースというのは簡単に言うと「仮想空間」のことです。仮想空間自体は、別にブロックチェーン上でなくても実現できます。どこかの会社が大きなサーバーを立て、そこで土地や道路や家などの3Dモデルを作ってしまえばいいわけです。これ自体も素晴らしいことです。しかしブロックチェーン上に構築されると、ここに更なる価値が生まれます。
「そのブロックチェーンが存在するかぎり、たとえ開発者がいなくなったとしても、土地は存続し続ける」ということです。
もしもどこかの会社が自社のサーバーで仮想空間を構築しているとしたら、その会社が潰れたりサーバートラブルが起こったとき、その土地はなくなってしまいます。しかしブロックチェーン上で作られた土地は残り続けるのです。開発会社でさえも、「特定の管理者」ではないのです。
どういう仕組みなの?
ここから先の章はマニアックなので、興味の湧かない方はここで終わりにしてしまっても大丈夫です。
基本的な流れ
簡略化すると、取引が発生すると、ブロックチェーンでは下記のようにデータが処理されて行きます。
- 署名が行われた取引が発生し、取引履歴データが入力されます(これはブロックチェーン参加者全員に送られます)。
- ブロックチェーン参加者がその取引データを、「ブロック」と呼ばれるデータに変換します。
- ブロックが無事つくられれば、そのブロックを前のブロックの後ろに紐づけます。
- ブロックチェーンに参加している他のマシンたちでそれを確認し、正しそうだったら承認・共有します。
ブロックの中身
ブロックには、「取引データ、一つ前のブロックのハッシュ値、ナンス値」というデータが格納されています。このように、あるブロックは一つ前のブロックとハッシュ値によって関連付けられているので、ブロックチェーン、と呼ばれているわけです。
ハッシュ値とは、あるデータを元にして、ハッシュ関数という関数で計算されて出てくる値です。ハッシュ値は元データに対してほぼ1対1です(同じ元データからは同じハッシュ値が出てきて、異なる元データからは大体において異なるハッシュ値が出てくる)。この場合ですと、そのブロックのハッシュ値は、「取引データ、一つ前のブロックのハッシュ値、ナンス値」から計算される一意の数列になり、次のブロックに記録されます。ここで、そのブロックチェーンの設計によりますが、ハッシュ値には何らかの制約がつけられます。例えば、「ハッシュ値の最初の3つの数字は000でなくてはならない」などです。この制約をつける理由は後に説明します。
ナンス値とは、ハッシュ値を導くために置く定数です。前述したハッシュ値の制約を満たすようなナンス値を、ブロックを作るマシンが設定しなければなりません(このナンス値を見つける作業を「マイニング」と呼びます。あまりに大変なので、ビットコインなどでは「ごめん誰かつよつよマシン持っている人やってくれ、やってくれた人にはビットコインあげるから」というようにして、協力を仰いでいます)。
この3つが揃うことで、改竄に強いデータが出来上がります。
どうしてブロックチェーンは改竄に強いの?
例えば、ブロックA、ブロックB、ブロックC、・・・のようにブロックチェーンが構成されているとします。
ここで悪意のある謎の人物Xが、ブロックBの中のある取引を書き換えてしまおうとします。そうすると何が起こるでしょう。
ブロックBのハッシュ値が変わります。ハッシュ関数への入力が変わったので当然ですね。するとブロックCに格納されている「一つ前のブロック(ブロックB)のハッシュ値」と一致しなくなり、ブロックBとブロックCの関連が外れてしまいます。ブロックチェーンは複数のマシンで共有されているので、「あれ? このブロックなんか途中で千切れてるぞ。誰かいじくりやがったな」と他のマシンにバレて修正されてしまいます。
しかしそこで諦めるXではありません。XはそれならばブロックCも弄って千切れないようにしようとします。そこで立ち塞がるのがハッシュ値の制約です。ハッシュ値には、「最初の3つの数字は000でなくてはならない」などのような制約があるので、Xはそれを満たすナンス値を見つけなければなりません。制約を満たすナンス値を見つけるということは楽なことではありません。あてずっぽうで色々と数字を入れて計算しまくってみて、ようやく運よく見つかるといった数値です。
だけどXはやり遂げました。頑張ってナンス値を見つけ出して、ブロックBのナンス値を書き換え、さらにブロックCの「一つ前のブロック(ブロックB)のハッシュ値」も書き換えてやりました。これでブロックBとブロックCはつながったままです。
しかしここでめでたしとはいきません。今度はブロックCとブロックDが切れてしまいます。なぜなら、ブロックCに格納されている「一つ前のブロック(ブロックB)のハッシュ値」が書き換わったことにより、今度はブロックCのハッシュ値がブロックDに記載されている「一つ前のブロック(ブロックC)のハッシュ値」と食い違ってしまい、ブロックCとブロックDが千切れてしまったのです。
仕方ないのでXはブロックCのナンス値も探すことにしました。ようやく見つけ出し、ブロックDとブロックCをつなげられたと思ったら、今度はブロックDとブロックEが千切れてしまいました……。
このようにして、Xは改竄したいブロックにつながっているブロックすべてを書き換えなくてはならなりました。Xは頑張ります。しかしそうこうしているうちに、他のマシンに「なんかこいつのチェーン千切れてるな」と気づかれ、折角改竄したデータを元々のデータに置き換えられてしまうのです。
というか、通常はXくんが一人ナンス値を見つけ出すよりも、ブロックチェーン参加者が総がかりで最後尾のブロックのナンス値を見つけ出す速度の方が速いのでとても追いつけないです。
ブロックチェーンに重要なその他の要素
上記がブロックチェーンの基本的な仕組みです。細かくなりますが、このプロセスで重要になるその他の要素に以下があります。
電子署名 (公開鍵・秘密鍵)
公開鍵・秘密鍵というのは暗号化の手法です(ブロックチェーン固有の技術というわけではなく、一般に使用されている既存の技術です)。ブロックチェーンでは二者間で安全な取引を実現するための署名として使用されており、ブロックに書き込まれている取引内容は署名されています。
公開鍵・秘密鍵は、元々は二者間で暗号化してデータをやり取りするためのものです。AさんがBさんにデータを送りたいとしましょう。Bさんは、公開鍵と秘密鍵を持っています。公開鍵はその名の通りい一般に公開しているもので、「俺にデータを送りたいときはこれを使って暗号化してね」という鍵です。一方で秘密鍵はBさんしか知らず、この秘密鍵を知るBさんだけが、公開鍵を使って暗号化されたデータを解読することができます。なので公開鍵で暗号化されれば、秘密鍵を持つのがBさんだけである以上、データが途中で盗み見られたとしてもBさん以外の人が内容を知ることはできません。
この仕組みを応用して、署名(本人確認)として使うことができます。ポイントなのは、実はこの公開鍵・秘密鍵は対になっており、秘密鍵で暗号化すると、それは公開鍵で解読できるということです。
ブロックチェーン上でAさんが取引をするとします。そのとき、Aさんが確かに本人であることが確認できなければなりません。そのために何らかの合言葉を決めます。ブロックチェーンに参加しているマシンが分かるような値です。その合言葉を、Aさんは秘密鍵を使って暗号化します。そしてそれを、ブロックチェーンに参加しているマシンが、Aさんの公開鍵を使って解読します。すると、あらかじめ決めた合言葉を読むことができます。ということは、「決められた合言葉を公開鍵で解読できるような暗号に変換できるのは秘密鍵を持つ人物だけ」ということになり、Aさんが秘密鍵を持つ本人であることが確認できる、とうわけです。
これが署名として用いられており、ブロックに登録される取引にはこの署名が刻まれることになり、セキュリティに一役買っています。
P2Pネットワーク
P2Pネットワークとは、ブロックチェーンに参加しているマシンたちが通信する様式です。これもまた、ブロックチェーン固有の技術ではなく、一般的に使われています。Skypeとか、一時期騒がれたWinnyでも使われていました。
一般的に想像される通信の流れはクライアント・サーバー方式といい、送信側のマシンAがサーバーに内容を伝え、サーバーが受信側のマシンBに「Aさんがこんなこと言ってましたよ」と伝える、という形です。これに対し、P2P方式では、マシンAがサーバーを介さず直接マシンBに内容を伝えます。
分散型であるということを信念とするブロックチェーンは、クライアント・サーバー方式ではなくP2P方式をとっています。この方式は情報の管理がサーバー1か所でできるため効率的ですが、サーバーに悪さされたりサーバーがダウンしてしまうとブロックチェーンのコンセプトが崩れてしまいます。ですのでブロックチェーンはP2P方式で通信を行っています。ブロックチェーンに参加すると、他のたくさんの参加マシンと1対1で通信しまくるようになるわけですね。
コンセンサス・アルゴリズム
コンセンサス・アルゴリズムとは、ブロックチェーンのブロックを形成するためのルールです。ブロックチェーンでは、管理者がいません。なら誰がブロックを作るの? となります。このルールのことですね。
最も有名なのが「PoW(プルーフ・オブ・ワーク)」という、ビットコインで使われているものです。PoWでは、ブロックを作れる権利は「早い者勝ち」です。ナンス値を一番早く計算できた人にブロックをつなげる権利が与えられます。一番早く作れた人に報酬をあげるという決まりになっているので、皆早く作ろうと頑張ります。
おや? 鋭い方はもしかしたらこの方式の危うい部分に気づいたかもしれません。その通りです。稀ではあるのですが、「参加者Aと参加者Bが同時に別のブロックを作り上げた」ということが起こります。じゃあどっちが正しいの? となります。これは「フォーク」と呼ばれる問題で、どちらも一旦はつなげてしまいます。分岐することになります。
で、結局どうするかというと、一旦分岐を認めてしまいます。ブロックXがつながった枝と、ブロックYがつながった枝に別れます。そして参加者たちはブロックX派閥とブロックY派閥に振り分けられます(早く自分に情報が届いた方のブロックの派閥になります)。さあ、どっちの組が次のブロックを作るのが早いか競争です。今回はブロックX派閥に軍配が上がり、ブロックX2がブロックXの後につなげられたとしましょう。
ここで、PoWに継ぐ第二のルール「ナカモト・コンセンサス」が発動します。それは「分岐が起こったときはよりブロックが長く繋がっている方を正しいとする」というものです。この場合、ブロックX2の分だけブロックX方向の分岐が長くなったため、こちらを正解としてブロックチェーンは続いていきます。
ん? ブロックX2と、ブロックYに続くブロックY2までもが同時にできた場合? 競争継続です! ……んん? 今度はブロックX3とブロックY3が同時にできた? ええー いつになったら確定するの? 決着がつくまで!! (こんなに同時にブロックが繋がり続ける確率はかなり低いです)
このような、「PoW」や「ナカモト・コンセンサス」などを組み合わせたブロックチェーンの作成ルールを「コンセンサス・アルゴリズム」といいます。
ブロックチェーンの課題
スケーラビリティ
スケラービリティとは、要するに「どれだけ多くの取引履歴をすぐに記録できるのか?」と考えてもらえればいいです。
上の仕組みに関する章をご覧になってくれれば、ブロックチェーンが取引を記録するためにものすごく七面倒くさいことをしているかがわかると思います。その上、ブロックチェーンの処理速度は、それに参加しているマシンの性能に依存することになり、コントロールがしづらいです。
実際、現在のブロックチェーンの処理速度は、現状の一般的なデータベースでのそれと比べると遥かに遅くなっています。
ファイナリティ
ファイナリティとは、「決済の確定」という金融用語です。
実はブロックチェーンにはその仕組み上、取引の記録が枝分かれすることがあります。(チェーンの分岐、フォークと呼ばれるものです。詳しく知りたい方は、コンセンサス・アルゴリズムの章をご参照ください)。最終的にはどちらの枝を正しいとするかは決まるわけですが、それが決まるまでは一旦どっちの枝も生かしておきます。そして、枝Aには取引Xが記述されているけれど、枝Bには取引Xは記述されていない状況があり得ます。枝Bが正しいとされるなら枝Aは棄却されるわけですので、取引Xは確定していると断言できません。しかし、いつまで続く保留状態を待ってはいられない……。いつまでも取引Xを確定できない、といった状態になります。
ここでブロックチェーンでは、ある程度時間が経てば(ブロックが一定数繋がれば)その取引が覆る確率は0.1%未満だとして、多くの取引所では取引Xがなかったことにされる可能性に目を瞑り、一定時間後に決済確定としています。
だけど本当にそれでいいの? と金融機関は懸念しています。これがファイナリティの問題です。
セキュリティ
ブロックチェーンが評価されている要因の一つはセキュリティの堅牢さです。しかしかといって、完全無欠というわけでもなく、下記2つの課題が見つかっています。
秘密鍵流出問題
秘密鍵とは、ブロックチェーンに参加している人一人一人に振られた身分証明書です。ブロックチェーンの外でこの身分証明書が誰かに盗まれてしまうと、盗んだ人は完全になりすましができてしまうのです。例えば、仮想通貨のアカウントの秘密鍵が盗まれたとすると、もはやそのアカウントのお金は盗んだ人が完全に自由に使えてしまいます。また、秘密鍵を紛失した場合、そのアカウントのお金を使うことはもはや永久にできません。
51%問題
ブロックチェーンは多数の参加者によって成立しています。その各参加者の取引履歴記録のための計算や全体での合意でもって、全体として「正しい」取引履歴が記録されたデータベースになるのです。このとき、誰か特定の参加者がそのブロックチェーンの半分以上の計算能力を持ってしまった場合、ブロックチェーンはその特定の参観者にコントロールされてしまうことになります。乗っ取りですね。過半数の株を握られる、といったイメージでいいと思います。
このように、ブロックチェーンにはまだいくつかの課題が残っています。しかし世界の頭のいい人たちがこの問題を解決しようと日々様々なアイデアを提示し、実装されています。
これらの問題を解決、あるいは受け入れられる程度にまで抑え、ブロックチェーンが世の中で普及する未来はそれほど遠くないでしょう。
コメント