pseudoyu

pseudoyu

Blockchain | Programming | Photography | Boyi
github
twitter
telegram
mastodon
bilibili
jike

Cosmos ブロックチェーンのアーキテクチャと Tendermint コンセンサスメカニズム

前書き#

私の仕事は、クロスチェーンプロジェクトのアーキテクチャ設計と実装に関与しています。会社のプロジェクトは Cosmos ブロックチェーンをベースにしているため、私は 1 年以上のプロジェクトで Cosmos SDK を使用していくつかのローレベルチェーンの開発改造を行い、その技術実装についていくつかの理解を得ましたが、開発期間が短かったため、Cosmos のアーキテクチャ設計と Tendermint のコンセンサスメカニズムについて体系的な理解を持つことができませんでした。

プロジェクトが終了した後、私はついに時間を作って「ブロックチェーンのアーキテクチャと実装:Cosmos の詳細」を読むことができました。この記事は、私自身が Cosmos と Tendermint についての理解とまとめです。

ブロックチェーン技術の発展#

具体的な Cosmos ブロックチェーンについて説明する前に、ブロックチェーンの発展の経緯と現在の業界で主流のブロックチェーン技術について整理してみましょう。

技術の制約#

ブロックチェーンの発展はすでに 10 年以上の歴史があり、最初のビットコインから一時的に人気を博した EOS、そして後に主流となったイーサリアムなど、それぞれに特徴がありますが、制約もあります。

  • ビットコインやイーサリアムなどの方式は、P2P ネットワーク、暗号学、コンセンサスアルゴリズムなどを実装する必要があるため、比較的高い技術的なハードルがあります。
  • プルーフオブワーク(PoW)メカニズムをベースとしたローレベルチェーンは、電力消費(電力)が増加し、リソースと環境には友好的ではありません。
  • チェーン上のアプリケーションの数と規模が増えるにつれて、チェーンのパフォーマンスの制約がますます明確になってきました。
  • ビジネスシナリオの複雑さと要件の増加に伴い、チェーンのコンセンサスアルゴリズムも具体的なシナリオに応じて変化する必要があります。
  • 異なるチェーンのローレベルアーキテクチャの差異が大きく、異なるチェーン間の通信が困難であり、クロスチェーン技術の実現も難しい課題です。

技術の発展#

これらの問題を解決するために、業界ではさまざまな技術的な提案が行われています。

  • リソース消費に関しては、PoW に代わる PoS(Proof of Stake)メカニズムが採用されています。例えば、EOS の DPoS や最近アップグレードされたイーサリアムの PoS などがあり、開発はますます成熟しています。
  • ローレベルチェーンの制約に対処するため、ビットコインのように個々のアプリケーションに対して独自のチェーンを構築するモデルから、スマートコントラクトを利用して DApp を構築するモデルに移行しています。
  • パフォーマンスの制約に対して、ビットコインキャッシュはブロック容量を増やすことで対応し、EOS は TPS を向上させることで対応しています(百万 TPS と称されています)。イーサリアムはシャーディング(Sharding)を使用してチェーン上のトランザクションを並列処理する方法を採用しています。
  • クロスチェーン技術に関しては、ハッシュロック(ハッシュロック)の方法がビットコインや Algorand プロジェクトで使用されています。また、ノーティファイヤやリレーチェーンなどの提案もあります。

Cosmos ブロックチェーンフレームワーク#

概要#

Cosmos は、Tendermint 社が開発したオープンソースのブロックチェーンフレームワークプロジェクトであり、ブロックチェーン技術の発展に関連するさまざまな問題を解決することを目指しています。高性能でスケーラブルで開発しやすいブロックチェーンフレームワークを提供することを目指しています。以下はそのオープンソースのアドレスです:

Cosmos は、マルチチェーンネットワークと見なすことができ、"インターチェーンネット" のビジョンを実現することを目指しています。Tendermint と Cosmos SDK はその技術手段と実現経路です。

Cosmos は、リソース消費とトランザクションの問題に対して、BFT(ビザンチン容錯)+ PoS(ステーク)のメカニズムを採用しています。また、ブロックチェーンの構築とブロックチェーンベースのアプリケーション開発のハードルを下げるために、Cosmos は比較的一般的なプロジェクト構築方法を採用しており、Cosmos Core、IBC、Cosmos SDK の 3 つの主要なコンポーネントで構成されています。

Cosmos SDK コンポーネント#

"SDK" という名前から、いくつかの誤解を招くかもしれませんが、Cosmos SDK は完全なアーキテクチャであり、開発者はこれを使用して独自のブロックチェーンを迅速に構築することができます。これは Cosmos エコシステムの重要な構成要素です。以下はそのオープンソースのアドレスです:

Cosmos SDK は、アカウントシステム、トランザクション、ガバナンスなど、ブロックチェーンの一般的なモジュールを実装しています。開発者はこれを利用して新しい機能モジュールを簡単に構築することができます。

以下は主なモジュールです:

  • アカウントとトランザクションに関連するモジュール
    • auth:システムアカウントの管理
    • bank:チェーン上の資産の移動
  • サポートモジュール
    • genutil:ジェネシスブロック
    • supply:資産の総量管理
    • crisis:すべてのモジュールの不変量管理
    • params:すべてのモジュールのパラメータ管理
  • ガバナンスモジュール
    • gov:チェーン上のガバナンスメカニズム
    • upgrade:チェーンのアップグレード
  • PoS モジュール
    • staking:チェーン上のアセットステーキング
    • slashing:バリデータの不正行為への罰則
    • evidence:バリデータの積極的な不正行為への罰則
    • mint:チェーン上のアセット鋳造
    • distribution:ブロック報酬の管理
    • IBC プロトコルモジュール
    • ibc/core:クロスチェーン通信機能

Cosmos SDK は、Object-Capability モデルのセキュリティコンセプトに基づいて設計されており、高度にモジュール化されています。各モジュールは独自のストレージスペースを持ち、必要なインターフェースのみを公開します。

Cosmos SDK には、状態の更新を維持するための特定の Keeper 役割があります。この管理方法により、モジュール間は具体的な実装の詳細を隠し、Keeper を介して相互に呼び出すだけであり、各モジュールは Keeper によってのみ更新されるため、チェーン上の状態の一貫性が保証されます。

Tendermint コンポーネント#

Tendermint は Cosmos のコアコンポーネントであり、高性能なブロックチェーンの下層共通コンセンサスエンジンです。アーキテクチャ的には、ピアネットワーク通信層、共通コンセンサスプロトコル層、上層アプリケーション層の 3 つの主要な部分に分かれていますが、共通コンセンサスプロトコル層がその鍵となる部分です。

Tendermint は、共通コンセンサス時に具体的なトランザクションの詳細には関心を持ちません。トランザクションはバイトとしてブロックにパックされ、ノード間のメカニズムによって共通の合意が形成されます。上層アプリケーションの状態更新は決定論的なプロセスとなり、同じ初期状態から始まり、ネットワーク全体でトランザクションの順序が一致する(メッセージのシーケンスに対してすべての正常なノードが同じ順序で処理される)ことが保証されます。上層アプリケーションの状態はネットワーク全体で一貫性を保ち、ブロックチェーンは上層アプリケーションのデジタルフィンガープリントを含んで検証されます。

Tendermint の共通コンセンサスは、数百のノード規模のブロックチェーンネットワークで秒単位のブロック生成をサポートすることができ、ブロックが確定した後は、それ以前のすべてのブロックが変更されないことが保証され、ブロックチェーンネットワークのセキュリティが確保されます。

ブロックの提出後、Tendermint の共通コンセンサスプロトコル層は、上層と ABCI(アプリケーション層と共通コンセンサス層の相互作用を抽象化したインターフェース)を介して対話し、トランザクション処理を完了し、結果を返します。ブロックの実行プロセスは複数のステップに分割され、上層アプリケーションはビジネスインタラクションロジックを定義するための独自のインターフェースを持ちます(バリデータのフィルタリングロジックを実装したり、Tendermint Core の共通コンセンサスプロトコルとピアネットワーク通信を再利用してチェーンのビジネス要件を実現することができます)。

Tendermint の共通コンセンサスアルゴリズムの具体的なメカニズムについては、以下の論文を参照してください:

その独自のメカニズムにより、ブロックチェーンの共通コンセンサスプロセスには明確な利点があります。

まず、Tendermint は PBFT SMR(State Machine Replication)アルゴリズムに基づいていますが、そのメカニズムを簡素化しています。共通の合意は主にブロックに基づいており、ユーザーリクエストではありません。また、PBFT の一般的なフローとビュースイッチングフローをメカニズム上で統一し、理解と実装が容易になるようにしています。

Tendermint は、堅牢な基盤と優れたユーザーエクスペリエンスを提供し、数百のノード規模のブロックチェーンネットワークで秒単位のブロック生成をサポートする早期の下層です。また、逐次ブロック最終化(Finality)の方式を採用して、以前のすべてのブロックが変更されないことを保証し、ブロックチェーンネットワークのセキュリティを確保しています。

ノード間の通信は Gossip プロトコルを使用して行われ、ノード間のフルコネクションを要求せず、Gossip ピアネットワークを介して通信します。これにより、ノード間の通信コストを効果的に削減し、ネットワークの耐障害性を向上させることができます。

Tendermint のアルゴリズムの詳細な実装メカニズムについては、後続の記事で詳しく説明します。

IBC プロトコルコンポーネント#

IBC プロトコルは、Cosmos SDK の特別なモジュールの 1 つであり、Cosmos にブロックチェーン間のクロスチェーン能力を提供します。その主な原理は、暗号技術を使用して自身のチェーン上のイベントを他のチェーンに証明することです。相互に軽量ノード(ライトクライアント)としての役割を果たし、2 つのチェーン間の通信はリレーアクタを介して行われます。

この部分には詳細が多く含まれており、クロスチェーンに関連しているため、別の記事で詳しく説明します。

まとめ#

本記事は、Cosmos および Tendermint の共識シリーズの第 1 回であり、ブロックチェーンの技術の発展、Tendermint および Cosmos SDK などの Cosmos ブロックチェーンフレームワークのコアコンポーネントについて概説しました。また、Tendermint の共識プロトコルの原理と各メカニズムについても概説しました。制約された範囲内で、主に概念の説明とフローの整理に焦点を当て、具体的な技術的な実装の詳細やコードの説明は含まれていません。これらについては、後続のシリーズ記事で Tendermint の共識アルゴリズム / メカニズムおよび Cosmos SDK のコード実装について補完します。

参考文献#

  1. 区块链架构与实现:Cosmos 详解 - 温隆 / 贾音

  2. Cosmos: The Internet of Blockchains

  3. Whitepaper - Resources - Cosmos Network

  4. 分布式系统与区块链共识机制・Pseudoyu

  5. 走进 Cosmos 之 Tendermint

  6. 走进 Cosmos 之 Cosmos SDK

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。