本稿について
COSMOSのホワイトペーパー、最終更新日: 2018/4/7時点のものを対象とします。本稿では「Tendermint」の日本語訳を掲載します。
原文はこちらになります。
スポンサードサーチ
Tendermint
このセクションではTendermintのコンセンサスプロトコルとアプリケーション作成に利用されるインタフェースを説明する。詳細についてはappendixを参照してほしい。
バリデータ
古典的なBFTでは各ノードは同じウェイトを持っている。Tendermintではノードは非負整数の投票パワー(voting power)を持ち、正の投票パワーを持つノードをバリデータという(筆者注:投票パワーが0であればノードであるがバリデータではない。投票パワーが0よりも大きいノードがバリデータである)。バリデータは暗号署名や投票(votes)をブロードキャストすることでコンセンサスプロトコルに参加し、次のブロックについて合意する。
バリデータの投票パワーはジェネシス(筆者注:ブロックチェーンの一番最初の時点)で決められ、アプリケーションに基づいてブロックチェーンが決定論的に変更する。例えばCosmosハブなどのPoS型アプリケーションでは、投票パワーは担保として預け入れられるトークンの量で決められることになるだろう。
注意:2/3や1/3などの分数は総投票パワーの割合を述べたものであり、バリデータが皆等しいウェイトを持っているという場合を除いてバリデータの総数の割合を指すものではない。>2/3とは2/3よりも大きいことを指し、≥1/3は少なくとも1/3以上であることを指す(筆者注:>2/3などと表記した場合は2/3を含まない、≥1/3などと表記した場合は1/3を含む)。
コンセンサス
TendermintはDLSコンセンサスアルゴリズム[20]から派生した部分的同期のBFTコンセンサスプロトコルである。Tendermintはその単純さ、パフォーマンス、フォークアカウンタビリティで有名である。このプロトコルには定数の既知のバリデータの集団が必要で、各バリデータは公開鍵で識別される。バリデータは一度に1ブロックに対して合意形成しようとする。ブロックはトランザクションのリストである。ブロックに対するコンセンサスへの投票はラウンドで進行する。各ラウンドにはラウンドリーダーあるいは提案者がいてブロックを提案する。バリデータは提案されたブロックを承諾するか次のラウンドに進むかについて段階的に投票する。ラウンドの提案者は投票パワーに比例するバリデータの順序リストから決定論的に選ばれる。
このプロトコルの完全な情報についてはこちらに掲載している。
Tendermintのセキュリティは圧倒的多数(>2/3)の投票とロックメカニズムを通じた最適なBFTの利用に由来する。両方を組み合わsることに次のことが保証される。
- 2つ以上の値のコミットによるセーフティ侵害を引き起こすには≥1/3の投票パワーがビザンチンでなければならない。
- どのバリデータの集団がセーフティ侵害に成功した場合、あるいはセーフティを侵害しようと試みた場合であっても、プロトコルにより侵害しようとした者を特定可能である。これには対立している複数ブロックに対する投票と正当化できない投票のブロードキャストの両方が含まれる。
強力な保証にも関わらず、Tendermintは非常に優れたパフォーマンスを発揮する。コモディティのクラウドインスタンスを用いて行った5大陸の7箇所のデータセンタに分散した64ノードによるベンチマークでは、Tendermintは1~2秒程度のコミットのレイテンシで毎秒数千トランザクションを処理できる。特に、1000を優に超える1秒あたりのトランザクション処理パフォーマンスは、バリデータが故障したり悪意を持って作られた投票がブロードキャストされるような非常に敵対的な条件下でさえも維持される。詳細に関しては次の図を確認してほしい。
ライトクライアント
Tendermintのコンセンサスアルゴリズムの主な利点は簡素化されたライトクライアントのセキュリティで、モバイルとIoTのユースケースにとって理想的な候補となる。Bitcoinのライトクライアントはブロックヘッダのチェーンと同期して最大のPoWが行われたブロックを見つけなければならないのに対し、Tendermintのライトクライアントはバリデータセットの変更に送れずについていくだけでよく、最新のステートを決定するには最新のブロックで>2/3の事前コミット(PreCommit)があるかを検証すればよい。
また、簡明なライトクライアントの証明はIBC(ブロックチェーン間コミュニケーション)も実現する。
攻撃防止
TendermintはロングレンジNothing-at-Stake二重支払い攻撃や検閲などの有名な攻撃を防ぐための防衛手段を有する。これらについてはappendixでもっと十分に論ずる。
ABCI(アプリケーションブロックチェーンインタフェース)
TedermintのコンセンサスアルゴリズムはTendermint Coreと呼ばれるプログラムで実装される。Tendermint Coreはアプリケーション非依存の"コンセンサスエンジン"で、あらゆる決定論的なブロックボックスのアプリケーションを分散的に複製されたブロックチェーンに変えることができる。Tendermint CoreはABCI(Application Blockchain Interface, アプリケーションブロックチェーンインタフェース)[17]を介してブロックチェーンアプリケーションに接続できる。従って、ABCIによりコンセンサスエンジンを記述したプログラミング言語だけに限らずどんな言語でもブロックチェーンアプリケーションをプログラミングできるようになる。さらに、ABCIはどのような既存ブロックチェーンのスタックのコンセンサスレイヤでも容易にスワップアウトできるようにする。
よく知られている暗号通貨Bitcoinを引き合いに出して例を示す。Bitcoinは暗号通貨のブロックチェーンで、そこでは各ノードが完璧に監査されたUTXO(Unspent Transaction Output, 未使用のトランザクションアウトプット)データベースを保持する。もしABCI上にBitcoinライクなシステムを作るとすれば、Tendermint Coreは次を担当する。
- ノード間でのブロックとトランザクションの共有
- カノニカル/変更不能なトランザクション順序の確立(ブロックチェーン)
一方でABCIアプリケーションは次を担当する。
- UTXOデータベースの維持
- トランザクションの暗号署名の検証
- トランザクションが存在しないお金を支払うことの防止
- クライアントによるUTXOデータベースへの問い合わせ
Tendermintはアプリケーションプロセスとコンセンサスプロセスの間で非常にシンプルなAPIを提供することで、ブロックチェーンの設計を分解することができる。
(COSMOSホワイトペーパー日本語訳1 ←← 前)|(次 →→ COSMOSホワイトペーパー日本語訳3)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。