Как работает поиск биткойн-пиров после подключения к жестко закодированным узлам?
Я работаю с исходным кодом биткойнов и пытаюсь понять точную работу механизма обнаружения пиров в testnet
Режим, для которого я сделал следующие изменения:
Отключил начальное обнаружение DNS, чтобы принудительно использовать биткойн для подключения к жестко закодированным узлам.
Изменили жестко закодированные узлы по умолчанию на мои известные 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