Спасибо. Кое что стало понятным, но не все. А именно: на какой адрес отправляется транзакция?
Если мы говорим о Bitcoin Core - то клиент при старте соединяется с несколькими другими
клиентами по сокетному соединению и открывает 8333 порт на прием входящих соединений.
Транзакцию он передает вот этим своим "соседям по сети" (их называют "пирами" от англ. "peer")
Те в свою очередь передают своим соседям и так далее транзакция расползается по всей сети.
То есть, программа на моем компе должна соединиться с другой программой
по сети, для этого ей нужен адрес второй программы.
Списки адресов ноды передают друг другу и хранят в базе в файле peers.dat
Тут вопрос - если мы поставили клиент с нуля - то как он найдет кого-то, если у него
эта база пустая? Но в целом, этот вопрос не относится к биткойну как таковому - это
достаточно типичная задача для пиринговых сетей. В биткойне она как-то решается
(причем раньше решалась возможно иначе, а в будущем тоже ничто не мешает менять
алгоритм нахождения). Смотрите сорцы - там все есть. Что пересказывать-то?
Что используется в качестве адресов, ip? ip не статичны...
А что еще использовать? Именно IP. Если не статичны - ну и хрен с ним. Не
смогли соединиться с одной нодой - берем из базы другой адрес, пока кого-нибудь
живого не найдем.
И где хранятся все адреса к которым моя программа подключается?
Те к которым подключена - в памяти хранятся. В окне "Помощь" --> "Окно отладки" --> "Участники"
можно посмотреть к кому вы подсоединены прям щас. А весь список к кому можно
подцепиться хранится в базе в файле peers.dat