秒間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のトランザクションは意味が異なると考えられます。なお、ブロックチェーン技術を適用しようとしている企業ユーザーは、設計上、運用上の注意を払うことで確率的ビザンチン合意を実システムに適用可能であると考えていることを付け加えておきます。

e="background-image: url(http://knowledge.sakura.ad.jp/wordpress/wp-content/uploads/2016/12/ec-okita2.png)">

VPCルータとのサイト間VPNを設定する上でのポイント~RTX1210を例に~ …

View

大喜多利哉5
e="background-image: url(http://knowledge.sakura.ad.jp/wordpress/wp-content/uploads/2016/12/ec.png)">

Googleが開発する最新ビルドツール「Bazel」を使ってみよう

ソフトウェアのビルドに古くから使われている定番ツールといえば「make」だが、昨今ではそれに変わる新たなビルド…

45

Googleが開発する最新ビルドツール「Bazel」を使ってみよう

View

松島浩道45

Webブラウザの上でWebを学ぶ。Mozilla製の「Thimble」レビュー

ここ数年、オンライン学習サービスが増えてきました。動画やスライドを使ったり、Webセミナー形式のものもあります…

5

Webブラウザの上でWebを学ぶ。Mozilla製の「Thimble」レビュー

View

MOONGIFT 中津川 篤司5

ブロックチェーンを公証役場や登記所のように使う

ブロックチェーン技術を何に使うのか、改めて考えてみます。ブロックチェーン技術の使い方を大きく分類すると、次の3…

64

ブロックチェーンを公証役場や登記所のように使う

View

星暁雄64

さくらのクラウド上でマシンイメージを自動構築 〜「Packer for さくらの…

さくらのクラウド上でマシンイメージを自動構築するツール「Packer for さくらのクラウド」をご紹介いたし…

12

さくらのクラウド上でマシンイメージを自動構築 〜「Packer for さくらの…

View

8

Wiresharkを使った通信監視(前編)――基本的な使い方とパケット解析

外部と不審な通信を行っていないかを調査したり、ソフトウェアが実際に外部とどのような通信を行っているのかを調べた…

14

Wiresharkを使った通信監視(前編)――基本的な使い方とパケット解析

View

松島浩道14

ブロックチェーン実証実験のより現場に近い報告書が登場、社内電子マネーへの応用を予…

社内電子マネーを想定した実利用イメージに近い実験 今までになく開発現場に近い情報が開示されたブロックチェーン実…

119

ブロックチェーン実証実験のより現場に近い報告書が登場、社内電子マネーへの応用を予…

View

星暁雄119

サービス監視をお手軽に!さくらのクラウド + Mackerel = 「Sacke…

さくらのクラウドと監視ツール「Mackerel」のインテグレーションを行うツール「Sackerel(サカレル)…

15

サービス監視をお手軽に!さくらのクラウド + Mackerel = 「Sacke…

View

15

エンジニア向け
をもっと見る

GitHubのようなサイトを独自に運用できる「GitLab」や「GitBucke…

自分の管理するサーバー上でGitHubのようなリポジトリ管理ツールを運用できる「GitLab」や「GitBuc…

549

GitHubのようなサイトを独自に運用できる「GitLab」や「GitBucke…

View

松島浩道549

Jenkinsを使った自動テスト環境を作る(前編)

継続的インテグレーション(CI)ツールとして有名なJenkinsは、ソフトウェア開発におけるテストやビルドと言…

528

Jenkinsを使った自動テスト環境を作る(前編)

View

松島浩道528

仮想環境構築ツール「Vagrant」で開発環境を仮想マシン上に自動作成する

最近注目されている開発支援ツール「Vagrant」は、テスト用の仮想マシン作成やその環境設定などを自動化するツ…

567

仮想環境構築ツール「Vagrant」で開発環境を仮想マシン上に自動作成する

View

松島浩道567

柔軟なログ収集を可能にする「fluentd」入門

複数台のサーバーやクラウド環境を組み合わせてのサービス運用においては、ログの収集方法に工夫が必要となる。こうい…

700

柔軟なログ収集を可能にする「fluentd」入門

View

松島浩道700

Let's EncryptのSSL証明書で、安全なウェブサイトを公開

安全なウェブサイトを公開するため、無料で利用可能な Let's Encrypt の証明書を使う方法をご紹介しま…

373

Let's EncryptのSSL証明書で、安全なウェブサイトを公開

View

前佛雅人373

エージェントレスでシンプルな構成管理ツール「Ansible」入門

近年、ChefやPuppetなどの構成管理ツールが人気だが、新たに注目されつつある構成管理ツールとして「Ans…

540

エージェントレスでシンプルな構成管理ツール「Ansible」入門

View

松島浩道540

統合監視ツール「Zabbix」によるサーバー監視

サーバーを監視するためのツールにはさまざまなものがあるが、その1つに「Zabbix」がある。Zabbixはオー…

266

統合監視ツール「Zabbix」によるサーバー監視

View

松島浩道266

サーバー設定ツール「Chef」の概要と基礎的な使い方

近年注目されているサーバー管理ツール「Chef(シェフ)」は、ファイルに記述した設定内容に応じて自動的にユーザ…

750

サーバー設定ツール「Chef」の概要と基礎的な使い方

View

松島浩道750

SSL証明書をSHA–1からSHA–2に更新する際にはご注意を!

現在SSL証明書の署名アルゴリズムがSHA–1からSHA–2へと変更になる過渡期となっています。今後はSSL証…

445

SSL証明書をSHA–1からSHA–2に更新する際にはご注意を!

View

MOONGIFT 中津川 篤司445

15分で作る、Logstash+Elasticsearchによるログ収集・解析環…

複数台のサーバーを運用している場合に、それらのログを集中管理したいというケースがある。この場合、ログを収集する…

200

15分で作る、Logstash+Elasticsearchによるログ収集・解析環…

View

松島浩道200

Wiresharkを使った通信監視(前編)――基本的な使い方とパケット解析

外部と不審な通信を行っていないかを調査したり、ソフトウェアが実際に外部とどのような通信を行っているのかを調べた…

14

Wiresharkを使った通信監視(前編)――基本的な使い方とパケット解析

View

松島浩道14

独自のSlack風チャット環境を構築できる「Rocket.Chat」や「Matt…

メールやIRC、Skypeといったコミュニケーションツールに変わって、最近急速に利用者を増やしているのがSla…

42

独自のSlack風チャット環境を構築できる「Rocket.Chat」や「Matt…

View

松島浩道42

「マイクロサービス」のメリットをざっくり言うと「変化に対応しやすい」こと──ただ…

「マイクロサービス(Microservices)」という用語が、Web企業を中心に注目を集めています。マイクロ…

337

「マイクロサービス」のメリットをざっくり言うと「変化に対応しやすい」こと──ただ…

View

星暁雄337

「Linux Virtual Server」と「Keepalived」で作る冗長…

 多数のクライアントがアクセスするような負荷の高いサービスや停止させられないサービスを運用する場合、複数のサー…

185

「Linux Virtual Server」と「Keepalived」で作る冗長…

View

松島浩道185

kubernetesによるDockerコンテナ管理入門

近年注目されているコンテナ技術「Docker」では、その盛り上がりとともにDockerと連携して利用するツール…

120

kubernetesによるDockerコンテナ管理入門

View

松島浩道120

はじめよう!高機能CMS ”Drupal(ドゥルーパル)”!! 基礎の基礎から、…

高機能CMS ”Drupal(ドゥルーパル)”の構築・運用の基礎の基礎から、Drupalの最新情報までまとめて…

65

はじめよう!高機能CMS ”Drupal(ドゥルーパル)”!! 基礎の基礎から、…

View

なかのひと65