秒間3000~4000取引の処理性能に到達したプライベートブロックチェーン

img_04

性能をチューニングできるプライベートブロックチェーン

プライベートブロックチェーンと呼ぶ技術があります。一言でいえば「情報システムとして運用されるブロックチェーン」です。その大きな特徴の一つは、耐故障性や耐改ざん性というブロックチェーン技術の特徴を保ちながら性能を追求できることです。

「性能を追求すること」は普通のITではわざわざ説明するまでもないことで、すべてのIT関連技術はその価格帯でのベストな性能を追求した成果が世に出たものと考えていいでしょう。ところがブロックチェーン技術では事情が違います。あえて性能が低くなることを承知の上で仕様を決定している側面があるのです。

ビットコインが遅いのは「仕様」

よく、ビットコインの処理性能は7取引/秒(注1)と言われます。情報システムの水準で見ると決して高い数字ではありませんが、この数字はビットコインの仕様です(正確にいうと仕様上の処理性能上限です)。そのような仕様になっていることには背景があります。

ブロックチェーンの元祖といえるビットコインは、誰でも参加できる開かれたブロックチェーンで、不特定多数のノードが参加する特徴を持っています。このように誰でも参加できるブロックチェーンを「パブリックブロックチェーン」と呼びます。

もう一つ重要なこととして、ビットコインのブロックチェーンは仮想通貨という「お金」と一体化しています。ビットコイン以外のパブリックブロックチェーンでも、仮想通貨と一体になった設計が主流です。

ビットコインを筆頭とするパブリックブロックチェーンは、不特定多数の参加を前提としていること、そして仮想通貨の資産価値を載せるプラットフォームとしての性格があることを背景として、地理的に広い地域に分散したネットワーク上で、特定の中心や管理主体を持たないPure P2Pネットワークとして機能するように設計されています。これは、例えば中央銀行の金融政策により発行量が左右されず、政府の命令のより取引停止にもならないという点で評価されています。その一方で、これらの設計は性能追求とは相反します。

パブリックブロックチェーンとは別に、プライベートブロックチェーン技術が登場しています。プライベートブロックチェーンは、情報システムとして管理運用されるブロックチェーンなので管理主体が存在し、ノードを管理する運用者が存在します。

このようなプライベートブロックチェーンの(パブリックブロックチェーンと比べた)大きな特徴は「技術面で冒険ができること」です。その冒険の一つとして、不特定多数のノードが参加する前提のパブリックブロックチェーンとは異なり、ギリギリまで性能を追求することができます。

ブロックチェーンの処理性能の算出式

ブロックチェーンの仕様上のスループット(一定時間あたり処理できる取引数)はブロックサイズとブロック承認時間、トランザクションの平均メッセージサイズにより決まります。その計算式は次のようになります。義務教育を受けた人なら簡単に計算できる内容です。

処理性能の上限(取引/秒)= 最大ブロックサイズ/(トランザクションの平均メッセージサイズ×ブロック承認時間)

ビットコインの場合、最大ブロックサイズが1Mバイト、トランザクションの平均メッセージサイズが250バイト、ブロック承認時間が10分間(=600秒)という数字です。これを当てはめると、次のようになります(計算を簡単にするため1M=100万としています)。

1,000,000(バイト)/(250(バイト)× 600(秒))≒ 6.67(取引/秒)

前述のように、よくビットコインの処理性能は7取引/秒といわれますが、その根拠となるのが上記の計算です。

上の式を見れば分かるように、処理性能の上限を高めるための仕様変更として次の3通りが考えられます。

(1)ブロックサイズを増やす
(2)平均メッセージサイズを削減する
(3)ブロック承認時間を短くする

ビットコインの場合、(1)のブロックサイズを増やす計画がいったん提案されたものの、ビットコインの開発者コミュニティとマイナー(採掘業者)たちの間で大論争になり、結果としてブロックサイズは凍結されたままです。(2)の平均メッセージサイズを小さくする手法としては複数の電子署名をまとめて記録するSegwitと呼ぶ新技術がリリース済みです。これにより2倍以上の性能向上が見込めます。(3)のブロック承認時間を短くすることは、ビットコインの仕様を大幅に変更することになるため難しいと考えられます。しかし、ビットコイン以外のブロックチェーン技術ではブロック承認時間が「15秒」とビットコインの1/40の承認時間の技術もあります。

ここで仮に、ビットコインに比べてブロックサイズを6倍、平均メッセージサイズを1/2、ブロック承認時間を1/40(15秒)に設定して機能させることができれば、
6×2×40=480
で、現行のビットコインに比べて480倍高速にできます。およそ秒間3200取引できるブロックチェーンになる訳です。この数字は現実的なのでしょうか?

480倍の性能向上と聞くと、従来のITの常識ではなかなか難しそうに聞こえます。ですが、ここでブロックチェーンの性能は「仕様上の制約」による部分が大きいという背景を思い出してください。そして最近の新技術の評価により、この水準の性能は実現可能であることが、だんだんと分かってきたのです。

パラメータをチューニングできるmijin

mijinは、パブリックブロックチェーンのNEMと共通のAPIと設計思想を持つプライベートブロックチェーン技術です。プライベートブロックチェーンであることの特徴として、各種パラメータを操作可能です。つまり、各種パラメータを操作することで性能を追求することができます。

さらに、現在開発が進められているmijinの次世代コアCatapultでは、(1)ブロックチェーンの核心部分を担う「チェーンサーバー」とAPI呼び出しを受け付ける「APIサーバー」を分離、(2)開発言語とJavaからC++に変更、(3)通信プロトコルもsocket上に実装するなど、処理性能のネックになる要素を取り除くことで高速化を達成しています。

このCatapultの最新の性能を試した実験の結果が先日報告されました。さくらインターネット、テックビューロ、アララが協力して実証実験を行った結果、「平均3000件/秒、最高4142件/秒」の性能が確認されました。実験環境は「さくらのクラウド」の1リージョン内で4ノードを使っています。

Catapultの最新の性能を試した実験

実験では「さくらのクラウド」1リージョンに4ノードを立て、ブロックチェーンを動かした。図にあるように、mijin次世代版コアの「Catapult」ではブロックチェーンの合意に参加するチェーンノードとアプリケーションからの要求を受け付けるAPIサーバーを分離している。
出展:プレスリリースより

テックビューロへの取材で聞いた話によれば、負荷をかけるアプリケーション側の能力が追いつかなかった側面もあるとのことで、今後の実験環境側とCatapult側の双方のチューニングにより性能値はさらに上がる可能性もあります。今の性能面のネックは、ネットワーク遅延と、トランザクションへ電子署名を付与するための計算時間に絞られてきているとのことです。

今後は複数のリージョンに分散させる実験を予定していますが、この場合には耐故障性のレベルはさらに高まるものの、ネットワーク遅延により処理性能の上限が下がる可能性があります。

注目したいこととして、今回の性能値はいわば「速報値」です。そして、性能を追求したサーバー機ではなく、クラウドサービスとして提供されているインスタンスを使っています。そのうえで、企業情報システムの基準で見ても高水準といえる性能を出しています。

例えば、クレジットカードでは世界一の処理能力を持つVISAカードのシステムで平均スループットは4000~6000tps(トランザクション/秒)と言われています。今回の「平均して秒間3000取引」という数字は、このVISAカードの平均スループットにもうすぐ届く数字といえます。世の中の大半の情報システムの要求性能はVISAカードのシステムより下です。つまり今回の実験結果を見ると、プライベートブロックチェーンの処理性能はほとんどの情報システムで要求される性能を満たす水準にあると考えられます。

プライベートブロックチェーンを使いこなすには発想力が必要

性能以外の側面に少し触れておきたいと思います。

プライベートブロックチェーンをどのように使いこなしていくか。それは情報システムを企画、設計する側の想像力、発想によるところが大きいといえます。例えば今回の実験に参加したアララでは、プライベートブロックチェーン技術の魅力として、(1)低コストで耐故障性を獲得できること、それに(2)耐改ざん性により内部不正にも強いことを挙げています。電子マネーのシステムを開発する同社にとっては両方とも重要な性質です。

従来の情報システムは、セキュリティ機能にお金がかかる割には内部不正に弱いところが一つの泣き所でした。大銀行の情報システムのセキュリティ機能は厳重なはずですが、それでも内部の人間がシステムを不正に操作してお金を着服する不祥事が起こっています。

ブロックチェーン技術は、ソフトウェアにより耐故障性と耐改ざん性を獲得するところに特色があります。ソフトウェア的な耐改ざん性があるので、例えば鍵がかかるサーバールームに設置されていたサーバー機を、クラウド上のインスタンスに置き換えることも可能です。これにより、システム構築コストと運用コストは大幅に削減できるでしょう。

さらに、例えばマルチシグ(複数の暗号鍵が揃わないと取引できない)などの機能をうまく活用すれば、内部不正の可能性も減らすことができます。業務プロセスを従来より簡素にして業務効率を高めていける可能性も、視野に入ってきます。

進展が著しく、可能性が大きなブロックチェーン技術の今後の動向を、今後もひきつづき見守る必要があるでしょう。

注1:なお、tps(トランザクション/秒)という単位でこの数字を表記している場合もあります。ただし、tpsという単位はOLTP(オンライン・トランザクション処理)システムのトランザクションに適用される単位なので、今回の記事では日本語で「取引/秒」としました。OLTPシステムのトランザクションはACID特性(原子性、一貫性、独立性、耐久性)を持つとされています。一方、ビットコインや今回取り上げたmijinでの取引は「取引が覆る確率が時間と共に0に収束する」という確率的な挙動をします(「確率的ビザンチン合意」と呼ぶ場合もあります)。確率的ビザンチン合意と、ACID特性を前提とするOLTPのトランザクションは意味が異なると考えられます。なお、ブロックチェーン技術を適用しようとしている企業ユーザーは、設計上、運用上の注意を払うことで確率的ビザンチン合意を実システムに適用可能であると考えていることを付け加えておきます。