Биткойн-связь с нестандартными портами

Я пишу веб-приложение Биткойн, которое должно быть развернуто на внешнем сервере, над которым я не контролирую. У меня, вероятно, не будет доступа к стандартному биткойн-порту (8333). Вызовет ли это проблему при подключении к стандартным биткойн-клиентам или они смогут работать с нестандартным номером порта? Существуют ли какие-либо приложения, связанные с биткойнами, которые также используют другие порты для связи (например, пул или тому подобное)?

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

Ответы (3)

Если вы устанавливаете только исходящие соединения, не имеет значения, какие порты вы используете. Ваш клиент сможет полноценно участвовать в сети без каких-либо проблем.

Итак, если мое приложение может установить соединение с другим клиентом, заявив, что мой адрес имеет порт: 80, оно получит ответ на порт: 80?
Когда вы подключаетесь к клиенту, вы будете получать ответы о подключении, которое вы только что установили для этого клиента. Сеть Биткойн использует постоянные TCP-соединения, которые остаются активными до тех пор, пока оба узла продолжают работать.
Кстати, я думаю, вы использовали ненужное "и". Не могу отредактировать свой пост, так как мне нужно изменить как минимум 6 символов;).
Спасибо. Я изменил структуру этого предложения после его написания и не завершил изменение.

Узлы в сети, которые не работают на портах по умолчанию (8333 для основной сети, 18333 для тестовой сети), будут избегаться эталонным клиентом, чтобы не вызывать сбоев в работе других служб. В противном случае, если кто-то объявит поддельный узел, работающий на порту другого приложения, другие узлы в сети могут вызвать атаку типа «отказ в обслуживании», поскольку они безуспешно пытаются подключиться к нему.

Фрагмент кода из клиента Bitcoin Core, показывающий, что узлы будут игнорировать нестандартные порты, если только они не очень отчаянно ищут кого-то, к кому они могут подключиться:

// do not allow non-default ports, unless after 50 invalid addresses selected already
if (addr.GetPort() != Params().GetDefaultPort() && nTries < 50)
continue;

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

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

Помните, что -addnode игнорирует параметр -port

Например, и node1, и node2 имеют -port=14444.

узел1> добавить узел 2 биткойн-кли добавить узел2

2018-08-11 02:07:04 Ошибка подключения () к узлу 2: 18444 после выбора (): Отказано в соединении (111)

Исправление состоит в том, чтобы включить порт в имя хоста node1> bitcoin-cli addnode node2:14444 добавить