Как клиент биткойнов делает первоначальное подключение к сети биткойнов?

Как только клиент биткойнов подключен к машине (или нескольким машинам) в сети биткойнов, они могут обмениваться информацией (например, цепочкой блоков, IP-адресами других узлов и т. д.). Я понимаю, как эта одноранговая архитектура является надежной для узлов, соединяющих /выходящих /сбойных и не полагающихся на какой-либо центральный орган.

Мой вопрос: когда я запускаю свой клиент, он не имеет информации о IP-адресах других узлов, так как он знает, кто /где подключиться к изначально ? Как один «загрузочный ремень» представляет собой одноранговую сеть?

35 голосов | спросил Ciaran 20 72011vEurope/Moscow11bEurope/MoscowSun, 20 Nov 2011 20:41:55 +0400 2011, 20:41:55

3 ответа


31

Клиент Bitcoin имеет несколько источников, которые он использует для поиска сети при первом запуске. В порядке важности:

1) Основной механизм, если клиент когда-либо выполнял работу на этом компьютере, и его база данных не повреждена, - это посмотреть на свою базу данных. Он отслеживает каждый узел, который он видел в сети, как давно он видел его и его IP-адрес.

2) Клиент может использовать DNS для поиска списка узлов, подключенных к сети. Одним из таких семян является bitseed.xf2.org. Клиент разрешит это и получит список узлов биткойнов.

3) Клиент имеет список полупостоянных узлов, скомпилированных в него.

4) Клиент может подключиться к известной сети IRC, irc.lfnet.org и найти другие узлы таким образом. (Этот метод был удален с версии 0.8.2)

5) Он принимает IP-адреса из командной строки (-addnode).

ответил David Schwartz 20 72011vEurope/Moscow11bEurope/MoscowSun, 20 Nov 2011 23:48:18 +0400 2011, 23:48:18
5

Существует несколько методов начальной загрузки. Я знаю два:

  1. К конкретному каналу IRC присоединяется клиент. В этом канале подключенные клиенты часто транслируют свой IP-адрес, чтобы другие могли их найти.
  2. В клиентском двоичном коде есть список жестко закодированных IP-адресов, которые клиент будет подключать к начальной загрузке своей сети.
ответил ripper234 20 72011vEurope/Moscow11bEurope/MoscowSun, 20 Nov 2011 21:13:55 +0400 2011, 21:13:55
3

Способ подключения зависит от клиента.

Bitcoin Core потратит до 11 секунд, пытаясь подключиться к одноранговому узлу в своей базе данных. Если это не сработает, он будет запрашивать DNS-сервер (известный как семя DNS) для получения адресов для одноранговых узлов, которые, по мнению семян, являются активными. Если это не сработает в течение 60 секунд, оно отступит к одному из его жестко заданных адресов. После подключения к удаленному одноранговому узлу локальный узел будет запрашивать больше адресов от этого удаленного однорангового узла.

Другие клиенты могут работать по-другому: например, BitcoinJ по умолчанию перескакивает напрямую на запросы DNS-семян. Если это не сработает, оно будет возвращаться к жестко запрограммированным адресам.

Более подробную информацию можно найти в разделе Развернутое обнаружение разработчика Bitcoin.org Руководство .

ответил David A. Harding 10 WedEurope/Moscow2014-12-10T17:53:20+03:00Europe/Moscow12bEurope/MoscowWed, 10 Dec 2014 17:53:20 +0300 2014, 17:53:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132