Configuración de Ethereum PoA de demostración

Soy nuevo en ethereum/parity y trato de seguir esta demostración de configuración de PoA como parte de un proyecto más grande.

Lo hice localmente en mi computadora portátil, accediendo a los recursos a través de localhost. Ahora estoy tratando de configurar dos nodos separados en dos máquinas virtuales azules y hacer que interactúen a través de Internet.

Ahora mi primera pregunta es: ¿es sensato hacer esto en primer lugar? ¿Quizás no entendí la arquitectura y estos nodos no deberían estar expuestos a Internet?

Si esto funciona, tengo el siguiente problema: incluso un solo nodo no se inicia correctamente.
Uso el contenedor docker ethcore/parity:stable , este es mi node0.tomlarchivo

[parity]
chain = "demo-spec.json"
base_path = "/tmp/parity0"
[network]
port = 30300
[rpc]
interface = "172.17.0.2"
hosts = ["172.17.0.2", "azure-vm-public-ip", "10.0.0.4"]
port = 8540
apis = ["web3", "eth", "net", "personal", "parity", "parity_set", "traces", "rpc", "parity_accounts"]
[ui]
interface = "172.17.0.2"
port = 8180
[dapps]
cors = "all"
hosts = ["azure-vm-public-ip", "10.0.0.4", "172.17.0.2"]
interface = "172.17.0.2"
port = 8080

Agregué hostsy interfaces al archivo original de la demostración (enlace arriba). Aquí azure-vm-public-ipestá la IP que uso para conectarme a la máquina virtual desde mi computadora portátil. 10.0.0.4es la IP local de vm desde $ ifconfigy 172.17.0.2es la IP que se ve desde dentro del contenedor docker si ejecuta $ifconfig.

demo-spec.jsones exactamente igual que en la demo.

Ejecuto docker a través de este comando, exponiendo todos los puertos:

sudo docker run -ti --rm -p 30300:30300 -p 8080:8080 -p 8180:8180 -p 8540:8540 -v ~/demo-spec.json:/build/demo-spec.json -v ~/node0.toml:/build/node0.toml 65de5e38cf4b --config node0.toml

después de que se devuelve la URL del nodo público de inicio: enode://...@172.17.0.2:30300que tiene la IP de la ventana acoplable, no la IP de la máquina y si intento conectarme a http://azure-public-ip:8180/ desde la computadora portátil obtengo

URL BLOCKED
YOU ARE NOT ALLOWED TO ACCESS TRUSTED SIGNER USING THIS URL.
Use: http://172.17.0.2:8180

y Blocked connection to Signer API from untrusted originestá escrito en el registro de paridad.

Si realizo una segunda conexión a la máquina virtual y ejecuto $ curl http://172.17.0.2:8180un html adecuado, se $ curl http://localhost:8180devuelve el mismo error.

Si cambio la interfaz a 10.0.0.4o azure-public-ip, la paridad no comienza con el siguiente error:RPC io error: Cannot assign requested address (os error 99)

Parece que hay una configuración incorrecta de la red, pero no puedo averiguar dónde está. Por favor avise.

Respuestas (2)

Debe asignar la IP externa/pública de su VM a su interfaz interna.

Puede usar curl ifconfig.coo curl -4 http://l2.io/ippara obtener la IP externa de su máquina y configurarla para su sesiónsudo ifconfig eth0:0 $(curl ifconfig.co) up

asegúrese de que usted no tiene --ui-no-validationopción. Aquí hay una referencia https://github.com/paritytech/parity/issues/5522

Por lo que puedo decir, estás usando dos espacios de ip internos. No hablarán entre ellos a menos que estén en la misma red. Debe vincular la IP pública o reemplazar la interfaz con la interfaz star.star.star.star que se vinculará a todas las IP en el host.

Puede probar una vez que reinicie probando telnet al puerto. Además, donde tiene azure-public-ip, use la ip real frente al nombre de host.

¿Podría explicar con más detalles cómo puedo vincular una IP pública?