Pular para o conteúdo
0%

O que é um node Ethereum?

Alchemy team headshot

Escrito por Alchemy

Publicado em 18 de abril de 20226 min de leitura

Definição e aplicação

Um node Ethereum é simplesmente qualquer computador rodando o software necessário para se conectar à rede Ethereum. Os nodes se conectam uns aos outros para trocar informações e validar transações e armazenar dados sobre o estado da blockchain.

Embora os termos sejam frequentemente usados de forma intercambiável, esses computadores conectados são os nodes, e o software que eles executam é chamado de client.

‍

Por que os nodes são importantes para a Web3?

Animação de nós blockchain se conectando na rede Ethereum

Os nodes formam a rede blockchain e são a única forma de acessá-la.

Cada node mantém sua própria cópia da blockchain e trabalha para garantir que essa cópia bata com as cópias de todos os outros nodes. Toda vez que você faz algo e um novo bloco precisa ser adicionado à blockchain, todos os nodes da rede precisam processá-lo.

Animação de nós blockchain chegando a consenso sobre um novo bloco

Cada node decide aceitar ou rejeitar o bloco mais recente com base na validade de suas assinaturas e transações. Se o bloco for aceito, ele continua sendo compartilhado com outros nodes até que um consenso seja alcançado e todos estejam sincronizados. Os nodes conseguem rejeitar blocos inválidos rapidamente e identificar nodes ruins que tentam quebrar as regras. É essa rede de nodes se comunicando constantemente que torna possível não depender de uma única fonte de verdade e de todos os problemas que vêm com isso.

Esse consenso entre os diferentes nodes torna as redes blockchain descentralizadas e é a espinha dorsal da Web3. Quanto mais nodes estiverem rodando, mais forte a blockchain se torna!

‍

Quais são os diferentes tipos de nodes?

Existem três tipos de nodes:

  • light nodes
  • full nodes
  • archive nodes.

Um light node baixa apenas os cabeçalhos dos blocos (block headers), que são o mínimo de dados necessários para transacionar na rede. Um light node consegue validar uma transação porque é capaz de regenerar o bloco específico que precisa verificar usando esses dados.

Isso permite que os light nodes interajam com a rede de forma eficiente e economizem megabytes de largura de banda e gigabytes de armazenamento. Por isso, os light nodes podem rodar em dispositivos comuns com recursos de memória limitados, como smartphones e laptops.

Mas os light nodes também têm suas limitações. Às vezes, eles precisam pedir dados a full nodes aos quais não têm acesso, o que pode levar mais tempo do que um full node validando a transação sozinho.

Embora o light node seja a forma mais fácil de rodar um node, ainda assim leva tempo e conhecimento técnico instalar o client, configurar variáveis, baixar os block headers e verificar se tudo está funcionando corretamente.

Light Node
Full Node

Block Headers

Block Headers

Full Block State

Full Block State

Um full node tem tudo que precisa para verificar se os blocos na rede estão corretos. Ele pode interagir com qualquer smart contract e implantar o seu próprio.

O uso e o armazenamento completo de dados significam que os full nodes exigem muito mais recursos de computação e largura de banda. Um full node baixa, armazena e verifica o estado completo da blockchain - tudo desde o bloco zero até o bloco mais recente (+10M e contando), o que pode levar semanas para sincronizar!

Um archive node vai um passo além do full node. Enquanto um full node descarta entradas que não precisa mais para verificar as interações mais recentes com a chain, o archive node mantém tudo (terabytes de dados extras). Esses detalhes são ótimos para consultar informações de forma mais eficiente e úteis para algumas aplicações, mas são excessivos na maioria dos casos.

‍

Por que rodar um node é difícil?

Colocar um node em funcionamento pode ser um processo longo e desafiador. Isso é especialmente verdade se você é novo no mundo Web3 e não tem experiência técnica (pelo menos, ainda não).

Só o fato de um full node poder levar semanas para se sincronizar com todos os mais de 10M de nodes para obter o estado atual da blockchain já pode afastar muita gente de construir nesse espaço.

Os custos também são um fator e podem se acumular rapidamente. Isso inclui o alto investimento inicial para comprar hardware e os custos contínuos de eletricidade e hospedagem de servidor. Ao operar um node, você também precisa garantir que ele esteja constantemente em operação. Internet lenta, quedas de energia ou problemas de hardware podem levar a um downtime custoso.

Embora as atualizações de client ajudem a melhorar constantemente a escalabilidade, a segurança e a sustentabilidade do Ethereum, essas mudanças podem gerar problemas inesperados. E os problemas realmente começam quando você tenta construir algo maior!

‍

Quais são alguns problemas ao escalar nodes Ethereum?

Os nodes Ethereum nunca foram realmente projetados para escalar a esse nível de requisições e podem apresentar alguns desafios específicos.

Confiabilidade

Algumas requisições vão pedir ao node para consultar tudo desde o log zero até o bloco atual, e podem sofrer timeout. Essas "queries of death" podem derrubar um node e podem acontecer a qualquer hora do dia. Mesmo que um node seja 72% confiável, como um node padrão, isso significa que uma aplicação pode ficar offline por mais de cem dias por ano!

Escalabilidade

Escalar a infraestrutura de nodes pode ser complicado. Imagine que a aplicação que você está construindo viraliza da noite para o dia no Twitter, mas os nodes existentes que você está rodando não conseguem acompanhar o pico repentino de tráfego e volume de transações.

Você não pode simplesmente colocar novos nodes no ar rapidamente, porque eles levam semanas para sincronizar. Além disso, a nova demanda pode sobrecarregar seus nodes existentes e fazer com que travem. Isso pode resultar em downtime, período em que ninguém consegue usar sua aplicação, e usuários insatisfeitos que perdem a confiança no que você construiu!

Consistência de dados

Na Web2, os sites conseguem contornar esses problemas de escalabilidade usando load balancers, uma camada de rede que fica por cima e distribui o tráfego entre servidores indistinguíveis. Isso não é possível com nodes porque a blockchain é assíncrona. Embora dois nodes devam eventualmente compartilhar um bloco mais recente idêntico, em um dado momento, um pode estar atrasado em relação ao outro.

O balanceamento de carga pode levar a dois resultados bem diferentes, porque o tráfego é roteado por nodes diferentes com visões diferentes sobre o bloco mais recente. Imagine comprar aquele NFT que você estava cobiçando e, ao atualizar a página, descobrir que ele parece ter desaparecido!

Diagrama de nós blockchain com balanceamento de carga retornando dados inconsistentes

Tentar evitar esse tipo de inconsistência de dados leva equipes de desenvolvimento a montar workarounds complexos que inevitavelmente causam erros e derrubam a aplicação. Todos esses problemas significam que, ao lidar com nodes, os desenvolvedores frequentemente precisam escolher entre escalar, manter a confiabilidade ou garantir dados consistentes, o que resulta em uma experiência menos que ideal para todos.

‍

Quando usar node-as-a-service?

Se tudo isso parece um pouco avassalador, não se preocupe! Seja você esteja apenas começando ou ache que está gastando tempo e dinheiro demais com problemas de nodes, o node-as-a-service pode ser a solução para você.

Provedores de nodes como a Alchemy rodam os nodes para que você possa se concentrar em desenvolver sua aplicação. É incrivelmente fácil integrar a maioria dos provedores - muitas vezes basta uma API para começar a ler e escrever na blockchain.

Isso significa que, em vez de pagar por acesso a servidor, atender requisitos de hardware e manter o estado por conta própria, você pode usar a Node API da Alchemy…

Diagrama da infraestrutura Alchemy Node API para acesso escalável a nós Ethereum

… com uma única linha de código.

Trecho de código conectando ao Ethereum com uma chave de API da Alchemy

O Cortex engine da Alchemy garante a correção e a confiabilidade dos dados por meio de um sistema dedicado e distribuído que escala junto com sua aplicação.

"Usar seu próprio node ou um serviço propenso a erros significa desperdiçar centenas de horas valiosas de engenharia em problemas que não têm nada a ver com sua empresa. Nada se compara ao incrível nível de confiabilidade, velocidade e suporte da Alchemy." - Alex Atallah, CTO da OpenSea

Empresas e projetos blockchain de destaque, como OpenSea, Dapper Labs, 0x, Royal, Axie Infinity e centenas de outros, escolhem a Alchemy pela nossa altíssima confiabilidade, atendimento ao cliente lendário e conjunto incrível de produtos que torna construir na Web3 mais acessível do que nunca.

Logos de empresas que constroem na Alchemy, incluindo OpenSea e Dapper Labs

Crie uma conta na Alchemy e comece a construir imediatamente sem precisar se preocupar com nodes! Se você tem interesse em saber mais sobre como a Alchemy pode ajudar na sua jornada de construção na Web3, confira nossa documentação Getting Started With Alchemy ou visite a central de suporte da Alchemy.

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.