インプット・エンドーサーとシャーディングを比較する

カルダノ情報


カルダノのスケーラビリティソリューションとして最も有名なのは、L2ソリューションのHydra(ハイドラ)ですが、L1ソリューションのインプット・エンドーサーはあまり知られていません。
L1のスケーラビリティソリューションとして、イーサリアム系統のチェーンでは「シャーディング」がよく知られていますが、なぜカルダノの研究チームは「インプット・エンドーサー」を考案したのでしょうか?

本稿では、カルダノのエクスプローラー「cardanians.io」による「インプット・エンドーサーとシャーディングを比較する」の日本語訳を紹介。シャーディングのメリットとデメリットを整理しながら、この疑問に対する答えを探っていきます。

以下、日本語訳↓

インプット・エンドーサーとシャーディングを比較する by Cardanians

インプット・エンドーサーは、カルダノネットワークのスケーラビリティを高める技術だ。そしてシャーディングも、同じ目的(スケーラビリティ向上)の一般的なソリューションである。
この記事の目的は、両ソリューションのコンセプトの違いを指摘することであり、特にシステムの統一されたグローバルな状態を維持することである。
ちなみにカルダノは、インプット・エンドーサーとシャーディングの両方を活用することができる。 本稿では、これらのシステムがどのようなものかを解説していく。

ブロックチェーンにおいては、セキュリティが第一原則である

各ブロックチェーンは、単一の有効なグローバル状態(複数のローカルなプロセスやチャネルの集合状態)を維持しなければならない。 セキュリティの観点から、ネットワーク内のすべてのノードはグローバル状態を認識し、それを観察し維持するためのルールを明確に定義しなければならない。
ブロックチェーンにおけるグローバル状態とは、ブロックチェーンに保存されたデータとトランザクションをネットワーク内の全ノードが共有し、一貫性をもって表示することである。これにより、すべてのノードがブロックチェーンの同じ履歴と現在の状態に同意することが保証される。
各ノードが保持するローカル状態は、新しいトランザクションやブロックの有効性を検証するための前提条件であるため、グローバル状態と一致していなければならない。 「グローバル状態」は保存されるだけでなく、コンセンサスに参加するノードによって更新される。
「グローバル状態」は、一定間隔で進化する。 ブロックチェーンがスケールするためには、ネットワークのコンセンサスが、大量のデータに対してグローバル状態の変更をできるだけ頻繁に行えるようにしなければならない。データの一貫性とセキュリティを確保しなければならないため、これは難しい課題である。これは、すべての参加者が「同じグローバル状態」で作業する場合にのみ可能である。

第一世代のコンセンサスアルゴリズムで構成されたモノリシック(画一的な)・ブロックチェーンでは、ネットワーク上の1カ所にあるランダムに描かれた1つのノードによって、グローバル状態への変更が行われる。この変更は、ネットワークに拡散される新しいブロックを通じて行われる。そのため、他のノードはわずかな遅延を伴ってその変更を受け入れる(または拒否する)。このネットワークの遅延は、大量のデータで頻繁にグローバル状態への変更が行われる際の障害となる。つまり、グローバル状態への変更が行われている間に、すべてのノードでデータの一貫性を確保する必要がある。そのため、この変更を加えてから、すべてのノードで状態が統一されるまで十分な時間を待つ必要がある。

下の図では、一番上のノードが時間「T」に新しいブロックを生成し、時間「T+1」に中段の複数ノードにブロック情報が到達していることを示している。さらに下段のノードには時間「T+2」で到達している。ブロックの移動方向を赤い矢印で示す。 グローバル状態は時刻「T+2」で一貫している。 時刻「T」と「T+1」では、各ノードのグローバル状態は異なっている。

このようなモノリシック・ブロックチェーンは、「コンセンサス」「データの可用性」「実行」というシステムの中核的な構成要素を、すべて同じレイヤーで(単一レイヤーで)処理する。 ネットワークのコンセンサスに参加するすべてのノードは、トランザクションとブロックを共同で検証する「単一のスペース」を共有する。「 グローバル状態」はすべてのノードに保存されるため、任意の時点でデータの一貫性と完全性を維持することが容易である。

しかしこの場合、(ネットワーク上の)ノードに対して、リソース(ストレージ、帯域幅、計算)をさくことが要求される。 モノリシックなシステムは中央集権的な傾向があり、ノードの要求スペックが高くなる可能性がある。 そのため、モノリシックなブロックチェーンが高いスケーラビリティを実現し、同時に高度な分散化を確保することは非常に難しくなってくる。 モノリシックなブロックチェーンは通常、高いレベルのセキュリティと信頼性を提供できるが、拡張性はない。

ブロックチェーンはさらなるスケール(拡大)が必要であるため、開発チームでは、「Input Endorsers」や「シャーディング」のようなイノベーションを打ち出している。

モノリシックであれ、Input Endorsersを使用していようが、シャーディングを使用していようが、各システムは単一の有効なグローバル状態を維持しなければならないことを忘れてはならない。
この記事では、主にこの「グローバル状態」を前提としながらスケーラビリティを向上させるためのさまざまなアプローチを比較する。

ブロックチェーンのスケーラビリティを向上させようとする手法はすべて、「並列化(パラレル化)」と「並行性(コンカレンシー)」の要素をネットワーク・コンセンサスに取り入れようとする。スケーラビリティの改善は、グローバル状態の一貫性を念頭に置いてのみ実施できる。 一貫性の欠如はセキュリティと信頼性の低下につながるためだ。
簡単に言えば、ネットワーク・コンセンサスは「ノードがネットワーク上の複数の場所で同時に複数の操作を行うこと」を可能にするが、元帳の状態(グローバル状態)は一貫していなければならない。そしてノードは時間的に正しく同期していなければならない。
「グローバル状態を維持する」ことは、コンセンサスの複雑化とネットワークで転送されるデータ量の増大との戦いである。

シャーディングは、分割したチェーンを平行処理する

シャード化されたブロックチェーンは、ネットワークを「シャード」と呼ばれる小さなノード群に分割する。シャードはトランザクションを並行して処理できる。 各シャードはブロックチェーンのデータのサブセットと独自のコンセンサス・プロトコルを持つ。
シンプルに言えば、シャーディングとは「1つのブロックチェーン(ノードとそのグローバル状態を含む)を複数コピーしてそれらを並列化させること」だと考えることができる。
下の画像はシャード化されたブロックチェーンで、15ノードが3つのシャードに分割されている。各シャードでは、時刻「T+1」に新しいブロックが1つ生成される。 P2Pネットワークでは、ブロック情報がすべての通信チャネルに同時に拡散されるため、この図では多くのブロック情報が登場している。


シャード化されたブロックチェーンの最大の利点は、トランザクション検証の並列化によって達成される高いスケーラビリティである。トランザクションの検証は、部分的に独立した複数のノードグループに分散される。 これには、個々のノードが必要とするストレージ、帯域幅、計算能力を削減できる利点もある。

しかし、シャード化されたブロックチェーンでは、「グローバル状態」が個々のシャードで維持されるため、その一貫性を維持することが難しくなる。各シャードはすべてのデータを持っているわけではないので、グローバル状態の部分的な知識しか持っていない。「すべてのシャードでグローバル状態が一貫している」ことを保証するためには、シャード間で何らかの同期メカニズムが必要だ。 これはセキュリティの観点から複雑さと課題をもたらす。
シャーディングされたブロックチェーンのノードは、すべてのユーザーとアセットを把握しているわけではない。 ユーザーとアセットの分配は、シャーディングメカニズムの具体的な設計と実装に依存する。一般的な原則は、ユーザーと資産が、アドレス・トランザクション履歴・負荷分散などの、何らかの基準に基づいてシャードに割り当てられることである。
dAppsの場合も、シャードをまたいで分散されることになる。ユーザーや資産とは異なり、この場合は異なるシャード上の他のdAppsや資産と相互作用する必要がある場合など、複数のシャードにまたがる可能性がある。ユーザー、資産、dAppsの分散には、シャード間でメッセージを送信し、その一貫性と原子性を保証するクロスシャード通信が必要となる。シャードが異なるブロックチェーンでは、リレーチェーン、公証スキーム、受領証明の使用など、シャード間通信を処理するためのアプローチが異なる。

もし、Aliceがシャード1、Bobがシャード2、Carolがシャード3にいる場合、各トランザクションは、それぞれのシャード内のノードによってのみ検証された異なるブロックとなる。しかし、シャード2と3はどうやってAliceのトランザクションを感知するだろうか?
シャード2と3にAliceのトランザクションを知らせるには2つの方法がある。
一つは「グローバルコーディネータ」を使う方法で、「リレーチェーン」や「ビーコンチェーン」と呼ばれる。コーディネータはすべてのシャードを接続する。各シャードから定期的にブロックヘッダ(下図「H」)を受け取り、他のシャードに送信することができる。
この場合、シャード2と3は、グローバルコーディネータ経由でシャード1からブロックヘッダを受け取ることで、Aliceのトランザクションを知ることができる。

もう一つの方法は、シャード間の直接通信をともなう「公証スキーム」や「受領証明」を使うことだ。そのため、グローバル・コーディネーターは不要となる。
シャードは他のシャード(または複数のシャード)に、あるトランザクションが実行またはコミットされたことを示すメッセージを送ることができる。シャード2と3は、シャード1からメッセージや証明を直接受け取ることで、Aliceのトランザクションについて知ることができる。

(訳註↓ *下記はグローバル・コーディネータ型の話に戻っています)
シャードが新しいブロック(多くのトランザクションを含む)を生成するたびに、ブロックヘッダがグローバルコーディネータに送られる。グローバル・コーディネータはブロック・ヘッダを他のすべてのシャードに送る。こうすることで、すべてのシャードがグローバル状態の一貫したビューを維持できる。しかし、コーディネータはすべてのシャードからのすべてのブロックヘッダを処理し、ブロードキャストしなければならないため、この方法ではオーバーヘッドと待ち時間が発生する。そのため、いくつかのシャード型ブロックチェーンでは、バッチ処理、キャッシュ、サンプリングなど、グローバルコーディネーターのパフォーマンスを最適化するためにさまざまな技術を使用している。

ここで、Aliceがシャード1、ボブがシャード2にいる場合を考えてみよう。AliceはBobに10枚のコインを送りたい。この単純なシナリオでは、シャードをまたいだトランザクションが不可分に、かつ安全に実行されることを保証するために、最大8つのクロスシャードメッセージを使用することができる。
下図では、AliceとBobが2つの異なるシャードにいる場合のクロスシャード通信中の通常のメッセージの流れをまとめている。




上図のように、8つのクロスシャード・メッセージを使用することが、セキュリティと不可分性を考慮すると、現在のところ最善の解決策である。
より少ないメッセージ数で同じ結果を得ることは可能かもしれないが、セキュリティ、効率、シンプルさというトレードオフが必要になる。例えば、いくつかのメッセージを1つにまとめることもできる。 しかし、そうすると各メッセージのサイズと複雑さが増し、ネットワークの遅延や障害のリスクが高まる可能性がある。 あるいは、メッセージの一部を削除することも考えられる。 この場合、シャード間の同期と検証のレベルが下がり、シャード間トランザクションの不可分性と最終性が損なわれる可能性がある。

以上のように、シャード化されたブロックチェーンでは「グローバル状態」を維持することは複雑な作業となる。異なるシャード間の調整と同期、さらにシャードをまたいだトランザクションの一貫性とセキュリティ保証が必要だ。オーバーヘッドの大きさは、シャーディング・プロトコル、シャードの数、クロスシャード・トランザクションの頻度、およびネットワーク条件に依存する。

クロスシャード通信のオーバーヘッドは、シャード化されたブロックチェーンのスケーラビリティに影響を与える要因である。クロスシャードトランザクションが増えれば増えるほど、シャード間で交換するメッセージやデータが増え、帯域幅、ストレージ、計算リソースが消費される。そのため、特にシャードの数が多い場合やネットワークの状態が悪い場合には、シャード間通信のオーバーヘッドがシステムのスケーラビリティを制限する可能性がある。

すべてのシャードはローカル・コンセンサスを維持し、シャード間の通信にも気を配らなければならない。 これはリソースと同期を必要とする。ローカル・コンセンサスは、各シャードが自身のトランザクションの一貫した安全な元帳を維持することを保証する。トランザクションに複数のシャードが関与する場合、シャードはトランザクションの実行と検証のために相互に通信する必要がある。ローカル・コンセンサスとシャード間通信の組み合わせにより、シャーディング・ブロックチェーンはモノリシック・ブロックチェーンと比較して高いスケーラビリティとパフォーマンスを達成することができる。

シャーディングの主な目的はスケーラビリティを高めることだが、逆説的にも、このソリューションが大量のクロスシャードメッセージに圧倒される可能性がある。ブロックチェーンがシャーディングのメリットを享受するためには、並列化のメリットがシャードの同期とクロスシャード通信に関連するオーバーヘッドを上回らなければならない。 これは、特定の実装とユーザーのネットワーク利用方法に依存する。ユーザー数が増え、特にクロスシャード通信の必要性が高まると、オーバーヘッドが増加する可能性があり、その結果、個々のシャードでトランザクションを処理する際の並列化の効率が低下する可能性がある。
システムのシャード数が多ければ多いほど、ユーザー、資産、アプリケーションは分散する。分散性が高いことは、シャード間の通信の必要性が高まるため望ましくないが、シャード型ブロックチェーンは原理的にそれを避けることはできない。

シャードの数は無限に増やすことはできない。理想的なシャード数は、現在のシャード数の利用状況や、セキュリティ、効率、シャーディング・プロトコルの複雑さ、ユーザーが望むシステムの利用方法など、他の要因にも左右される。しかし、これを事前に予測することはできない。

インプット・エンドーサーは、平行処理「後」にブロックに入力する

インプット・エンドーサーは、ユーザー、アセット、dAppsを1つのレイヤーに保持する。コンセンサスは並列化と並行性の要素があるものの、「単一のグローバル状態(台帳の1つのバージョン)」を維持する。そのため、ユーザー、資産、dAppsを複数の別々のグループに分ける必要はない。
インプット・エンドーサー機能の主な目的は、トランザクションの選択をブロック生成から分離することである。 これには3つのブロックが使用される。「 インプットブロック(IB)」「エンドースメントブロック(EB)」、そして「ランキングブロック(RB)」である。

「ランキングブロック」は「統一されたグローバル状態を維持する役割」を果たし、「インプットブロック」「エンドースメントブロック」は「トランザクションの選択と検証の役割」を果たす。

すべてのブロックタイプはカルダノネットワークで並行して鋳造されるが、その頻度は異なる。
「ランキングブロック」は、ブロックチェーンの線形性を保証するため「合意形成用のブロック」と見なすことができる。このランキングブロックは、(ペイロードを含む)「インプットブロック」を参照する「エンドースメントブロック」のデータに対する合意形成を行う。
「ランキングブロック」が1つミントされる間に、多量の「エンドースメントブロック」と「インプットブロック」がミントされる。コンセンサスは、モノリシックなブロックチェーンの場合よりも大量のデータに基づいて形成される。

下図では、インプット・エンドーサーを使用するCardanoネットワークにおけるブロックのミント工程を示しています。ここでは、1秒ごとに新しいブロックがミントされている(同じ1秒間に複数のブロックが並行してミントされることもある)。



インプットブロック(IB)は、エンドースメントブロック(EB)から参照され、EBはランキングブロック(RB)から参照される。
すべてのブロックタイプの間には、同期メカニズムとして機能するリンクが明確に定義されている。これは、情報がブロックの拡散を通じてネットワークに伝播されるため重要である。すべてのノードが1つの空間に存在するため、シャーディングの場合のように別のメッセージング・メカニズムを導入する必要はない。

下図は、すべてのブロックタイプ間の関係を表している。

黒い矢印は、「インプットブロック(IB)とエンドーサーブロック(EB)の参照」、「ランキングブロック(RB)とEBの間の参照」を示す。

赤い矢印は、「IBの現在の台帳状態」、つまり「RBへの参照」を示す。IBは、直近のRBで表される現在のグローバル状態を基準にミントされる。

青い矢印はブロックチェーンの線形性、つまり新しいRBが前のRBに従わなければならない場合におけるRBの関係を示している。時間の経過とともに、すべてのトランザクションはIBを通じて台帳に入力される。

下図では、EB(エンドーサーブロック)の後ろに青い長方形が見えるが、これは「エンドーサー証明書」を表している。

Aliceのトランザクションに関する情報は、徐々に「IB」から「RB」へと伝わっていく。IBとEBでは、トランザクションは「準備されるだけ」の状態である。ネットワークのコンセンサスは、

①ブロックチェーンへの新しいRBの追加
②続くネットワーク内の他ノードによる、このブロックの受け入れ(または拒否)
を通じて行われる


新しいランキングブロック(RB)をミントするノードは、最も有利な支持ブロックのセットを選択することで、トランザクション間の競合を解決することができます。

下図では、Aliceのトランザクションが入力ブロックから裏書ブロックへ、そして裏書ブロックを経由してランキングブロックへどのように移動するかがわかる。トランザクションの動きは赤い矢印で示されている。

シャーディングとは異なり、インプット・エンドーサーでは、AliceとBobの間でトランザクションを送信する際、(分割せず)単一なブロックチェーンとして機能する。複雑なのは、Aliceの取引に関する情報のフローである。Aliceのトランザクションは、他の多くのトランザクションとともに、RBを通じてブロックチェーンに入力される前に、多数のノードによって検証される。
IBは、基本的に0.2~2秒ごとに絶えずミント(ストリーミング)することができる(頻度はプロトコル・パラメーターによって設定)。つまり、20秒ごとに1つのブロックを作成する代わりに、同時に10~100のIBをミントすることができる。インプット・ブロックだけでなくEBも、RBを通じてブロックチェーンの履歴の一部となる前に、同時に検証することができる。

インプット・エンドーサーは、単一スペース内でのスケーラビリティを向上させる。 ネットワークは単一のグローバル状態を維持するので、シャーディングのようにサブ・グローバル状態を同期させる必要はない。

インプット・エンドーサーとシャーディングを比較する

シャーディングでは、例えばその単一のブロックチェーン・ネットワークの現在のスケーラビリティが30TPSだとすると、このネットワークのスケーラビリティを向上させるのではなく、このネットワークのコピーを複数作成し、シャード(複数のレイヤー)を作成する。
各シャードは、ネットワークのユーザー、資産、アプリケーションの一部について、独自のコンセンサスとローカル状態を持つ。ネットワークのグローバルな状態を維持するためには、ローカル状態の同期が必要となる。2人の参加者が互いに通信し、それぞれが異なるシャードにいる場合、単純なトランザクションでは最大8つのクロスシャードメッセージを使用する必要がある。これは比較的大きなオーバーヘッドである。

インプット・エンドーサーは、ブロックチェーンのスケーラビリティを高めるソリューションである。すべてのユーザー、資産、アプリケーションに共通する、1つのグローバル状態が維持される。システムには並列性と並行性の要素があるが、同期化はネットワーク内の3種類のブロックの拡散を通じて自然に発生する。
これらが1つのレイヤー内に存在しているため、1トランザクションは常に2人の参加者間での相互作用を行う要件を満たしている。

しかし、今のところ、カルダノにはインプット・エンドーサーは実装されておらず、このシステムの実装には時間がかかるため、これはまだ遠い理論に過ぎない。
また、インプット・エンドーサーは中期的には十分な解決策になるかもしれない。しかし、ブロックチェーン・ネットワークが現在の金融システムを破壊するためには、現在の金融システムと同様にスケールしなければならないため、さらなる改善を検討する必要がある。多くのチームがセカンドレイヤーに注目しているが、セカンドレイヤーが確実に機能するためには、第一のレイヤーがうまくスケールしなければならない。 将来的にどうなるかは未知数だ。

(了)

*本記事は、Cardanians.io が執筆した「Comparing Input Endorsers with Sharding」をCoffeePoolが日本語訳し、読みやすく編集したものです。

*さらに、インプット・エンドーサーの理論的な仕組みについてはこちら↓
カルダノの 処理能力を最大化する「インプット・エンドーサー」のすべて【超訳】

委任のご検討をお願いします☕️


本稿はカルダノステークプール「CoffeePool☕️」が作成しました。
COFFEの活動を応援いただける方はぜひ、委任(デリゲート)のご検討をお願いいたします😊
 TickerまたはPoolIDをクリック(タップ)するとコピーできます。
NAME:CoffeePool☕️
Ticker:COFFE
[COFFE] CoffeePool️
pool1r55hyfrd3tw6nzpkvf4rfceh2f04yph92fc462phnd0akp2s5r6

pool1r55hyfrd3tw6nzpkvf4rfceh2f04yph92fc462phnd0akp2s5r6

NAME:CardanoKissa☕️
Ticker:KISSA
[KISSA] CardanoKissa☕️
pool1lugxr82p89qm35spzwccle405t5dfdznhrasyrtr2cyv2vyfud6



参加者募集中!【カルダノキッサ】CoffeePool☕️が運営するチャットスペース

初心者でも長期ホルダーでも、楽しくカルダノ について語り合える discordスペースを作りました😊☕️
・なりすましやscam対策のためXアカウント認証で運営😊
・初心者ホルダーさん大歓迎!☕️
SPOも続々参加しています! ぜひお気軽にお立ち寄りください。
参加方法は☟
discord.gg/TNy7QNua7c