Pular para o conteúdo principal

Nós e clientes

Última edição: , Invalid DateTime

O Ethereum é uma rede distribuída de computadores (conhecidos como nós) executando softwares que podem verificar blocos e dados de transação. O aplicativo de software, conhecido como cliente, deve ser executado no seu computador para transformá-lo em um nó Ethereum.

Nota: não é mais possível executar um cliente de execução por conta própria. Após A Fusão (The Merge), ambos os clientes de execução e de consenso devem ser executados juntos para um usuário obter acesso à rede Ethereum.

Pré-requisitos

Você deve entender o conceito de uma rede peer-to-peer e os conceitos básicos da EVM antes de mergulhar mais fundo e executar a sua própria instância de um cliente Ethereum. Veja nossa introdução ao Ethereum.

Se você é novo no tema dos nós, recomendamos primeiro verificar nossa introdução simplificada no rodando um nó Ethereum.

O que são nós e clientes?

Um "nó" é qualquer instância de software do cliente Ethereum que esteja conectado a outros computadores também executando o software Ethereum, formando uma rede. Um cliente é uma implementação do Ethereum que verifica os dados em relação às regras do protocolo e mantém a rede segura.

O Ethereum pós Fusão consiste em duas partes: a camada de execução e a camada de consenso. Ambas as camadas são executadas por software cliente diferente. Nesta página, vamos nos referir a eles como cliente de execução e cliente de consenso.

  • O cliente de execução (também conhecido como Execution Engine, cliente EL ou anteriormente cliente Eth1) ouve novas transações transmitidas na rede, executa-as na EVM e mantém o estado mais recente e o banco de dados de todos os dados atuais do Ethereum.
  • O cliente de consenso (também conhecido como Beacon Node, cliente CL ou anteriormente cliente Eth2) implementa o algoritmo de consenso de prova de participação, o qual permite que a rede realize um acordo com base nos dados validados do cliente de execução.

Antes da Fusão (The Merge), a camada de consenso e execução eram redes separadas, com todas as transações e atividades do usuário no Ethereum acontecendo, no que agora é a camada de execução. Um software do cliente forneceu ambiente de execução e verificação de consenso de blocos produzidos por mineradores. A camada de consenso, a Beacon Chain, está sendo executada separadamente desde dezembro de 2020. Ela introduziu a prova de participação e coordenou a rede de validadores com base nos dados da rede Ethereum.

Com a Fusão, o Ethereum transita para a prova de participação conectando essas redes. Os clientes de execução e consenso trabalham juntos para verificar o estado do Ethereum.

O design modular com várias peças de software trabalhando em conjunto é chamado de complexidade encapsulada(opens in a new tab). Essa abordagem facilita executar A Fusão sem problemas e permite a reutilização de clientes individuais, por exemplo, no ecossistema de camada 2.

Execução de acoplamento e clientes de consenso (opens in a new tab) Diagrama simplificado de uma execução associada e de um cliente de consenso.

Diversidade dos clientes

Tanto clientes de execução quanto clientes de consenso existem em uma variedade de linguagens de programação desenvolvidas por diferentes equipes.

As implementações de vários clientes podem tornar a rede mais forte, reduzindo sua dependência de uma única base de código. O objetivo ideal é alcançar a diversidade sem que nenhum cliente domine a rede, eliminando assim um ponto único de falha potencial. A variedade de idiomas também convida uma comunidade de desenvolvedores mais ampla e permite que eles criem integrações em seu idioma preferido.

Saiba mais sobre a diversidade do cliente.

O que essas implementações têm em comum é que todas seguem uma única especificação. As especificações ditam como a rede Ethereum e a cadeia de blocos funcionam. Cada detalhe técnico é definido e as especificações podem ser encontradas como:

Rastreamento de nós na rede

Vários rastreadores oferecem uma visão geral em tempo real dos nós na rede Ethereum. Observe que, devido à natureza das redes descentralizadas, esses rastreadores podem fornecer apenas uma visão limitada da rede e podem relatar resultados diferentes.

Tipos de nó

Se você quer executar o seu próprio nó, você deve entender que existem diferentes tipos de nós que consomem dados de modo diferente. Na verdade, os clientes podem executar 3 tipos diferentes de nó: leve, completo e arquivo. Existem também opções de diferentes estratégias de sincronização que permitem um tempo de sincronização mais rápida. A sincronização se refere ao quão rápido ele pode obter as informações mais atualizadas sobre o estado do Ethereum.

Nó completo

  • Armazena os dados completos da cadeia de blocos (embora isso seja periodicamente reduzido para que um nó completo não armazene todos os dados de estado de volta à origem)
  • Participa na validação de bloco, verifica todos os blocos e estados.
  • Todos os estados podem ser derivados de um nó completo (embora estados muito antigos sejam reconstruídos a partir de solicitações feitas a nós de arquivo).
  • Serve a rede e fornece dados mediante solicitação.

Nó leve

Em vez de baixar cada bloco, nós leves baixam os cabeçalhos dos blocos. Esses cabeçalhos contêm apenas informações resumidas sobre o conteúdo dos blocos. Qualquer outra informação pelo nó leve é solicitada de um nó completo. O nó leve pode então verificar de modo independente os dados que ele recebe em relação às raízes de estado nos cabeçalhos de bloco. Os nós leves permitem que os usuários participem da rede Ethereum sem o hardware poderoso ou a alta largura de banda necessária para executar nós completos. Por fim, os nós leves podem ser executados em telefones celulares ou dispositivos embutidos. Os nós leves não participam do consenso (ou seja, eles não podem ser mineradores/validadores), mas podem acessar a cadeia de blocos Ethereum com as mesmas funcionalidades e garantias de segurança de um nó completo.

Clientes leves são uma área de desenvolvimento ativo para o Ethereum e esperamos ver em breve novos clientes leves para a camada de consenso e a camada de execução. Também existem rotas em potencial para fornecer dados de clientes leves pela rede gossip(opens in a new tab). Isso é vantajoso porque a rede gossip pode suportar uma rede de nós leves sem exigir nós completos para atender às solicitações.

O Ethereum ainda não suporta uma grande quantidade de nós leves, mas o suporte a nós leves é uma área que deve se desenvolver rapidamente em um futuro próximo. Em particular, clientes como Nimbus(opens in a new tab), Hélios(opens in a new tab), e LodeStar(opens in a new tab) atualmente estão bastante concentrados em nós leves.

Nó de arquivo

  • Armazena tudo o que é mantido no nó completo e constrói um arquivo de estados históricos. Ele é necessário se você quiser consultar algo como um saldo de conta no bloco #4.000.000, ou testar de forma simples e confiável seu próprio conjunto de transações sem minerá-las usando rastreamento.
  • Esses dados representam unidades de terabytes, o que torna os nós de arquivo menos atraentes para usuários comuns, mas pode ser útil para serviços como exploradores de blocos, fornecedores de carteiras e análises da cadeia.

Sincronizar clientes em qualquer modo que não seja o de arquivo resultará na remoção de dados da cadeia de blocos. Isso significa que não há arquivo de todo o estado histórico, mas o nó completo é capaz de criá-lo sob demanda.

Saiba mais sobre Nós de arquivo.

Por que devo executar um nó Ethereum?

A execução de um nó permite que você use o Ethereum de forma direta, confiável e privada, enquanto dá suporte à rede, mantendo-a mais robusta e descentralizada.

Vantagens para você

A execução de seu próprio nó permite que você use o Ethereum de maneira privada, autossuficiente e confiável. Você não precisa confiar na rede porque você pode verificar os dados por conta própria com seu cliente. “Não confie, verifique” é um mantra popular da cadeia de blocos.

  • Seu nó verifica todas as transações e blocos contra as regras de consenso por si só. Isso significa que você não precisa confiar em nenhum outro nó da rede nem confiar totalmente neles.
  • Você pode usar uma carteira Ethereum com seu próprio nó. Você pode usar dapps com mais segurança e privacidade porque não precisará vazar seus endereços e saldos para nós aleatórios. Tudo pode ser verificado com seu próprio cliente. MetaMask(opens in a new tab), Frame(opens in a new tab) e muitas outras carteiras oferecem importação de RPC, permitindo que elas usem seu nó.
  • Você pode executar e auto-hospedar outros serviços que dependem de dados do Ethereum. Por exemplo, isso pode ser um validador Beacon Chain, software como camada 2, infraestrutura, exploradores de bloco, processadores de pagamento etc.
  • Você pode fornecer seus próprios pontos de extremidade RPC personalizados. O ponto de extremidade Ethereum hospedado publicamente pela comunidade ou de modo privado, permite que as pessoas usem seu nó e evitem grandes provedores centralizados.
  • Você pode se conectar ao seu nó usando Comunicações entre processos (IPC) ou reescrever o nó para carregar seu programa como um plugin. Isso garante baixa latência, o que ajuda muito, por exemplo, ao processar muitos dados usando bibliotecas Web3 ou quando você precisa substituir suas transações o mais rápido possível (isto é, de forma acelerada).
  • Você pode colocar ETH diretamente para proteger a rede e ganhar recompensas. Veja participação solo para começar.

Como você acessar o Ethereum através do seu aplicativo e nós (opens in a new tab)

Benefícios da rede

Um conjunto diversificado de nós é importante para a integridade, segurança e resiliência operacional do Ethereum.

  • Os nós completos impõem as regras de consenso para que não possam ser induzidos a aceitar blocos que não as seguem. Isso fornece segurança extra na rede, pois se todos os nós fossem nós leves, que não fazem a verificação completa, os validadores poderiam atacar a rede.
  • No caso de um ataque que supere as defesas criptoeconômicas de prova de participação, uma recuperação social pode ser realizada por nós completos escolhendo seguir a cadeia honesta.
  • Mais nós na rede resultam em uma rede mais diversificada e robusta, o objetivo final da descentralização, que permite um sistema confiável e resistente à censura.
  • Eles fornecem acesso a dados da cadeia de blocos para clientes leves que dependem disso. Em picos altos de uso, é necessário que haja nós completos suficientes para ajudar na sincronização dos nós. Os nós leves não armazenam toda a cadeia de blocos. Em vez disso, eles verificam dados por meio das raízes do estado nos cabeçalhos de blocos. Eles podem solicitar mais informações a partir dos blocos, se precisarem.

Se você executa um nó completo, toda a rede Ethereum se beneficia disso.

Executando seu próprio nó

Interessado em executar o seu próprio cliente Ethereum?

Para ver uma introdução simplificada para iniciantes, visite a nossa página Executar um nó para saber mais.

Se você é mais que um usuário técnico, mergulhe em mais detalhes e opções sobre como executar o seu próprio nó.

Alternativas

Configurar seu próprio nó pode custar tempo e recursos, mas nem sempre você precisa executar sua própria instância. Nesse caso, é possível usar um provedor de APIs externo. Para obter uma visão geral do uso desses serviços, confira nós como serviço.

Se alguém executar um nó do Ethereum com uma API pública em sua comunidade, você pode apontar suas carteiras para um nó da comunidade por meio de um RPC personalizado.

Por outro lado, se você executar um cliente, você pode compartilhá-lo com quem precisar.

Clientes de execução (antigos clientes 'Eth1')

A comunidade do Ethereum mantém vários clientes de execução (previamente conhecidos como clientes “Eth1”, ou apenas “clientes Ethereum”) de código aberto, desenvolvidos por diferentes equipes usando diferentes linguagens de programação. Isso torna a rede mais forte e diversificada. O objetivo ideal é alcançar a diversidade sem que nenhum cliente predomine, a fim de reduzir os pontos únicos de falha.

Essa tabela resume os diferentes clientes. Todos eles passam em testes de cliente(opens in a new tab) e são mantidos ativamente para se manterem atualizados com atualizações de rede.

ClientLinguagem de programaçãoSistemas operacionaisRedesEstratégias de sincronizaçãoLimpeza de estado
Geth(opens in a new tab)GoLinux, Windows, macOSRede principal, Sepolia, GoerliInstantâneo, CompletoArquivo, Removido
Nethermind(opens in a new tab)C#, .NETLinux, Windows, macOSRede principal, Sepolia, Goerli, e outrasInstantâneo (sem servidor), Rápido, CompletoArquivo, Removido
Besu(opens in a new tab)JavaLinux, Windows, macOSRede principal, Sepolia, Goerli, e outrasInstantâneo, Rápido, CompletoArquivo, Removido
Erigon(opens in a new tab)GoLinux, Windows, macOSRede principal, Sepolia, Goerli, e outrasCompletoArquivo, Removido

Observe 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!

Para saber mais sobre redes suportadas, leia sobre as redes Ethereum.

Cada cliente tem casos de uso e vantagens exclusivas, então você deve escolher um com base nas suas próprias preferências. A diversidade permite que as implementações sejam focadas em diferentes recursos e públicos de usuários. Você pode escolher um cliente baseado em recursos, suporte, linguagem de programação ou licenças.

Besu

Hyperledger Besu é um cliente Ethereum de nível empresarial para redes públicas e autorizadas. Ele executa todos os recursos da Rede principal (Mainnet) do Ethereum, do rastreamento ao GraphQL, possui monitoramento extensivo e é suportado pela ConsenSys, tanto em canais comunitários abertos, quanto por meio de SLAs (contratos) comerciais para empresas. Ele é escrito em Java e é licenciado pelo Apache 2.0.

A extensa documentação(opens in a new tab) do Besu irá guiar você por todos os detalhes sobre seus recursos e configurações.

Erigon

Erigon, anteriormente conhecido como Turbo-Geth, começou como uma bifurcação do Go Ethereum orientado para velocidade e eficiência de espaço em disco. Erigon é uma implementação completamente rearquitetada do Ethereum, atualmente escrita em Go, mas com implementações em outras linguagens em desenvolvimento. O objetivo da Erigon é fornecer uma implementação mais rápida, modular e otimizada do Ethereum. Ele pode realizar uma sincronização completa do nó de arquivamento usando cerca de 2 TB de espaço em disco, em menos de 3 dias.

Go Ethereum

Go Ethereum (Geth, para abreviar) é uma das implementações originais do protocolo Ethereum. Atualmente, é o cliente mais difundido com a maior base de usuários e variedade de ferramentas para usuários e desenvolvedores. Ele está escrito em Go, é totalmente de código aberto e sob licença GNU LGPL v3.

Saiba mais sobre Geth em sua documentação(opens in a new tab).

Nethermind

Nethermind é uma implementação do Ethereum criada com a pilha de tecnologia C# .NET, licenciada com LGPL-3.0, rodando em todas as principais plataformas, incluindo ARM. Ele oferece grande desempenho com:

  • uma máquina virtual otimizada
  • acesso ao estado
  • rede e recursos ricos como painéis Prometheus/Graphana, suporte ao registro empresarial seq, rastreamento JSON RPC e plugins de análise.

Nethermind também tem uma documentação detalhada(opens in a new tab), um suporte eficaz ao desenvolvedor, uma comunidade online e suporte 24 horas por dia disponível para usuários Premium.

Clientes de consenso (antigos clientes 'Eth2')

Existem vários clientes de consenso (anteriormente conhecidos como clientes “Eth2”) para oferecer suporte às atualizações de consenso. Eles estão executando a Beacon Chain e fornecerão um mecanismo de consenso de prova de participação para clientes de execução após A Fusão (The Merge).

ClienteLinguagem de programaçãoSistemas operacionaisRedes
Lighthouse(opens in a new tab)RustLinux, Windows, macOSBeacon Chain, Goerli, Pyrmont, Sepolia, Ropsten e mais
Lodestar(opens in a new tab)TypeScriptLinux, Windows, macOSBeacon Chain, Goerli, Sepolia, Ropsten e mais
Nimbus(opens in a new tab)NimLinux, Windows, macOSBeacon Chain, Goerli, Sepolia, Ropsten e mais
Prysm(opens in a new tab)GoLinux, Windows, macOSBeacon Chain, Gnosis, Goerli, Pyrmont, Sepolia, Ropsten e mais
Teku(opens in a new tab)JavaLinux, Windows, macOSBeacon Chain, Gnosis, Goerli, Sepolia, Ropsten e mais

Lighthouse

Lighthouse é uma implementação de cliente de consenso escrita em Rust sob licença Apache-2.0. Ele é mantido pela Sigma Prime e tem estado estável e pronto para produção desde a origem da Beacon Chain. Ele é utilizado por várias empresas, pools de participação (staking) e indivíduos. Ele visa ser seguro, eficiente e interoperável em uma ampla gama de ambientes, desde PCs de mesa até implantações automatizadas sofisticadas.

A documentação está disponível no Livro da Lighthouse(opens in a new tab)

Lodestar

Lodestar é uma implementação de cliente de consenso pronta para produção escrita em Typescript sob a licença LGPL-3.0. Ele é mantido pela ChainSafe Systems e é o mais novo dos clientes de consenso para participantes-solo (solo-stakers), desenvolvedores e pesquisadores. O Lodestar consiste em um nó beacon e um cliente validador alimentado por implementações JavaScript de protocolos Ethereum. O Lodestar visa melhorar a usabilidade do Ethereum com clientes leves, expandir a acessibilidade a um grupo maior de desenvolvedores e contribuir ainda mais para a diversidade do ecossistema.

Mais informações podem ser encontradas em nosso site(opens in a new tab)

Nimbus

Nimbus é uma implementação de cliente de consenso escrita em Nim sob a licença Apache-2.0. Ele é um cliente pronto para produção em uso por participantes-solo e pools de participação (staking). O Nimbus foi projetado para eficiência de recursos, facilitando a execução em dispositivos com recursos restritos e infraestrutura corporativa com a mesma facilidade, sem comprometer a estabilidade ou o desempenho da recompensa. Uma ocupação de recursos mais leve significa que o cliente tem uma maior margem de segurança quando a rede está sob estresse.

Implementado pela Trinity. Funciona como sincronização rápida, mas também baixa os dados necessários para executar os blocos mais recentes, o que permite consultar a cadeia nos primeiros minutos desde o início.

  • Sincroniza o estado primeiro e permite que você consulte RPC em poucos minutos.
  • Ainda em desenvolvimento e não totalmente confiável, a sincronização em segundo plano é desacelerada e as respostas do RPC podem falhar.

Saiba mais na documentação do Nimbus(opens in a new tab)

Prysm

O Prysm é um cliente de consenso de código aberto completo, escrito em Go sob a licença GPL-3.0. Ele apresenta uma interface de usuário de aplicativo Web opcional e prioriza a experiência do usuário, a documentação e a configurabilidade para usuários institucionais e particulares.

Visite a documentação do Prysm(opens in a new tab) para saber mais.

Teku

Teku é um dos clientes originais da origem da Beacon Chain. Além dos objetivos habituais (segurança, robustez, estabilidade, usabilidade, desempenho), o Teku visa especificamente cumprir integralmente todos os padrões de cliente de consenso.

O Teku oferece opções de implantação muito flexíveis. O nó beacon e o cliente validador podem ser executados juntos como um único processo, o que é extremamente conveniente para participantes solo (solo stakers), ou os nós podem ser executados separadamente para operações de participação sofisticadas. Além disso, o Teku é totalmente interoperável com o Web3Signer(opens in a new tab) para proteger as chaves de assinatura e protegê-las contra remoções.

O Teku é escrito em Java e sob a licença Apache 2.0. Ele é desenvolvido pela equipe de Protocolos da ConsenSys, que também é responsável pelo Besu e Web3Signer. Saiba mais na documentação do Teku(opens in a new tab).

Modos de sincronização

Para acompanhar e verificar os dados atuais na rede, o cliente Ethereum precisa sincronizar com o estado da rede mais recente. Para isso, é necessário baixar dados de pares, verificar criptograficamente sua integridade e construir um banco de dados local da cadeia de blocos.

Os modos de sincronização representam diferentes abordagens para esse processo com várias compensações. Os clientes também variam em sua implementação de algoritmos de sincronização. Sempre consulte a documentação oficial do cliente escolhido para obter detalhes sobre a implementação.

Modos de sincronização na camada de execução

Sincronização completa

A sincronização completa baixa todos os blocos (incluindo cabeçalhos, transações e recibos) e gera o estado da cadeia de blocos de forma incremental, executando cada bloco desde a origem.

  • Minimiza a confiança e oferece a mais alta segurança, verificando cada transação.
  • Com um número crescente de transações, pode levar dias ou semanas para processar todas as transações.

Sincronização rápida

A sincronização rápida baixa todos os blocos (incluindo cabeçalhos, transações e recibos), verifica todos os cabeçalhos, baixa o estado e verifica-os em relação aos cabeçalhos.

  • Depende da segurança do mecanismo de consenso.
  • A sincronização leva apenas algumas horas.

Sincronização leve

O modo cliente leve baixa todos os cabeçalhos de bloco, dados de bloco e verifica alguns aleatoriamente. Somente sincroniza a ponta da cadeia do ponto de verificação confiável.

  • Obtém apenas o estado mais recente, enquanto conta com a confiança dos desenvolvedores e o mecanismo de consenso.
  • Cliente pronto para uso com o estado atual da rede em poucos minutos.

NB A sincronização leve ainda não funciona com a prova de participação do Ethereum — novas versões de sincronização leve deverão ser lançadas em breve!

Mais sobre clientes leves

Sincronização instantânea

A sincronização instantânea é a abordagem mais recente para sincronizar um cliente, iniciada pela equipe Geth. O uso de instantâneos dinâmicos servidos por pares recupera todos os dados de conta e armazenamento sem baixar nós de árvores intermediárias e, em seguida, reconstrói a árvore Merkle localmente.

  • Estratégia de sincronização mais rápida, atualmente padrão na rede principal do Ethereum
  • Economiza muito uso de disco e largura de banda de rede sem sacrificar a segurança

Mais sobre sincronização instantânea(opens in a new tab)

Modos de sincronização de camada de consenso

Sincronização otimista

A sincronização otimista é uma estratégia de sincronização pós-fusão projetada para ser compatível por aceitação (opt-in) e com versões anteriores, permitindo que os nós de execução sincronizem por meio de métodos estabelecidos. O mecanismo de execução pode, de modo otimista, importar blocos beacon sem verificá-los completamente, encontrar o cabeçalho mais recente e começar a sincronizar a cadeia com os métodos acima. Em seguida, após a atualização do cliente de execução, ele informará ao cliente de consenso sobre a validade das transações na Beacon Chain.

Mais sobre sincronização otimista(opens in a new tab)

Sincronização de ponto de verificação

A sincronização do ponto de verificação, também conhecida como sincronização de subjetividade fraca, cria uma experiência de usuário superior para sincronizar a Beacon Node. Ela é baseada em suposições de subjetividade fraca, que permitem sincronizar a Beacon Chain de um ponto de verificação de subjetividade fraca recente em vez da origem. A sincronização do ponto de verificação torna o tempo de sincronização inicial significativamente mais rápido com suposições de confiança semelhantes às da sincronização da origem.

Na prática, isso significa que seu nó se conecta a um serviço remoto para baixar os estados finalizados recentes e continua verificando os dados a partir desse ponto. A terceira parte que fornece os dados é confiável e deve ser escolhida com cuidado.

Mais sobre sincronização do ponto de verificação(opens in a new tab)

Leitura adicional

Há muitas informações sobre clientes Ethereum na Internet. Aqui estão alguns recursos que podem ser úteis.

Este artigo foi útil?