Skip to content
Snippets Groups Projects
Forked from docker / bfanodo
23 commits behind the upstream repository.

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.