Как биткойн-клиенты находят друг друга?

Какие протоколы или алгоритмы используют биткойн-клиенты для поиска своих пиров? Я узнал, что клиенты BitTorrent могут полагаться на центральные компьютеры, называемые трекерами. Нужны ли биткойн-клиентам какие-либо центральные серверы или узлы для работы?

Ответы (2)

Биткойн-клиенты используют несколько методов для обнаружения других клиентов. Основной метод — это список узлов из предыдущего подключения к сети. Работает очень хорошо для всего, кроме вашего первого подключения или подключения после очень длительного периода отключения.

В случае, если у вас нет предыдущих известных IP-адресов или они непригодны для использования, основным резервным методом является использование начальных значений DNS. Несколько имен хостов (таких как dnsseed.bluematt.me ) поддерживаются, которые разрешаются в список IP-адресов, о которых известно, что на них запущены узлы. Если это не удастся, у клиента будет список IP-адресов, которые, как считается, указывают на жестко закодированные в нем стабильные узлы.

Один метод, который использовался раньше, но с тех пор от него отказались, заключался в том, чтобы клиенты находили друг друга с помощью IRC-сервера. Это работало аналогично трекеру BitTorrent.

Как только вы подключитесь к сети, вы начнете получать списки IP-адресов и портов известных клиентов.

Когда клиенту Bitcoin.org необходимо обнаружить одноранговые узлы, начальные значения DNS используются по умолчанию для клиента версии 0.6 и выше. IRC был по умолчанию для более ранних версий.
когда вы, ребята, упоминаете IRC, какая именно сеть IRC?
@knocte Раньше он использовал irc.lfnet.org, присоединяясь к случайному каналу между #bitcoin00и #bitcoin99.
так что, если lfnet.org выйдет из строя, это будет единственной точкой отказа? что теперь, кто диктует, какие DNS-имена искать?
@knocte: это не было бы единой точкой отказа, потому что у клиента было несколько других методов начальной загрузки, включая несколько жестко запрограммированных «хорошо известных» серверов. Любой, кто хочет, может настроить свой клиент на использование любых DNS-имен, которые они хотят. Официальный клиент использует список, поддерживаемый разработчиками. Я считаю, что разработчики попросили добровольцев запустить семена DNS.
Забавно, как энтузиаст ripple придумал этот вопрос (я), погуглил и нашел ответ от вас :-).. не по теме, но должен был поделиться!
@HeddevanderHeide Я думаю, что большинство энтузиастов Ripple также являются энтузиастами биткойнов.
Ok. Итак, биткойны уязвимы для отравления DNS в Китае? Хорошо знать.
@Taiko Не совсем, потому что DNS — это только один из используемых методов. Для обеспечения безопасности биткойн-серверу требуется только одно подключение к честному узлу.
Проблема в том. Отравление DNS также предотвратит подключение к жестко запрограммированным IP-адресам. Таким образом, первое подключение не может работать из-за того, что GFW Китая блокирует его. @Дэйвид
Отравление @Taiko DNS не влияет на соединения с жестко закодированными IP-адресами. Вы правы в том, что организация, контролирующая ваш доступ в Интернет, может помешать вам использовать биткойн, как она может помешать вам использовать любой другой интернет-сервис. (Однако биткойн особенно устойчив, потому что всего одна утечка спасает всех.)
Я хотел бы рассмотреть ситуацию, когда жестко закодированный «известный» клиент также дает сбой. Если DNS выйдет из строя и жестко закодированный известный клиент выйдет из строя, будет ли возможно случайным образом угадать IP-адреса на этом порту и попытаться отправить сигналы на случайные IP-адреса, пока вы не найдете биткойн-узел, который отвечает?

Есть несколько методов, которые может использовать клиент . Однако, в отличие от очень хорошего ответа Дэвида, я расскажу о них в хронологическом порядке:

  • Первый способ, с помощью которого клиенты узнают о других клиентах, — это подключение к другому клиенту и выполнение команды «getaddr». Стандартный клиент всегда имел такую ​​возможность. Однако здесь есть проблема — как узнать о клиенте №1?
  • Раздача IRC. Это то, что было с первой версии. Его было просто реализовать, но в конечном итоге он не масштабировался. Первая версия подключена к freenode. Затем биткойн-узлы начали получать k-lined . Более поздние версии подключены к lfnet. Затем lfnet отключился, и поддержка IRC была полностью удалена. К этому моменту уже существовал DNS, так что все было в порядке.
  • IP-адреса известных узлов. Это было в клиенте с июня 2010 года. Все еще в биткойн-клиенте, хотя точные IP-адреса время от времени меняются.
  • Заполнение DNS. Это было в клиенте с марта 2011 года. Его легче масштабировать, потому что DNS уже создан для обработки десятков тысяч подключений.