概要
皆さんが知っているブロックチェーンは、かなり厳格な構造を持っています。開発者として、2つのオプションがあります: 制限された環境下でアプリケーションを作成するか、コードをフォークして独自のチェーンを作成するかというものです。しかし、自身でチェーンを作成するのは簡単ではありません。– ネットワークを開始し、どのような
コンセンサスメカニズムを使用するかを決める必要があります。
Tendermintは、ブロックチェーンをローンチするためのオープンソースのソフトウェアで、あらゆる言語でアプリケーションを書くことができます。さらに言えば、他のブロックチェーンと通信することも可能です。
仮想通貨や
ブロックチェーンのネットワークを作成するには、データベースを初期化するだけではなく、多くの手間がかかります。そのためには、インセンティブの微妙なバランスや、セキュリティ、分散、スケーラビリティの間のトレードオフが必要です。
当然のことながら、最強のブロックチェーン・エコシステムを構築しようとするチームは、さまざまなアプローチを模索しています。今回は、そのようなアプローチの1つをご紹介します:
Tendermint。
ブロックチェーンについて少しでも知っていれば、Tendermintの多くは馴染み深いものになるでしょう。その前に、いくつかのキーコンセプトを確認しておきましょう。
ブロックチェーンアーキテクチャの理解
Tendermintは、
ブロックチェーンスタックの一種です。また、
Bitcoinや
Ethereumのようなものもあります。ブロックチェーンのデータベースだけではなく、
ピアツーピアネットワークまたは、
ノード、それらの相互作用、そしてトランザクションや
スマートコントラクトでできる楽しいことも重要です。ここでの目的は、たとえ誰も信用していなくても、全員が
ステート (データベースのスナップショットのようなもの) に合意することです。
ほとんどの場合、現在の主要なブロックチェーンは、これを可能にする秘密のソースを考案しました。しかし、それらは多くの場合、次のようなものに依存しています。モノリシック・アーキテクチャー: ソフトウェアエンジニアリングの概念で、コンポーネントが相互に接続され、相互に依存していることを意味します。その一部を切り取って他のものに接続することはできませんでした。
モノリシック・アーキテクチャーは、柔軟性を求める場合には向いていません。逆のタイプのモデル (モジュラー・アーキテクチャー) では、何かを壊す心配をせずに、個々のコンポーネントを調整することができます。モノリシック構造では、1つのコンポーネントをアップグレードしても、すべてのコンポーネントに互換性があることを確認する必要があります。
この違いを理解した上で、Tendermintプロトコルについてもう少し詳しく説明しましょう。
ビザンチン・フォールト・トレランス (BFT)
Bitcoinの大きな革新は、
ビザンチン将軍問題と呼ばれる問題を解決したことであることはご存知でしょう。この問題についての具体的な説明は省きます (興味のある方は
ビザンチン将軍問題に関する記事をご参照ください) 。これは、すべての参加者が分散設定でコミュニケーションを取らなければならないというシナリオを説明するためのものです。
参加者は、相手が嘘をついているかどうか、自分たちの間で送信されたメッセージが修正されているかどうかは不明です。そのような問題があっても、参加者が一連の事実に合意することができれば、システムはビザンチン・フォールト・トレランス (BFT) と呼ばれます。
明らかに、分散型設定では、この点を正しく理解することが重要です。ビザンチン・フォールト・トレランスではない仮想通貨は、実際には機能しません – 何らかの中央当事者が調整する必要がありますが、それでは目的は達成されません。多くのデジタル通貨と同様に、Bitcoinは、
プルーフ・オブ・ワーク (PoW) コンセンサスアルゴリズムを使用することで、この問題を回避しています。
ブロックチェーンの3つの層
そのため、モノリシック/モジュラー・アーキテクチャーの相違点も理解していますし、分散型仮想通貨ネットワークにはビザンチン・フォールト・トレランスが必要だということも認知されています。ブロックチェーンで一般的に見られる、アプリケーション層、コンセンサス層、ネットワーキング層を挙げてみましょう。
まず、用語について簡単に説明します。ここでは、技術的なことだけに注目しているので、「Tendermint」と「Tendermint Core」という言葉を使い分けています。
しかし、Tendermintは企業名であり (オリジナルのホワイトペーパーを書いた開発者Jae Kwon氏が設立した) 、Tendermint CoreはTendermint社が実際に開発したソフトウェアです。具体的には、コンセンサス・エンジン (Tendermint Core) とアプリケーション・インターフェース (ABCI) の2つの主要コンポーネントから構成されています。
Tendermint Coreは、フォールト・トレランスを実現するシステムです。要するに、全員に同じ状態を同時に見せる、大きな分散型コンピュータです。参加者の3分の2以上が誠実であれば、すべてがうまくいきます。でも、それはほとんどのブロックチェーンに言えることですよね? 何が特別なのでしょうか?
まず、使用するコンセンサスメカニズムは
プルーフ・オブ・ステーク (PoS) です。各期間において、バリデーターセットからランダムなノードが選択されます。そのノードは次の
ブロックを提案しなければなりません (
ラウンドロビンシステムと呼ばれる方法) 。他のバリデーターが納得すれば、新たなブロックが追加され、チェーンがアップデートされます。確定は即時に行われます – BitcoinやEthereumとは異なり、トランザクションが有効であることを確認するために
確認事項を待つ必要はありません。
でも、待ってください、まだあるんです!Tendermint Coreのアーキテクチャはモジュラー式であり、アプリケーション層はコンセンサス層やネットワーキング層から切り離されています。要するに、独自のアプリケーションレイヤーをスタックに組み込むことができるということです。厄介なインセンティブやコンセンサス・アルゴリズムを気にする必要はありません。
エンドユーザーにとっては、あまりスリリングではないかもしれません。しかし、開発者にとっては、既存のフレームワークを利用できるため、ネットワーク全体を構築することなく、すぐにアプリケーションを構築することができます。ブロックチェーンからのデータを統合レイヤーにパイプすることで、開発者はあらゆる言語でソフトウェアを書くことができます。
この魔法は、アプリケーション・ブロックチェーン・インターフェースと呼ばれるもので、略称はABCIとなります。これは、Raspberry Piに搭載されているGPIOピンのようなものだと思ってください。LEDから植物用の精巧なスプリンクラーシステムまで、さまざまなサードパーティ製の部品を接続することができます。同様に、ABCIはブロックチェーンとその上で動作するアプリケーションの境界を定義するものです。
Tendermint Coreの良さとは何でしょうか?
アプリケーションインターフェースとコンセンサスメカニズムを分離することで、様々な分散型アプリケーションがビジネスロジックにあらゆるプログラミング言語を取り入れることができる柔軟性が生成されます。
その具体的な例として、
Ethermintを挙げます: Ethereumのコードベースからプルーフ・オブ・ワークの仕組みを取り除き、Tendermintの上にEthereum バーチャルマシンを載せたプロジェクトです。
これにより、いくつかの面白いことが可能になりました。1つ目は、Ethereumの開発者が、スマートコントラクトを新しいエンジンに簡単に移植したり、Solidity言語で新しいコントラクトを書いたりできることです。EthermintはEthereumの機能を提供するだけでなく、プルーフ・オブ・ステークEthereumのように機能し、
Casperの実装が
Ethereum 2.0でどのようなものになるのかを垣間見ることができます。
ブロックチェーン相互運用性
「ブロックチェーンのインターネット」という約束が、多くの人をTendermintベースのプロトコルに惹きつけています。
相互運用性は、何百もの個別のブロックチェーンが相互運用性を持つようになることを意味し、仮想通貨分野では待望の追加事項です。
現在、誰もがアプリケーション独自のパブリックまたはプライベートブロックチェーンを作成できるオープンソースのフレームワークである
Cosmos SDKに多くの作業が行われています。これらのブロックチェーンは、Cosmos Hubと呼ばれるCosmosのネットワークに接続され、他のブロックチェーンとコミュニケーションをとることができます。
Tendermintは、ブロックチェーンエンジンとして、開発者からエンドユーザーまで、仮想通貨圏の多くの関係者の注目を集めています。
このソフトウェアが普及し続ければ、ブロックチェーンによるインターネットのバックボーンとなる可能性があります。これまで見てきたように、このビジョンを実現するために、一握りのプロジェクトがCosmos SDKを使用してすでに開始されています。