Como transformar o Raspberry Pi 4 em um nó apenas instalando o cartão MicroSD
TL;DR: formate seu Raspberry Pi 4, conecte um cabo de rede e um disco SSD, e ligue o dispositivo. Desta maneira, você terá transformado seu Raspberry Pi 4 em um nó completo do Ethereum, executando a camada de execução, ou a camada de consenso (Beacon Chain/validador)
Aprenda sobre as implementações no Ethereum
Um pouco de contexto primeiro. Como você sabe, tivemos alguns problemas de memória [1] com a imagem do Raspberry Pi 4, já que o Raspbian OS ainda está em 32 bits [2] (pelo menos no nível de usuário). Embora preferíssemos manter o sistema operacional oficial, chegamos à conclusão que, para resolver esses problemas, precisamos migrar para um sistema operacional nativo de 64 bits.
Além disso, os clientes de consenso não suportam binários de 32 bits, então usar o sistema operacional Raspbian impediria que o Raspberry Pi executasse um nó da camada de consenso (e também a possibilidade de fazer staking).
Portanto, após vários testes, estamos lançando 2 imagens diferentes baseadas no Ubuntu 20.04 de 64 bits [3]: edições para a camada de execução e para camada de consenso.
Basicamente, ambos são a mesma imagem e incluem as mesmas funcionalidades das imagens baseadas em Raspbian. Mas elas estão configuradas para executar o “software” da camada de execução ou da camada de consenso por padrão.
As imagens cuidam de todos os passos necessários, desde configurar o ambiente e formatar o disco SSD até instalar e executar o “software” Ethereum, bem como iniciar a sincronização da blockchain.
Principais recursos
- Baseado no Ubuntu 20.04 de 64 bits
- Particionamento e formatação automáticas do disco USB
- Adiciona memória de troca (módulo de “kernel” ZRAM + um arquivo de troca) com base no trabalho do Armbian [7]
- Muda o nome do computador para algo como "ethnode-e2a3e6fe" baseado no hash MAC
- Executa o “software” como um serviço systemd e começa a sincronizar a Blockchain
- Inclui um repositório APT para instalar e atualizar o “software” Ethereum
- Inclui um painel de monitoramento baseado no Grafana/Prometheus
Software incluído
Ambas as imagens incluem os mesmos pacotes, a única diferença entre elas é que, por padrão, a versão de execução executa o Geth e a versão de consenso executa o Prysm Beacon Chain.
Clientes de execução
- Geth [8]: 1.9.13 (binário oficial)
- Parity [9]: 2.7.2 (compilação cruzada)
- Nethermind [10]: 1.8.28 (compilação cruzada)
- Hyperledger Besu [11]: 1.4.4 (compilado)
Clientes de consenso
Estrutura Ethereum
- Swarm [14]: 0.5.7 (binário oficial)
- Raiden Network[15]: 0.200.0~rc1 (binário oficial)
- IPFS [16]: 0.5.0 (binário oficial)
- Statusd [17]: 0.52.3 (compilado)
- Vipnode [18]: 2.3.3 (binário oficial)
Guia de instalação e uso
Configuração e equipamentos recomendados
- Raspberry 4 (modelo B) - 4GB
- Cartão MicroSD (mínimo 16 GB Classe 10)
- Disco SSD 3.0 (ver seção de armazenamento)
- Fonte de alimentação
- Cabo de rede
- Redirecionamento da porta 30303 (camada de execução) e da porta 13000 (camada de consenso) [4]
- Um gabinete com dissipador de calor e ventilador (opcional, mas altamente recomendado)
- Teclado USB, Monitor e cabo HDMI (microHDMI) (opcional)
Armazenamento
Você precisará de um SSD para executar os clientes Ethereum (sem um drive SSD não há absolutamente nenhuma chance de sincronizar a blockchain Ethereum). Existem 2 opções:
- Use um disco SSD portátil USB, como o SSD Portátil Samsung T5.
- Use um disco externo USB 3.0 com um disco SSD. No nosso caso, utilizamos um disco rígido de 2,5 polegadas Inateck FE2011. Certifique-se de comprar um "case" com um chip compatível com UAS, particularmente, um desses: JMicron (JMS567 or JMS578) ou ASMedia (ASM1153E).
Em ambos os casos, evite obter discos SSD de baixa qualidade, pois é um componente fundamental do seu nó e pode afetar drasticamente o desempenho (e o tempo de sincronização).
Tenha em mente que você precisa conectar o disco a uma porta USB 3.0 (azul)
Download e instalação de imagens
1. Baixar as imagens das camadas de execução e de consenso
Baixar imagem da camada de execução(opens in a new tab)sha256 7fa9370d13857dd6abcc8fde637c7a9a7e3a66b307d5c28b0c0d29a09c73c55c
Baixar imagem da camada de consenso(opens in a new tab)sha256 74c0c15b708720e5ae5cac324f1afded6316537fb17166109326755232cd316e
2. Instalar a imagem
Insira o microSD no seu computador e baixe o arquivo (camada de execução, por exemplo):
wget https://ethraspbian.com/downloads/ubuntu-20.04-preinstaladod-server-arm64+raspi-eth1.img.zip
Nota: Se você não estiver cômodo com a linha de comando ou se estiver executando o Windows, você pode usar o Etcher(opens in a new tab)
Abra um terminal e verifique o nome do seu MicroSD em execução:
sudo fdisk -l
Você deve ver um dispositivo chamado mmcblk0 ou sdd. Descompactar e instalar a imagem:
unzip ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip sudo dd bs=1M if=ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img of=/dev/mmcblk0 && sync
3. Insira o MicroSD no Raspberry Pi 4. Conecte um cabo de rede e conecte o disco SSD USB (certifique-se de estar usando uma porta azul).
4. Ligue o dispositivo
O sistema operacional Ubuntu se iniciará em menos de um minuto, mas você precisará esperar aproximadamente 10 minutos para permitir que o script execute as tarefas necessárias para transformar o dispositivo em um nó Ethereum e reiniciar o Raspberry.
Dependendo da imagem, você estará executando:
- Cliente de execução: Geth como o cliente padrão que sincroniza a blockchain
- Cliente de consenso: Prysm como cliente padrão que sincroniza a Beacon Chain (rede de teste Goerli)
5. Iniciar sessão
Você pode fazer login através do SSH ou usando o console (se você tiver um monitor e teclado conectados)
Usuário: ethereumSenha: Ethereum
Você será solicitado a alterar a senha no primeiro login, então você precisará se conectar duas vezes.
6. Abra a porta 30303 para Geth e 13000 se estiver executando a Beacon Chain Prysm. Se você não sabe como fazer isso, faça uma busca no Google de "encaminhamento de porta", seguido pelo seu modelo de roteador.
7. Ver a saída no console
Você pode ver o que está acontecendo em segundo plano digitando:
sudo tail -f /var/log/syslog
Parabéns. Agora você está executando um nó Ethereum completo no seu Raspberry Pi 4.
Sincronizando a Blockchain
Agora você precisa esperar que a blockchain seja sincronizada. No caso da camada de execução, esse processo levará alguns dias dependendo de vários fatores, mas você pode esperar algo entre 5 – 7 dias.
Se está executando a rede de teste Goerli para a camada de consenso, você pode esperar entre 1–2 dias para a sincronização da Beacon Chain. Lembre-se de que precisará configurar o validador mais tarde para iniciar o processo de apostas. Como executar o validador da camada de consenso
Painéis de monitoramento
Para esta primeira versão, incluímos 3 dashboards de monitoramento com base no Prometheus [5] / Grafana [6] para monitorar os dados do nó e dos clientes (Geth e Besu). Você pode acessar através do seu navegador:
URL: http://your_raspberrypi_IP:3000Usuário: adminSenha: ethereum
Alternando clientes
Todos os clientes são executados como um serviço systemd. Isto é importante porque, se surgir um problema, o sistema recomeçará automaticamente o processo.
Geth and Prysm beacon chain run by default (depending on what you are synchronizing, execution layer or consensus layer) so, if you want to switch to other clients (from Geth to Nethermind, for instance), you need to stop and disable Geth first, and enable and start the other client:
sudo systemctl stop geth && sudo systemctl disable geth
Comandos para habilitar e iniciar cada cliente de execução:
sudo systemctl habilita 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 light thouse
Modificando parâmetros
Os arquivos de configuração do cliente estão localizados no diretório /etc/ethereum/. Você pode editar esses arquivos e reiniciar o serviço do sistema para que as alterações tenham efeito. A única exceção é o Nethermind que, além disso, tem um arquivo de configuração Mainnet localizado aqui:
/etc/nethermind/configs/mainnet.cfg
Os dados dos clientes Blockchain são armazenados no diretório inicial da conta Ethereum do seguinte modo (observe o ponto antes do nome do diretório):
Camada de execução
/home/ethereum/.geth/home/ethereum/.parity/home/ethereum/.besu/home/ethereum/.nethermind
Camada de consenso
/home/ethereum/.eth2/home/ethereum/.eth2validators/home/ethereum/.lighthouse
Nethermind e Hyperledger Besu
Estes 2 grandes clientes de execução tornaram-se uma ótima alternativa ao Geth e Parity. Quanto maior a diversidade na rede melhor. Testá-los contribui para a integridade da rede.
Ambos precisam de mais testes, por isso sinta-se livre para testá-los e compartilhar suas impressões.
Como gerenciar o validador do consenso (staking)
Uma vez que a Beacon Chain da rede de teste Goerli for sincronizada, você vai poder executar um validador no mesmo dispositivo. Você precisará seguir essas etapas de participação(opens in a new tab).
Na primeira vez, você precisa criar uma conta manualmente executando o binário "validador" e configurando uma senha. Depois de concluir esta etapa, você pode adicionar a senha a /etc/ethereum/prysm-validator.conf
e iniciar o validador como um serviço systemd.
Agradecemos o feedback
Nos esforçamos muito para configurar o Raspberry Pi 4 como um nó Ethereum completo, pois sabemos que a base de usuários massiva deste dispositivo pode causar um impacto muito positivo na rede.
Como esta é a primeira imagem baseada no Ubuntu 20.04, pode haver alguns erros. Caso haja, informe o problema no GitHub(opens in a new tab) ou entre em contato conosco no Twitter(opens in a new tab).
Referências
- geth falha repetidamente com 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)
- Note que o OpenEthereum foi descontinuado(opens in a new tab) e não está mais sendo mantido. Use-o com cuidado e de preferência mude para outra implementação 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 edição: @alexpaganmin(opens in a new tab), Invalid DateTime