2

私はビットコインのソースコードをいじくり回しておりtestnet、次の変更を行ったモードでのピア発見メカニズムの正確な動作を理解しようとしています:

  1. bitcoind を強制的にフォールバックさせてハードコードされたノードに接続するために、DNS シード検出を無効にしました。

  2. ハードコードされたデフォルトのノードを既知の 4 つのアドレスに変更しました。A、B、C、D としましょう。これらは常にオンラインであることを確認しています。

ここで、bitcoind クライアント (E と呼びます) を実行すると、A、B、C、または D のいずれかに接続され、同じ修正バージョンの bitcoind が実行されます。最初に接続するハードコーディングされたノードからピアアドレスを取得し、メッセージを交換getaddraddrますが、その後どのように処理されるかはわかりません。次のクエリがあります。

a. ノードがフォールバックしてハードコードされたノードに接続する場合、私の場合のようにハードコードされたノードの1つだけに接続することになっていますか、それとも複数のハードコードされたノードに接続できますか?

b. メッセージを介してピア アドレスを取得した後addr、ノード E はいつそれらのピアへの接続を開始しますか?

可能であれば、関連するコード ファイル/セクションを教えてください。ありがとう

4

1 に答える 1

-1

A. 「ハードコードされたノード」はありません。ノードの DNS シードのみがあります。DNS リクエストを実行すると、リクエストごとに新しいノードが取得されます。

B. ノードがノードの最大容量 (8 つのアクティブなノードと 125 の非アクティブなノード) に接続されていない場合、2 番目に新しいノードへの接続が試みられ、次のaddrメッセージが表示
されます:

livenet: https: //github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L102
テストネット: https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L181

于 2015-11-20T00:10:09.573 に答える