カルダノの新技術「ダイナミックP2P」とは?【全文翻訳】

カルダノ情報

3月19日に公開された、「Cardano Technical Briefing」では、IOGのテクニカル・アーキテクトである、Duncan Coutts氏が登場。リリース直後の「Cardano Node 1.35.6」で実装された「ダイナミックP2P」についての詳細情報が発表されました。
カルダノのネットワークにもたらされる新機能のほか、将来的な「Ouroboros Genesis」に向けた情報共有もあり、SPOやコアなカルダノホルダーの方にとって必見の内容です。

本記事では、この動画の全文をどこよりもわかりやすい日本語翻訳でお届けします!


本記事のオリジナル動画はこちら↓
Cardano Technical Briefing: Dynamic Peer-to-Peer by Duncan Coutts – YouTube

こんにちは、私はDuncan Couttsです。IOGでの私の仕事は、Cardanoノードのアーキテクトです。ですから、私は長い間Cardanoノードに携わってきました。Byronと一緒に最初のGenesisの実装を行ったときにも、担当ではありませんでしたが関わりました。私の最大の仕事といえば、『Shelley』リリースのためにCardanoを書き直したチームを率いたことですね。それ以来、私はより将来を見据えた仕事をするようになり、目下の仕事にはあまり手をつけなくなりました。そのため、Cardano Shellyをみんなで夢中になって作っていた頃に比べれば、私が表に立つことは最近は少なかったかもしれません。

今日は、ネットワーク層と「ピアツーピア・ダイナミクス・リリース」についてお話したいと思います。カルダノのネットワーク層は、コンセンサス層の下に位置するノード内のこのソフトウェアの層で、コンセンサスアルゴリズムが必要とするすべての情報発信をサポートします。私たちはこれをnode-to-node protocolと呼んでいるので、ネットワークプロトコルです。ノード間プロトコルは、3つのミニ・プロトコルで構成され、コンセンサスアルゴリズムをサポートするためにノードが互いに交換する必要があるさまざまな種類の情報を扱います。

SPOとユーザーがノードをセットアップするとき、特にSPOはノードを設定することで2つの役割を果たすことができます。当然、ブロックを生成する必要があるので、ノードを設定する役割の1つは、ブロックプロデューサーノードです。また、リレーと呼ばれるものも設定します。これもノードで、ブロックの生産者ではなく、情報を中継する役割に設定されます。

カルダノノードは、他のノードと連携する「リレーノード」と、ブロック生成を行う「ブロックプロデューサーノード」の2種類がある

現在の設定から「ダイナミック・ピアツーピア・リリース(Dynamic P2P Release)」に移行すると、ネットワークのトポロジーが少し変化することになります。つまり、ネットワークのトポロジーの意味としては、すべてのSPOの間に直接接続があり、最終的にはSPOのリレーとユーザーのノード(ユーザーのマシンやサーバーで動作するもの)の間に直接接続があるということです。「ダイナミック・ピアツーピア・リリース」は、さまざまなメリットをもたらします。それは、SPO、ブロックプロデューサー、リレーの間のトポロジーの構築方法を自動化することですが、実際には異なるSPOのリレーの間のトポロジーです。今回のリリースでは、SPOのリレーをエンドユーザーのノードに直接接続するのではなく、SPOのリレーが互いに接続する方法を自動化することを目的としています。
最終的に「Ouroboros Genesis」が完成すれば、SPOリレーをエンドユーザーに直接接続できるようになりますが、その際にも、こうしたピアツーピアの機能を活用することになるでしょう。

そしてそれは、このようなピアツーピアの機能にも依存することになります。
しかし今回のリリースでは、SPOリレーが互いに接続する方法を変更することが決定的に重要です。現段階でのキーポイントは、リレー接続をはるかに自動化されるようになったことです。現在、SPOはある種の手動的な設定システムを使って、各リレーが接続するピアのセットを静的に指定する必要がありますが、いくつかの方法で自動化されています。現在は、SPOは他のSPOのリレーを、IPアドレスやDNS名を取得してリストアップし常に一定数のリレーと接続する必要があるため、かなり多くのリレーを使わなければいけません。しかし静的なリスト方法では、特定の時間にどのリレーがオンラインになるかオフラインになるか分からないので、最低限必要な数のリストアップを確保するために、過剰な数のリレーをリストアップする必要があるのです。
一方、今回リリースする動的なピアツーピア構成では、SPOリレーの全セットが選択可能な状態になっています。そのため、50ほどの固定リストは必要ありません。すべてそこにあるのです。そして、例えば20という目標があり、これは設定可能ですが、20は妥当な数です。そして、他のSPOリレーへの接続数が目標値を維持できるように他のピアの出入りがあっても、システムが継続的に保証します。つまり、上流の接続にはすべてコストがかかるので、オーバープロビジョンをする必要がなく、リソースの利用効率が向上するのです。

そこで、「ダイナミック・ピアツーピア・リリース」によって、さまざまなメリットが得られます。ネットワーク全体のサービス拒否攻撃や分散型サービス拒否攻撃に対抗できるため、全体としてセキュリティが向上します。その理由は、SPOがブロックプロデューサーとリレーを設定するのが容易になり、ブロックプロデューサーがインターネットの他の部分から完全に保護され、ファイアウォールされるようになったからです。ファイアウォールを設定することで、すべての着信接続をブロックすることが可能になるのです。ブロックプロデューサーは、着信TCP接続を許可することなく、SPO自身のリレーへの発信接続を行うことができます。

つまり、これは見方によってはセキュリティの向上と言えるでしょう。また、ブロックプロデューサーの場合、他のSPOと公開されないプライベートピアリングを設定することが可能です。つまり、SPOは自分のリレーを公開することもできますが、他のSPOのリレーとプライベートピアリング契約を結んで接続できる隠れたリレーを持つことも可能なのです。これは、誰かがネットワーク全体に対してサービス拒否攻撃を行おうとした場合に、さらなる耐性を提供することができます。
また、ネットワークのパフォーマンスやスケーラビリティも向上するはずです。ピアツーピア・ネットワークをダイナミックに構築し、ダイナミック・ピアツーピア・リリースを行う方法は、かなり巧妙な最適化手順を踏んでおり、シミュレーションの結果、最適に近い結果が得られることがわかりました。これはかなり大胆な主張ですが、それを裏付けるシミュレーションデータがあります。

つまり、すべてのノードが正しく接続された完璧なグローバルネットワークを構築できたとしたら、それが理論的な最適値ということになります。しかし、純粋に局所的な情報に基づくこの最適化手順では、この大域的な最適値にかなり近い値を得ることができることがわかりました。つまり、完全に自動化された手順は、人が手動で行う場合と比較して、ブロックがネットワーク上に公開されるまでの全体的な時間という点で、非常に良い結果をもたらすということです。ピアツーピアによって遅延が増えるのではないかと心配する人がいるかもしれませんが、それは、手動で本当に良いものを選ぶことができると考えているからです。そしておそらく、手動で本当に良い選択をすることができるのでしょう。しかし、まず第一に、私たちはもうそれを手作業で行う必要はありません。次に、ブロックの拡散時間という点で、非常に優れたグローバルな結果が得られるはずです。

カルダノネットワークのロードマップ。1.35.5までハイブリッドだったが、1.35.6からDynamic P2Pが実装され、メインネットで検証されている

そこで、ネットワーキング・レイヤーの歴史と現在の状況、そして今後の方向性、そしてこのダイナミック・ピアツーピア・リリースが全体の文脈の中でどのように位置づけられるかについて、もう一度おさらいしておきましょう。最初の頃、バイロンがリリースされ、物事がフェデレーション化されていた頃です。
最初はIOGがすべてのブロック生産ノードを運営するフェデレート・ネットワーク・トポロジーからスタートしました。その後、Shelleyのリリースで、SPOをブロック生産ノードやリレーとして参加させることで、ブロックの生産を分散化しました。しかし、IOGは今でもエンドユーザーやマーチャント、取引所などをサポートするために多くのリレーを提供しています。現在は、ピアツーピアとフェデレーテッドトポロジーを組み合わせた、ハイブリッドモードで構成されています。SPO同士の接続方法がピアツーピアのネットワークであっても、手動で設定したピアツーピアのネットワークであることに変わりはありません。
ダイナミック・ピアツーピア・リリースでは、これを自動化することで、完全にダイナミックなピアツーピア・ネットワークに移行します。
この移行により、手動で設定していたものを完全に自動化するように変更するのです。

「Ouroboros Genesis」の開発は、次のステップとなります。「Genesis」は、数年前に学術論文として発表された「Ouroborosアルゴリズム」の後継バリエーションです。Ouroborosのジグソーパズルの最後の重要なピースとして、(カルダノの)ジェネシスから適切かつ安全に起動する方法を提供します。これは、最初からネットワークに参加するのではなく、後から安全にネットワークに参加することを意味します。Genesisは、他の信頼できる仲介者を必要とせず、後から安全にチェーンの信頼を確立するための、査読を受け、数学的に証明されたアルゴリズムを提供します。

ダイナミック・ピアツーピア・リリースは、ピアツーピア・ネットワークのメカニズムを提供しますが、エンドユーザーをシステムやピアツーピアネットワークに参加できるようにするのは「Ouroboros Genesis」です。そして、ピアツーピアとネットワーク層の展開の最終段階として、「ピアシェアリング」と呼ぶ機能があります。
これは、ネットワークにリレーを設置できるのはSPOだけではない、ということです。ピアシェアリングが実現すれば、SPOだけでなく、誰でも自分のマシンをリレーとして提供することができるようになるのです。これが、ネットワークレイヤーの展開の段階です。

それでは、どのように開発が進行し、どのように展開されているのかについてお話しましょう。

これは、長い研究開発の段階を経て、長い時間をかけて作られたものです。前述の通り、大規模なシミュレーションを行い、さまざまな研究者と協力しながらこの理論を研究しました。私たちが目指したのは「ノードがお互いを信頼する必要なく、ローカルで利用可能な情報のみに依存する、ローカルなメカニズム」を解明することでした。このメカニズムにより、ブロックがネットワーク上で再放送されるまでの時間を最小化するグローバルな結果が確立されます。

研究フェーズを経て、開発フェーズに移行し、模擬環境での内部テストも徹底的に行いました。今回はIOGのネットワーク・シミュレーションで、プロパティベース・テストと呼ばれる手法を多用しました。
そして、プリプロダクション・バージョンを試したり、メインネットでピアツーピア対応のリレーを走らせたりする際には数人のSPOが協力してくれました。しかし、これらは私たちが監視するプライベートノードであり、協力してくれたSPOも数名だけでした。
今回、ようやく本番リリースに組み込む段階になり、すべてのSPOに今すぐ試してほしいとお願いしています(CP注:現在の1.35.6は不具合があり調査中です)。

この展開の仕方は、一歩一歩、慎重に計画されています。アップグレードしたらすぐに自動的にオンになるようなものではありません。Configulation設定で有効化できるようになっており、ピアツーピアモードでも旧来の手動モードでも実行できるようになっています。これは、誰もが自分にとって適切なタイミングで選択できるものなのです。当初は、少なくとも1つのリレーをピアツーピアモードで設定するようSPOにお願いしていますが、ロールアウトが進むにつれて、ブロックプロデューサーをピアツーピアモードで設定するようSPOに推奨していきます。
つまり、リレーとブロックプロデューサーをどのように通信するかを考えなければならないのです。最終的には、SPOがすべてのブロックプロデューサーとリレーをピアツーピアモードで動作させることができるようになる予定です。
ネットワーク層とピアツーピアのリリースで何が起きているのか、興味を持ち、啓発されたのではないでしょうか。

では次に、コミュニティ、特にSPOから多くの質問があったので、さっそくそのいくつかを紹介します。

Q:「コールドピア」「ホットピア」「ワームピア」とは何ですか?

コールドピア、ホットピア、ウォームピアは、新しいピアツーピアの内部がどのように機能するかの一部です。「ピアツーピアガバナー」または「アウトバウンドガバナー」は、これらの状態のいずれかにあるすべてのピアを追跡しています。 

コールドピアとは「ノードが認知しているが、接続がないピア」です。

ウォームピアとは「接続は確立されているが、監視や性能評価のために使用し、コンセンサスプロトコル自体には使用されていないピア」のことです。

ホットピアとは「そのピアが使用されており、そのピアへの接続がコンセンサスプロトコルに使用されているピア」のことです。

dP2Pに設定変更すると、実際のgLiveView上でも、コールド、ワーム、ホットのピア数が表示される

これらの異なる状態の間で、ピアは昇格・降格します。
私たちが行った調査やシミュレーションの結果、昇格や降格のポリシーは極めてシンプルにできることがわかりました。 優れたポリシーが1つあれば十分なのです。
「コールド」から「ウォーム」への昇格をランダムにし、「ウォーム」から「ホット」への昇格もランダムにします。
唯一、非常に優れたポリシーを持っているのは、「ホット」から「ウォーム」への降格です。これは「直近の期間内にどのピアから最も有用でないヘッダーを受け取ったか」を継続的に測定することで行われます。不要なヘッダーを最初に渡したピアは「ワーストピア」となり、それらのうち数ピアを降格させ、さらに数ピアをランダムに昇格させます。それだけで、最適化手順が全体として機能するようになります。

Q:「隠しノード」とは何ですか?

隠しノード(hidden nodes)というのは「SPOリレーとして登録されていないノード」のことです。
もちろん、リレーを走らせても、SPOリレーとしてブロックチェーンに登録しないことはすでに可能です。ですから、ある意味では、現在も可能ですし、将来も可能でしょう。違いとしては、SPOリレーとして登録されていない隠れたノードは、ピアツーピアモードを使用している他のSPOから、着信接続を受け取れないということです。 他のSPOとプライベートピアリングの取り決めをしない限り、発信接続はできますが、着信接続は受けられません。他のSPOに「これが私の隠しノードのIPアドレス(DNS名)です」と伝えれば、そのSPOのリレーを設定することができます。

例えば、「20のSPOのリレーから選んで自動的に接続する」ということだけでなく、ピアツーピアの設定で「特定のグループと特定のターゲットを選択する」ことも可能です。
「この2つのリレーには最低1つ、この3つのリレーには2つ」といった具合に、常に接続を維持したいという設定ができ、その中にはプライベートピアリングを結んでいる他のSPOの隠しリレーも含まれる可能性があります。そういう意味では、隠しノードを走らせることも可能でしょう。

Q:「Ledgerピア(台帳ピア)」とは何ですか?

Ledger peersは、台帳から選ばれたピアです。SPOは、リレーをチェーンに登録できることを忘れないでください。これらは、誰もが知っているリレーです。ダイナミック・ピアツーピア層では、ノードがどのピアを選ぶかを考えるとき、台帳に登録されているピアの中から選ぶことが一般的です。これは、SPOがリレーを他のSPOに接続するように構成したいため、SPOがリレーを接続するように構成するピアのセットです。

Q:Ouroboros Genesisは、P2Pリリースに必要な要素ですか?

Ouroborosとピアツーピアの関係は、技術的にはほとんど独立していますが、エンドユーザーがピアツーピアのネットワークに参加できるようにする前に、この両方が必要です。ピアツーピアは、メカニズムやネットワークレイヤーを提供します。エンドユーザーノードやエクスチェンジなどのノードがネットワークに参加し、接続を確立するためのメカニズムであるトポロジーを実際に構成するの。しかし、Oroborus Genesisは、エンドユーザーがそうすることを安全に行うことを可能にします。

Q:特定のIPからのIncoming接続だけを許可する設定は可能ですか?

これに対する端的な答えは「No」ですが、おそらくそれをする必要はそもそもないでしょう。その機能を直接提供するわけではありません。これは、ご自身のファイアウォールで設定する必要がある機能です。しかし興味深いのは、ダイナミック・ピアツーピア・リリースによって、このようなことをするのは不要になるでしょう。なぜなら、これの反対方向の接続を確立することが可能になるためです。ですから、おそらく質問の前提は、誰かがブロックプロデューサー・ノードがリレーからの着信接続を受け入れることを想像しているのでしょうが、それは私たちが推奨する設定方法とは異なります。

それでも可能ですが、私たちが推奨する方法は、ブロックプロデューサーがリレーに発信する接続を確立することです。これは、ご自身のファイアウォールで設定する必要がある機能です。つまり、コンセンサスプロトコルの実行方向については、当初は誰がどの方向に接続しても構わないということです。つまり、AがBに接続したり、BがAに接続したりしても、その構成や2つのノードの状態によって、どちらかがお互いの上流になったり下流になったりするのです. 典型的なセットアップの推奨は、ブロックプロデューサーがファイアウォールを介してリレー(SPOリレー)への発信接続を確立し、すべての着信接続をブロックすることです。なぜなら、受信接続は必要ないからです。双方向で使用できるのは送信接続だからです。というわけで、このセットアップで安心できることを祈ります。

さて、これでおしまいです。そして、より詳しい情報はTwitterでフォローできますし、より技術的な話をしたい場合はDiscordに参加することも可能です。

IOGのDiscordはこちら→ https://discord.com/invite/inputoutput
IOGのブログはこちら→ https://iohk.io/jp/blog/posts/2023/03/16/dynamic-p2p-is-coming-to-cardano/

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


本稿はカルダノステークプール「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