连接到硬编码节点后比特币对等点发现如何工作?

时间:2015-10-28 10:42:10

标签: bitcoin peer bitcoind bitcoin-testnet peer-discovery

我正在修补比特币源代码并尝试了解testnet模式中对等体发现机制的确切工作情况,我已对其进行了以下更改:

  1. 禁用DNS种子发现,以强制bitcoind回退以连接到硬编码节点。

  2. 将默认的硬编码节点更改为我已知的4个地址,例如A,B,C和D,我确保它们始终在线。

  3. 现在,当我运行bitcoind客户端(称之为E)时,它连接到A,B,C或D中的一个,运行相同的bitcoind修改版本。它通过交换getaddraddr消息从它首次连接的硬编码节点获取对等地址,但我不确定它之后是如何进行的。我有以下问题:

    一个。如果一个节点回退到连接到硬编码节点,它是否应该只连接到其中一个硬编码节点,就像它在我的情况下发生一样,还是可以连接到多个硬编码节点?

    湾通过addr消息获取对等地址后,节点E何时开始连接到那些对等体?

    如果可能,请指出相关的代码文件/部分。感谢

1 个答案:

答案 0 :(得分:-1)

一个。没有“硬编码节点”只有节点的DNS种子,当您通过DNS请求运行它们时,您将获得每个请求的新节点。

B中。如果节点未连接到节点的最大容量(它是8个活动节点和125个非活动节点),它将尝试连接到新节点,第二个节点将获得addr消息。 你可以在这里找到它们:

livenet:https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L102
testnet:https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L181