主页 > imtoken官网唯一地址 > 比特币代码分析4节点发现机制

比特币代码分析4节点发现机制

imtoken官网唯一地址 2023-02-25 06:26:14

当程序第一次启动时,它不知道任何活动节点的 IP 地址。 为了发现一些全节点的ip地址,它们会查询一个或多个硬编码在Bitcoin Kernel或BitCoinJ中的DNS域名,返回的结果应该包含一个或多个DNS A记录,其中一些是可接受的ip地址新连接的全节点。

DNS 种子由比特币社区的成员维护。 有的提供动态DNS种子服务器比特币节点收益,通过扫描比特币网络自动获取活跃节点的ip地址; 其他人提供一些静态 DNS 种子比特币节点收益,需要手动更新,但他们很可能会提供非活动节点的 ip 地址。 不管是动态的还是静态的DNS种子,如果节点运行在主网的8333端口,或者运行在测试网的18333端口,都会被添加到DNS种子中。

DNS 种子结果未经授权,恶意的 DNS 种子运营商或网络中介可以只返回自己控制的节点的 ip 地址,隔离自己网络中的节点,并给他们虚假交易和区块数据。 因此,程序不应只依赖一个 DNS 种子。

然而,节点通常会离开网络或更改 ip 地址,因此当程序启动时,可能需要多次尝试连接到比特币网络。 这增加了连接到比特币网络的延迟,导致用户在发送交易或检查付款状态之前必须等待一段时间。

为了避免这种延迟,BitcoinJ 总是使用动态 DNS 种子来获取那些被确定为活动的节点的 IP 地址。 比特币内核还试图减少延迟并避免使用不必要的 DNS 节点。 如果比特币内核在其节点数据库中有记录,则至少需要 11 秒才能连接到一个节点。 失败后,会使用DNS节点获取ip地址; 如果连接在 11 秒内成功建立,则不会发送到 DNS 种子查找。