Я пишу веб-приложение Биткойн, которое должно быть развернуто на внешнем сервере, над которым я не контролирую. У меня, вероятно, не будет доступа к стандартному биткойн-порту (8333). Вызовет ли это проблему при подключении к стандартным биткойн-клиентам или они смогут работать с нестандартным номером порта? Существуют ли какие-либо приложения, связанные с биткойнами, которые также используют другие порты для связи (например, пул или тому подобное)?
Если вы устанавливаете только исходящие соединения, не имеет значения, какие порты вы используете. Ваш клиент сможет полноценно участвовать в сети без каких-либо проблем.
Узлы в сети, которые не работают на портах по умолчанию (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;
Если вы хотите активно поддерживать сеть с помощью входящих подключений, вам не следует изменять параметр «порт» демона биткойнов, если это вообще возможно.
Помните, что -addnode игнорирует параметр -port
Например, и node1, и node2 имеют -port=14444.
узел1> добавить узел 2 биткойн-кли добавить узел2
2018-08-11 02:07:04 Ошибка подключения () к узлу 2: 18444 после выбора (): Отказано в соединении (111)
Исправление состоит в том, чтобы включить порт в имя хоста node1> bitcoin-cli addnode node2:14444 добавить
Дэвид Шварц
Пиачу