Будет ли в биткойн-сети путь от каждого узла к любому другому узлу?

Будет ли в сети сплетен биткойн путь от каждого узла к любому другому узлу? Конечно, он может иметь разное количество прыжков.

У меня есть частная тестовая сеть, в которой я изменил исходный код. Я получаю такой график

A->B->C 

Таким образом, у нас есть путь от A к C, но не от C к A. Таким образом, когда C добывает блок, информация остается с ним, и он не отправляет сообщения inv . Не уверен, что я ошибаюсь или это ожидаемо?

Редактировать:

Единственное изменение, которое я сделал, это заставить тестовую сеть работать на моем локальном хосте. Удалена проверка IsLocal() из IsRoutable() и добавлены мои собственные жестко заданные начальные значения.

Чтобы уточнить - изменяли ли вы какой-либо код, который мешал бы узлам совместно использовать блоки? Например, если вы добавили код, заставляющий узел никогда не принимать блок от узла с более высоким номером порта, чем у него самого, это приведет к поведению, которое вы видите.
Единственное изменение, которое я сделал, это заставить тестовую сеть работать на моем локальном хосте. Удалена проверка IsLocal() из IsRoutable() и добавлены мои собственные жестко заданные начальные значения.

Ответы (1)

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

Однако это не означает, что каждый узел подключен. Вполне возможно запустить полный узел, который не подключен, как вы, кажется, сделали. В вашем случае кажется, что у C нет пиров, поэтому добытый блок C не достанется никому другому.

Запустите эту команду, чтобы увидеть, какие у него есть одноранговые узлы:

$ bitcoin-cli getpeerinfo

Вы захотите добавить соединения следующим образом:

$ bitcoin-cli addnode <node ip and port> add
getpeerinfo говорит мне, что у него нет никаких соединений. Единственное изменение, которое я сделал, — это получение моих жестко запрограммированных адресов. То есть вы хотите сказать, что это вполне возможно в биткойнах? Я не хочу проверять вручную и явно добавлять узлы. Есть ли способ, с помощью которого я могу автоматически достичь этого однорангового открытия?
Поэтому, если биткойн когда-либо будет подключен к сети, он будет хранить список ранее подключенных пиров и использовать его каждый раз при запуске. Вам нужно сделать это только один раз.