レイヤー1とレイヤー2:知っておくべきすべてのこと
ブロックチェーンアーキテクチャーについて語るとき、「レイヤー1」、「レイヤー2」という用語が頻繁に使われます。これは、2つの点から重要な概念です。ブロックチェーンネットワークがどのように構築されているかを説明する、そして、ブロックチェーンネットワークがどのようなものか、簡単に理解できるような視覚的表現を提供する、の2点。これを、詳しく解説します
2022年 8月 5日 18 分で読めます
レイヤー1:定義
てっぺんにカップルの人形があしらわれた、何段(層、レイヤーと言ってもいいでしょう)にもなっているウェディングケーキを考えてみてください。美しいケーキが、ベースとなるしっかりとしたスタンドに乗っています。すべての目的において、このしっかりと固いケーキスタンドは、第1層(レイヤー1)としてケーキのインフラストラクチャーを支えています。何を言いたいかお分かりかもしれません。ブロックチェーンにおいて、レイヤー1はレイヤー2ソリューションを乗せるベースネットワークです。
レイヤー1:機能
この図式を念頭に置いて考えると、Cardanoはレイヤー1(ベースネットワーク)であり、その中には3つの独立した層(レイヤー)が含まれています。
- ネットワーク層
- コンセンサス層
- 台帳層
ネットワーク層
Cardanoネットワークに分散しているすべてのノード間の接続を維持し、ブロック生成ノードが生成する新しいブロックをネットワークから取得し、新規に作成されたトランザクションをブロックに組み込み、ノード間でブロックを伝送します。
コンセンサス層
次の2つの基本的な機能を果たします。
- Ouroborosコンセンサスプロトコルの実行。ブロックの適用、競合するチェーンの選択(該当する場合)、自身のブロックを生成するタイミングについて決定を下します
- コンセンサス層で下される判断に必要なすべてのステータスの維持
台帳層
この層では次を指定します。
- 台帳の状態はどのようなものであるか
- 新ブロックごとに台帳をどのように更新させるか
台帳層は、拡張UTXO(EUTXO)会計モデルを使用して形式的台帳ルールから導出された、連続する台帳状態間の遷移を指定する純粋関数のみで構成されています。状態遷移は、Cardanoのブロックに含まれる一連のトランザクションと、エポック境界遷移などの主要なイベントによって引き起こされます。
コンセンサス層は、台帳状態の正確な特性、またはブロックの中身について、コンセンサスプロトコルを実行するため、一部のヘッダーフィールドを除き知る必要はありません。
全体として、これら3つの層がCardanoレイヤー1ソリューションを形成します。
レイヤー1:スケーラビリティ
ウェディングケーキに戻りましょう。これは大きなもので、段が積み重ねられています。しかし、そのベースにあるケーキスタンドを見てください。最初の層は一定の直径で、それ以上に大きくすることはできません。と同時に、ここに乗せる段を支えられるだけの大きさである必要があります。そこに乗せるものも一定のサイズのもののみで、これこそがウェディングケーキが複数段になる理由です。各段(層と考えてください)はベースに何かを追加しています。新しいフィリング、糖衣、デコレーション等々。言い換えれば、各段はベースの層をスケールアップしています。
分散型パブリックネットワークも似たような問題に直面します。ケーキスタンドに限られたピースしか乗せられないように、ベース(レイヤー1)も一定数のトランザクションしか処理できません。ケーキスタンドに乗せられないほどのピースを乗せようとすれば、ケーキは端から落ちてしまい、大事な日が台無しになるでしょう。同様に、レイヤー1ネットワークのノードが処理できるトランザクション数も限られており、それを超えれば渋滞が発生します。ユーザーベースが拡大していくにつれ、トランザクションを処理するために、より多くのノードが必要になります。この問題を解消するためにはネットワークのスケーリングが必要となります。さもなければ、トランザクションは端から零れ落ちていくでしょう。
レイヤー1ネットワークをスケールアップする方法はあります。たとえば、ブロックサイズを拡大すればより多くのトランザクションデータを運べるようになります。ブロックサイズは最近8KBから72KBに拡大されました(12.5%増)。これは、Cardanoが2022年に行うスケーリングの1つです。
ウェディングケーキに戻りましょう。段を加えることで、ケーキが大きくなるだけでなく、もう1つのとても便利な機能を導入することになります。それぞれの段をベースと異なるものにすることができるのです。異なるフレーバー、フィリング、デザインなど、最初の層とは別個に付け加えることができます。異なる「ゲスト」、異なる好みを満たすことができます。ブロックチェーンでは、新しい層(レイヤー2)はレイヤー1をスケールアップするだけでなく、メインチェーン(レイヤー1)から独立させてトランザクションや処理を行うことを可能にします。
Cardanoのレイヤー1スケーラビリティソリューション
Cardanoは現在Basho開発期にあり、ここではスケーリングと最適化が進められています。ネットワークは現在非常に効率よく需要を管理していますが、分散型アプリケーション(DApp)のエコシステムは急成長しており、システムに需要の拡大をもたらし続けます。これに対処するために、スケーラビリティに関する複数の方法(レイヤー1とレイヤー2ソリューションを含む)がCardanoにデプロイされ、まずは数百から数千、そして数百万もの新規ユーザーに対応します。
ブロックサイズの拡大
ブロックが大きくなればより多くのトランザクションを運ぶことができます。Cardanoで最初に生成されたブロックのサイズは665バイト(0.665KB)でした。現在のブロックサイズは72KBです。10,000%を超える増加率です。長期的に、現在実施中のシステム監視とネットワーク全体の健全性に基づいて、さらに増加させる見込みです。
パイプライン
検証と伝播を合体させることにより、ブロックの伝播を向上させます。目標は、ブロック間の「デッドタイム」(ブロック伝播オーバーヘッド)を削減する事によって、ブロックが5秒以内にピアの95%以上に伝播されるようにすることです。これにより、ブロックサイズの拡大、Plutusパラメーター制限の拡張など、より積極的なスケーリングの変更を実行するゆとりが生まれます。
インプットエンドーザー
トランザクションを事前に構築されたブロックに分離できるようにすることで、ブロックの伝播時間とスループットを向上させます。これにより、ブロック伝播時間の一貫性が向上し、より高いトランザクションレートが可能になります。
Plutusのメモリー/CPUパラメーター
メモリー使用効率はチェーン全体で向上しています。具体的には、未使用トランザクションアウトプット(UTXO)処理、ステーク分布、ライブステーク分布およびプール、ハッシュ表現のメモリーが改善されています。
Plutusスクリプトの強化
スマートコントラクトの最適化により、強力なEUTXOモデルをさらに効率化します。
- リファレンスインプット(CIP-0031)- Plutusスクリプトはトランザクションインプットを使用せずに検査できます。すなわち、インプットに格納された情報を検査するためだけにUTXOを作成する必要はありません。
- Plutusデータム(CIP-0032)– データムは、データムハッシュの代わりに直接アウトプットに添付することができます。これにより、ユーザーは所与のハッシュと一致するデータムを指定する必要なく実際のデータムを確認できるため、データムの使用方法が簡素化されます。
- スクリプト共有(CIP-0033)– Plutusスクリプトリファレンスは、トランザクションアウトプットに関連付けることができます。すなわち、オンチェーンで記録し、あとで再利用することができます。トランザクションごとにスクリプトのコピーを提供する必要はなく、開発者の負担が大幅に軽減されます。複数のトランザクションでスクリプトを再利用することで、トランザクションサイズが大幅に縮小され、スループットの向上とスクリプト実行コストの削減につながります。
ノードの強化
ノードの改良はエポック全体におけるステークの均等配分や報酬計算に役立つため、ブロックサイズ拡大にゆとりを提供します。また、メモリー使用の効率も上がっています。メモリーの圧縮によりRSSフットプリントが削減され、メモリーの共有によりインスタンス化を必要とするデータが少なくなります。2022年3月から使用されるノードバージョン1.34.1は、エポック境界など重要なポイントでのピーク負荷を軽減します。
オンディスクストレージ
プロトコルステータスの一部をディスクに保存することにより、ノードのメモリー依存度が軽減されます。すなわち、RAMに制約のあるシステムでも十分なストレージがあればノードを実行できるため、メモリーはスケーラビリティのボトルネックではなくなります。これにより、ブロックチェーンステータスの大幅な成長が可能になります。
幕間:ブロックチェーンのトリレンマ
ブロックチェーンのような分散型システムのスケーラビリティは複雑な問題です。
一般に、「適切」なブロックチェーンシステムには、スケーラビリティ、セキュリティ、分散化という3つの特質が備わっていると認識されています。しかし、同じように広く認識されているのはいわゆるトリレンマ、すなわち、分散型システムはこれらの特質のうち2つしか提供できず、残りの1つは犠牲になるというものです。イーサリアムの作成者Vitalik Buterinが最初に唱えたこのトリレンマは、開発者は、ブロックチェーンネットワークを設計する際に常に妥協、あるいはトレードオフを受け入れなければならないということを示唆しています。この妥協とは、1つを「犠牲」にすることで、2つの特質を可能にすることを意味しています。
たとえば、ネットワークのノードが増えると、分散化は高まりますが、安全性を維持するためには信頼できるノードがより多く必要になります。安全性を維持するためには、攻撃することをためらうようなコストのかかる手数料を導入しなければなりません。しかし、ネットワークに参加するためのイニシアチブが必要で、ノードごとのコストは比較的低く抑える必要があります。また、まさに不変性というその特性は、ブロックチェーンのデータはブロックチェーンが存在する限り追加され、削除されることがない、すなわちブロックチェーンは拡大し続けるということを意味しています。ネットワークが拡大するということは、パフォーマンスを維持するためにより多くの計算リソースを必要とすることを意味します。パフォーマンスの向上にはハードウェアの向上が必要であり、報酬は、投資するに値するだけのものである必要があります。等々。
垂直スケーリングと水平スケーリング
このトリレンマを解消するには、慎重でバランスの取れたアプローチが必要です。3つの要素すべてを均衡状態に保ちます。
理論上、ブロックチェーンシステムは無限に拡大し続けます。システムの一部となるノードが増えるほど、流通するデータや資産も増え、より多くのトランザクションを処理する必要が出てきます。このすべてが、計算力とストレージを要します。時間の経過とともに、需要は拡大を続け、基盤となるシステムも、パフォーマンスの劇的な低下を防ぐために相応のスケーリングが必要になります。
スケーリングには、垂直スケーリングと水平スケーリングという2つのオプションがあります。
垂直スケーリング
この技法は、個別のノードの計算力を、メモリーの増設やより優れたコンポーネントの追加により拡大します。言い換えれば、ネットワークのハードウェアをアップグレードして、パフォーマンス全般の改善を達成します。
高いパフォーマンスのノードを含むネットワークを持つことにより、たとえばより大きなブロックサイズやより高速なブロック拡散をサポートできます。しかしマイナス面として、運営費用が高いことから、新規のノードオペレーターは参加を躊躇い、ネットワークの拡大が切り詰められることで、分散化が限定されます。また、このようなネットワークはバリデーターノードのコストも高額になります。
水平スケーリング
垂直スケーリングとは対照的に、水平スケーリングは2つの方法で達成できます。1つめは、単純に既存のネットワークにより多くのコンピューター(ノード)を追加することです。ここでの根拠は、ノードを追加することにより、ネットワークはより多くのトランザクションを処理できるようになるということです。
2つめは、サイドチェーンを使ってメインチェーンの計算の負荷を一部肩代わりさせることです。さらに副産物として、特定のプロジェクトや業界に合わせて、たとえば異なるコンセンサスプロトコルやガバナンスモデルの形式にカスタマイズすることが可能になります。セキュリティの観点から、サイドチェーンは、メインチェーンへの脅威の可能性を分離することによって、より安全なエコシステムを生み出すことができます。どのような形であれサイドチェーンが侵害されても、リスクはサイドチェーンにとどめられるため、残りのネットワークのセーフガードとなります。
レイヤー2:スケーラビリティのジレンマに対処
大まかに言って、レイヤー2ソリューションはレイヤー1チェーンに内在するスケーラビリティ問題に対処します。既存のブロックチェーンの上に構築された(ウェディングケーキに新しい段を重ねるように)レイヤー2プロトコルは、メインチェーンに発生するところであった大量の処理作業を実行します。これにより、メインチェーンのスループットが増加します。さらなるボーナスとして、レイヤー2ソリューションが一生懸命作業している間、レイヤー1はその安全性を維持します。
レイヤー2:定義
レイヤー1ブロックチェーン上で機能する追加的なオフチェーンプロトコル。ブロックチェーンからオフチェーンプロトコルへ資金を安全に移すことができ、基盤となるチェーンとは独立してこのプロトコル内でトランザクションを決済でき、必要に応じて基盤となるチェーンに資金を安全に戻すことができます。レイヤー2プロトコルは、ネットワークの混雑を緩和することによってスループットとスケーラビリティ全般を向上させます。
Cardanoのレイヤー2スケーラビリティソリューション
サイドチェーン
サイドチェーンは、複数のブロックチェーンに相互に通信することを可能にし、一方が他方のイベントに反応する方法として定義されますが、メインのブロックチェーン(「メイン」チェーン、または親チェーン)に接続された独立したブロックチェーンです。双方向メカニズム(「ブリッジ」)によって、一方のチェーンのトークンその他のデジタル資産を別のチェーンで使用し、その結果を元のチェーンに戻すことができます。資産は必要に応じてチェーン間で移動できます。1つの親チェーンに、まったく異なる方法で運用する複数の相互運用可能なサイドチェーンを接続することも可能です。CardanoのEVMサイドチェーンには、dcSparkのMilkomedaやIOGのEVMサイドチェーンプロジェクトが含まれます。
Hydra
HydraはCardanoのレイヤー2スケーラビリティソリューションであり、低レイテンシと高スループットによってトランザクションを高速化し、トランザクションコストを最小限にすることを意図しています。
Hydra HeadはHydraファミリーの最初のプロトコルで、同型のマルチパーティステートチャネルに立脚した、より先進的なデプロイシナリオの基盤を実現します。メインチェーンの台帳を安全な決済層として使用しながら、ユーザーグループにオフチェーンでトランザクションを処理するより効率的な手段を提供しすることにより、Hydra Headはメインチェーンと緩やかに結合しながら安全性を保証します。グローバルコンセンサスを必要とせず、幅広いアプリケーションに適用できます。また、Hydra Headは、ユースケースの必要に応じたトランザクション手数料、スクリプト実行バジェット、その他のプロトコルパラメーターの設定が可能です。たとえば、これはマイクロトランザクションを可能にするために不可欠です。
さらに、Hydraは同型的ステートチャネルの概念を導入しました。これは、同じ台帳表現を再使用して、オフチェーンで同型の兄弟台帳を生み出すものです。これをHeadと呼びます(Hydra故の名称です)。特にCardanoにとっては、これはネイティブ資産、NFT、Plutusスクリプトが各Hydra Head内で利用できることを意味します。同型は追加ではなく、システムの自然な拡張を可能にします。
Hydra HeadはHead内でほぼ瞬時のファイナリティに達することに優れています。Headの設定および終了プロセスは数ブロックかかる場合もありますが、一度確立されると、トランザクションは共同参加者間で迅速に流すことができます。Hydra Headは同型でEUTXOモデルを使用してもいるため、競合しないトランザクションを並行して処理することができ、優れたネットワークと相まって、利用可能なリソースを最適に利用できます。
その他のスケーラビリティソリューション
オフチェーン計算
非同期コントラクト実行(ACE)などを使用して計算の一部をオフロードすることで、コアネットワークの効率を向上させます。トランザクションはブロックチェーンの外部で発生しますが、信頼モデルを介して高速で低価格のトランザクションを提供できます。
Mithril
スケーラビリティを向上させるには、参加者の数に対数的に依存する重要な操作の複雑性に対処することが不可欠です。IOGが開発するMithril(ミスリル)プロトコルは、ステークベースの閾値署名スキームとして、透明性のある安全で軽量なステークの活用を可能にします。Mithrilは、信頼を維持しながらチェーン同期を向上させます。その結果、セキュリティ機能を損なうことなく、高速で効率的なマルチシグ集約が実現します。
まとめ
ブロックチェーンネットワークは謎めいた方法で機能し、分散型台帳エコシステムを取り巻く概念の中には理解が難しいものもあります。
しかし、レイヤー1、レイヤー2に関して言えば、ここで説明した段になったケーキを思い浮かべればさほど難しくはありません。
- レイヤー1(ケーキスタンド)は堅牢で安全なベースネットワークで、その上にレイヤー2ソリューションが重ねられます
- レイヤー2(ケーキの各段)はベースの上に構築されたソリューションで、内在するスケーラビリティの問題に対処します
これは、レイヤー1とレイヤー2とは何かを視覚化し、理解するための最も単純な方法です。
主要ポイント
- Cardanoはレイヤー1(ベースネットワーク)
- レイヤー2ソリューションはレイヤー1チェーンの上に構築された構造で、後者のスケーラビリティおよびトランザクション速度の問題に対処。ビットコインのLightning Networkは、CardanoのHydra同様にレイヤー2ソリューションの例
- スケーリングには、垂直と水平の2つのオプションがある
- 垂直スケーリングは、個別のノードの計算力を、メモリーの増設やより優れたコンポーネントの追加により拡大
- 水平スケーリングは2つの方法で達成可能。1つめは、単純に既存のネットワークにより多くのコンピューター(ノード)を追加することで、2つめはサイドチェーンを使ってメインチェーンの計算の負荷を一部肩代わりさせること
- Cardanoは2022年、2023年を通じてさまざまなスケーラビリティメソッドを実装
最新の記事
Quality Engineering at IO: bridging research and reality in software development 筆者: Ivan Irakoze
20 November 2024
ブラックホーク空へ:ハリケーン「へリーン」を受けて英雄達を輸送 筆者: Fernando Sanchez
29 October 2024
ワイオミングのBlockchain StampedeでCardano Day 筆者: Alejandro Garcia
21 October 2024