-
Robert Martin-Legene authoredddcbf21f
bfanodo
Un nodo transaccional para BFA.
Caracteristicas
El bfanodo es un container/docker que podes bajar y correr en tu
propia maquina, maquina virtual o datacenter. Se levanta como un nodo
transaccional, sin cuentas, abierto a todo el mundo.
Si no queres brindar este servicio a la red, podes usar ipfilter o
(mas facil) no publicar el puerto 8545 (atalo (bind) a 127.0.0.1
solamente, igual que puerto 8546). Para hacer eso, tenes que cambiar
los parametros -p
en start.sh
.
Como ves en el ejemplo abajo, puerto 30303/tcp y 8545/tcp estan abiertos al mundo (0.0.0.0 = INADDR_ANY) y 8546/tcp esta abierto solamente para conecciones de tu maquina.
$ docker container port bfanodo
30303/tcp -> 0.0.0.0:30303
8545/tcp -> 0.0.0.0:8545
8546/tcp -> 127.0.0.1:8546
Es importante entender que "tu maquina" incluye otros dockers en
la misma maquina, si las has conectado con el parametro --link
,
como se puede ver aqui:
$ docker run --rm -it --link bfanodo alpine env | grep BFANODO_PORT | sort
BFANODO_PORT_30303_TCP_ADDR=172.17.0.2
BFANODO_PORT_30303_TCP_PORT=30303
BFANODO_PORT_30303_TCP_PROTO=tcp
BFANODO_PORT_30303_TCP=tcp://172.17.0.2:30303
BFANODO_PORT_30303_UDP_ADDR=172.17.0.2
BFANODO_PORT_30303_UDP_PORT=30303
BFANODO_PORT_30303_UDP_PROTO=udp
BFANODO_PORT_30303_UDP=udp://172.17.0.2:30303
BFANODO_PORT_8545_TCP_ADDR=172.17.0.2
BFANODO_PORT_8545_TCP_PORT=8545
BFANODO_PORT_8545_TCP_PROTO=tcp
BFANODO_PORT_8545_TCP=tcp://172.17.0.2:8545
BFANODO_PORT_8546_TCP_ADDR=172.17.0.2
BFANODO_PORT_8546_TCP_PORT=8546
BFANODO_PORT_8546_TCP_PROTO=tcp
BFANODO_PORT_8546_TCP=tcp://172.17.0.2:8546
BFANODO_PORT=tcp://172.17.0.2:8545
Los puertos estan disponibles de los otros dockers tambien sin usar
--link
pero no van a estar publicados en variables del entorno.
$ docker run --rm alpine sh -c "date | nc 172.17.0.2 8545" ; echo
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Connection: close
400 Bad Request
(puerto abierto)
Cuentas
Una leccion aprendido durante el primer año de BFA es, que el geth
normalmente no necesita una cuenta asociado (eso obviamente es distinto si
lo usas como nodo sellador).
Las cuentas deben estar asociados a los applicaciones que se conecta al nodo. Ese hace es sistema mas seguro, y cada applicacion necesita su propia cuenta.
Si no sos miembro del grupo docker
(en /etc/group
) tenes que hacer todo como root
Te va a crear un directorio en ~/dockers/volumes/bfanodo,home,bfa,bfa,network,node,geth
. Si tenes cuentas/llaves van ahi. Toda la blockchain tambien se ve ahi, para que no hay que bajar toda la blockchain de vuelta al actualizar el nodo.
Instalando Docker
En [https://docs.docker.com/install/] hay instrucciones para instalar Docker para varios sistemas (CentOS, Debian, Fedora, Ubuntu).
Una vez instalado, podes correr varios dockers a la vez. Si ves el aviso WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
la solucion posible esta en https://docs.docker.com/install/linux/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities
Normalmente es suficiente (en Debian) con:
$ echo 'GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"' >> /etc/default/grub
$ update-grub
$ reboot
Instalando bfanodo
$ wget https://gitlab.bfa.ar/docker/bfanodo/raw/master/start.sh
$ ./start.sh
Registros / logs
Para ver como esta tu bfanodo, estos comandos pueden brindar mas informacion (y hasta darte un shell):
$ docker stats bfanodo
$ docker logs bfanodo
$ docker exec bfanodo bfalog.sh
$ docker exec bfanodo localstate.pl
$ docker exec -it bfanodo bash
Crear
Para crear el docker uso el script build.sh
. No lo uses si no sabes como funciona todo.