LINEのブロックチェーンKaiaを知る ~ ## Kaiaネットワーク識別子(KNI)とは?
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
ファイルの設定、addPeer
API、bootnodes
オプションなどで使用されます。つまり、ネットワーク上のノードを発見し、接続を確立する際に不可欠な要素となっています。
KNIの生成
ノードのKNIを生成する方法については、「ノードキーとノードURIの生成」を参照してください(本文中に具体的な方法や参照先についての記述がないため、一般論として解説しています)。
技術的な考察
KNIは、分散型ネットワークにおけるノードの識別と発見の効率性を高めるために設計されています。ノードの公開鍵を使用することで、安全かつ一意の識別が可能になります。TCPポートとUDPポートを指定することで、異なるタイプの通信を同時に確立することができます。この設計は、分散型アプリケーションやネットワークサービスの信頼性とパフォーマンスを向上させる上で重要な役割を果たします。
今後の展望
KNIのようなノード識別子スキームは、分散型ネットワークの拡大と複雑化にともない、ますます重要性を増していくでしょう。将来の技術革新は、より安全で効率的なノード発見メカニズムの開発につながる可能性があり、KNIも進化を遂げていくことが期待されます。
Discussion