Tendermint
TendermitはブロックチェーンにおけるコンセンサスアルゴリズムとP2Pネットワークをパッケージングしたソフトウェアです。 これを使うことで、容易かつ安全にブロックチェーンネットワークを構築することが可能です。主な構成要素としてはTendermint Coreと呼ばれる Tendermint コンセンサスエンジンとABCI(Application BlockChain Intereface)の2つです。
分散型アプリケーション(Dapps)開発者はTendermintを活用することでブロックチェーンネットワークやコンセンサスアルゴリズムにリソースを割くことなく、アプリケーション層のみに集中して開発を行うことが可能になります。
- 1秒当たり数千トランザクションを扱える
- ブロック生成後すぐにファイナリティを得られる
- ABCIによって独自のアプリケーションレイヤーを持つブロックチェーンを容易に実装可能
- パブリックチェーンでもプライベートチェーンでも実装可能
- ネットワーク参加者の1/3以上が悪意を持っていない限り安全
ABCI
ABCIではあらゆるプログラミング言語でトランザクションの処理ができるように分散型アプリケーション開発者向けのインターフェースを提供してくれます。
つまり、ABCIによってブロックチェーンにおけるコンセンサスのプロセスとアプリケーションのプロセスを分けることができるのです。DeliverTx、CheckTx、Commitという3つのメッセージをコンセンサスロジック部分(Core)とアプリケーションロジック間(App)で送り合うことで成り立っています。
Ethermint
Ethermintは、Tendermintをベースとしてイーサリアムでのスマートコントラクトと同じことを記述、実行することを可能にします。
Ethermintではイーサリアムのweb3インターフェースやイーサリアムクライアント周りのあらゆるツールに対して互換性があります。
Cosmos
異なるブロックチェーンの間で自由にトークンの移動を可能にするネットワークです。
それぞれのブロックチェーンに即した形でABCI を実装することでクロスチェーンテクノロジーを提供します。
Tendermint Core
Tendermintでは、ブロック生成に参加する人をvalidatorと呼びます。このvalidatorの中から、交代で新しくブロックを生成する人(proposer)を選びます。このとき選ばれるproposerはstakeによって事前に決定論的に決められます。
proposerが選んだブロックを、proposerに選ばれなかった人が投票を行い、2/3以上の同意が得られれば、承認され次のステップへ移ります。
Tendermintでは、同一のブロックに関して、同時にブロックが生成されないように二段階の投票を行います。はじめの投票をpre-vote、二回目の投票をpre-commitと呼びます。また、2/3以上の投票が集まらない場合は、制限時間内まで待ち続けます。そのため、Tendermintは、部分的な非同期のコンセンサスです。
また、この2段階の投票プロセスの過程で、もしそのブロックの正当性に対して十分な投票数が得られなければ次のラウンドに移行することになります。次のラウンドでは投票プロセスを行うバリデーター群は異なり、失敗したブロック高に対する投票プロセスをもう一度行います。
ラウンドとは、proposeからpre-commitまでの一連の流れを指します。
Tendrmint Official:Tendermint