分散型台帳技術 Orb DLT 2017.08.15 Tuesday

Engineering Blogの第一回においては、弊社のプラットフォームソフトウェア製品であるOrb DLT(Orb Distributed Ledger Technology)について、その概要や開発に至った経緯、設計方針等をご紹介しようと思います。

Orb DLTの概要

Orb DLTは、お客さまの決済や契約アプリケーションにおけるトランザクション処理や管理を支えるプラットフォームソフトウェアです。Orb DLTを用いることにより、お客さまは、トランザクションシステムの安定性やセキュリティ、整合性や性能、および可用性などの厳しい要件に頭を悩ます必要はなくなり、本来の業務に集中することができます。

開発に至った経緯

Orb1 に至るまで

弊社は以前、ブロックチェーン技術(*)をベースとするOrb version1(Orb1)と称するプラットフォームソフトウェアを開発していました。まずは、なぜ、このOrb1のアクティブな開発を停止し、Orb DLTという新しいプラットフォームソフトウェアの開発に至ったのか、その経緯を簡単にご紹介しようと思います。
(*) ブロックチェーンの定義は依然として曖昧ですが、ここでは、ビットコインにおけるコンセンサスやデータ管理の実装をブロックチェーンと呼ぶことにします。
 
2,3年前のブロックチェーン界隈では、主にビットコインの世界において、これまでトランザクションの世界ではあまり議論がされてこなかった非中央管理型のトランザクションシステムやそのシステムにおけるデータの改ざん耐性等の面白い技術的概念が議論されていました。弊社は(他の会社もそうであったように)、これらの技術が将来のトランザクションシステムの世界を少し異なったものにするかもしれないという可能性を少なからず感じていました。
 
ただし、ブロックチェーンの技術が、ビットコインのような誰でも参加可能なパブリックなアプリケーションの用途以外で、特に弊社が対象としているようなB2Bサービスやエンタープライズの領域において、本質的に有効かどうかに関しては当初から疑問がありました。なぜなら、そもそも、主体を持つ営利企業が、パブリックなP2Pをベースにサービスやプラットホームを提供することが、論理的に成立しづらいように感じたからです。
すなわち、サービスを受ける側は、サービスの適切な提供に関して料金を支払うわけですが、パブリックなP2Pのシステムをベースに作ったサービスは、その提供の品質を他のネットワークの参加者に委ねるほかなく、つまり、提供側がシステムの品質を制御できないため、根本的に成立が困難なのではと感じていました。
 
また、ブロックチェーンをプライベートな環境で用いる試みも見られはじめていましたが、ブロックチェーンは本来パブリックなP2Pネットワークを前提に設計されたシステムであるため、これは本末転倒であると考えていました。加えて、ブロックチェーンは通貨のトランザクションを実行するシステムであるにも関わらず、システムの設計が、データベースや分散システムの世界で長年培われた技術が必ずしも有効に活用されていないように感じました。私はこの世界に企業とアカデミアを含めて長いこといるため、技術的な不信感が少しありました。
 
ただ、新しいものに対して批判的になりすぎることはよくないため、そのように考える中であっても、ブロックチェーンの本質に関して深い調査や社内外での議論を重ねていきつつ、また、実際に新しい技術をベースとしたサービスも提供も決まっていたため、身をもって体感するためにシステムを作りながら検証・整理を進めていくことにしました。その過程で生まれたのがOrb1です。

Orb1 から Orb DLTへ

Orb1はユニークであり試みとしては面白いシステムだったのですが、やはり、そのアーキテクチャと弊社が推進するビジネスにおいて必要なものとの間には大きなギャップがありました。
 
まず、ブロックチェーンはそもそもパブリックなP2Pを想定して設計されたシステムであるため、当然、パブリックな環境での使用においては、参加者間で正確に合意をとることはできません。すなわち、ブロックチェーンネットワークに参加するノード数は不特定であり、PoXにおける全体の総量を想定してそれに対して過半の量を満たしたノードにブロックを作成する権利を与えるというコンセンサスプロトコルでは、当然正しく合意に至ることはできません。(つまり、ブロックチェーンのトランザクションにおいて、アトミシティ、ファイナリティは保証されていません。) この辺りに関しては、感覚的に議論されることが多いですが、我々は2015年の段階で、ICDCSのワークショップ論文にてその限界について、少しだけ丁寧な技術的整理をしています。(論文自体の発表は2016年です)
http://ieeexplore.ieee.org/document/7756226/
 
Orb1においては、この合意に至れない問題を解決するべく、スーパーノードと称するー部のノードにのみに合意を取ることができる特権を与え、それらのノードをシステムの主体もしくはOrbが管理するという方法をとりました。既存のブロックチェーン資産を活用するという観点では良かったのですが、結局は、パブリックでないネットワークで合意をとるという解決策しか論理的にとることができなかったというのが正直なところです。
 
また、Orb1は、基本的にはブロックチェーンを踏襲しているため、ブロックチェーンにおける問題はそのまま引き継いでいました。例えば、データの共有方法においては、いわゆるフラッディングを用いており、参加ノードにはLazyにデータがコピーされていきます。つまり、ネットワーク全体にデータがコピーされる中間状態が、ネットワークの外から観測することができてしまいます。(Replicated State Machineにおいて一貫性がEventualであることを示しています。)
 
同様に、実装における問題もありました。例えば、データを参加ノード全体にコピーするため高いスケーラビリティの確保が本質的に難しいという問題や、ブロックのチェーン構造(リンクリスト構造)から起因するデータ更新における低い並列性の問題等です。
 
問題を整理する過程で、同時に、新たな知見も得られました。まず、様々なお客さまやパートナーと議論をしていて見えてきたこととして、ブロックチェーンに対してB2Bおよびエンタープライズマーケットで求めてられていることは、大きく分けて以下の二つに集約できるのではと考えるようになりました。一つは、トランザクションシステムを複数または多数の平等な主体で管理・運用し(*1)、全体として高い安全性や可用性、そしてスケーラビリティを確保したいということ、二つ目は、それと同時にデータの高い耐改ざん性を維持して、内部の犯行者であってもデータの改ざんを困難にしたいということ、です。
 
マーケットの需要を把握すると同時に、これらを実現するための仕組みがブロックチェーンの技術とは直交していること、そして、それらの仕組みを最先端の分散データベース技術を拡張することにより(*2)、より高効率に実現できることがわかりました。このような経緯により、Orb1のアクティブな開発を停止し、マーケットの需要を正しく捉えたプラットホームソフトウェアを提供すべく、一年半ほど前から、Orb DLTの研究開発を開始しました。
   
(*1) コンソーシアムユースケースと呼ばれることもあります。
(*2) これらの拡張における基本技術はOrb独自の特許出願中の技術です。
 
補足:以上は、ビットコインやそれで用いられているブロックチェーン等の技術を批判するものではありません。むしろ、それらはとても面白い技術であると思います。ブロックチェーンの仕組みの都合上、個人や企業が責任を取れる範囲、もしくは、それほどクリティカルではない領域で、と用途は限定される可能性はありますが、そこで使われているPoXに代表される技術は興味深いです。ただ、そのことと、その技術を企業が(エンタープライズ)サービス・ソフトウェアとして利用できるか、ということには乖離がある、というのが本文の意図です。

設計方針

Orb DLTは、B2Bおよびエンタープライズのマーケットにおける需要を満たすべく研究開発された、高い改ざん耐性を有する非中央管理型の分散トランザクションシステムです。
独自の特許出願中の技術(*)により非中央管理型の分散トランザクションと高い改ざん耐性の仕組みを実現し、同時に、金融システムで非常に重要である、決済のファイナリティ(アトミシティ)、レプリカ間の強い一貫性、高いスケーラビリティと高い可用性を有しています。つまり、ブロックチェーン技術と分散データベース技術の利点をうまくかけ合わせることを目指したプラットフォームソフトウェアです。複数の主体が共同でシステムを運用するようなコンソーシアム型や、既存のデータベースの世界におけるプライベート型のユースケースを対象としており、既存のパブリック型のブロックチェーン(+ビットコイン)とは少し対象領域が異なります。
 
ここ最近は、HyperLedger Fabric等、同様のユースケースを目指している競合製品が出てきていますが、それらに対しては、特に上記の軸において優位に立つべく設計されています。個々の軸の優劣の理由に関しては、添付のスライドを参照ください。

Orb DLTの構成要素

Orb DLT はApollo, Core, Toolboxの3つのコンポーネントから構成されています。Apolloは、データの管理・処理を特定の計算機に依らずに実行する非中央管理型のデータオペレーティングシステムであり、複数のサーバ計算機からなるクラスタ環境や、遠隔地に位置する複数のクラスタから構成される分散クラスタ環境において用いることが可能です。トランザクションを実行するTransaction、分析クエリを実行するAnalytics、シンプルなストレージ管理を実現するStorageの3つのコンポーネントからなります。
 
Coreは、通貨や契約アプリケーションにおけるトランザクションの振る舞いを柔軟かつシンプルに定義でき、当該トランザクションを安全かつ高並列に実行することを可能とするミドルウェアであり、CoinCoreを始めとし、AccountCoreやQueryCoreといったミドルウェアからなります。CoinCoreにおいては、コインの定義、コインに対する振る舞いの定義を柔軟に設定することができるため、様々なアプリケーションのニーズに合わせて機能を自由にかつ簡単にカスタマイズすることが可能です。
 
Toolboxは、Core上でFintechアプリケーションを容易に開発することを可能にするためのSDKやライブラリです。入金や決済、クリアリングを始めとする、Orb DLTの外の世界との連携や他のシステムとの接続において必要な機能を提供するものです。
個々のコンポーネントに関しては、弊社のプロダクトページにもう少し詳細な説明がありますので、ぜひそちらもご参照ください。
https://imagine-orb.com/product/

さいごに

第一回はOrb DLTの概要について簡単に紹介しました。下の資料は少し古いですが5月のOracle Cloud Platform Summit Tokyo 2017での発表資料とJBAでの発表資料です。上記の文章と一緒に参照いただけると理解を少し深めていただけると思います。Orb DLTの実装については、今後のブログで随時書いていく予定ですので、もうしばらくお待ちください。
分散型台帳技術Orb DLTのご紹介とOracle Cloudにおける当該ソフトウェアの性能評価 from Orb, Inc.
 
分散型台帳技術Orb DLTの紹介 from Orb, Inc.
 
hiroの最近記事