はじめに
企業がブロックチェーンの活用を検討する場合、情報を書き込むノードや読み取るユーザーを制限できるパーミッション型(許可型)のブロックチェーンが有力な選択肢となります。
既に多くのパーミッション型ブロックチェーンが開発されており、そのなかでも「Corda」(コルダ)や「Hyperledger Fabric」、「GoQuorum」は比較的多くのユースケースが存在しており、パーミッション型ブロックチェーンの中では開発年数が長いフレームワークです。
本記事では、ブロックチェーン利用を検討している企業の担当者や情報収集中の方に向けて、Cordaの特徴を整理した上で、Cordaのユースケースを紹介していきます。
Cordaとは?概要を解説
まずはCordaの概要を解説していきましょう。
Cordaはパーミッション型の分散型台帳基盤(ブロックチェーン)です。他のブロックチェーン基盤と同様に、悪意ある他者からの改ざん耐性や、アプリケーション実行時に任意の処理をプログラム的に自動化できるスマートコントラクト、データの分散化など、他のブロックチェーンにも見られる特徴を備えています。
ロジックごとにトランザクションの読み取り範囲の制御が可能
また、Cordaではトランザクションがネットワークの参加者全体に共有されることは基本的にありません。トランザクションの共有範囲を取引の関係者に限定することで、プライバシーが担保される点はCordaの大きな特徴です。GoQuorumなどでもトランザクションの中身を暗号化・ネットワーク全体に共有しても、特定のノード運営者しか復号できないようにする機能が提供されていますが、Cordaの場合は「トランザクションが存在する」ということ自体が、関係者以外のネットワーク参加者に知られません。
こうした特徴があるため、金融や保険、サプライチェーンなどBtoBの様々な分野でのユースケースが誕生しています。
トランザクションの全体共有を前提としない代わりに、分散ネットワークにおけるトランザクションの二重使用のような不正に対するバリデーション(検証)は「Notary」と呼ばれる外部のノードが行っています。
UTXO型を採用
Cordaでは、Hyperledger FabricやGoQuorumのようなアカウント型とは異なり、BitcoinのようなUTXO(Unspent Transaction Output)型のデータモデルが採用されています。トランザクションはInputとOutputで構成されており、新規トランザクション作成時には、「過去のトランザクションハッシュ」と「(未消費状態の)OutputのIndex」を参照してトランザクションのInputとします(イメージは下図を参照)。
▼詳細はこちら
知っておきたいブロックチェーンの基礎知識|UTXO vs アカウントベース
Cordaが誕生した背景
Cordaの開発を主導するのは、ニューヨークに本社を置くソフトウェア企業「R3」(R3CEV LLC)です。同社はブロックチェーンの金融領域への応用可能性を研究する目的で、2014年に設立されました。
設立当初に存在していたBitcoinなどのブロックチェーンでは「取引におけるプライバシーの確保」という金融取引の要件を満たせなかったため、2015年9月に金融機関などが採用するのに適したプラットフォームを構築しようと「R3コンソーシアム」が発足したのです。コンソーシアムには「バンク・オブ・アメリカ」や「みずほ銀行」など、200以上の企業がR3コンソーシアムに参加しています。
Cordaの特徴とは?
Cordaの主な特徴を以下の通りです。
- プライバシーの担保
- Cordaネットワーク上でのインターオペラビリティを担保
- 高いスループット(単位時間あたりの処理能力)を実現
それぞれ簡単に説明していきましょう。
プライバシーの担保
Cordaでは、トランザクションが取引の当事者間でのみ共有されます。たとえ同じCorDappを利用するノードであっても、取引の当事者でなければトランザクションの存在自体を認識できません(ハッシュすらも共有されない)。
したがって、Cordaネットワークのノードが管理する分散台帳はそれぞれ異なります。この点はネットワーク全体で取引内容を同期するほかのブロックチェーンとの大きな違いです。
https://docs.corda.net/key-concepts-ledger.html
上記のネットワークでは、それぞれの円が重なる部分だけが当事者間で共有された状態であることを示しています。例えば、Aliceは自身の分散台帳に「1」「7」という状態を記録しており、Bobは「1」「5」「6」「7」を記録しているのです。
そして、Aliceは「1」「7」以外のトランザクションの存在を認識できません。このように他のノードに対して、トランザクションの存在自体を秘匿できるため、Cordaはプライバシー要件が厳しいユースケースに向いているのです。
Cordaの二重支払いを防止する「Notary」
以上のように、Cordaでは当事者間に限った情報共有が前提となっています。したがって、二重消費といった不正を防ぐ仕組みが必要です。
そこで、新規のトランザクション(のInputのState)が二重消費ではないことを検証するノード「Notary」(公証人の意)が存在しています。コンセンサスノードであるNotaryが検証し、署名したトランザクションはファイナリティを得られるのです。
なお、Notaryにはトランザクションのハッシュのみをチェックし、過去に当該トランザクションが消費されていないかを検証する「Non-Validating Notary」と、トランザクションの中身も含めて検証する「Validating Notary」の2種類が存在します。
Cordaネットワーク上でのインターオペラビリティを担保
Cordaを用いて開発されたCorDappは、他のCorDappとのコミュニケーションが可能です。したがって、ネットワーク間のインターオペラビリティ(相互運用性)が担保されています。
スケーラブルな分散台帳を実現
Cordaでは、膨大な金融取引を処理するために、高いスループット(単位時間当たりの処理能力)を備えています。
例えば、2018年10月に公表されたCordaのパフォーマンステストの調査結果によれば、1.15億件/日、5時間連続で1秒あたり6,300件の取引を処理できることが明らかになりました。
なお、上記はCordaの商用版である「Corda Enterprise」を使ったテストであり、パフォーマンスを向上させる工夫(シャーディング)が行われているようです。
Cordaに対応しているBaaS
ブロックチェーンアプリケーションの開発・運用コストを削減するサービスであるBaaS(Blockchain as a Service)としては、以下のサービスがCordaをサポートしています。
- Kaleido
- Chainstack
Cordaを活用した事例紹介
Cordaを活用するコンソーシアムが数多く組成されています。いくつか紹介していきましょう。
Marco Polo
「Marco Polo」は、貿易金融(トレードファイナンス)の電子化プロジェクトです。現在の貿易では、請求書などの必要な資料が紙ベースでやり取りされており、十分に効率化されていません。
貿易金融のプロセスに分散型台帳技術を用いることで、透明性や改ざん耐性のあるグローバルなネットワークを構築できるようになり、貿易金融にかかる業務の効率化が期待されているのです。
また、Marco Poloのネットワークには、「三井住友銀行」や「マスターカード」、ドイツのメガバンク「コメルツ銀行」など、30以上の企業が参画しています。
さらに、2019年12月には5大陸25ヶ国以上、70以上の企業が参加した7週間の試験運用が完了しました。Marco Poloからの公式発表によれば、すべての参加者がMarco Poloの利用によって、業務が大幅に改善する可能性を感じたと回答しているようです。
Contour(旧Voltron)
「Contour」もMarco Poloのように、既存の貿易金融プロセスを効率化するプロジェクトです。Marco Poloが「オープンアカウント取引」を対象としている一方で、Contourは「信用状取引」をターゲットにしています。
オープンアカウント取引は、信用力のある企業同士の貿易において採用される取引方法であり、信用状取引は買い手と売り手の間に金融機関を仲介させることで、代金の未回収リスクを減らす取引方法です。
他にも多数のユースケースが存在する
この他にも、保険契約プロセスなどを効率化する「B3i」など、様々なコンソーシアムやソリューションがCorda上で構築・提供されています。Cordの事例についてR3の公式サイトでも確認できます。
参考:https://www.r3.com/case-studies/
また、以下の記事では、今回取り上げたMarco PoloやContour以外の事例を紹介しています。
▼詳細はこちら
分散型台帳Cordaの活用事例とは?金融や保険、デジタル法定通貨の事例も
まとめ
パーミッション型の分散型台帳基盤であるCordaの大きな特徴は、プライバシーの担保であり、同じCorDappを共有するノードであっても取引の当事者でなければ、取引の存在自体が秘匿される点です。
したがって、例えば、利害関係にある他社とのコンソーシアム組成・CorDapp運用において、情報の共有範囲を厳格にコントロールしたい場合に適しています。
さらに、Cordaで開発されたCorDappは、異なるコンソーシアム間の相互運用性が担保されているので、ユースケースが増えるほど、ネットワーク全体の価値が高まっていくかもしれません。
なお、当メディアでは主に開発者向けに、CorDappを開発する手順についても紹介しています。以下の記事では公式チュートリアルを参考に、KotlinのCorDappテンプレートを利用したIOUコントラクト(借用コントラクト)を実装していますので、興味のある方はぜひご覧ください。
▼詳細はこちら
Corda|初めてのCorDappを作ってみる
また、以下の記事ではCorda特有の概念である”Flow”に焦点を当て、その必要性やデプロイ・実行プロセス、ContractとFlowの違いなどを説明しています。開発者の方はこちらも併せてご覧ください。
▼詳細はこちら
CordaのFlowとは?概要や目的を説明
参考資料:
9 Big Takeaways from R3’s New Distributed Ledger Debut
Key concepts
Corda開発入門
Marco Polo Network successfully completes largest Blockchain Open Account Trade Finance Trial on R3’s Corda platform