Comunicación Bitcoin con puertos no estándar

Estoy escribiendo una aplicación web de Bitcoin que se implementará en un servidor externo sobre el que no tengo control. Probablemente no tendré acceso al puerto estándar de Bitcoin (8333). ¿Causará esto un problema al conectarse a clientes estándar de Bitcoin, o pueden manejar la comunicación con un número de puerto no estándar? ¿Hay alguna aplicación relacionada con Bitcoin que también use otros puertos para comunicarse (como un grupo o similar)?

¿De qué forma(s) tiene que interactuar la aplicación web con la red Bitcoin? ¿El cliente de Bitcoin se ejecutará en la máquina que ejecuta la aplicación web?
Tengo la intención de escribir mi propio cliente de Bitcoin para la aplicación web, así que espero poder interactuar completamente con la red de Bitcoin. Alternativamente, es posible que desee ejecutar solo un grupo en la aplicación web. Por lo tanto, no hay problema con la personalización del cliente siempre que la red también pueda manejar eso.

Respuestas (3)

Si solo realiza conexiones salientes, no importará qué puertos use. Su cliente podrá participar plenamente en la red sin ningún problema.

Entonces, si mi aplicación puede iniciar una conexión con otro cliente que indique que mi dirección tiene el puerto: 80, ¿recibirá una respuesta en el puerto: 80?
Cuando se conecte a un cliente, recibirá respuestas sobre la conexión que acaba de realizar con ese cliente. La red Bitcoin utiliza conexiones TCP persistentes que permanecen activas mientras ambos nodos continúan funcionando.
Por cierto, creo que usaste un "y" innecesario. No puedo editar tu publicación, ya que necesitaría cambiar al menos 6 caracteres;).
Gracias. Cambié la estructura de esa oración después de escribirla y no completé el cambio.

El cliente de referencia evitará los nodos en la red que no se ejecutan en los puertos predeterminados (8333 para la red principal, 18333 para testnet) para no causar interrupciones en otros servicios. De lo contrario, si alguien anuncia un nodo falso que se ejecuta en otro puerto de aplicaciones, otros nodos en la red podrían causar un ataque de denegación de servicio cuando intentan conectarse sin éxito.

Un fragmento de código del cliente Bitcoin Core, que muestra que los nodos ignorarán los puertos no estándar a menos que estén muy desesperados por encontrar a alguien con quien puedan conectarse:

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

Si desea respaldar activamente la red con conexiones entrantes, no debe cambiar la configuración de "puerto" del demonio bitcoin si es posible.

Nunca supe esto. Pero eso es toda una limitación. ¿Eso no hace que bloquear el tráfico de Bitcoin sea mucho más fácil? (si los gobiernos quisieran eso) ¿Y cómo hago para ejecutar múltiples nodos completos dentro de una LAN, detrás de la misma IP? (por ejemplo, en mi edificio de oficinas)
De todos modos, es trivial bloquear el tráfico de Bitcoin, por lo que no es un límite enorme en ningún sentido real. Otras personas pueden crear capas de red que intenten resolver esto, en lugar de ser parte del demonio central. Si tiene varios nodos detrás de una IP externa, solo escuche uno y todos los demás se conectan a él.

Tenga en cuenta que -addnode ignora la configuración del puerto

Por ejemplo, tanto el nodo 1 como el nodo 2 tienen -port=14444

nodo1> bitcoin-cli agregar nodo nodo2 agregar

2018-08-11 02:07:04 connect () al nodo 2: 18444 falló después de select (): conexión rechazada (111)

La solución es incluir el puerto en el nombre de host node1> bitcoin-cli addnode node2:14444 add