Pular para o conteúdo
0%

Proteja seus nodes: migrando do Parity para o Geth

Autor: Kunal Roy

Última atualização: 24 de abril de 20207 min de leitura
Migração do software de node Ethereum de Parity para Geth
A Alchemy vai atualizar seu software de node Ethereum de Parity para Geth.

O ecossistema Ethereum depende principalmente de dois provedores para a unidade fundamental de infraestrutura: os nodes. Uma dessas organizações, a Parity Technologies, anunciou que está focando em outras iniciativas e descontinuando o desenvolvimento do seu software de node para Ethereum. Nós, da Alchemy, decidimos recentemente migrar do Parity para a outra opção principal, o Geth, e sugerimos que você faça o mesmo, já que ele é ativamente desenvolvido por uma equipe dedicada. Migrar a infraestrutura core é uma tarefa crítica e cheia de nuances. A partir dos nossos anos de experiência em infraestrutura, dando suporte a grandes empresas ao redor do mundo na Alchemy, criamos este guia de migração do Parity para o Geth para compartilhar boas práticas e ajudar você a ter uma transição bem-sucedida. Compartilhar este guia com sua equipe de engenharia pode ajudá-los a navegar pelas particularidades dos nodes de blockchain e garantir que sua infraestrutura core continue funcionando sem problemas.

‍

Contexto

Um resumo rápido do básico. Aplicações de blockchain precisam rodar servidores chamados "nodes", que permitem ler e escrever na blockchain. Você pode pensar neles como um banco de dados que armazena a blockchain.

Atualmente existem duas opções principais de software de node: Parity e Geth. Ambas as equipes que constroem e mantêm esse software de node open source prestaram um enorme serviço a todo o ecossistema blockchain, e a Ethereum não existiria sem elas. Ambas têm a profunda gratidão da equipe da Alchemy.

Recentemente, a equipe do Parity, que contribuiu massivamente para o crescimento do desenvolvimento da blockchain Ethereum desde o início, está agora voltando o foco para sua própria chain.

Peter e toda a equipe do Geth fizeram um trabalho incrível construindo um cliente Ethereum de excelente qualidade e continuam ativamente desenvolvendo-o.

Gráfico descrevendo a distribuição entre os softwares de cliente Ethereum.
Distribuição de clientes de node Eth (ethernodes.org/)

Distribuição de clientes de node Eth (ethernodes.org/)

‍

Por que você deveria migrar?

Nodes são a infraestrutura core de toda empresa de blockchain. Toda vez que seu sistema precisa ler ou escrever informações na blockchain, você usa seu node.

Comparados à infraestrutura web tradicional, os nodes de blockchain são significativamente mais complexos e demandam mais tempo para gerenciar. Além disso, configurar um novo node pode levar dias ou semanas devido ao tempo de sincronização. Isso significa que ter problemas com sua infraestrutura de node pode deixar seu produto fora do ar por semanas.

Para garantir que você tenha uma infraestrutura estável, robusta e escalável, rodar um cliente de node ativamente mantido é essencial.

A Parity Technologies gentilmente entregou o codebase do Parity Ethereum para a OpenEthereum DAO, recém-criada, e estamos animados para ver os avanços feitos no software de node nesse meio verdadeiramente descentralizado. Em contrapartida, a Ethereum Foundation tem uma equipe dedicada em tempo integral para construir e melhorar continuamente o software no futuro previsível.

Usar um projeto ativamente desenvolvido significa que bugs, problemas de estabilidade, forks e outros desafios desconhecidos serão corrigidos prontamente e o software continuará melhorando. Nossa recomendação é considerar seriamente migrar sua infraestrutura de node para o Geth.

Esse é um processo bastante envolvido, então considere reservar de 2 a 4 semanas de tempo de engenharia para uma transição completa.

Por fim, se você preferir focar apenas na construção do seu produto core e não lidar com infraestrutura de node de baixo nível, fale com a gente. A Alchemy Blockchain Developer Platform foi arquitetada do zero para tornar extremamente fácil para todos construírem ótimos produtos de blockchain.

Certo, agora que você está por dentro, vamos começar a migração! ‍

Como migrar do Parity para o Geth

Os 8 passos

  1. Remover a dependência de métodos de namespace específicos do Parity
  2. Remover a dependência de campos de resposta específicos do Parity
  3. Remover a dependência de respostas específicas da API para requisições inválidas
  4. Remover a dependência de códigos de erro específicos do Parity
  5. Configurar o hardware do Geth
  6. Configurar o software do Geth
  7. Executar simulações de tráfego específicas da aplicação nos nodes
  8. Migrar o tráfego e monitorar o serviço

‍

1. Remover a dependência de métodos de namespace específicos do Parity

Parity e Geth implementam o conjunto genérico do protocolo JSON-RPC Ethereum estabelecido pela Ethereum Foundation, e então seus próprios métodos de API suplementares. Existem alguns métodos de namespace do parity, como parity_allTransactions, que retornam todas as transações pendentes do ponto de vista de um node Parity. Em termos de funcionalidade, deve haver equivalentes no Geth entre os diferentes pacotes. Em termos de tráfego para a Alchemy, a maior omissão no Geth é o módulo trace, cujos métodos foram movidos para o pacote debug, onde você pode replicar métodos trace populares como trace_replayTransaction com o análogo debug_traceTransaction.

‍

2. Remover a dependência de campos de resposta específicos do Parity

Apesar dos melhores esforços para uma implementação consistente, existem algumas pequenas diferenças. Verifique se você não depende de um campo que é omitido nas respostas do Geth. Já vimos casos reais em que as pessoas dependiam de certos campos, como o campo transactionLogIndex encontrado nos objetos logs de eth_getLogs.

De forma geral, notamos que o Geth tende a interromper e falhar em chamadas de execução mais longa para preservar a saúde de seus nodes.

‍

3. Diferenças nas respostas para requisições inválidas

Requisições formatadas corretamente que podem falhar na EVM (Ethereum Virtual Machine) por algum motivo podem se comportar de forma diferente. Verifique se você não depende de erros de execução da VM no Parity para requisições inválidas, já que geralmente retornarão um resultado 0x no Geth. Alguns exemplos de requisições inválidas abaixo:

  • O parâmetro de número de bloco fornecido em eth_call está pendente.
  • Um intervalo de blocos em eth_getLogs não pode ser encontrado no node
  • Uma eth_call que ultrapassa 5 segundos será automaticamente interrompida pela EVM.

‍

4. Códigos de erro específicos do Parity

Alguns mecanismos de retry de clientes dependem de códigos de erro específicos do Parity para informá-los sobre lógicas específicas. Verifique se você não depende de códigos de erro que possam mudar no Geth. Uma lista mais completa de códigos de erro JSON-RPC do Parity pode ser encontrada aqui. Em geral, há uma perda de especificidade em alguns desses erros, então você precisará de alguma lógica do lado do cliente para tratar esses casos.

‍

5. Configurar o hardware do Geth

Os nodes do Geth devem conseguir rodar no mesmo hardware que você vinha usando para o Parity. Notamos alguns atributos importantes, discutidos com a equipe do Geth, que ajudarão a manter seu novo node Geth performático. Existem duas métricas de sistema a serem monitoradas de perto: porcentagem de CPU e iowaits, a taxa na qual o sistema está escrevendo em disco. Observamos fortes correlações entre essas métricas para nodes na prática quando eles começam a falhar em chamadas, ficar sem resposta, ou de forma geral entrar em um estado degradado. A porcentagem de CPU e o uso de iowait dependem do hardware que você está usando. Para uma instância EC2 m5.2x large, normalmente vemos desempenho degradado em torno de 65% de uso de CPU e 1 iowait/segundo para nodes archive.

‍

Gráfico mostrando os iowaits dos nodes geth internos da Alchemy.
Iowaits dos Nodes Geth Internos da Alchemy.

Iowaits do Node Geth Interno da Alchemy ‍

6. Configurar o software do Geth

Embora raro, já vimos casos em que nodes Geth ficam travados sincronizando em intervalos aleatórios (número de bloco desconhecido). Nesses casos, paciência é a virtude principal, e o node eventualmente começará a sincronizar em algumas horas.

Iniciar o processo do Geth tem algumas particularidades que discutiremos a seguir. Existem muitas opções de flags que o Geth especifica. A flag --pprof tem muitas métricas úteis que dão insight sobre a saúde do node, como sua contagem de peers, o tx_pool, e muitas outras informações úteis expostas na porta 9090 por padrão. Outro ponto importante a notar é especificar o sinal de encerramento como KillSignal=SIGINT. Percebemos que o Geth tinha problemas ao reiniciar, onde ele voltava para o último bloco, já que não estava descarregando corretamente os blocos em memória ou o estado para o disco persistente no shutdown.

‍

7. Executar simulações de tráfego específicas da aplicação nos nodes

Vimos alguns métodos no Geth que têm os mesmos formatos de requisição/resposta, mas se comportam de forma ligeiramente diferente da versão do parity. Um caso real que observamos é o seguinte: eth_gasPrice e outros métodos que dependem de estimativas de gasPrice, como eth_estimateGas, no Geth utilizam um modelo de estimativa que tende a resultar em previsões de gasPrice mais baixas do que no Parity. Isso resulta em falhas inesperadas de transação, como: Transaction gas price supplied is too low. There is another transaction with the same nonce in the queue. Try increasing the gas price or incrementing the nonce. Você pode mitigar isso aumentando a margem do gas price, ou usando outras fontes de terceiros, como o Eth Gas Station para obter suas estimativas de preço.

‍

8. Migrar o tráfego e monitorar o serviço

Finalmente chegou a hora de fazer a migração! Direcione seu tráfego para o Geth e monitore-o cuidadosamente por alguns dias. Se você encontrar qualquer outro problema inesperado, sinta-se à vontade para entrar em contato com a equipe do Geth ou falar com a gente.

‍

Quer uma forma mais fácil de migrar?

Esperamos que este guia tenha sido útil para ajudar a navegar pelo processo de migração do Parity para o Geth! Se você tiver dúvidas ou desafios, sinta-se à vontade para entrar em contato conosco - estamos aqui para ajudar.

Além disso, se você quiser turbinar seu desenvolvimento com uma plataforma que torna significativamente mais fácil construir e lançar aplicações de blockchain sem precisar lidar com tarefas de baixo nível como gerenciar nodes, fale com a gente!

Na Alchemy, criamos a Blockchain Development Platform do zero para facilitar a vida dos desenvolvedores. Agora, através de um poderoso conjunto de ferramentas de desenvolvimento, suporte 24/7 e uma nova plataforma de infraestrutura de blockchain escalável globalmente, você pode economizar milhares de horas de desenvolvimento, tornar sua aplicação 107x mais confiável, e criar produtos muito melhores para seus usuários. Sinta-se à vontade para entrar em contato e saber mais!

Boa sorte com sua migração para o Geth.

É 2020. Mantenha-se saudável e mantenha seus nodes saudáveis!

‍


Cadastre-se para uma conta gratuita da Alchemy aqui.

‍

Sobre a Alchemy

A Alchemy fornece a principal Blockchain Development Platform, dando suporte a produtos usados por milhões de usuários em 197 países. O motor de infraestrutura inovador da Alchemy Platform e seu conjunto incomparável de ferramentas de desenvolvimento permitem que criadores construam facilmente ótimos produtos baseados em blockchain em uma fração do tempo. Apoiada pela Stanford University, Coinbase, o presidente do Google, Charles Schwab, e importantes executivos de tecnologia e finanças, a equipe traz profundo conhecimento em desenvolvimento de blockchain e infraestrutura massivamente escalável, por meio de décadas de experiência em gigantes da tecnologia como Google, Microsoft e Facebook.

Newsletter da Alchemy

Seja o primeiro a saber sobre lançamentos

Assine nossa newsletter

Receba as últimas atualizações de produtos e recursos da Alchemy

A
O
D
+
Mais de 80.000 inscritos

Ao inserir seu endereço de e-mail, você concorda em receber nossas comunicações de marketing e atualizações de produtos. Você reconhece que a Alchemy processa as informações que recebemos de acordo com nosso Aviso de Privacidade. Você pode cancelar a inscrição a qualquer momento.