コスモスの日本語テレグラムグループ
また、ブロックラビットのテレグラムも始めたばかりですがこちらも是非とも入ってくださいね!
ブロックラビットのテレグラムグループ
さて、ここでコスモスのプロジェクトについて、改めておさらいをしてみたいと思います。
コスモスネットワークの仕組みと理論、なぜコスモスはイーサリアムを使うのか。今回は最も重要なコスモスネットワークを支えるテンダーミントに焦点を当ててまとめました。
コスモスとは
コスモスは、異なるトークンを移動・交換できるネットワークを作るプロジェクトで、スイスのインターチェーン財団のサポートによって発足しました。
ビットコインやイーサリアムを皮切りに、数多くのトークンが登場しています。現状では、それぞれのトークンのブロックチェーンのシステムには互換性がなく、異なるトークンを交換しようとする場合、集中型であろうが、分散型であろうが、何らかの取引所を経由して取引を行わねばなりません。
この問題の根本的な解決を目指しているのがコスモスのネットワークプロジェクトです。ブロックチェーン間の相互性問題を解決しようとするプロジェクトは他にもいくつか存在します。代表的なのはブロックコライダーやポルカドットなど、テストネットの開発がどんどんと進んでいるブロジェクトは他にもあります。詳しくはブロックチェーンの相互運用性に新たなアプローチ(ホンモノの分散化とは)参照。
コスモスはそれらの中でも先駆的で代表的なプロジェクトと言えるでしょう。改めてコスモスネットワークがどのように異なるブロックチェーン間で自由にトークンを移動させるのか、特にベースとなっている「テンダーミント」について仕組みを見ていきたいと思います。
コスモスの基本的な構造
コスモスネットワークは、独立した並列ブロックチェーンの分散ネットワークです。
中心にハブ(Hub)、その周りにゾーン(Zone)という2種類のブロックチェーンがあります。ゾーンはそれぞれハブに接続しています。このゾーンのそれぞれが異なるブロックチェーンだというイメージです。ゾーン同士は接続していなくても、ハブに接続していれば、トークンの送受信が可能です。この送受信には、都度生成される「クロスチェーン」を使用します。これがコスモスネットワークの基本構造です。
テンダーミント(Tendermint)とは
このテンダーミント、実は今開発コミュニティで非常に注目されています。現在公開されているプロジェクト以外でも名前は言えませんが実はかなりの有名プロジェクトで採用されている、もしくは採用を考えているところが多いようです。
今回のテーマであるコスモスネットワークでは、ハブ、ゾーンを含むすべてのブロックチェーンがテンダーミントを基盤にしています。
テンダーミントはビザンチン・フォールト・トレランス(Byzantine Fault Tolerance:BFT)をベースに、ブロックチェーンのコンセンサスエンジン(テンダーミント・コア)と、一般的なアプリケーション・ブロックチェーン・インターフェイス(ABCI)の2つの主要な技術で構成されています。
テンダーミント・コア(Tendermint Core)と呼ばれるコンセンサスエンジンは、すべてのマシンで同じトランザクションが同じ順序で記録されるように設計されています。
アプリケーション・ブロックチェーン・インターフェイス(Application BlockChain Interface:ABCI)と呼ばれるアプリケーションインターフェイスは、トランザクションを任意のプログラミング言語で処理できるように設計されています。
テンダーミントは、Bitcoinなどの初期の仮想通貨よりも効率的で安全な合意形成アルゴリズムを提供することを目標として考え出されました。当初、コスモスのテンダーミントもAtom(のちにPhotonもセキィリティ的な観点から追加)などのネイティブトークンからスタートしましたが、その後、汎用ブロックチェーンコンセンサスエンジンとして発展しました。
テンダーミントは異なるブロックチェーン同士でトークンの置き換えが可能になるソフトウェアです。
信頼性(BFT)
テンダーミントは、BFTの理論に基づいています。BFTとは、ビザンチン・フォールト・トレランス(Byzantine Fault Tolerance:BFT)の略で、いわゆるビザンチン将軍(裏切り者)問題の解決策となる理論です。「P2Pネットワーク上で相互通信する際に、ノードの故障や悪意ある参加者がある場合に、全体に正しい合意が形成できるのか」という信頼性の問題です。
BFTは障害となるノードが、全ノードの1/3以下であれば、正しい合意形成ができるようになる考え方です。
このBFTの理論は数十年前からありますが、ソフトウェアに実装され普及してきたのは最近のことです。この理論から、PoWやPoSが構築されています。
プルーフ・オブ・ワーク(Proof of Work:PoW)はビットコインなどに採用されている理論で、ブロックを生成し、そのブロックに正しいトランザクションが記録されているか承認する作業のことを言います。
プルーフ・オブ・ステーク(Proof of Stake:PoS)はプルーフ・オブ・ワーク(PoW)の代替システムにあたるものであり、コインを持っている割合(Stake)で、ブロックの承認の割合を決めることを基本としています。
コスモスのテンダーミントでは、合意形成を得るためのアリゴリズムは、プルーフ・オブ・ステーク(PoS)を採用しています。
コンセンサスエンジン(Tendermint Core)
テンダーミントの合意形成は、2段階の承認システムによって得られる仕組みになっています。あるバリデータが新しいブロックを提案すると、その他のバリデータ群から一定の時間内に2/3以上の投票がなされると、第一段階で承認されたことになります。これを繰り返して2段階目でも2/3以上の投票を得られると、正式にブロックが承認されたことになり、新しいブロック高としてブロックチェーンに追加されることになります。フォークを防ぐために、バリデータは同じ高さになることがなく、そのために2段階の承認システムが必要です。
テンダーミントのPoSの大きなメリットとして、即座にファイナリティが得られることが挙げられます。承認されたブロックがブロックチェーンに追加されると、即時にそのブロックが含まれるトランザクションは確定します。
前述のPoWでは、即座にはファイナリティを得ることができない仕組みになっています。基本的に6個のブロックが追加されたらまず覆ることはない、という確率的なファイナリティを得る仕組みです。ビットコインなどはこの仕組みでファイナリティを得ています。
Posは毎回の投票時にバリデーター達が資金を賭けることで不正のないブロックチェーンを維持していくという仕組みなので、PoWのような膨大な計算時間が必要ありません。ブロックの生成時間は長くて3秒と短く、時間的な負担が軽減されます。
アプリケーション・ブロックチェーン・インターフェイス(ABCI)
アプリケーション・ブロックチェーン・インターフェイス(Application BlockChain Interface: ABCI)は、任意のプログラミング言語で書かれたアプリケーションのBFTなインターフェイスを提供します。
コンセンサスエンジン(コンセンサスエンジン)は、ABCIを満たすソケットプロトコルを介してアプリケーションと通信します。
ABCIによってブロックチェーンにおけるコンセンサスのプロセスとアプリケーションのプロセスを分けることができるのです。DeliverTx、CheckTx、Commitという3つのメッセージをコンセンサスロジック部分(Core)とアプリケーションロジック間(App)で送り合うことで成り立っています。
テンダーミントは、任意のアプリケーション状態をホストできる汎用ブロックチェーンコンセンサスエンジンに発展しました。つまり、他のブロックチェーンソフトウェアのコンセンサスエンジンのプラグ&プレイ置換として使用できます。現在のEthereumコードベースをRust、Go、Haskellのいずれでも、テンダーミントのコンセンサスを使ってABCIアプリケーションとして実行することができます。
DeliverTx:検証済みトランザクションがApp側の状態を更新
DeliverTxメッセージは、アプリケーションの作業領域です。ブロックチェーン内の各トランザクションは、このメッセージとともに配信されます。アプリケーションは、現在の状態、アプリケーションプロトコル、およびトランザクションの暗号資格情報と比較して、DiveriverTxメッセージで受信した各トランザクションを検証する必要があります。次に、検証されたトランザクションは、値をキー値ストアにバインドするか、UTXOデータベースを更新するなどして、アプリケーションの状態を更新する必要があります。
CheckTx:トランザクションが検証されているかチェック
CheckTxメッセージはDeliverTxと似ていますが、トランザクションの検証にのみ使用されます。 Tendermint CoreのメモリプールはまずCheckTxとのトランザクションの有効性をチェックし、有効なトランザクションのみを中継します。たとえば、トランザクション内の演算順序をアプリケーションがチェックし、順番が古い場合はCheckTxでエラーを返します。あるいは、各トランザクションで更新される機能を必要とする機能ベースのシステムを使用することもできます。
Commit:Core部分の状態更新をDappへコミット
Commitメッセージは、現在のアプリケーション状態への暗号公約を計算するために使用され、次のブロックヘッダーに配置されます。この便利な特性は、状態を更新する際の不一致が一連のプログラミングエラーを捕捉する取引台帳に現れます。ブロックハッシュをチェックすることによってMerkleハッシュプルーフを検証でき、ブロックハッシュが最低限の票数によって署名されているため、安全な軽量ノードの開発も簡単になります。
IBC(Inner Blockchain Communication)
コスモスはテンダーミントを使用して合意形成を行い、冒頭に述べたゾーンとハブの間でブロックチェーンを生成しています。そのトークンのやり取りはIBCというプロトコルによって行われています。
例えばTCP / IPまたはUDP / IPプロトコルのトークン送信と、IBC送信の違いは、暗号の証明が必要なところです。単一のノードまたはバリデーターはブロックチェーン全体に代わって発言する権限を持たないため、IPインターネットインフラストラクチャーの完全性に頼るのではなく、代わりにブロックチェーンハッシュコミットの暗号証明に頼ります。
また、IBCはそれぞれのゾーンにおいて独立性を保つことができます。つまり、ゾーンごとにPoSのバリデーター群を操作可能にできるのです(PoSのコンセンサスアルゴリズム自体は変更することはできません)。
これによりプライベートチェーンのセキュリティやプライバシーを維持したまま、プライベートチェーンのトークンをパブリックチェーンに送受信することが可能になります。
IBCの使用はその特性のゆえに、ブロックチェーンが即時にファイナリティを得られるテンダーミントのようなコンセンサスアリゴリズムを使用している場合に限られます。
なぜコスモスなのか
コスモスはブロックチェーンの相互運用ネットワークプロジェクトの中で、いち早くメインネットへ移行しようとしています。たった今、実現への切符をいち早く手に入れているのがコスモスと言って間違いないでしょう。
テンダーミントの利点を要約してみましょう。
・ブロック生成後すぐに承認を得られる。
・パブリック・プライベートいずれのチェーンにも対応可能。
・取引の参加者のうち、1/3が悪意を持っていても安全に動作する。
Ethermintもコスモスのゾーンとして参加することが想定されています。EthermintはイーサリアムのWeb3インターフェイスに互換性があるので、イーサリアム上のDappをEthermint上で動かすことができます。今後はBitcoin含め、様々なトークンにおいても実装を目指しています。それが実現すると、コスモスネットワークはブロックチェーンの相互運用を水平にスケーラビリティしていくでしょう。
まとめ
異なるブロックチェーンネットワークの相互性が実現できれば、異なるトークンの送受信や決済の利便性が高まるだけでなく、より大きな視点で考えると、生活や都市を支えているスマート化に使用されているブロックチェーン技術の今後の利用方法の発展にも大きく寄与するとおもわれます。
コスモスのメインネット移行に期待です。
Comments are closed