chike0905の日記

何者かになりたい

ブロックチェーンでそんなことはできない

概要

本稿は、突然ムシャクシャした筆者が自分の考えるブロックチェーンの定義と、世間で言われているブロックチェーンの特性および応用例を批判するものである。 本稿は筆者の見解であり、所属組織の公式見解ではない。

ブロックチェーンの定義

そもそもブロックチェーンとはなんなのか。狭義には、「ブロック」の「チェーン」であることから、以下の定義をしたい。

データが、当該データ直前のデータの暗号学的ハッシュ値を持つリスト型のデータ構造

ここでは、そのデータの中に何を保持するかは一切考慮しない。 データがハッシュ値で連鎖することによって、リスト中の任意のデータのみを書き換えると、ハッシュチェーンの整合性が失われ、書き換えが行われたことを検知可能なデータ構造であると定義する。

しかし、世間で「ブロックチェーン」に興味を持つ諸氏はこの定義だけではいささか狭すぎると感じるだろう。 そこで、狭義のブロックチェーンを保持するノードに関する情報を加え、定義を拡張する。

上記データ構造を持つデータをP2Pネットワーク上で各ノード上に形成するシステム

上記定義の穴、すなわち最も議論されなければならない点は「各ノード上に形成する」点である。 とりわけ「形成する」の点が最も重要であると筆者は考える。 どのように形成するか、つまり、どのように新規のデータを追記するか、追記時に行わなければならないことは何かといったことに関してはこの定義は踏み込んでいない。

そこで、以下のように定義を拡張する。

P2Pネットワーク上で新規データを全ノードに共有し、受信したノードが各自で検証および追記を行うことで、上記データ構造を持つデータを各ノード上に形成するシステム

この定義の肝は「各自で」という点である。 各自で検証し、他のノードに依存するプロセスは本定義のブロックチェーンの動作の中には含まれない。 従って、他のノードに何かを問い合わせる必要もなく、信頼する第三者などは存在しない。

したがって、上記定義から導かれるブロックチェーンの特性は以下のようなものである。

  • 過去のデータの書き換えを検知することが可能
  • 新規データの書き込みにおいて第三者を信頼する必要がない

「コンセンサス」は入らないのか?

ここでは筆者は「コンセンサス」という言葉を持ち出したくない。 というのも、ブロックチェーンにおけるPoWを用いたコンセンサス(と呼ばれるもの)はコンセンサスなのかということに大いに疑問が残るからである。 PoWをベースにしたコンセンサス(と呼ばれるもの)を考えてみよう。 主なプロセスは以下のようなものである。

  1. 新規ブロックがネットワーク上で作成される
  2. 当該新規ブロックがブロードキャストされる
  3. 当該新規ブロックを受信したノードは、当該新規ブロックに含まれるデータの正当性を検証する
  4. 当該新規ブロックを自分の持つブロックチェーンへと追記する
  5. 4の実行時、当該ブロックが参照するブロック(親ブロック)を参照するブロック(兄弟ブロック)が既にリスト中に存在する際(Forkの発生)、PoWの合計難易度が最大のものを正規のリストと見なす

さて、この時コンセンサスは取られているだろうか。 英単語としてコンセンサス(consensus)、の定義はロングマンによれば以下の通りである。

an opinion that everyone in a group agrees with or accepts
引用元: ロングマン現代英英辞典 https://www.ldoceonline.com/jp/dictionary/consensus

訳すとすれば「グループのメンバー全員が賛同あるいは、受け入れる意見」といった具合であろうか。 ここで先ほどのPoWベースのコンセンサス(と呼ばれるもの)のプロセスをみてみよう。 プロセスの中に「グループのメンバー(P2Pネットワーク上のノード)」が「同様の意見(特定のブロックを含むリスト)」に賛同したことを確認しているだろうか。 そんなプロセスは存在しないのである。 従って、あるノードは自分が採用したブロックを、ネットワーク上の他のノードも採用したかどうかに関しては、一切注意を払っていない。

したがって、筆者はこれをコンセンサスとは呼ばない。 分散システムで語られるPBFTなどの分散コンセンサスアルゴリズムでは、一定のメッセージの交換によって、他のノードでどの値が採用されたかに関する情報を交換する。 そのため、コンセンサスに至ると、他のノードが同じ値を採用していることが保証されるのだ。 ブロックチェーン、とりわけ世間で語られるPoW形式の物に関して言えば、コンセンサスは提供されていない。

世間で語られる「ブロックチェーン」のノードが行っているのは「新規ブロックを受信したら検証し、リストに追記する」ということだけである。 これは、各自のノード上でただリストを形成するだけの行為であり、先述の定義によってカバーされるものである1

仮想通貨とかスマートコントラクトとかは?

ブロックチェーン、とは狭義には単なるデータ構造であり、それ以上の意味はない。 従って、それを構成するデータには任意のデータを含めることができると考えられる。 例えば通貨の発行、送金を示すデータを含めることもでき、それによってデータを書き換え検知可能な形で記録もできるだろう。 しかし、それはデータ構造の上に構築されるアプリケーションの話であり、ブロックチェーンそれ自体の機能ではない。

ブロックチェーン、というデータ構造を採用することによって書き換えが検知可能な形で記録することで、実装が可能なシステムは多様にあるだろう。 しかし、それらはその特性を利用して、その上に実装をしているだけであり、ブロックチェーンそれ自体の機能ではない。 例えばDBを使って様々なシステムを構築可能であり、SNSのシステムなどを構築可能であるが、SNSはDBの機能ではない。

Bitcoinはそのブロックチェーンに仮想通貨の発行、送金を示すデータを記録するアプリケーションであるし、Ethereumはその上にプログラムとその実行を記録するアプリケーションである。 とりわけEthereumを用いることで、任意のアプリケーションを構築可能であるが、それはEthereumの機能であり、ブロックチェーン自体の機能ではない。

改ざん困難とかは?

これは筆者の定義で逃げている点である。 というのも定義の中では「検証」がなんのプロセスを指すのか定義されていない。 従って、その検証の点に、PoWなどを取り入れることで、少なくとも他のノードに受け入れられる(と期待される)ブロックを作成するには十二分な計算コストがかかる仕組みを実装できる。 この「検証」をどう定義・実装するかによって、多様な特性を持ったブロックチェーンの実装が行える、という点が本定義は優れていると筆者は考えている。

ブロックチェーンの優位性と活用可能性

上記定義よるブロックチェーンは、書き換えの検知と第三者への依存を排除していると述べた。 この2つが同時に存在することがブロックチェーンの最も有意義な点であると筆者は考える。 とりわけ第三者への依存の排除は、多くのブロックチェーンの文脈で語られるのは周知だろう。 既存のシステムの多くは運用主体などを信頼する必要がある。 あるシステム提供主体が必ずしも信頼できない状況下で、当事者相互に自らが検証したデータに基づいて何かを実施できることは、多くの可能性を秘めていると考えられる。

ここから考えられるブロックチェーンの活用としては、データの存在証明、の1点であると筆者は考える。 あるデータがP2Pネットワーク上で作成、ブロードキャストされ、全ノードが各自でそのデータを持つとすれば、当該データは全ノードに複製される。 従って、(ネットワーク上に十分なノード数が存在すれば)当該データは消失不可能性を担保可能である。 また、逆に当該データが存在しないことを作成者が主張したとしても、参加ノードは各自が持つブロックチェーンのデータ中から当該データが存在したことを主張可能である(否認不可能性の担保)。

ただし、ここではコンセンサス(に類する何か)が実装上に存在し、各ノードが持つ仕組みに一定の均一性がなければ期待できないことは記しておく。 例えば、当該データの存在を主張したとしても、それがその主張する者のノード上にしか存在しなければ、その主張する者が恣意的にデータを作成した可能性がある。

存在証明の利用

存在証明を応用することで、あるデータが存在し、それに伴う何かしらの操作、またその操作記録それ自体のデータが存在することにより「あるデータに基づいた操作が存在したこと」が確認できる。 それらの実装がBitcoinやEthereumであると整理可能であろう。

BitcoinやEthereumにおいては、デジタル署名を書き込むデータの中に含むことによって、データ発行者の否認不可能性を担保している点も、興味深い点である。 存在しただけでなく、それが発行者の秘密鍵によるデジタル署名を含むことによって、当該鍵ペアを持つ者が間違いなくそのデータを発行したことが保証される。 鍵ペアと現実世界のエンティティの結び付けの方法などは課題が残るものの、ブロックチェーンのデータ存在証明の機能を最大限活用していると言えるだろう。

ブロックチェーンでそんなことはできない

さて、本稿の主眼であるブロックチェーンの機能および応用に対しての批判を加えていくことにする。

トークン系: ブロックチェーンを用いたデジタル地域通貨で地域活性

このような主張をする多くのケースでは「地域通貨を発行し地域経済を活性化する」という主張だろう。 先述したようにブロックチェーンそれ自体の機能としては仮想通貨は存在しない。 ただし、デジタル地域通貨の実装にあたり、取引の当時者同士で取引の存在を証明することが「必要」とされ、ブロックチェーンベースの仮想通貨を実装するに至る。 しかし、「地域通貨」の実装にそれらは本当に「第三者に依存しない形で」実装する必要があるのだろうか?

筆者の考えでは、それらはこれらの施作実行者、多くの場合は地域商店街や自治体がクライアントサーバモデルでの通常のWebシステムで実装したとしても、同様の効果が期待できるのではないかと考える。 大概のケースでの目的は、ブロックチェーンであるかどうかではなく、地域通貨というものを発行することでその地域経済を活性化することにある。 とすれば、まずは地域通貨システムを純粋に実装し、地域通貨が活性化に寄与するかどうかを検証する必要があるだろう。

確かに地域通貨を入手する人は観光客など、その地域の人にとって「信頼がおけない」人で、不正に二重支払いを行う可能性がある。 しかし、地域通貨を発行し、その支払いを受けるというシステムの上で、その発行主体が存在する。 その発行主体が正しく発行されたデジタル地域通貨トークンに対してデジタル署名を付与するなどの仕組みで担保可能である。 それを当事者全員にデータを配布し、各自で検証するモデルにするべきかどうかは、疑問が残ると言わざるを得ない。

類型として、「hogeトークンを発行し、hoge経済圏を」というものは大概同じ疑問を呈することになる。 仮想通貨を全世界レベルで、信頼できない人同士で交換しようとするので参加者個人レベルでの検証作業が必要になるのである。 一定の参加者の中で流通する通貨を作りたいだけであれば、通常のWebシステムで実装可能である。

権利系: ブロックチェーンを用いた著作物の利用許諾管理

利用許諾管理、すなわち許諾を受けない人が利用した際は正しく利用料を徴収する必要がある。 しかし、ブロックチェーンでは、データの存在を証明しかできない。 つまり許諾を受けているかどうかの確認までしかできないのである。 従って、このシステムを実現するためには、全世界でのあらゆる著作物利用者を追跡し、それらが全て許諾を受けているかどうかを確認する必要がある。 ブロックチェーンはデータ構造であり、それをノード上で保存するシステムであるため、ブロックチェーンの外側で起こっていることは積極的に検知することは「ブロックチェーンの機能としては」存在しない。

本システムを実現するためには、まず著作物の権利保有者が、利用許諾の許可は全てブロックチェーン上で行う、というような運用をすることが必須である。 別チャンネルでの許諾した場合、それとブロックチェーン上に存在しない許諾の判別することはほとんど不可能である。 その上で、全世界の著作物利用クローラーが必要である。 これは不正利用を積極的に検知するためである。最後に、利用料の徴収の仕組みの実現である。 これが筆者は最も困難であると考える。 なぜなら不正利用者は許諾を受けないで利用をしたとして、その保有資産を強制的に徴収するような仕組みがなければ積極的にその利用料を支払わないと想定できるからである。 実装するとすれば、許諾は全てブロックチェーン上に記録されている前提の元、許諾を受けているリストに不正利用者が存在しないことを根拠に訴訟を起こすなどしかないだろう。

しかし、ここでさらに厄介な問題として、許諾者の識別子の問題がある。 許諾を受けている者の識別子リストがブロックチェーン上に存在するとして、その識別子がブロックチェーン外部の利用者本人に対して許諾をしているかどうかを検証する必要がある。 すなわち、その識別子をどう認証するか、という問題が発生する。 これはブロックチェーン単体では到底解決できず、識別子の設計、利用者がどのようなデータを提示しながら利用をするべきか、などのスキームを整理する必要があるだろう。

また、そうした識別子の認証、不正利用の紛争調停を信頼する第三者に依存するのであれば、ブロックチェーンを使う意味がどれだけ存在するかは疑問と言わざるを得ない。

プライバシー系

一部のブロックチェーンの応用では、「プライバシーを守る」という言説がある。 しかし、ブロックチェーン上に書き込まれるデータは、全参加者に書き込まれたデータは共有される。 従って、単にブロックチェーンを使ったのみでは、プライバシーの問題は解決できるどころか、全てオープンな形にしなければならない。

一方、載せるデータを一定の暗号化を行えば良いとも考えられる。 しかし、暗号化し、一定の参加者しか復号できないとすれば、全参加者がその新規データの正当性の検証は行えない。 ここで準同型暗号やゼロ知識証明などの暗号技術を活用することもさらに考えられるが、これはまだ研究開発段階と言わざるを得ないだろう。

批判のまとめ

一貫して、以下の点で応用を整理することで批判できてしまうプロジェクトがほとんどであろう。

  • 「信頼する第三者を排除しなければならないのは、システムのどの部分においてなのか」という議論の欠如
  • ブロックチェーン外で起こる事象への積極的検知が必要なシステムへの適用
  • ブロックチェーンの根本的な優位点の活用の議論の欠如

また、その他にもブロックチェーンを利用した際のシステム全体のアーキテクチャ的に信頼点が存在する作りになっていることもある。 例えば、ブロックチェーン上に何か書き込むそのクライアントを、あるWebサービスを通じて行うような場合がある。 そのWebサービスを介してしか行えないのであれば、そのWebサービスのバックエンドとして利用しているのみであり、DBを使う場合とどれだけ差異があるかは疑問を呈さざるを得ない。 さらに、近年のEthereumのGas代の高騰から、書き込みを最小限に抑えてWebサービス側でデータを持ち、一定の操作を要求された場合のみブロックチェーンに書き込むような実装も散見される。 この場合、書き込まれるまではブロックチェーンの特性は一切利用できないため、Webサービスは信頼点となってしまう。

現状、そうしたGas代などの要素をブロックチェーンの特性をうまく利用しながら削減する手法は研究開発段階である。 そうしたパーツが揃わなければ、安定して人々の資産を預かるようなサービスを実装することは困難であろう。 本稿では、それぞれの不足する要素に深く言及はしない。 しかし、ブロックチェーンの本来の特性を生かしてシステムを構築し、世の中のインフラとして運用するためにはまだまだ未成熟な技術である。

終わりに

本稿では、ブロックチェーンの応用と呼ばれるものに対して、批判を加えた。 なぜこのような本来のブロックチェーンの機能から乖離した応用や有用性が叫ばれるのだろうか。 これは、前節で述べたように、ブロックチェーンの技術それ自体が未だ研究開発段階であり、それを活用するモデルも議論の最中であるからである。 ブロックチェーン技術の未解決問題が出版されてから既に4年の月日が経った。 しかし、述べられている問題の多くは依然解決していない。

根本解決しないまま応用を実装する場合、暫定対処をすることになるだろう。 それの1つが、Gas代の削減で述べた書き込み回数を抑えるような手法であり、その手法によって本来の特性が損なわれていることを述べた。 システムを構成するということは、その要件から必要な技術選定し、それが安定運用されることまでを見据えて実装をしなければ長期的に活用可能にはならない。

とりわけ、近年のWeb3等の議論で、そうした現状の技術、その特性に即した議論からは乖離した議論が散見される。 正しくその技術特性を見極め、適切な適用と、実装、そして運用を見据えた議論が増えることを切に願う。


  1. PoSなど、「コンセンサス」を提供しようとする試みはある。それらも、データ構造に対して新規データを「どう検証・追記するか」の部分の工夫であると考えられるため、実装として「コンセンサス」を組み込むことも可能、という形で本定義の中で整理できる。