ブロックチェーン技術(注1)の大きな特徴である可用性と、金融系システムで求められる決済の確定性(ファイナリティ)の間にはトレードオフの関係があります。日本銀行が行った実験結果は、このことを確認する内容となっています。

「ファイナリティ」は一貫性を重視した言葉

ブロックチェーン技術を情報システムに適用する場合に話題になることが多い言葉が「ファイナリティ」です。

ファイナリティとは、元々は金融業界の用語で「決済の確定」を意味します。ブロックチェーン技術に対してこの言葉が用いられるのは、決済処理の挙動が確率的であるブロックチェーン技術(詳しくは後述)に対して「ファイナリティがない」と表現する場合です。

ファイナリティが問題になる背景には、ビットコイン、Ethereum、NEM/mijinなどのブロックチェーン技術が実現している一貫性と、金融機関が情報システムに求めている一貫性の種類が異なるという事情があります。そこで、最近は金融機関が求める強い一貫性(ファイナリティ)を提供する製品も出ています。以下、その両者を比べていきます。

合意形成アルゴリズムにより挙動が異なる

ファイナリティについて議論するには、合意形成アルゴリズム(コンセンサスアルゴリズム)の違いを知る必要があります。ブロックチェーン技術は複数のノード(コンピュータ)を協調動作させる仕組みが必要ですが、その役割を果たすのが分散合意アルゴリズムです。

例えば、ビットコイン、Ethereum、NEM/mijinなどが採用する合意形成アルゴリズム(注2)は「時間の経過とともにその時点の合意が覆る確率が0へ収束する」(日本ブロックチェーン協会による「ブロックチェーンの定義 (1)」より)挙動をします。記録処理が覆る確率がわずかに残るものの、時間とともに確率が0に限りなく近づいていきます。例えばビットコインの場合、6個のブロックが生成/承認されるのを待って決済が確定したと見なす習慣がありますが、これは6回の承認の後で決済が覆る可能性は事実上ないと見なしているからです。このような合意を確率的ビザンチン合意と呼ぶ場合があります。

確率的ビザンチン合意の優れている点は、大規模なネットワークで動作することが確認されていることです。確率的ビザンチン合意に基づくビットコインのネットワークは8年に渡り無停止で動き、1000万以上のユーザーが使っています。ビットコインのネットワークでは6500ノード(記事執筆時点、coin.danceによる統計)が稼働しています。ビットコインのネットワークは、冗長度と可用性ではこの地球上で最高水準にあるといっていいでしょう。

しかしながら、金融機関の情報システムでブロックチェーン技術を検討する局面では「確率的な挙動は受け入れにくい」との考え方が主流のようです。そこで注目されているのが、ファイナリティがある、つまり確定的な挙動の合意形成アルゴリズムを備えたブロックチェーン技術です。

分散システム研究には長い歴史があり、分散合意形成のアルゴリズムとしてPaxos、ビザンチン合意を実現するアルゴリズムとしてPBFT(Practical Byzantine Fault Tolerance)が知られています。これらを応用したブロックチェーン技術が登場しています。

プライベートブロックチェーン技術のHyperledger Fabric v0.6ではPBFTを使います。最新バージョンのHyperledger Fabric v1.0では、PBFTの拡張版(ノード群をグループに分け、それぞれ並列に合意形成する)を使います。またbitFlyerのプライベートブロックチェーン技術Miyabiでは「BFK2」(bitFlyerでは「Paxosに近い」とコメントしています)を、ソラミツのHyperledger IrohaではPBFTの延長にある「スメラギ」を使います。いずれも、確定的な挙動を特徴とする合意形成アルゴリズムです。

これらの合意形成プロトコルでは、複数のノード間が通信して合意形成するので、合意した結果が覆ることはありません。その代わり、ノード間の通信のオーバヘッドがあるため、一般にノード数が増えるほど合意形成の処理が重くなります。処理性能は製品により大きな開きがありますが、「ノード数(可用性)と処理性能にトレードオフの関係がある」点は共通しています。ビットコインが実現している大規模な冗長化とは相容れない性質といえます。

確定的な合意形成アルゴリズムのPBFTを使うHyperledger Fabric v0.6

確定的な合意形成アルゴリズムのPBFTを使うHyperledger Fabric v0.6では、ノード数が増えるほど処理時間が増える。
日本銀行 第3回FinTechフォーラムの資料「分散型台帳技術にかかる基礎実験」より。

日本銀行が2017年2月28日に開催した第3回FinTechフォーラムでは、「分散型台帳技術にかかる基礎実験」と題した発表がありました。これは、日本銀行が主体となり、「日銀ネット」のシステムにブロックチェーン技術を適用する想定のもと実験を行ったものです。その結果、「ノード数が多いほどレイテンシ(遅延)が増える」との結果が示されました(図1)。また、「処理負荷が高まるほどこの傾向が顕著になる」との知見も得られました。

この結果は、技術的には予想できる内容ではあります。PBFTはノード数が増えるほどノード間通信が増えるプロトコルです。また、マクロな観点からは、CAP定理(一貫性(C)と可用性(A)と分断耐性(P)は同時に保証できずトレードオフの関係にある)にも合致します。

予想できる内容とはいえ、日本銀行が現実の業務を想定して実験した結果には大きな意味があるといえるでしょう。

確率的合意と、確定的合意のトレードオフを考える

今回の日本銀行による実験では4ノードから16ノードまでの処理性能を測定しています。これより高水準の可用性(ノード数が数十~数百など)を追求したい場合は、確率的ビンザンチン合意が選択肢となります。

確率的ビザンチン合意(PoW、PoS、PoI)は、大規模冗長化により極限までの可用性を追求したい場合には必要となると考えていいでしょう。

確定的な合意形成アルゴリズム(Paxos、PBFT系)を使う場合は、現実的にはノード数は十数ノード程度の規模にとどまると考えられます。それでも十分に高い冗長度といえます。確定的な合意形成アルゴリズムを使うブロックチェーン技術は、既存の情報システムと比べて同等以上の可用性をより低コストに実現することができると考えていいでしょう。

プライベートブロックチェーン技術を検討する場合には、このような「既存技術に比べたトレードオフ」と、「確率的な合意と、確定的な合意のトレードオフ」を考慮することが求められるといえるでしょう。

注1:情報システム分野で使われるブロックチェーン技術を、仮想通貨を伴うパブリックブロックチェーンと区別して、プライベートブロックチェーン技術と呼ぶ場合がある。また、コンソーシアム型ブロックチェーン技術、パーミッション型ブロックチェーン技術という用語も使われている。機能に注目して、ブロックチェーン技術ではなく分散型台帳技術(DLT: Distributed Ledger Technology)と呼ぶ場合もある。今回の記事では「ブロックチェーン技術」で統一している。

注2:ビットコインのパブリックブロックチェーンの合意形成アルゴリズムはPoW(Proof of Work)。Ethereumのパブリックブロックチェーンは現状はPoWだが将来は電力消費が少なくて済むPoS(Proof of Stake)への移行を予定。パブリックブロックチェーンのNEMはPoI(Proof of Importance)と呼ぶPoSを拡張したアルゴリズムを利用。NEMのプライベート版のmijinはPoSまたはPoIを利用。いずれも確率的ビザンチン合意が特徴。