Как работает поиск биткойн-пиров после подключения к жестко закодированным узлам?

Я работаю с исходным кодом биткойнов и пытаюсь понять точную работу механизма обнаружения пиров в testnet Режим, для которого я сделал следующие изменения:

  1. Отключил начальное обнаружение DNS, чтобы принудительно использовать биткойн для подключения к жестко закодированным узлам.

  2. Изменили жестко закодированные узлы по умолчанию на мои известные 4 адреса, скажем, A,B,C и D, которые, я гарантирую, всегда онлайн.

Теперь, когда я запускаю клиент bitcoind (назовем его E), он подключается к одному из A,B,C или D, используя ту же модифицированную версию bitcoind. Он получает адреса одноранговых узлов от жестко закодированного узла, к которому он сначала подключается путем обмена getaddr а также addr сообщения, но я не уверен, как это происходит после этого. У меня есть следующие запросы:

а. Если узел возвращается к соединению с жестко закодированными узлами, должен ли он подключаться только к одному из жестко закодированных узлов, как это происходит в моем случае, или он может подключаться к нескольким узлам с жестким кодом?

б. После получения адреса партнера через addr сообщение, когда узел E начнет подключаться к этим узлам?

Пожалуйста, укажите мне соответствующие коды файлов / разделов, если это возможно. Спасибо

1 ответ

О. Нет "жестко закодированных узлов", есть только DNS-узлы узлов, когда вы запускаете их через DNS-запрос, вы получаете новый узел каждый запрос.

Б. Если узел не подключен к своей максимальной емкости узлов (это 8 активных узлов и 125 неактивных узлов), он попытается подключиться к новым узлам, как только он получит addr сообщение
Вы можете найти их здесь:

livenet: https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L102
testnet: https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L181

Другие вопросы по тегам