2

我正在修改比特币源代码,并试图了解对等发现机制在testnet我进行了以下更改的模式下的确切工作方式:

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

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

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

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

湾。通过addr消息获取对等地址后,节点 E 什么时候开始连接这些对等点?

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

4

1 回答 1

-1

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

B. 如果节点没有连接到它的最大节点容量(它是 8 个活动节点和 125 个非活动节点),它将尝试连接到新节点,它会得到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 回答