イベントレポート

R3 Cordaはデータベースの統合に強み。ノードにはHA構成を推奨

TIS尾鷲氏・山崎氏登壇、オラクル主催「BlockchainGIG #3」レポート

日本オラクル株式会社は7月4日、ブロックチェーンエンジニア向けの勉強会BlockchainGIG #3を開催した。今回はHyperledger Fabric、Ethereum、Cordaの各ブロックチェーンを活用してエンタープライズ領域に取り組むエンジニアが講演とパネルディスカッションを行った。

TIS株式会社は、いくつかのブロックチェーンを視野に入れながら、現在はR3社が開発するCordaに注力している。同社Blockchain推進室の尾鷲達也氏と山崎清貴氏がCordaの特徴を説明した。

Cordaの特徴はデータベースの統合が楽だという点だ。関係データベース(RDB)を使えることが、他のエンタープライズブロックチェーンにないメリットとなる。さらに有償版のCordaではオラクルDBも使えるということを尾鷲氏は強調していた。また、有償版はR3社が正式に24時間365日体制でサポートする。実装上の問題など、直接質問すればすぐに回答が得られるため助かっているという。

TIS株式会社・Blockchain推進室の尾鷲達也氏

大手保険会社によるコンソーシアムB3iや、金融機関向けの不正防止ソリューションMonetaGoなど、Hyperledger FabricからCordaに乗り換えたプロジェクトがある。もちろん逆のパターンもあるというが、これらのプロジェクトではDBの統合に頭を悩ませなくて良いこと、当事者間でのみデータを閲覧できるという機密性が重視された。

Cordaの技術的仕様

TIS社のセッション後半は山崎氏が登壇し、Cordaの技術的な解説を行った。なお、Cordaの仕様で基本的なところは、SBI R3 Japanが開催したミートアップイベントのレポート記事にて一通りまとめた。山崎氏の講演からは、Corda特有のノータリーノード周りの説明に焦点を当てる。

TIS株式会社・Blockchain推進室の山崎清貴氏

Cordaは1トランザクション=1ブロックであり、1本のチェーンに集約しないことから一般的なブロックチェーンとはずいぶん異なる構造を持つ。この構造により、ネットワーク内で取引の当事者以外に取引の情報を開示しない機密性を持ち、データの公開範囲をブロック単位で限定することが可能となる。一方、チェーンが時系列順にならないことから、二重支払いへの対策が必要となった。Cordaではノータリーノードという専用の監視ノードを置くことで対策している。

Cordaのブロックは、前のブロックは入力(input)と出力(output)からなる。入力は1つ前のブロックの出力に一致する。ノータリーはブロックの出力(Output)が使用済みかどうかをチェックすることで、二重支払いを防止している。

ノータリーはトランザクションID、出力インデックスをキーに、トランザクションID、入力インデックス、ピア情報をバリューに、マップとして管理する。ブロックの生成時にノータリーに検証を依頼する。ノータリーはマップの中に一致するキーがなければ、提供された情報をマップに追加して署名を行う。マップの中にキーがあれば、使用済みとなるのでエラーを返すという挙動を取る。

ノータリーノードがダウンしてしまうと、検証ができないためCordaネットワークは機能しなくなる。そのため、「各ノータリーノードに高可用性(HA)構成を持つことが重要」(山崎氏)となる。TISはCordaネットワークの高可用性構成について研究を進め、その構成方法をMedium上に投稿している。

Cordaでのトランザクション処理フロー
ノータリーが停止するとトランザクションが停止するため、停止しないような対策が必要

日下 弘樹