🛠

LINEのブロックチェーンKaiaを知る ~ ## Kaiaネットワーク識別子(KNI)とは?

2025/02/10に公開

Kaiaネットワーク識別子(KNI)とは何か?

皆さんは分散型ネットワークにおけるノードの識別方法について考えたことがありますか?Kaiaネットワークでは、その課題を解決するために「Kaiaネットワーク識別子(KNI)」という仕組みが用いられています。KNIは、一言で言うと、Kaiaノードを一意に識別するためのURLスキームです。このブログでは、KNIの仕組みを分かりやすく解説していきます。

KNIの構造

KNIは、以下のURLスキームで表されます。

kni://<nodeID>@<hostname>:<port>?subport=<subport>&discport=<discport>

このURLには、ノードを特定するために必要な情報が全て含まれています。各要素の意味は以下の通りです。

  • nodeID: ノードの512ビット公開鍵。これは、P2Pネットワーク上でピアとの通信を検証するために使用されます。ノードのアイデンティティを証明する重要な要素です。

  • hostname: ノードのアドレス。IPv4、IPv6、ドメイン名のいずれかの形式を取ります。ネットワーク上でノードの位置を示す指標です。

  • port: TCP接続用のポート番号。Kaiaではデフォルトで32323が使用され、これはピアノードとの通信に用いられます。

  • subport: 追加のTCP接続用のポート番号。デフォルトはport + 1(kend.confで設定)であり、マルチチャネル接続に使用されます。TCPによる通信ポートが複数ある場合、2種類の接続をKaiaは提供します。

  • discport: UDP接続用のポート番号。既知の近隣のノードが到達可能かどうかを確認し、新しい接続のための近隣のノードのアドレスを取得するために用いられます。通常はTCPポート番号と同じですが、別途指定することもできます。

IPアドレスが10.0.0.1、TCPポートが32323と32324のノードのKNIの例を示します。

  • kni://a979...163c@10.0.0.1:32323 (サブポート省略、シングルチャネルまたはマルチチャネル接続)
  • kni://a979...163c@10.0.0.1:32323?subport=32324 (マルチチャネル接続)

discportを30301に指定した場合の例:

  • kni://a979...163c@10.0.0.1:32323?discport=30301 (サブポート省略、シングルチャネルまたはマルチチャネル接続)
  • kni://a979...163c@10.0.0.1:32323?subport=32324&discport=30301 (マルチチャネル接続)

KNIの用途

KNIは、Kaiaノードの発見プロトコル、static-nodes.jsonファイルの設定、addPeerAPI、bootnodesオプションなどで使用されます。つまり、ネットワーク上のノードを発見し、接続を確立する際に不可欠な要素となっています。

KNIの生成

ノードのKNIを生成する方法については、「ノードキーとノードURIの生成」を参照してください(本文中に具体的な方法や参照先についての記述がないため、一般論として解説しています)。

技術的な考察

KNIは、分散型ネットワークにおけるノードの識別と発見の効率性を高めるために設計されています。ノードの公開鍵を使用することで、安全かつ一意の識別が可能になります。TCPポートとUDPポートを指定することで、異なるタイプの通信を同時に確立することができます。この設計は、分散型アプリケーションやネットワークサービスの信頼性とパフォーマンスを向上させる上で重要な役割を果たします。

今後の展望

KNIのようなノード識別子スキームは、分散型ネットワークの拡大と複雑化にともない、ますます重要性を増していくでしょう。将来の技術革新は、より安全で効率的なノード発見メカニズムの開発につながる可能性があり、KNIも進化を遂げていくことが期待されます。

GitHubで編集を提案

Discussion