今回の記事は、「SBI R3 Japan」が公開しているMediumから転載したものです。
より様々な内容の記事に興味のある方は、是非こちらにも訪れてみてください。
はじめに
気づけば「ブロックチェーン」という言葉は様々な場面で利用されるようになり、インターネットに匹敵するイノベーションとまで呼ばれるようになった。一方、誤解を恐れずに言うと、ブロックチェーンへの向き合い方について「正しい姿勢」を持っている人は少ない。このようになった背景は様々あるが、改めてどのようにブロックチェーンと向き合っていくべきかについて考える必要があるだろう。
筆者が考える正しい向き合い方は設計思想をきちんと理解し、その設計思想が実際のユースケースにどのように影響を与えるかを理解することである。設計思想を理解する方法は様々あるが、何を犠牲に(引き換えに)何を得るのかを理解するのは一つの有効な方法である。
本稿では、「ブロックチェーン」の語源から、その定義の広がりを紐解き、どのように「ブロックチェーン」に向き合っていくべきかについて論じ、Cordaの設計思想を例に説明し、設計思想を理解する重要性について述べる。
「ブロックチェーン」の語源
そもそも、ブロックチェーンとは何だろうか。その語源は何だろうか。
間違ってはいないが、必ずしも正解ではない。
実はビットコインのホワイトペーパーには「ブロックチェーン」という言葉すらでていないのだ。ホワイトペーパーに出ている類似の言葉はせいぜい「chain of blocks」、「blocks are chained」といった言葉に過ぎない。日本語に訳すと「ブロックがチェーンで繋がっている」といった具合だ。また、「proof-of-work chain」という言葉も出ているが、「ブロックチェーン」という言葉とはちょっとかけ離れている。
実際、「ブロックチェーン」という言葉が使われ始めたのはいつだろうか。誰が最初に使い出したのだろうか。それは誰もわからない。初期の頃はbitcoin(小文字b)でビットコインのことを指し、Bitcoin(大文字B)でそれを支えるブロックチェーンの技術のことを指していたようだ。
ちなみに、よくビットコインとそれを支えるブロックチェーン技術というような言い方があるが、無理に分けるのはナンセンスだと筆者は考えている。というのもビットコインの場合、マイナーによるネットワーク維持が必要であり、そのインセンティブとなるのがビットコインだ。ビットコインが支払われなければマイナーはネットワークを維持するインセンティブを失うため、ビットコインがなければブロックチェーンも存在し得ない。つまり、ビットコインを支える技術がブロックチェーンというよりも、本質的には両者は依存しあうような関係である。
「ブロックチェーン」の定義の広がり
多くの人も知っているように、ビットコインの後に、イーサリアムが出現し、その後更に様々なブロックチェーンが出現している。例えばプライベート型やコンソーシアム型のブロックチェーンが挙げられる。
ブロックチェーンの定義は明確ではなく、人によって定義が異なる。しかし、その定義はさらにしにくくなったのである。
ブロックチェーン1.0、2.0、3.0
よく、このような言い方を見かける。
ビットコインが代表するブロックチェーン1.0
イーサリアムが代表するブロックチェーン2.0
XXXが代表するブロックチェーン3.0
ビットコインと比べて、イーサリアムはスマートコントラクトという機能が備わっており、より多くの場面で適用できるために1.0の進化形である2.0と名付けられている。また、イーサリアムを始めとする2.0と比べ、スケーラビリティやプライバシー確保やインターオペラビリティに優れる意味で3.0と呼ばれたりしている。
このブロックチェーン1.0、2.0、3.0の定義の仕方はあくまで一例でしかなく、他にも様々な定義の仕方があるようだ。
例えば、以下のような例が挙げられる。
1.0:データややり取りをブロックチェーンに記録する
2.0:通貨以外の様々なデータをブロックチェーンに記録する
3.0:データだけではなくプログラムをブロックチェーンに記録する
その他、ブロックチェーンX.0だけではなく、さらにリテール向けのブロックチェーンやエンタープライズ向けのブロックチェーンという分類の仕方が出現した。
最初から定義が不明確である「ブロックチェーン」だが、その定義はますます広がるだけでなく、人々のブロックチェーンに対する世界観もそれぞれ異なるようになってきて、必ずしも同じ対象をブロックチェーンだと考えていないように感じるのが現状だ。
まさに以下の図のような状態だ。
「ブロックチェーン」という言葉は誰によって作られたかも明白ではないため、どこからどこまでがブロックチェーンで、具体的にどのように定義されているかもわからない。結果として、人によって考えるブロックチェーンの定義または世界観が異なるのである。
最初のビットコインのホワイトペーパーの設計通りにやっていかなければブロックチェーンではないと考える人もいれば、次々と改造していき、期待する通りの機能を実現できれば、ブロックチェーンだと考える人もいる。
また、信頼できる第三者機関なしに自律的にネットワークが維持されなければブロックチェーンと言えず、信頼される第三者機関がいて決められたノードによる特定方法での合意形成し、決められた方法で運用されるのはあくまでタイムスタンプ技術の応用でしか過ぎないという見方もある。
人々のブロックチェーンの定義や認識の相違によって、その世界観もバラバラになっている中、どうブロックチェーンと効率的に向き合っていくべきなのだろうか。所謂「正統派」のような向き合い方はないのだろうか。
ブロックチェーンとの向き合い方
正統派の向き合い方とはどんな向き合い方なのだろうか。それによってどんな嬉しいことがあるのだろうか。ここで言う正統派の向き合い方とは、表面的なものに惑わされず、ものの本質を見極め、実際の意思決定の役に立てるということである。そうすることで様々なタイプのブロックチェーンがある中、それぞれのどんなところを見るべきかがわかってくる。
ここで例を挙げて説明しよう。
ビットコインは約10分間で1ブロックを作る仕様になっているのに対し、Aコインは1秒で1ブロックを作る。だからAコインはビットコインより処理能力が優れていると言う人がいるとすると、恐らくその人は正統派の向き合い方をできていない。
あるいはビットコインは送金に10分かかるのに対し、Aコインは5秒で送金できるからAコインが優れているという単純な考え方を持っているのであれば、恐らくその人は正統派の向き合い方をできていないだろう。
正統派の考え方はこうだ。
ビットコインは約10分間で1ブロックを作る仕様。
なぜそうするのか?それにはどんな意味はなんなのか。
- マイナー同士が同じタイミングでブロックを作成し、チェーンが分岐するリスクを最も有効に抑えることができる。
- マイナー同士の競争を促すことができる。それによって手数料が下がるだけではなく、ネットワークをより強固なものにできる。
約10分間で1ブロックを作ることはどんな悪い点があるのか。
- ブロック生成までトランザクションが処理されないため、時間がかかる。
- BTCの場合、常にトランザクションが詰まっているため、10分以上かかる。
そもそも、どのような仕組みで10分間で1ブロックを作っているのか。その仕組みを使うメリットは?デメリットは?なぜブロックに複数のトランザクションをまとめていかないといけないのか。そのようにトランザクションを処理するメリットは?デメリットは?それはシステムの全体像の中でどのような役割を果たしているのか。ブロックサイズの大きさの違いによってトランザクション処理にどのような影響を与えるのか。短期的な影響は?長期的な影響は?などなど…
このように、設計に対し、「なぜ」を繰り返していくと、ある究極な問いに出会うだろう。
何を犠牲にして何を得ているのか。
ということだ。
上記の例に戻ろう。ビットコインは送金に10分かかるのに対し、Aコインは5秒で送金できるため、単純にAコインが優れているのだろうか。
答えを出すためには、例えばビットコインは約10分でブロックを生成することを犠牲に何を得ているのか(そもそも犠牲という言い方でいいだろうか…)、Aコインは何を犠牲に5秒の送金速度を得ているのかを理解しなければならない。つまり何を実現させるためにそのような形で設計したのかを見極める必要があるということだ。
それぞれの「犠牲するもの」や「得るもの」には設計思想が表れており、その設計思想を理解することで、初めてブロックチェーンとの「正しい」向き合い方を理解できるのだ。
例えば、金融企業はトランザクションを外に公開したくないというニーズがある。プライバシー確保のニーズをどのように満足していけたら良いだろうか。チェーンに刻んだデータが全員にみられるパブリックチェーンの場合では、データをハッシュ化してハッシュをブロックチェーンに刻み、元データを自社データーベースで保管するやり方が考えられる。この場合、ハッシュだけ公開されているため、ブロックチェーン上のデータから元データを推測することは非常に困難である。
また、プライベートチェーンやコンソーシアムチェーンの場合は基本的に決められたノードで合意形成を行うため、パブリックチェーンのようにすべての人がブロックチェーンに記載されているデータを見られるわけではないが、それでも見られたくないデータが見られるケースがある 。一方で、R3社が開発しているCordaのような取引当事者のみデータを共有するケースも存在している。
Cordaの設計思想
Cordaは世界の数ある大手金融機関がブロックチェーンを使おうとした際、どうしてもビジネスの要件に合わないということからスクラッチで開発された分散台帳の基盤だ。
金融の世界ではプライバシーを守ることは非常に重要であり、データが参加者全員に見られたら非常に困る。従来のブロックチェーンを使うとノード間で合意をとらないといけないため、程度の違いはあるとは言え、データを公開する必要がある。一方、トランザクションを完全に秘匿化してしまうと、規制側が監視できないため、許さない。
その中でどうやってブロックチェーンを使ってプライバシーを守っていったら良いのだろうか。今までのブロックチェーンは複数のデータを一つのブロックに入れてチェーンでブロックをつないでいる。複数の人または企業が作った複数のトランザクションが一つのブロックに詰めこまれ、皆が持っているそのブロックのデータが一致していることで改ざん耐性を保証し、二重支払を防止している。しかし、こうするとプライバシーを保証するのは難しい。なぜなら、お互い持っているデータが同じであることを確認し合うためには、データは公開されていないといけないからである。
Cordaにおいては取引の当事者のみデータを閲覧できる。具体的には、1ブロックに1トランザクションだけを入れ、当事者だけデータを共有している。ただこれだけでは、二重支払いを防ぐことができない。二重支払を防ぐためには、Notaryノードというトランザクションのハッシュ値だけを保存するノードを設置し、取引を行う際、相手が二重支払いしているかをNotaryノードに問い合わせるというやり方をとっている。
これはある意味データ復旧の仕方がより複雑になる代わりに、プライバシーの確保を得たともいえる。前者は運用次第で譲れる部分だが、後者は譲れない部分である。規制側の監視についてはレギュレーターノードの設置でカバーするのである。 Cordaの設計思想を説明するのに、上述では足りないが、考え方はわかっていただけたのではないだろうか。
最後に
ここで一度最初に戻って考えてみよう。ブロックチェーンとは何か。トランザクションをブロックに取り込んでチェーンで繋げていかないといけないだろうか。ブロックに詰め込まずにトランザクションのチェーンをつなげられないだろうか。ブロックチェーンの定義が広がり、ある種ドットコムバブルのようなバブルを経て今にきてなお様々な種類のものがある。ビットコインが誕生してから様々なブロックチェーンが出現して、百家争鳴の状態となっているが、それぞれ何を犠牲に何を得ているかを注意深く分析していけば、きっとあなたは正統派の向き合い方ができるようになるだろう。