BBc-1(Beyond Blockchain One)開発の経緯
前回は、ブロックチェーンとは何なのかを改めて整理し、その課題を狭義のブロックチェーンと、ビジネス応用でよく検討されているプライベートな台帳技術とでそれぞれ見てみました。
幸い、技術の整理ができているということは、解決の糸口も見つけやすいことを意味しています。プライベートな台帳であればブロックチェーンの課題はすべて解けそうなのですが、ネットワークの規模が小さくなるため、改ざん耐性が損なわれるという大きな難点がありました。それでは公正な記録の基盤としては使えません。したがって、個々の台帳の規模に依らず、それらが集まったネットワーク全体で規模を大きくして守るという考え方が1つのヒントとなります。前回紹介した機能階層では「存在性の証明」の部分に当たります。
また、ブロックチェーンについては「コンセンサス」という言葉が何かともてはやされますが、設計上は、参加者の自律動作によって矛盾するトランザクションが生じる場合の後始末として導入されているものです。特定の主体の管理下に置かれるプライベートな台帳では、そもそもそうしたかたちでの矛盾の発生を想定する必要がありません。あるとすれば障害による矛盾の発生ですので、前回紹介した機能階層で「唯一性の合意」に当たる部分が単なる耐障害性の実現になってしまい、既存のフォールトトレランスの技術と区別がつかないというのも大きな問題といえます。端的に言ってしまえば、既存の技術を使えば済むからです。
2017年2月にビヨンドブロックチェーン株式会社を設立した頃、私はいくつかのアイデアを持っていて、それらのアイデアを実現する道を探っていましたが、その後、実際にプロジェクトがBBc-1(Beyond Blockchain One)という名前で動き出し、同年9月には一般社団法人ビヨンドブロックチェーンという非営利組織を立ち上げて、10月末日にソースコードを公開し、その後はオープンソースでの開発を進め、2018年5月にはコア部のversion 1.0をリリースすることができました。このような早いペースでプロジェクトを進めてこられたのは、BBc-1のメイン開発者として活躍した久保健氏との出会いが大きかったと言えます。BBc-1の設計には、久保氏ご自身によるアイデアもふんだんに採り入れられています。
BBc-1によるブロックチェーンの機能の実現方法
BBc-1では、ブロックチェーンの各機能を次のように実現しています。
(1)正当性の保証
前回では、この機能として実現すべき項目の中に「アセットに関する過去のトランザクション列に照らして矛盾がない」ということを解説しましたが、この部分には応用ごとに多様な可能性があります。その可能性を網羅的に取り扱うために、BBc-1は、ビットコインで採用されているようなUTXOの構造(Unspent Transaction Output;入金と出金の関係を記述するために生まれた構造)に加え、トランザクション間の関連を自由に表現できる機構を備えています。
また、BBc-1では公開鍵のダイジェストを利用者の識別子とせず、識別子と公開鍵を分離します。その間の対応付け自体を、必要ならトランザクションとして分散台帳に書き込みます。デジタル署名の検証の際には、提示された公開鍵が、台帳上で問題の識別子に対応づけられているかを確認するわけです。
秘密鍵が漏洩したり失われたりした際には対応づけを書き換えて、再生成した秘密鍵で置き換えることができます(そのためのマスターの秘密鍵は安全に保管しておく必要があります)。また、組織の中での役割に対して識別子を割り当てて、実際にその役割を担う人を表す公開鍵は必要に応じて変えられるようにもなります。
(2)存在性の証明
BBc-1では、「ドメイン」と呼ばれる、独立して運用されるプライベートなネットワークの集合として全体を動かします。典型的には、応用ごとにドメインは異なることになります。
そして、新しいトランザクション(のうち、確率的にいくつか)は、関連の無い他のドメインで過去に投入された無関係なトランザクションのダイジェストを内包するというルールを設けます。無関係な履歴同士が証拠を持ち合うという、この「履歴交差」により、トランザクションの存在や非存在を証明できると考えています。改ざんするためには多くのドメインに侵入してデータを矛盾無く書き換えなければならず、原理的にブロックチェーンよりも改ざん耐性が高いといえます。
履歴交差とDAG
履歴交差は、実は新しい考え方ではなく、ブロックチェーンに関わる界隈ではDAG(Directed Acyclic Graph;有向非巡回グラフ)と呼ばれることがあります。しかし、この用語には注意する必要があります。ブロックチェーンの関連技術の至るところに、有向非巡回グラフは埋め込まれているからです。例えばブロックチェーン自体もDAGの構造をもっています。履歴交差は過去に対しての向きを持ちますし、時間は巡回しません。したがって履歴交差を作るとすれば、その構造がDAGになるのは必然なのです。
とはいえ、BBc-1も最初はドメインが少ないと想定できますし、だとすれば履歴交差を効果的には利用できません。そこで、初期の段階では、規模が大きく事実上の存在証明を可能にしているビットコインやイーサリアムのブロックチェーンにダイジェストを書き込む(ハッシュ木のルート値を書き込むことで「アンカリング」する)運用が可能なようにしています。書き込み先に複数の選択肢を用意することで、仮にどれかのブロックチェーンが停止したとしてもBBc-1の運用は続行できるというわけです。
(3)唯一性の合意
ブロックチェーンにおいて、トランザクションの唯一性について合意する必要があるのは、参加者が自律的に動作した際に生じ得る矛盾に対処するためでした。
より本質的には、合意はトランザクションに関わるステークホルダーの間で執り行われる必要があります。もちろん、実際に合意するのは人間ですが、その合意の証拠がトランザクション自体に書き込まれるのが本来的でしょう。例えば、決裁文書に課長と部長の合意を表す承認印を残すようなケースです。従来、ブロックチェーンでは複数の署名者によるデジタル署名を取り扱う「マルチシグ」により合意を表していた部分ですが、BBc-1では、その考え方をコンセンサス(合意)の取り扱いの基調とします。
ビットコインにおいては、コインは純然たる資産であり、何の負債にも依っていません。そのため、仮に同じコインが二重に消費される(つまり同じ価値のものが複製されて増える)場合には、具体的に不利益を被る主体が不明確です。そのため、このような矛盾が生じる事態を避けるには、全体で集団的にトランザクションの唯一性に対して合意しなければならなくなってしまっています。ナカモト・コンセンサスがもつ不可能性への挑戦が必要になってしまっているのです。
ここで、「貨幣が負債の表現であり、具体的な債務者を特定できる」という考え方に立ってみましょう。すると、トランザクションの唯一性について責任をもつモチベーションの在処が明確になります。BBc-1では、そうした考え方に則り、通貨システムを作る際には、送金者に加え、発行者によるデジタル署名も得られなければトランザクションが投入されないという規則を設けることができます。この場合、概念上は発行者が単一故障点になり得ますが、従来からある冗長化および分散合意の仕組みにより対処できるでしょう。結果、不可能性に挑戦せずに全体を設計できるというわけです。
表1に、BBc-1によるブロックチェーンの機能階層の実現方法を整理してみました。
表1 ブロックチェーンの機能階層のBBc-1による実現方法
機能 | 実現の仕方 |
唯一性の合意 | ステークホルダー(例:債務者)による一致 |
存在性の証明 | ドメイン間履歴交差 and/or アンカリング |
正当性の保証 | UTXO/ステート構造、識別子と公開鍵の分離 |
BBc-1はブロックチェーンの課題を解くか
以上のような特徴をもつBBc-1は、ブロックチェーンの課題を解くのでしょうか。簡単に考えてみましょう。
(1)実時間性
トランザクションの投入は確率的動作に拠りません。
(2)秘匿性
ドメイン外にトランザクションのデータ本体を流しません(履歴交差の際にはトランザクションのダイジェストのみを交換します)。また、アセットは暗号化して保存できます。
(3)スケーラビリティ
ドメインを増やすことで全体の規模は拡大できます。ドメイン内でも規模が大きくなる場合は負荷分散する設計を想定しています。
(4)進化のガバナンス
ドメイン内の通信プロトコルをドメイン外は関知しないので、新しいアイデアを試せます。
(5)インセンティブ不整合性
ネイティブ通貨を持たず、履歴交差のメリットを得るためには、ドメインのネットワークが互助的に動作します。
このように、BBc-1ではブロックチェーンのさまざまな課題を解決できると私たちは考えています。もちろんBBc-1が唯一の解なのではなく、現在は多くの取り組みが同時に進行している状況といえますので、それらについても連載の最後の方で紹介・考察してみたいと思っています。
次回からは、BBc-1のメイン開発者を務めた久保氏が技術の詳細を解説していきます。