Насколько мне известно, биткойн - протокол p2p и a p2p protocol must have a dedicated central server. Но говорят, что биткойн децентрализован.Как клиент биткойна определяет первый IP-адрес для соединения?
ответ
Еще в 2009 году мы использовали IRC для загрузки сети, поэтому каждый узел подключился к Freenode (позже LFnet) и присоединился бы к каналу. Их прозвищами были их закодированный публичный IP-адрес.
В настоящее время клиент Bitcoin Core и многие другие реализации полагаются на семена DNS. Сегменты DNS - это специальные DNS-серверы, которые настроены на возврат нескольких случайно выбранных узлов из сети. Операторы семян DNS также запускают сканеры для перечисления общедоступных узлов, которые должны быть возвращены семенами.
Семена, которые в настоящее время включены в клиент Bitcoin ядра являются:
- bitcoin.sipa.be
- dnsseed.bluematt.me
- dnsseed.bitcoin.dashjr.org
- семян .bitcoinstats.com
- bitseed.xf2.org
- bitcoin.jonasschnelli.ch
Если вы отправляете запрос на любой из этих серверов они будут возвращать число случайных IP-адресов, которые известны для запуска Bitcoin на порт 8333:
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 клиент Ядро также имеет static list of IPs, чтобы попробовать сначала, и он будет кэшировать любые ранее подключенные одноранговые узлы в локальной базе данных, чтобы повторно подключиться без запроса DNS-семян.
(Отказ от ответственности: Я оператор одного из семян DNS)
Спасибо вы за отличный ответ! – Divlaker
Что мне нужно: существует ли риск того, что DNS-сервер отключится или заблокирован внешними силами, которые приведут к гибели биткойна? – Divlaker
Сегменты DNS являются лишь одним из нескольких механизмов для выполнения бутстрапа. В случае полного блока вы можете даже не заметить ничего, если вы были связаны раньше, потому что ваш узел просто попытается подключиться к некоторым ранее известным одноранговым узлам или статическому списку. Даже если вы выполняете загрузку, вы можете просто попросить кого-нибудь об их IP-адресе и использовать флаг командной строки '-addnode' для подключения к нему. – cdecker
http://bitcoin.stackexchange.com/questions/3536/how-do-bitcoin-clients-find-each-other – Fi3