Ethereumをベースとしたスマートコントラクトプラットフォーム「Quorum」は企業向けに改良されている。サンプルで動かしつつ、どのように改良されているのかを探る。
「スマートコントラクト」は、契約の条件確認や履行などを自動で行えることから、ブロックチェーン技術を活用したアプリケーションプラットフォームの中でも研究開発が進み、注目されている技術です。
本連載では、スマートコントラクトの概念や仕組みを整理しつつ、DApps(Decentralized Applications:分散ノード上で実行されるアプリケーション)でのスマートコントラクトのコーディング方法、企業向けアプリケーション開発の実践方法について解説していきます。
今回は、Ethereumをベースとした企業向けスマートコントラクトプラットフォーム「Quorum」の紹介とサンプル動作環境の構築手順を説明します。
Quorumとは、JPモルガンが開発したオープンソースソフトウェア(OSS)であり、Ethereumをベースとした企業向けスマートコントラクトプラットフォームです。金融分野におけるエンタープライズ用途として開発され、Ethereumと互換性を持っています。Quorumは、Ethereumから主に下記の内容が改良されています。
Quorumでは、参加するノードを許可リストとして事前に定義することで、許可されたノードのみでネットワークを構成できます。仮に、許可リストにないノードがネットワークに参加しても、許可されたノードをピアとして認識できず、また許可されたノードからピアとして認識されず、実質的にネットワークに参加できない状況になります。
Ethereumでのトランザクションは、ネットワーク内の全ノードで実行され、実行結果も全ノードで更新されます。これを便宜上「パブリックトランザクション」と呼びます。
Quorumでは、パブリックトランザクションに加えて、「プライベートトランザクション」を実装しています。プライベートトランザクションとは、“実行するノードを指定した”トランザクションであり、トランザクションの実行結果は、指定されたノードにのみ保持されます。このプライベートトランザクションを活用することで、データの秘匿化が可能となります。
プライベートトランザクションにより、取引の当事者に該当するノードでのみトランザクションを実行することで、データは当事者間でしか共有されません。例えば、監査機関のノードを参加させて、「取引の当事者同士+監査機関」のノードでトランザクションを実行するルールにすることで、取引の当事者のノードには関係する取引データのみが記録され、監査機関のノードには全取引のデータが記録されることになります。
執筆時点での最新版では「Raft-based」と「Istanbul-BFT」というアルゴリズムが実装されています。
Raft-basedは、「Raftコンセンサスアルゴリズム」を実装したもので、信頼性のあるノードで構成された「BFT」(Byzantine Fault Tolerance)が不要なコンソーシアム型向けになっています。ノードは「leader」と「follower」という役割に分かれます。
Istanbul-BFTは、「Istanbul Byzantine Fault Tolerance」(GitHub)を実装したものです。ノードは「Proposer」と「Validator」という役割に分かれます。ブロックの作成はProposerの役割を持ったノードが行い、ネットワークにブロードキャストします。その後、Validatorの役割を持ったノードが検証し、承認が得られるとブロックが確定します。
なお、以前のQuorumは「Voting」(投票)というコンセンサスアルゴリズムが実装されていました。ブロックの作成は「block maker」の役割を持ったノードが行い、作成されたブロックはblock makerで署名され、その後ネットワークの他ノードに配布されます。そして「voter」の役割を持ったノードが検証していました。
いずれのアルゴリズムも、ネットワーク内の限られたノードでブロックを生成し、他ノードが検証する仕組みです。現在、アルゴリズムの処理性能の向上が図られています。
Istanbul Byzantine Fault Tolerance(GitHub)によると、秒間400〜1200のトランザクションが処理可能とされています。ネットワークやコントラクトへの依存はあるものの、秒間数百のトランザクションは処理できると見込めるでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.