Cómo convertir su Raspberry Pi 4 en un nodo simplemente con la tarjeta MicroSD
TL;DR: Actualice su Raspberry Pi 4, a través de un cable de ethernet, conecte el disco SSD y encienda el dispositivo para convertir la Raspberry Pi en un nodo Ethereum completo ejecutando la capa de ejecución, o la capa de consenso (cadena de baliza / validador)
Más información acerca de las actualizaciones de Ethereum
Primero, veamos un poco de contexto. Como saben, nos hemos encontrado con algunos problemas de memoria [1] con la imagen de Raspberry Pi 4 ya que Raspbian OS todavía está en 32 bits [2] (al menos a nivel de usuario). Si bien preferimos seguir con el sistema operativo oficial, llegamos a la conclusión de que, para resolver estos problemas, debemos migrar a un sistema operativo nativo de 64 bits
Además, los clientes de consenso no admiten binarios de 32 bits, por lo que el uso de Raspbian excluiría a Raspberry Pi 4 de ejecutar un nodo de capa de consenso (y la posibilidad de apuesta).
De modo que, tras varias pruebas, ahora lanzamos 2 imágenes diferentes basadas en Ubuntu 20.04 de 64bits las ediciones de [3]: capa de ejecución y de capa de consenso.
Básicamente, ambas son la misma imagen e incluyen las mismas características que las imágenes basadas en Raspbian. Pero están configuradas para ejecutar el programa de capa de ejecución o programa de capa de consenso por defecto.
Las imágenes se encargan de todos los pasos necesarios, desde la configuración del entorno y el formato del disco SSD hasta la instalación y ejecución del software Ethereum, así como del inicio de la sincronización de la cadena de bloques.
Características principales
- Basado en Ubuntu 20.04 64bit
- Fragmentación y formato automático del disco USB
- Añade memoria de intercambio (módulo del núcleo ZRAM + un archivo de intercambio) basada en el trabajo Armbian [7]
- Cambia el nombre de host a uno parecido a «ethnode-e2a3e6fe» basado en hash MAC
- Ejecuta el software como un servicio de sistema y comienza a sincronizar la cadena de bloques
- Incluye un repositorio APT para instalar y actualizar el software Ethereum
- Incluye un panel de control basado en Grafana / Prometeo
Software incluido
Ambas imágenes incluyen los mismos paquetes, la única diferencia entre ellas es que la versión de ejecución ejecuta Geth por defecto y la versión de consenso ejecuta la cadena de baliza Prysn por defecto.
Clientes de ejecución
- Geth [8]: 1.9.13 (binario oficial)
- Parity [9]: 2.7.2 (binario oficial)
- Nethermind [10]: 1.8.28 (compilación cruzada)
- Hyperledger Besu [11]: 1.4.4 (compilado)
Clientes de consenso
Entorno de desarrollo Ethereum
- Swarm [14]: 0.5.7 (oficial binario)
- Raiden Network [15]: 0.200.0~rc1 (oficial binanrio)
- IPFS [16]: 0.5.0 (oficial binario)
- Statusd [17]: 0.52.3 (compilado)
- Vipnode [18]: 2.3.3 (binario oficial)
Guía de instalación y uso
Hardware y configuración recomendados
- Raspberry 4 (modelo B) - 4GB
- Tarjeta MicroSD (16 GB clase 10 mínimo)
- Disco SSD USB 3.0 (ver sección de almacenamiento)
- Alimentación eléctrica
- Cable de Ethernet
- Redirección del puerto 30303 (capa de ejecución) y redirección de puerto 13000 (capa de consenso) [4]
- Una caja con disipador y ventilador (opcional pero encarecidamente recomendado)
- Teclado USB, pantalla y cable HDMI (microHDMI) (opcional)
Almacenamiento
Necesitará un disco SSD para ejecutar los clientes de Ethereum (sin una unidad SSD no hay ninguna posibilidad de sincronizar la cadena de bloques de Ethereum). Hay 2 opciones:
- Utilice un disco SSD portátil USB como el Samsung T5 Portable SSD.
- Use una caja de disco duro externo USB 3.0 con un disco SSD. En nuestro caso usamos un Inateck 2.5 Hard Drive Enclosure FE2011. Asegúrese de comprar una caja con un chip compatible con UAS, en particular, uno de estos: JMicron (JMS567 o JMS578) o ASMedia (ASM1153E).
En ambos casos, evite obtener discos SSD de baja calidad ya que es un componente clave del nodo y puede afectar drásticamente al rendimiento (y tiempos de sincronización).
Tenga en cuenta que necesita conectar el disco a un puerto USB 3.0 (azul)
Descarga e instalación de las imágenes
1. Descargue las imágenes de ejecución y capa de consenso
Descargue la imagen de la capa de ejecución(opens in a new tab)sha256 7fa9370d13857dd6abcc8fde637c7a9a7e3a66b307d5c28b0c0d29a09c73c55c
Descargue la imagen de la capa de consenso(opens in a new tab)sha256 74c0c15b708720e5ae5cac324f1afded6316537fb17166109326755232cd316e
2. Actualice la imagen
Inserte la tarjeta microSD en su ordenador de sobremesa / portátil y descargue el archivo (por ejemplo, la capa de ejecución):
wget https://ethraspbian.com/downloads/ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip
Nota: Si no se siente cómodo con la línea de comandos o si está ejecutando Windows, puede usar Etcher(opens in a new tab)
Abra un terminal y compruebe el nombre del dispositivo MicroSD en ejecución:
sudo fdisk -l
Debería ver un dispositivo llamado mmcblk0 o sdd. Descomprima y actualice la imagen:
unzip ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zipsudo dd bs=1M if=ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img of=/dev/mmcblk0 && sync
3. Inserte la MicroSD en la Raspberry Pi 4. Conecte un cable Ethernet y el disco SSD vía USB (asegúrese de que está usando un puerto azul).
4. Encienda el dispositivo
El sistema operativo Ubuntu arrancará en menos de un minuto, pero tendrá que esperar aproximadamente 10 minutos para permitir que el script realice las tareas necesarias para convertir el dispositivo en un nodo de Ethereum y reiniciar el Raspberry.
Dependiendo de la imagen que use, se ejecutará:
- Cliente de ejecución: Geth como cliente predeterminado de sincronización de la cadena de bloques
- Cliente de consenso: Prysm como cliente predeterminado de sincronización de la cadena de baliza (red de prueba Goerli)
5. Inicio de sesión
Puede iniciar sesión a través de SSH o usando la consola (si tiene una pantalla y un teclado conectados)
User: ethereumPassword: ethereum
La primera vez que inicie sesión, se le pedirá que cambie la contraseña, por lo tanto, tendrá que iniciar sesión dos veces.
6. Abra el puerto 30303 para Geth y 13000 si está ejecutando la cadena de baliza de Prysm. Si no sabe cómo hacerlo, teclee en Google «reenvío de puertos» seguido de su modelo de router.
7. Obtenga la salida de la consola
Puede ver lo que está pasando en segundo plano escribiendo:
sudo tail -f /var/log/syslog
Enhorabuena. Ahora está ejecutando un nodo completo en su Raspberry Pi 4.
Sincronización de la cadena de bloques
Seguidamente tendrá que esperar a que la cadena de bloques se sincronice por completo. En el caso de la capa de ejecución, llevará varios días en función de factores concretos, pero puede esperar aproximadamente 5-7 días.
Si está ejecutando la capa de consenso en la red de prueba Goerli la sincronización con la cadena de la baliza puede llevar entre 1 y 2 días. Recuerde que necesitará configurar el validador más adelante para poder iniciar el proceso de apuesta. Cómo ejecutar el validador de la capa de consenso
Paneles de control
En esta primera versión, hemos incluido 3 paneles de control basados en Prometheus [5] / Grafana [6] para controlar el nodo y los datos de los clientes (Geth y Besu). Puede acceder a través de su navegador web:
URL: http://your_raspberrypi_IP:3000User: adminPassword: ethereum
Cambiar de cliente
Todos los clientes se ejecutan como un servicio de sistema. Esto es importante, porque si surge un problema, el sistema iniciará el proceso automáticamente.
Las cadenas de baliza Geth y Prysm se ejecutan por defecto (en función de lo que esté sincronizando, de la capa de ejecución o de consenso) por lo tanto, si quiere pasar a otros clientes (de Geth a Nethermind, por ejemplo), tendrá que parar y desactivar primero Geth y activar e iniciar el otro cliente:
sudo systemctl stop geth && sudo systemctl disable geth
Comandos para activar e iniciar cada cliente de ejecución:
sudo systemctl enable besu && sudo systemctl start besusudo systemctl enable nethermind && sudo systemctl start nethermindsudo systemctl enable parity && sudo systemctl start parity
Clientes de consenso:
sudo systemctl stop prysm-beacon && sudo systemctl disable prysm-beaconsudo systemctl start lighthouse && sudo systemctl enable lighthouse
Cambiar parámetros
Los archivos de configuración de los clientes están ubicados en el directorio /etc/ethereum/. Puede editar estos archivos y reiniciar el servicio systemd para guardar cambios. La única excepción es Nethermind que, además, tiene un archivo de configuración de Mainnet ubicado aquí:
/etc/nethermind/configs/mainnet.cfg
Los datos de los clientes de la cadena de bloques se almacenan en la cuenta principal de Ethereum de la siguiente manera (no se olvide de incluir el punto antes del nombre del directorio):
Capa de ejecución
/home/ethereum/.geth/home/ethereum/.parity/home/ethereum/.besu/home/ethereum/.nethermind
Capa de consenso
/home/ethereum/.eth2/home/ethereum/.eth2validators/home/ethereum/.lighthouse
Nethermind y Hyperledger Besu
Estos 2 excelentes clientes de ejecución han terminando por ser buenas alternativas a Geth y Parity. Cuanta más diversidad haya en la red, mejor, probándolos contribuye a mejorar la salud de la red.
Ambos necesitan más pruebas, así que experimente a sus anchas con ellos e informe de su opinión.
Cómo ejecutar el validador de consenso (apuestas)
Una vez que la cadena de baliza de la red de pruebas Goerli está sincronizada, puede ejecutar un validador en el mismo dispositivo. Necesitará seguir estos pasos de participación(opens in a new tab).
La primera vez, necesita crear manualmente una cuenta ejecutando el binario «validador» y configurando una contraseña. Una vez que haya completado este paso, puede agregar la contraseña a /etc/ethereum/prysm-validator.conf
e iniciar el validador como un servicio systemd.
Apreciamos sus comentarios
Hemos puesto mucho trabajo en la configuración del Raspberry Pi 4 como un nodo completo de Ethereum ya que sabemos que la base de usuario masiva de este dispositivo puede tener un impacto muy positivo en la red.
Por favor, tenga en cuenta que esta es la primera imagen basada en Ubuntu 20.04 por lo que puede que haya algunos errores. Si es así, abra un problema en GitHub(opens in a new tab) o contáctenos en Twitter(opens in a new tab).
Referencias
- geth se bloquea repetidamente con SIGSEGV(opens in a new tab)
- https://github.com/diglos/ethereumonarm(opens in a new tab)
- https://ubuntu.com/download/raspberry-pi(opens in a new tab)
- https://wikipedia.org/wiki/Port_forwarding(opens in a new tab)
- https://prometheus.io(opens in a new tab)
- https://grafana.com(opens in a new tab)
- https://forum.armbian.com/topic/5565-zram-vs-swap/(opens in a new tab)
- https://geth.ethereum.org(opens in a new tab)
- https://github.com/openethereum/openethereum(opens in a new tab) * Tenga en cuenta que OpenEthereum ha quedado obsoleto(opens in a new tab) y no tiene mantenimiento. Úselo con precaución y, preferiblemente, cambie a otra implementación de cliente.
- https://nethermind.io(opens in a new tab)
- https://www.hyperledger.org/projects/besu(opens in a new tab)
- https://github.com/prysmaticlabs/prysm(opens in a new tab)
- https://lighthouse.sigmaprime.io(opens in a new tab)
- https://ethersphere.github.io/swarm-home(opens in a new tab)
- https://raiden.network(opens in a new tab)
- https://ipfs.io(opens in a new tab)
- https://status.im(opens in a new tab)
- https://vipnode.org(opens in a new tab)
Última edición: @MGETH(opens in a new tab), Invalid DateTime