この記事は、Blockchain Capitalのパートナーであり、ビットコインの教育者であるJimmy Song(@jimmysong)によるWhy Blockchain is Hardを翻訳したものです。
分かりやすくするために随所意訳をしているので、原文そのままの翻訳ではありませんことをご了承ください。
なお本メディア「あたらしい経済」は、ブロックチェーンの可能性に対して非常に肯定的なスタンスです。いままでの記事でも紹介してきたように、それがもたらすメリットは大きく世の中を変えると信じています。
しかし、そういった肯定的な情報ばかりを発信し続けることが、果たしてブロックチェーンの可能性の本質に迫れるかというと、そうではないと感じています。たとえ否定的な意見であっても、そこにブロックチェーンの成長に関する重要な解決すべき課題を含んでいることがあるのです。そういう観点で、今回海外で発表された「Why Blockchain is Hard」の翻訳版を掲載することにしました。
いままでもテクノロジーは多くの課題を今まで乗り越えてきました。そしてそれはブロックチェーンも同じだと思っています。この記事に含まれる「問題点」を、ぜひ皆さんにも感じて未来への議論の題材にしてもらいたいと思っています。
—
ブロックチェーンを巡る誇張は凄まじいものがある。ブロックチェーンには次のようなものができると言われている。
- 経済格差を解決する
- 全てのデータを永久に安全に保管する
- 全てを効率化してトラストレスにする
- 死にかけの赤ちゃんを救う
こんなたくさんのことができると言われているブロックチェーンとは、一体なんなんだろう? 本当にそれら全てのことをできるのか? ヘルスケア、ファイナンス、サプライチェーン、音楽といった多様な産業に対して素晴らしいソリューションを提供できるのか?
また、ビットコイン支持者であるということはブロックチェーン支持者であるという意味ではないのだろうか? ビットコインを支持しておきながら、その根幹を支えるブロックチェーン技術を批判するということはできるのだろうか?
この記事では、上記のような問いの多くに答えられるものなはずだ-「ブロックチェーンとは何であるか」を説明したり、「ブロックチェーンは何ではないか」を説明することによって。
ブロックチェーンとは何か
まずはじめに、ブロックチェーンとは何か、また何がブロックチェーンをこれほど複雑なものにしているのかを考察する。多くの会社がブロックチェーンを「全てを解決する魔法のツール」であるかのように使っているが、もちろんそんなものは現実世界には存在しない。
ブロックチェーンとは何なのだろうか?正確には、いくつかの取引を含んだブロックの繋がりである。鎖状に繋がったデータベースのかたまり、と理解していただいて結構だ。
ブロックチェーンがデータベースと異なっている主な部分は、「どのようにデータを追加するか」というところだ。
1つ目は既存のデータと相反するデータは追加できないこと(一貫性)。
2つ目はデータは追加することしかできないこと(不変性)。
3つ目はデータを誰でもコピーできて所有することができるということ(所有可能)。
4つ目は、データベースのステータスを全員が合意しているが(標準的)、中央管理機関を必要としない(分散型)ということである。
ブロックチェーンの真骨頂は最後の部分、すなわち「分散型」である。なぜここまで分散型が魅力的であるかというと、単一障害点(Single point of failure)がないからである。つまり、権威を持つ単一の機関によって都合よくデータが改ざんされたり資産を取り上げられたりする心配がないのである。誰のことも信頼する必要なく、データの改ざんが不可能であると安心できる点が、ブロックチェーン業界に携わる人が求めているものだ。しかしこの恩恵を受けるためには、多大なコストを割く必要がある。
ブロックチェーンのコスト
単一の機関による改ざんが不可能であることは確かに素晴らしいが、そのようなシステムを作り上げるためには多くのコストを割かなければいけない。詳しく見ていこう。
開発は慎重で、遅い
「一貫性を有していると実証するのが可能であるシステム」を構築するのは簡単なことではない。小さなバグがデータベース全体を破壊してしまう恐れもあるし、小さなバグが原因で一貫性が損なわれてしまう恐れがある。もちろん、データはダメージを受けてしまうともはや一貫性を証明できなくなってしまう。そうなった場合、一貫性を保つために最初のデータから一つずつ変更を加えていく必要がある。ブロックチェーンには「早く作ってそこから改善していこう」というスタートアップ的な方法は存在しない。改善した瞬間に、一貫性が失われてしまいそのブロックチェーン自体が価値ないものになってしまうから。
問題のあるデータベースだけを調整して、それ以降にデータを追加していけばいいのではないかと思うかもしれない。中央集権型システムでは管理主体が変更の指示を下せば済むので容易だが、分散型システムだと全員の合意を取らないといけないので非常に難しいのである。
インセンティブ構造を設計するのが難しい
ネットワーク参加者の誰もがその構造を乱用したり腐敗しないようにするインセンティブ構造を設計するのも非常に難しいことである。たとえデータに一貫性があったとしても、無駄なデータを追加するコストが安すぎれば、無駄なデータが大量に追加されて使い物にならないブロックチェーンになる。一方、データを追加するコストが高ければ誰もデータを追加することがなく、これもまた意味のないブロックチェーンになってしまう。
そもそもどうやってそのデータが重要であると判断できるのだろうか? ネットワークの目指しているものとインセンティブ配布の方針が合っているとどうやったら確信できるのだろうか? どうすればネットワーク参加者がデータをネットワークに追加してくれるのか?
このような問いに対してしっかりとした解決策を提供する必要があるし、その回答はネットワークが技術などによって起きる変化にも対応できるものでないといけない。
「その都度修正すればいいじゃないか」と思うかもしれない。先ほどと同じ回答になるが、それは中央集権型システムでは簡単だが、分散型システムでは非常に難しい。なぜなら、全員からの承認がもらえない限り修正ができないからである。
メンテナンス費用が高い
おなじみの中央集権のデータベースは、一度書いてしまえばそれで終わりである一方、ブロックチェーンは何千回も書かれる必要がある。
中央集権のデータベースは一度データのチェックをすれば終わりである一方、ブロックチェーンは何千回もチェックする必要がある。
中央集権のデータベースには一度データを追加すれば終わりである一方、ブロックチェーンには何千回もデータを追加する必要がある。
ブロックチェーンを維持するためにかかるコストは従来よりも桁違いに高く、コストが高ければ、その分有用性が桁違いに高くなければいけない。もしアプリケーションに一貫性が欲しいのであれば、中央集権型システムで整合性チェックやバックアップを活用したほうがよっぽどコストをかけずにそれを実現することができる。
ユーザーが独立している
これは企業にとって都合の良いことである。なぜなら企業はユーザーのデータ管理に関して責任を負いたくないからである。しかし、もしユーザーの独立性が高い状態でユーザーが不作法な行為を繰り返したらどうなるだろうか。ブロックチェーンではユーザーが詐欺行為をしていても、他人に害悪を与えていても、追い出すことはできない。
だからこそ、このようなことが起きないようなインセンティブ構造を設計する必要があるのだが、これがとてつもなく難しいのである。大抵の場合、悪い行為をする利益の方が善い行為をする利益よりも大きいからだ。
「単純に害を及ぼすユーザーを追い出せば良いじゃないか」と思う人が多いだろう。これは中央集権システムでは非常に容易なことだが、ブロックチェーンでそれを行うのは無理である。なぜなら意思決定を下す単一の機関が存在しないからである。
ブロックチェーンは公平でなければならず、ソフトウェアに定められたルールに従って動かなければならない。定められたルールに抜け道が存在し、悪質なユーザーを追い出すことができない場合は、どうしようもない。ブロックチェーンには「法の精神」みたいなものは存在しない。定められたルールで排除できない悪質なユーザーがいる場合、長期間そのユーザーの対処に追われることになるだろう。
全てのアップグレードは自由意志である
強制的なアップグレードはブロックチェーンには存在しない。勝手にソフトウェアに変更が加えられることはない。勝手に変更が加えることができるようなシステムであったとしたら、それは中央集権システムである。そもそもブロックチェーンの存在意義は、単一の機関が勝手にシステムを動かすことができないということなのだ。
アップグレードする場合、それは前方互換(後発機能が先発機能に対応する)でなければならない。これは新機能を追加するときに非常に足かせになるものであり、テスティングという観点から見たら更に難しいものである。ソフトウェアのバージョンが更新されるごとにテストマトリックスは追加されていき、それに伴ってリリースまでの時間が長くなってしまう。