Skip to content
Snippets Groups Projects
README.md 3.9 KiB
Newer Older
Robert Martin-Legene's avatar
Robert Martin-Legene committed
# bfanodo

Robert Martin-Legene's avatar
Robert Martin-Legene committed
## Un nodo transaccional para BFA.

Robert Martin-Legene's avatar
Robert Martin-Legene committed
### Caracteristicas

Daniel Franca's avatar
Daniel Franca committed
El **bfanodo** es un container/Docker se puede descargar 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 deseas brindar este servicio a la red, se puede usar *ipfilter* o, 
directamente no publicar el puerto 8545 (anclado únicamente a 127.0.0.1, 
igual que puerto 8546). Para hacer eso, hay que cambiar los parametros
`-p` en `start.sh`.

Como se puede apreciar en el ejemplo aquí abajo, los puertos 30303/tcp y 8545/tcp estan abiertos al
Robert Martin-Legene's avatar
Robert Martin-Legene committed
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`,
Daniel Franca's avatar
Daniel Franca committed
como se puede ver aqui: (NOTA DE FRANCA: ESTO NO LO ENTIENDO)
Robert Martin-Legene's avatar
Robert Martin-Legene committed
```
Robert Martin-Legene's avatar
Robert Martin-Legene committed
$ docker run --rm -it --link bfanodo alpine env | grep BFANODO_PORT | sort
Robert Martin-Legene's avatar
Robert Martin-Legene committed
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
```
Daniel Franca's avatar
Daniel Franca committed
Los puertos de los otros dockers están disponibles, sin usar
`--link` . Pero no van a estar publicados en las variables del entorno.
Robert Martin-Legene's avatar
Robert Martin-Legene committed
```
Robert Martin-Legene's avatar
Robert Martin-Legene committed
$ docker run --rm alpine sh -c "date | nc 172.17.0.2 8545" ; echo
Robert Martin-Legene's avatar
Robert Martin-Legene committed
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Connection: close

400 Bad Request
```
(puerto abierto)

### Cuentas

Daniel Franca's avatar
Daniel Franca committed
Una leccion aprendida durante el primer año de BFA es que el `geth`
normalmente no necesita una cuenta asociada (esto obviamente es distinto si
se utiliza como nodo sellador).
Daniel Franca's avatar
Daniel Franca committed
Las cuentas deben estar asociadas a las applicaciones que se conectan al
nodo. Esto hace que el sistema sea más seguro, y que  **cada applicacion necesite su
Robert Martin-Legene's avatar
Robert Martin-Legene committed
propia cuenta**.

Daniel Franca's avatar
Daniel Franca committed
Si no sos miembro del grupo `docker` (en `/etc/group` ) deberás hacer todo como `root`
Daniel Franca's avatar
Daniel Franca committed
Así, se creará un directorio en `~/dockers/volumes/bfanodo,home,bfa,bfa,network,node,geth` . Si tenés cuentas/llaves van allí. Toda la blockchain tambien se puede ver en ese mismo lugar, para que no hay que bajar toda la blockchain de vuelta al actualizar el nodo. (NOTA DE FRANCA: NO ENTIENDO ESTA ULTIMA PARTE)
Robert Martin-Legene's avatar
Robert Martin-Legene committed
### Instalando Docker

En [https://docs.docker.com/install/] hay instrucciones para instalar Docker para varios
sistemas (CentOS, Debian, Fedora, Ubuntu).
Daniel Franca's avatar
Daniel Franca committed
Una vez instalado, podés 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 está en https://docs.docker.com/install/linux/linux-postinstall/#your-kernel-does-not-support-cgroup-swap-limit-capabilities
Robert Martin-Legene's avatar
Robert Martin-Legene committed
Normalmente es suficiente (en Debian) con:
Robert Martin-Legene's avatar
Robert Martin-Legene committed
```
Robert Martin-Legene's avatar
Robert Martin-Legene committed
$ 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
Robert Martin-Legene's avatar
Robert Martin-Legene committed
```

### Registros / logs

Daniel Franca's avatar
Daniel Franca committed
Estos comandos pueden brindar mas informacion sobre tu bfanodo (y hasta darte un shell):
Robert Martin-Legene's avatar
Robert Martin-Legene committed
```
Robert Martin-Legene's avatar
Robert Martin-Legene committed
$ docker stats bfanodo
$ docker logs bfanodo
$ docker exec bfanodo bfalog.sh
$ docker exec bfanodo localstate.pl
$ docker exec -it bfanodo bash
Robert Martin-Legene's avatar
Robert Martin-Legene committed
```
Daniel Franca's avatar
Daniel Franca committed
Para crear el docker se utilizó el script `build.sh`. Por favor, no lo uses si no sabés como funciona todo.