ピアツーピア層
..p2p:
ピアツーピア層[編集]
このドキュメントでは、Tezosシェルのピアツーピア層の内部動作について説明します。この部分は、他のノード(ゴシップ)とのネットワーク接続の確立と維持を担当しています。
P2P層はノードによってインスタンス化される。ネットワークを介して交換されるメッセージのタイプ(異なるP2Pプロトコルのバージョン/拡張を許可するため)、および各ピアに関連付けられたメタデータのタイプによってパラメータ化されます。後者は、私たちが持っている信頼のレベルを反映する各ピアのスコアを計算するのに便利です。異なるスコア値を持つピアと通信するときに、異なるポリシーを使用できます。
P2Pレイヤーは、接続のプール、それらの接続上の一連の操作、およびコードベースで広く使用されるワーカーパターンに従った一連のワーカーで構成されます。
P2Pレイヤーは、パッケージ: tezos-p2p
にパッケージ化されています。
一般的な操作[編集]
入出力スケジューリング ? ?
P2P層は、帯域幅の使用を制御するとともに、異なるピア(例えば、読み出し/書き込みクォータ)に異なるポリシーを実装するために、I / Oスケジューリングを使用する。今のところ、各ピアにはグローバルに割り当てられた帯域幅の公平な配分が与えられますが、各ピアへの個々の割り当て帯域幅がピアのスコアの関数になるように計画されています。
暗号化 ?? ~~
各ピア間の接続は、 NaCl
authenticated-encryption API <http://nacl.cr.yp.to/box.html>
__を使用して暗号化されます。これは、ピア間の通信にセキュリティと改ざん防止の追加レベルを提供するために行われます。
メッセージキュー ? ?
基本I / Oスケジューリングに加えて、2つの有限サイズの型付きメッセージキューを使用して、各ピアの着信(発信)メッセージを格納します。これにより、ピアとの通信が可能になる速度がさらに制限されます。キューがいっぱいになると、追加のメッセージを読み取る(書き込む)ことはできません。 P2Pレイヤーによる高レベルの P2p_socket.connection </..api / odoc / tezos-p2p / Tezos_p2p / P2p_socket / index.html#type-connection&gt;
__タイプは、 I / Oスケジューリング、ピアメタデータ、暗号鍵、およびこれらのキューで動作する専用のワーカーによって操作される2つのメッセージキューでアップグレードされます。
接続のプール ???</sub>?</sub>
上記のモジュールはすべて、P2Pレイヤのコアを構成する P2p_pool&lt; .. / api / odoc / tezos-p2p / Tezos_p2p / P2p_pool / index.html&gt;
__、以下に説明する作業者プロセス。これは、さまざまな接続テーブルとそれらを照会するメソッドで構成されます。また、接続は、pingへの応答などの低レベルのメッセージがフィルタされ、アプリケーションレベルのメッセージだけが保持される別のメッセージキューで拡張されます。
P2Pレイヤのメインエントリポイントは、モジュール P2p </api / odoc / tezos-p2p / Tezos_p2p / P2p / index.html&gt;
__にあります。 P2P層に作用する労働者の説明については、以下を参照してください。
ウェルカムワーカー[編集]
ウェルカムワーカーは、着信接続を受け入れ、それらをP2Pレイヤーによって管理される接続プールに登録する責任があります。基本的には、 accept(2)
システムコールを実行し、 P2p_pool.accept <../api/ odoc / tezos-p2p / Tezos_p2p / P2p_pool / index.html#val-accept> / code> __を使用して、着信接続を認識させます。そこからプールは、この新しい接続をどのように処理するかを決定します。
メンテナンスワーカー[編集]
メンテナンス担当者は、ブロックチェーンの状態を現実的に把握するために、他のノードと適切な数の接続を確立する役割を担っています。それはアクティブな接続を維持するのに必要なピアの望ましい量に関して到達する一連のターゲットで作成されます。
プールレベルでは、許容可能な最小数(最大数)が定義されます。
メンテナンスワーカーレベルでは、<code> target (最小値と最大値)としきい値
(最小値と最大値)の2つの他のしきい値セットが定義されています。
これらの境界を考えると、メンテナンス担当者は:
- シェルが尋ねたとき、または許容可能な接続の最小数または最大数に達したときのどちらか早い方が起きたときに、2分ごとにトリガーされます。
- 接続数が
max_threshold
を超えると、接続がmax_target
接続に到達するまでランダムに終了します。接続数がmin_threshold
未満の場合、少なくともmin_target
接続に到達するまでピアに接続を試みます(max_target
接続)。