ブロックチェーンの課題と可能性~BBc-1(Beyond Blockchain One)から学ぶブロックチェーン開発

第1回ブロックチェーンを取り巻く現状と課題

ブロックチェーンは何を実現したいのか

2018年8月現在、いわゆる「仮想通貨」「ブロックチェーン」に関する話題は、未だ花盛りです。では、仮想通貨やそれを実現するために始まったブロックチェーンは、一体、何のために生まれた技術なのでしょうか。

現在の一連の仮想通貨の原型はビットコインだといえます。ご存知のように、ビットコインの基本的な設計は、サトシ・ナカモトを名乗る匿名の個人または集団によるものです。よって本人(達)から当初の開発の意図を聞き出すことは残念ながらできませんが、設計から逆算されたその目的は、⁠自分が持っているお金を、自分の好きに誰かに送ることを誰にも止めさせない」ことだと考えられています。これについては、日本に住んでいると、ちょっとピンと来ないかも知れません。今のところは「自分のお金を自由に使えるのは当たり前」という感覚でも生活できるからです。しかし、例えばインドでは、2016年11月、高額紙幣2種類が突然廃止されたり、その混乱によって一般の人々の銀行口座が一時的に凍結されたりしました。世界的に見て、送金を止められないことは、人間の経済の自由を保障する上で大事なことだといえるのです。

この目的の達成に向けて、ブロックチェーンは、記録の書き込み、かつ書き込まれた記録のことも表す「トランザクション」の改変を事実上不可能にするべく設計されています。仮想通貨においては、お金を送ったという事実を誰にも取り消せないようにしたいのです。このことを用いると、通貨のみならず、経済活動のさまざまな局面で公正な記録の担保に応用できることになります。

仮想通貨において、もし送金の事実を確認できる第三者が決まっていると、その第三者が事実を否定することで送金が止められる可能性があります。したがって確認は誰もができるようにしなければなりません。また、お金を持っている本人だということの確認を第三者に委ねると、その第三者により本人であることを否定されて、送金ができなくなる恐れが生じます。そのため、ブロックチェーンの典型的な設計では、誰でも自由に作れる「公開鍵」「秘密鍵」の鍵ペアを用い、秘密に隠し持っているはずの秘密鍵を使えるなら本人と見なす、という仕組みになっています。

実は、そうした設計上の大前提から陥ってしまう事態に、最近ではコインチェック事件で広く認知されることになった「仮想通貨のコインが流出したとすれば、その様子は誰でも追跡できるけれども、流出したコインは誰にも取り戻せない」ということがあります。

秘密鍵を使えるなら本人と見なすということは、すなわち、秘密鍵を奪うか、秘密鍵を扱うシステムの不具合を突けば、本人として送金ができてしまうことを意味します。これと送金を「誰でも確認できる」こと、そして「誰にも止めさせない」ポリシーが組み合わさると、盗まれたコインは追跡できるけれども誰にも取り戻せない、という仕組みができあがります。

このように、取引所のセキュリティなど、使い方の問題だと思われていることでも、実際には技術の設計上の大前提にこそ、その問題の真の原因が組み込まれてしまっていることは往々にしてあります。この稿では、ブロックチェーンのそうした設計上の課題を明らかにしたいと思います。

ブロックチェーンとは何か

改めて、ブロックチェーンとは何なのでしょうか。⁠自分が持っているお金を、自分の好きに誰かに送ることを誰にも止めさせない」ためには、トランザクションについて「その内容も存在も誰にも否定できない」ことを達成しなければなりません(⁠⁠内容」「存在」を分けているのは、そのために使われる技術が異なるためです⁠⁠。ブロックチェーンを使って実現したいことは、このことに尽きます。

では、その要求を満たすための機能の階層を、下位のものから順に整理してみましょう。

(1)正当性の保証

まず「トランザクションの内容が改ざんできず、そのアセット(資産)に関する過去のトランザクション列に照らして矛盾がなく、かつ、正当なユーザにより投入されていることを保証する」機能が必要です。それが正しく行われていることの確認を第三者に委ねると、その第三者により取引が否定される恐れがあります。よって、確認は参加する誰もが行えなければなりません。また、正当な利用者が正しいトランザクションを投入することは、誰にも止められないようにする必要があります。

このことを実現する中核の技術はデジタル署名です。しかし、署名を検証する際に、署名に使った秘密鍵と対になる公開鍵が必要となり、この公開鍵が本物であるという確証が何らかの形で得られないと、なりすましの恐れが生じます。

そこで、多くのブロックチェーンでは、公開鍵に暗号学的ハッシュ関数を適用して得られた「ダイジェスト(メッセージダイジェスト、指紋⁠⁠」を利用者の識別子(アドレス)にしています。すると、正しい識別子を知っている人は、提示された公開鍵のダイジェストを計算して、それが識別子と一致しているかどうかを確認することで、正しい公開鍵かどうかを検証できることになります。

これは、従来はPKIのような煩雑な仕組みを必要としていた公開鍵の正当性の確認を簡略化したという意味で、画期的な設計だと思います。しかし同時に、秘密鍵と公開鍵のペアが利用者の識別と不可分になってしまっていて、秘密鍵を失うと本人であることの証明ができなくなるという問題を生んでいます。

(2)存在性の証明

次に「過去にあったトランザクションの証拠を抹消できず、かつ、過去になかったトランザクションの証拠を捏造できない」ことが必要になります。このことは、デジタル署名だけでは実現できません。記録が署名ごと消される場合も想定されるからです。

ビットコインでは、ブロックのダイジェストを次に続くブロックの中に埋め込むという「ハッシュチェーン」の構造に加え、⁠プルーフ・オブ・ワーク(proof-of-work、POW;作業証明⁠⁠」によって存在性の証明を実現しています。すなわち、ブロックのダイジェストには規定以下の数値でなければならないという条件を付してあります。暗号学的ハッシュ関数によって求められるダイジェストは、元のデータが1ビットでも違うと全然違う値になりますが、元のデータをどう構成すればどのようなダイジェストの値を求められるかは一切分かりません。ダイジェストの規定値が小さければ小さいほど、その分条件を満たすために莫大な回数の試行をしなければならなくなります。過去のデータを改変すると、積み上がった作業証明と同じだけの計算コストをかけてダイジェストを求め直さなければならないので、過去に遡れば遡るほど改ざんが困難になるというわけです。

とはいえ、ダイジェストは誰でも計算できるので、こうした方法では、実は必要な計算力さえ入手できれば、誰でも改ざんが可能だということがいえます。

(3)唯一性の合意

ブロックチェーンを誰にも止めさせないためには、参加者の自発的・自律的な動作によって物事が進行するように設計する必要があります。すると、時によって互いに矛盾する2つのトランザクションが同時に投入されてしまうようなことも起き得ます。

このことに対して、⁠矛盾する2つのトランザクションが投入された場合、⁠いずれ)関与する全員が同じ片方を選んで歴史の中に位置づける」機能が必要となります。

括弧書きで「いずれ」とあるのは、ブロックチェーンで採用されている「ナカモト・コンセンサス⁠⁠、すなわち、作業証明のコストが最も多く払われている歴史を有効とする(典型的には最も長いハッシュチェーンを選ぶことになる⁠⁠、という仕組みが実時間では動作しないからですし、また、いつでも合意が覆りうるためです。ナカモト・コンセンサスは、不特定多数による合意の実現という、原理的には不可能なことに対する現実的な解といえます。しかし、不可能に対して挑戦するような設計そのものを見直す必要があるのではないかと私は感じています。

表1にビットコインの場合の機能階層を整理してみました。

表1 ビットコインの場合の機能階層
機能実現の仕方
唯一性の合意ナカモト・コンセンサス
存在性の証明作業証明付きハッシュチェーン
正当性の保証UTXO構造

ブロックチェーンの課題

では、このように設計されているブロックチェーンの課題には、どんなものがあるのでしょうか。

使用されている暗号技術が技術の発展に伴って古くなり、強度が相対的に下がってしまう、という点はよく指摘されます。それは確かに大きな問題でしょう。とはいえ、設計の根本的な考え方を変えずに対処できるので、問題としては本質的ではないようにも思います。

それでは、本質的な課題にはどんなものがあるのでしょうか。次に狭義のブロックチェーンの課題を列挙してみましょう。

(1)実時間性

ビットコインの場合、平均10分に1回の割合でブロックが生成されます。10分が長いことが問題なのではなく、⁠平均」の部分に実時間性の課題があります。3分でブロックができることもあれば、1時間経ってもできないこともあるのです。

(2)秘匿性

不特定の第三者による検証が可能だということは、トランザクションの秘匿性に課題があることを示しています。

(3)スケーラビリティ

ブロックチェーンでは原理的に全員が同じ処理を行うため、参加ノードを増やすことでは要求の拡大に対応できません。

(4)進化のガバナンス

全員が一丸となっていなければならないので、一部で新しいアイデアを試すことができません。となると、実地で新しい仕様をテストしながら技術を進化させることが困難になります。

(5)インセンティブ不整合性

市場で通貨が暴落すると、十分な利益を得られなくなったマイナーが撤退します。マイナーが撤退すると、ブロックチェーンを十分な改ざん耐性をもって維持できなくなりますし、最悪、システムが止まってしまいます。通貨の暴落によりすべてのアプリケーションが止まってしまうのだとすれば、ブロックチェーンを公共性の高い応用に使うことはできません。

プライベートな台帳技術の課題

以上のような狭義のブロックチェーンの課題を解決するために、プライベートなネットワークで台帳を維持するという考え方が生まれ、多くの技術が開発・公開されてきました。しかし、これらの技術については、ブロックチェーンの元々の重要な性質である改ざん耐性が失われているのではないかという疑いの目で見る必要があると思っています。

例えば、プライベートな台帳を設計する際、実時間性の課題に対処するために、ハッシュチェーンの構造は残すとしても、作業証明については省くとします。すると、ダイジェストの連鎖は高速に再計算可能ですので、この仕組みは改ざん可能になってしまいます。

また、作業証明を課したとしても、ネットワークの参加者が少なければ、比較的入手しやすい規模の大きな計算力を得ることで改ざんや意図的な操作が可能になってしまいます。そうした事態は、パブリックなブロックチェーンであるMonacoinなどですら、現実に発生しています。分散台帳は規模が大きいことにより改ざんから守られていますので、規模が小さなプライベートレッジャーで改ざん耐性を実現することは困難だといえます。

次回は、これらの課題に対する私たちの取り組みである、BBc-1(Beyond Blockchain One)について、開発の経緯を紹介します。

おすすめ記事

記事・ニュース一覧