比特币客户端如何确定要连接的第一个IP地址?

时间:2017-01-16 09:27:50

标签: p2p bitcoin

据我所知,比特币是一个p2p协议,a p2p protocol must have a dedicated central server。但据说比特币分散

1 个答案:

答案 0 :(得分:6)

早在2009年,我们依靠IRC来引导网络,因此每个节点都将连接到Freenode(后来的LFnet)并加入一个频道。他们的昵称是他们编码的公共IP地址。

如今,比特币核心客户端和许多其他实现都依赖于DNS种子。 DNS种子是特殊的DNS服务器,配置为从网络返回许多随机选择的节点。 DNS种子的运营商也运行爬虫来枚举种子返回的可公开访问的节点。

目前包含在比特币核心客户端中的种子是:

  • bitcoin.sipa.be
  • dnsseed.bluematt.me
  • dnsseed.bitcoin.dashjr.org
  • seed.bitcoinstats.com
  • bitseed.xf2.org
  • bitcoin.jonasschnelli.ch

如果您向任何这些服务器发送请求,他们将返回一些已知在端口8333上运行比特币的随机IP:

dig seed.bitcoinstats.com +short
71.19.155.244
173.254.232.51
45.79.97.30
198.252.112.64
35.128.8.141
108.17.18.165
98.208.76.134
8.29.28.12
52.62.2.124
96.234.214.85
47.89.24.56
212.164.215.159
52.62.42.229
68.52.96.191
115.66.205.171
24.250.16.39
201.43.160.155
5.3.253.18
100.40.179.172
50.135.169.181
186.149.249.18
101.201.44.207
96.35.97.46
124.188.118.196
82.8.4.79

除了DNS种子之外,Core客户端还有一个static list of IPs可以先尝试,它会缓存本地数据库中任何先前联系的对等体,以便重新连接而无需查询DNS种子。

(免责声明:我是其中一个DNS种子的运营商)