Hydra(ハイドラ)を徹底解説

カルダノについて

Hydra(ハイドラ)とは?

Hydraは、カルダノのレイヤー2のスケーラビリティソリューションであり、メインチェーンを安全な決済層として使用しながら、オフチェーンでの取引処理をより効率的に行う技術です。また、Hydraは、分散型台帳システムのスケーリングを目標としています。

分散型台帳システムのスケーリングとは、高トランザクションスループット、低レイテンシー、ノード当たりに必要なストレージを最小にすることを指します。これらの特性は、ブロックチェーンを実世界のシステムの一部として展開するために不可欠であると繰り返し言われてきました。

Hydraは分散台帳のためのオフチェーン・スケーラビリティ・アーキテクチャであり、上記の3つの課題、すなわち高い取引スループット、低いレイテンシー、大規模なストレージを必要としないことのすべてに対処しています。

ハイドラ・スケーラビリティ・アーキテクチャ

Hydraのスケーラビリティ・アーキテクチャは、ヘッドプロトコルテールプロトコルヘッドアンドテール通信プロトコル、およびルーティング、再構成、仮想化のためのサポートプロトコルの4つの要素に分けることができます。

中心的な役割を果たすのは「ヘッド」プロトコルであり、高性能かつ高可用性を備えた参加者(ステークプールなど)が、ステートチャネルを用いて、最小限のストレージで大量の取引を迅速に処理できるようにするものです。さらに、「テール」プロトコルにより、高性能な参加者が、携帯電話などの低電力デバイスからシステムを利用し、長時間オフラインになる可能性のある多数のエンドユーザーに対してスケーラビリティを提供することが可能になります。

ヘッドとテールはすでにカルダノのメインチェーンを介して通信できるが、クロスヘッドアンドテール通信プロトコルは、この機能をより効率的にオフチェーン化するものです。これらすべては、サポートプロトコルのルーティングと設定管理によって結びつけられ、仮想化によってヘッドとテールの通信を一般化することで、より高速な通信が可能になります。

Hydra Head(ハイドラヘッド)とは?

Hydra Headプロトコルは、ハイドラ・アーキテクチャの中で初めて一般に公開されたコンポーネントです。

ヘッドの仕組み

このプロトコルは、数名の参加者がオフチェーンのステートチャネル(ヘッドと呼ばれる)を作成し、そこでスマートコントラクトを実行(または単純な取引を処理)できるようにするもので、ヘッド参加者がすべてこのプロトコルに従うという理想的なケースでは、基盤となるブロックチェーンとのやり取りは生じません。さらに、オフチェーンの取引履歴はオフチェーンのスナップショットによって、結果としての状態が確保されるとすぐに削除されるため、ストレージはほとんど必要ありません

また、参加者の何人かが悪さをするというあまり良くないケースでも、完全な安全性は厳密に保証されています。参加者はいつでも、ヘッドを閉じてヘッドの状態をブロックチェーンに戻すことができます。

同型とは?

Hydraが実装するステートチャネルは、基盤となるブロックチェーンと同じ取引形式とスマートコントラクトコードを使用するという意味で同型であり、コントラクトはチャネルとブロックチェーンの間で直接行き来することができます

この凄さを理解するために、Ethereumを見てみましょう。Ethereumでは、第1層でスマートコントラクトを記述するためにSolidityを使用しています。このコントラクトを第2層に転送する際には、第2層がSolidityを直接扱うことができないため、変換する必要があります。変換を可能にするには、Solidityのスマートコントラクト自体を適合させる必要があります。ブロックチェーンのスクリプト言語とセカンドレイヤーのスクリプト言語は大きく異なっています。そのため、変換が必要なのです。

Hydraでは、両方のレイヤーが同じスクリプトシステムを使用できるため、変換は必要ありません

このことを踏まえると、現在メインチェーンやメインチェーン上で動作するアプリケーションで扱われている取引の多くは、Hydraから直接恩恵を受けることができます。なぜなら、Hydraはメインチェーンと同じ取引形式と署名を理解できるからです。

Hydraの由来

ステートチャンネルは、取引やスマートコントラクトの並列処理を可能にし、それはオフチェーンで行われます。また、ハイドラヘッドをより多く開くことが可能です。つまり、ハイドラはマルチヘッド(多頭)にすることができるのです。

多頭にできるという特徴から、ギリシア神話に登場する多頭の生物に由来してハイドラという名前が付けられました。

Hydra Head の流れ

まず最初に理解すべきことは、チャネルとは2つ以上のピア間の通信経路であるということです。ヘッドに属するということは、それらのピアの一人になることを意味します。

また、チャンネルは孤立したネットワークを形成し、メインネットワークと並行して展開させることができます。これらの形成されたネットワークでは、参加者全員が、通過するすべての取引に同意する必要があるという、より単純なコンセンサス・アルゴリズムに従います。この結果、ヘッド参加者であるAさんは、明確に合意していないお金を失うことはありません。なぜなら、有効な取引にはAさんの明示的な承認が必要だからです。

ヘッドを形成するとき、参加者はそのヘッドに資金をコミットすることができます。これは、特定のルールの下で、資金をロックするスクリプトアドレスにオンチェーンで資金を移動させることを意味します。スクリプトは、オンチェーンでのプロトコルの安全な実行を保証し、特に、参加者が互いに不正を行えないことを保証するものです。

また、参加者はいつでも、ヘッドを閉じることにより、ヘッドをやめることができます。この場合、すべての参加者はオフチェーンで合意した最新の状態を、オンチェーン上に残して立ち去ります。

イメージ的に、ヘッドは、参加者が自分のチップを持ち込んでゲームをする「プライベート・ポーカー・テーブル」のようなものです。参加者は好きなだけプレイすることができます。もし誰かがプレイしなければ、ゲームは進行しません。しかし、参加者がチップを持ち帰ることは自由です。そうすると、その時点でのチップの配分でゲームが終了します。

Hydra Head (simplified) lifecyclehttps://iohk.io/en/blog/posts/2022/02/03/implementing-hydra-heads-the-first-step-towards-the-full-hydra-vision/ より引用)

テーブルのディーラー(オンチェーンスクリプト)は、人々がルールに従ってプレーし、不正をしないようにします。最終的には、投入したチップと同数のチップが排出されますが、ゲーム中に再分配された可能性があります。最終的な結果はテーブルの外でもわかるが、ゲーム中に起こったすべての行動の履歴は、参加者だけが知っています。

L1、L2の移動

Hydra Headは、オンラインで応答性の高い参加者のグループによって形成されます。参加者は、参加者リストを含むいくつかのパラメータをオンチェーンで宣言することによってHeadを初期化(initial)します。その後、参加者はCardanoメインチェーンからの未使用トランザクションアウトプット(UTXO)をHeadにコミット(Commit)し、すべてのUTXOが収集(Collect)されると初期状態(U0)としてHydra Headで利用できるようになります。回収前の任意の時点で、参加者はプロセスを中断して資金を回収することもできます。

https://hydra.family/head-protocol/ja/core-concepts/ より引用)

Hydra Headが開いている間は、Hydraノードを介してHydra Headを使用し、ヘッドネットワーク上でトランザクションを送信することができます。トランザクションの形式とプロパティはメインチェーンと同じです。 つまり、これらは「同型」です。UTXOエントリが消費され、新しいUTXOエントリがHydra Headに作成されると、すべての参加者はいわゆるスナップショット(U1..Un)で新しい状態を確認し、合意する必要があります。

参加者は誰でも、合意された状態を使用してHydra Headを閉じることができます。たとえば、メインネットでキャッシュアウトしたい場合、または他の参加者がヘッドの展開を誤動作または停止させた場合です。メインチェーンの最終状態に異議(Contest)を唱えるメカニズムがあります。最終的に、ファンアウト(Fanout)トランザクションは、最終的に合意された状態を分配し、Hydra Headに仮想的にしか存在しなかったものをレイヤー1で利用できるようにします。

スケーラビリティの重要な指標

スケーラビリティの指標について話す前に、1秒あたりのトランザクション数(TPS=Transactions Per Second)について少し明らかにしておきましょう。利用できるすべての指標の中で、TPSはおそらく比較の手段として考えるのに最も意味のない指標でしょう。トランザクションにはさまざまな形や大きさがあります。

高速道路と自動車を考えてみてください。ここでは高速道路の、1秒あたりに処理できる車両数(VPS=Vehicles Per Second)を見ることができます。しかし、「車両(Vehicle)」とは何かという共通定義がなければ、10VPSと100VPSを比較しても意味がないように思えます。例の10台の車両が巨大な貨物トラックを指すなら、伝送能力という点で100台のスクーターと比較することに意味はあるのでしょうか。同じことがトランザクションにも当てはまります。何百ものネイティブアセットとアウトプットを運ぶトランザクションは、単純な2者間のADA支払いと同じではないことは確かです。

同じ状況下でTPSを指標として使うこと(例えば、2つのバージョンのCardanoノードを比較すること)は意味があります。しかし、ブロックチェーン間の比較の手段として使うのは意味がありません。その点を考慮し、スケーラビリティを検討・議論するための重要な指標として、スループットだけでなく、ファイナリティやコンカレンシーにも目を向けることが重要です。

  • スループット(throughput):一定時間内にシステムが処理するデータ量
  • ファイナリティ(finality):あるアクションの結果が、システム内の全員にとって不変かつ真実になるまでにかかる時間
  • コンカレンシー(concurrency):異なるアクターが互いに阻害することなく実行できる作業量

ハイドラヘッドの優れた点は、ヘッド内でほぼ即座に最終的な結論を出せることです。ヘッドをセットアップしてクローズするプロセスには数ブロックかかりますが、いったん確立されると、共同作業者間でトランザクションを迅速に流すことができます。Hydra HeadはeUTXOモデルも使用しているため、競合しないトランザクションを同時に処理することができ、優れたネットワークと相まって、利用可能なリソースを最適に活用することができるのです。

しかし、1つ注意点があります。「Hydra Head」は、参加者の小さなグループ内で非常にローカルな構成になっています。これらのグループは最初は独立しているので、個々のメトリクスの合計を全体として見ることは誤解を招きかねません。グループは独立しており、独立して自由に作ることができるので、10、1000、100万、10億、といったように、ただ足し算をすることで簡単にどんな数字にも到達することができるのです。

その結果、Hydra Headプロトコルの最初のバージョンでは、小さな参加者グループが低コストでトラフィックを拡大できるようになりますが、グローバルな消費者間のマイクロペイメントやNFT販売に対するソリューションをすぐに提供できるわけではありません。なぜなら、ヘッド内部のコンセンサスは、すべての参加者がすべての取引に合意することを必要とするからです。そして、一つのヘッドは、参加者の数に応じて無限にスケールするわけではなく、少なくとも何らかの追加的なエンジニアリングの努力なしにはスケールしないのです。

まとめ

Hydraでは、トランザクションの送信だけでなく、スマートコントラクトの実行も可能です。さらに、同型でありeUTXOを直接使用しているため、競合他社に比べて非常に安全に使用できます。

このような点を踏まえると、スケーラビリティ問題のソリューションとして今後、Hydraが注目されてくるはずです。

参考文献

Enter the Hydra: scaling distributed ledgers, the evidence-based way

Hydra – Cardano’s solution for ultimate Layer 2 scalability

Implementing Hydra Heads: the first step towards the full Hydra vision

Hydra: Cardano scalability solution

Hydra: Head Protocol

Hydra Head protocol: an open source solution for scalability

 

コメント

タイトルとURLをコピーしました