現状、ブロックチェーンではネットワークに参加者が増えるにつれて送金遅延や手数料増加などが起こるスケーラビリティ問題が大きな課題となっています。
この問題に対して、さまざまな解決策が提案されていますがTendermintはブロックチェーンネットワークで活用することができるパフォーマンスの高いコンセンサスアルゴリズムを提供することで高速なトランザクションの処理を実現しようとしています。
また、Tendermintを基盤とした複数のブロックチェーンのネットワークを構築することで巨大なエコシステムを作り上げるプロジェクト(COSMOS)も進行しています。
そこで、当記事ではTendermintの概要と提供するコンセンサスアルゴリズムなどの仕組みについて解説していきます。
Tendermintとは
Tendermintとは、ブロックチェーンネットワークなどの分散化されたネットワークにおいて不正が起こらないようにするためのソフトウェアです。さらに、ブロックチェーンネットワークをスケーラブルにし、分散型アプリケーションの開発も容易にすることを目指しています。
分散型アプリケーション(Dapp)開発者はTendermintを活用することでブロックチェーンネットワークやコンセンサスアルゴリズムにリソースを割くことなく、アプリケーション層のみに集中して開発を行うことが可能になるのです。
さらに、Tendermintが提供するコンセンサスアルゴリズム(プルーフ・オブ・ステーク、PoS)はパフォーマンスに優れており、ビットコインやイーサリアムなどのPoWに比べ圧倒的に優れているトランザクションの処理能力を提供できると考えられています。
なぜなら、ブロックの生成時間は1〜3秒ととても短く(イーサリアムPoWは約15秒ほど)、その分素早くトランザクションを処理していくことが可能になるのです。また、ブロックが作成された時点でファイナリティを得ることができるので、一度承認されたトランザクションは覆ることはありません。
要するに、このTendermintを活用することで、スケーラブルなブロックチェーンネットワーク上に分散型アプリケーション(Dapp)を簡単に開発することができるのです。
Tendermintが提供できるであろう恩恵をまとめると以下のことがあげられます。
- 1秒当たり数千トランザクションを扱える(ブロックチェーンでの処理能力(TPS)はもっと少ない)
- ブロック生成後すぐにファイナリティを得られる(一度承認されたトランザクションは覆らない)
- あらゆるプログラミング言語でブロックチェーンプロトコル周りを開発することが可能
- パブリックチェーンでもプライベートチェーンでも実装可能
- ネットワーク参加者の1/3以上が悪意を持っていない限り安全
Tendermintの活用事例
Ethermint
Ethermintは、Tendermintをベースとしてイーサリアムでのスマートコントラクトと同じことを記述、実行することを可能にします。
Ethermintではイーサリアムのweb3インターフェースやイーサリアムクライアント周りのあらゆるツールに対して互換性があるので、イーサリアム上のDappをEthermint上で動かすことが簡単であるのです。
Ethermintは上述したTendermintを基盤としているので、イーサリアムブロックチェーンと比較し、最大20倍もの速さでトランザクションを処理することができ、20〜50倍ほどトランザクション手数料を安く抑えることが可能になるとされています。
さらに、Ethermintの最大のメリットは以下のCosmosネットワークに参加することで、無限のスケーラビリティを得ることができることです。
Cosmos
Cosmosとは、異なるブロックチェーンの間で自由にトークンの移動を可能にするネットワークです。Cosmosネットワークでは以下のように2種類のブロックチェーン(ハブ(Hub)とゾーン(Zone))があります。
下図のようにハブを中心としてさまざまなゾーンが接続することで、それぞれのゾーンの間におけるトークンの移動が簡単に行えることを目指していることになります。
(source: COSMOS.network)
そして、このCosmosネットワークは全てTendermintを基盤としています。つまり、COSMOSハブと全てのゾーンのブロックチェーンはTendermintを活用することになります。
ファイナリティのある同じTendermintのコンセンサスアルゴリズムをベースとすることで、異なるブロックチェーン間でのトークン移動を簡単にしているのです。
また、上述のEthermintもCosmosのゾーンとして参加することが想定されています。Ethermintの理論的トランザクション処理能力は200TPS(1秒当たり200トランザクション)であると考えられており、Ethermintゾーンを2つにすれば400TPS、3つにすれば600TPSになります。(現状のイーサリアムブロックチェーンでの理論値は12.5TPSほど)
つまり、Cosmosネットワークを介した無限の水平的なスケーラビリティが可能になるのです。
Cosmosについては以下の記事で詳しく書いています。
参考:異なるブロックチェーン間でスムーズにトークンを移動させる「Cosmos」とは
以上のように革命的なEthermintやCosmosのベースとなるTendermintはどのような仕組みで成り立っているのか見ていきましょう。
Tendermintの仕組み
Tendermintは、Tendermint CoreとABCI(Application Blockchain Interface)の2つの構成要素から成り立っています。それぞれの主な役割は以下の通りです。
- Tendermint Core:コンセンサスアルゴリズム(PoS)を提供
- ABCI:あらゆるプログラミング言語で処理できるようにするインターフェース
Tendermint Coreでは、ブロックチェーンネットワークで合意形成を得るためのプルーフ・オブ・コンセンサス(PoS)というコンセンサスアルゴリズムを提供してくれます。
ビットコインなどのプルーフ・オブ・ワーク(PoW)が計算資源によりブロックチェーンのセキュリティを担保しブロック生成を行っているのに対し、PoSでは資金(トークン)をデポジットすることでブロックの生成を行います。
つまり、PoSではデポジットした資金に応じてブロックの生成を行うチャンスを得ることができ、報酬を手に入れることができるのです。PoWのように大規模な計算などは行わないため効率的でトランザクションの処理能力も優れているとされています。
ABCI
ABCIではあらゆるプログラミング言語でトランザクションの処理ができるように分散型アプリケーション開発者向けのインターフェースを提供してくれます。
つまり、ABCIによってブロックチェーンにおけるコンセンサスのプロセスとアプリケーションのプロセスを分けることができるのです。下図のように、DeliverTx、CheckTx、Commitという3つのメッセージをコンセンサスロジック部分(Core)とアプリケーションロジック間(App)で送り合うことで成り立っています。
それぞれのメッセージの役割とメッセージの方向は大まかに以下の通りになります。
- DeliverTx:検証済みトランザクションがApp側の状態を更新
- CheckTx:トランザクションが検証されているかチェック
- Commit:Core部分の状態更新をDappへコミット
(source: Tendermint docs)
Tendermint PoS(Core)
プルーフ・オブ・ステークはPoSは、「デポジットした資金量に応じてブロック生成のチャンスが得られる」というのが基本的な仕組みです。
PoSのプロトコルに参加する人はバリデーターと呼ばれます。TendermintのPoSでは、あるバリデーターが特定のブロック高におけるブロックを提案し、残りのバリデーター群によってその提案に対しての投票が行われるのです。
つまり、資金をデポジットすることで投票が行われ、デポジットした資金の量が大きいほど多くの投票数を与えていることになります。
ブロックが正式に承認されるためには下図のように2段階の投票プロセスで賛成を得る必要があります。
(source: Tendermint docs)
まず、あるバリデーターによって新しいブロックが提案され、他のバリデーター群によって一定の制限時間内に2/3以上の投票数が集まれば1段階目の投票プロセスで承認されたことになります。
そして、1段階目の投票プロセスを通過したブロックは2段階目の投票プロセスに送られ、ここでも2/3以上の投票数を得ることができれば正式にブロックが承認されたことになり、新しいブロック高としてブロックチェーンに追加されることになります。
この2段階の投票プロセスの過程で、もしそのブロックの正当性に対して十分な投票数が得られなければ次のラウンドに移行することになります。次のラウンドでは投票プロセスを行うバリデーター群は異なり、失敗したブロック高に対する投票プロセスをもう一度行います。(ブロックに含まれるトランザクションが同じであるとは限りません。)
Tendermint Coreではこのような繰り返しの投票メカニズムによるPoSが行われているのです。
このような投票プロセスであればネットワーク参加者の1/3以上が悪意を持っていない限り不正なブロックが承認されることはありません。
また、2段階の投票プロセスにしている理由は、同じブロック高に複数のブロックが作成されないように(ブロックチェーンがフォークしないように)するためです。
他にも、コンセンサスアルゴリズムにはNothing at Stake問題やロングレンジ攻撃問題など複数の問題点がありますが、Tendermint PoSではデポジットした資金を取り出すのに一定期間(数ヶ月)設けることなどで対処しています。
Notgin at Stake問題やロングレンジ攻撃などは以下の記事で解説しています。
参考:イーサリアムに導入予定。プルーフオブステークのメリットとデメリット
上述したCosmosネットワークは2018年2月にローンチが予定されています。Cosmosのネットワークが拡大していけば基盤となるTendermintの活用も急速に広まっていくことと考えられます。