Pular para o conteúdo
0%

O que é um nó Geth e como executar um

Alchemy team headshot

Escrito por Alchemy

Publicado em 18 de abril de 20225 min de leitura

Introdução ao Geth e nós

Nós Ethereum são computadores que fazem parte da rede blockchain Ethereum. Esses nós são computadores reais que executam software que verifica, armazena e, às vezes, cria blocos.

"Client" é o nome do software em si. Ele nos permite interagir com a blockchain através de uma API JSON-RPC, ler e verificar a blockchain, e ler ou escrever em smart contracts.

Geth é um desses clients e um dos mais populares. É escrito na linguagem de programação Go e mantido atualizado por um grupo de pessoas que trabalham para a Ethereum Foundation e outras que colaboram.

Algumas características do Geth:

  • Vem com um console JavaScript que pode ser executado com "geth console".
  • O client funciona com outros clients JavaScript (web3js).
  • A testnet Rinkeby já vem integrada (ou você pode montar sua própria rede Ethereum privada)
  • Costuma ser considerado o padrão de referência para outros nós Ethereum.

Neste post do blog da Alchemy, vamos aprender a instalar e executar um nó Geth.

Redes (Mainnet vs testnet) e Geth

Para entender os nós Geth, precisamos entender as diferentes redes do Ethereum.

O Ethereum possui uma única rede principal (Mainnet) onde todas as transações acontecem, mas também usa uma série de outras redes de teste criadas para testar funcionalidades (Testnet). Considere usar essas blockchains de "teste" para experimentar recursos da blockchain fora do seu localhost.

1. Mainnet

A mainnet do Ethereum é a rede usada para gerar Ethereum. O ETH pode ser minerado ou negociado em exchanges, e está sempre disponível.

2. Ropsten

Ropsten é uma rede de teste que mais se aproxima da mainnet. É baseada no mesmo proof of work. Essa rede de teste Ropsten é vulnerável a ataques de spam, já que o ETH de teste é minerado da mesma forma que o ETH da Mainnet e é fácil de obter, sem valor real.

3. Rinkeby

A testnet Rinkeby usa proof of authority, o que significa que você não conseguirá obter ETH de teste a menos que consiga provar quem você é. Isso é feito vinculando um endereço Ethereum a uma conta de rede social, como o Facebook. Isso torna muito mais difícil atacar a rede, já que obter uma grande quantidade de ETH exige um esforço significativo. A Rinkeby só pode ser acessada por nós Geth.

Para começar a construir na testnet Rinkeby, obtenha Rinkeby Ether em um faucet gratuito.

4. Kovan

A principal diferença é que a Kovan está disponível apenas em nós parity, e você precisa usar o GitHub para verificar sua identidade.

5. Goerli

A Goerli foi implantada sob o framework Proof-of-Authority. Ela usa a técnica de consenso Clique, desenvolvida inicialmente por Chainsafe e Afri Schoedon. A rede Goerli é mantida pela comunidade e conta com o suporte de Geth, Parity, Nethermind e Hyperledger Besu. A Goerli tem um tamanho de rede, número de nós e variedade de clients maiores do que a Kovan e a Rinkeby.

Saiba como obter Goerli Ether e use o faucet GoETH da Alchemy para começar na rede de teste Goerli.

6. Kiln

No momento em que este texto foi escrito, muitas das testnets acima serão descontinuadas/atualizadas em razão do avanço do Ethereum rumo ao merge do proof of stake ainda este ano. Atualmente, a testnet Kiln é a última testnet pública antes da mudança para o proof of stake.

Essa mudança é uma conquista significativa para a rede Ethereum, que está prestes a passar por algumas das mudanças mais importantes desde sua criação. Assumindo que não haja problemas com a Kiln, as testnets atuais do Ethereum (Goerli, Ropsten, e assim por diante) poderão continuar funcionando sem interrupções.

Saiba mais sobre a testnet Kiln e obtenha Kiln Ether fictício para começar a construir na Kiln.

O que é um nó Geth?

Diagrama dos tipos de nós do Geth: nós light, full e archive na Ethereum

Com o Geth, você pode montar sua própria rede Ethereum privada. A blockchain de uma rede Ethereum começa com um bloco raiz conhecido como bloco gênesis. Não há transações no bloco gênesis.

Existem diferentes tipos de nós Ethereum, mas os nós Geth se dividem em três categorias: light nodes, full nodes e archive nodes.

Light nodes

Como não validam todos os blocos, os light nodes não mantêm uma cópia da blockchain Ethereum. Por isso, dependem de dados dos full nodes. Executar light nodes tem várias vantagens, incluindo inicialização mais rápida, menor uso de armazenamento e menos necessidade de processamento/memória. Os light nodes têm um nível de confiança menor e muitas vezes dependem dos full nodes, o que pode ser um problema.

Light nodes:

  • Armazenam a cadeia de headers e solicitam o restante conforme necessário.
  • Verificam a validade dos dados em relação às state roots nos headers dos blocos.
  • Oferecem uma solução para dispositivos de baixa capacidade, como dispositivos embarcados ou celulares, que não conseguem armazenar gigabytes de dados da blockchain.

Full nodes

Os full nodes verificam se as transações nos blocos seguem os padrões descritos no Ethereum Yellow Paper. Fazem isso para garantir que os blocos transmitidos pela rede sejam genuínos. É possível confiar no trabalho deles. Essa técnica de verificação é usada pelos full nodes para manter a rede em conformidade com os requisitos do Ethereum.

Full nodes:

  • Armazenam todos os dados da blockchain.
  • Participam da validação de blocos e verificam todos os blocos e estados.
  • Derivam todos os estados.
  • Atendem a rede e fornecem dados sob demanda.

Archive nodes

Um archive node é um nó que salva todo o histórico de transações. A saúde e a estrutura da rede dependem desses nós.

Archive Nodes:

  • Armazenam tudo o que é mantido pelo full node e constroem um arquivo de estados históricos. Isso é necessário se você quiser consultar saldos de contas ou qualquer dado on-chain, ou simplesmente testar seu próprio conjunto de transações de forma confiável sem minerá-las usando o OpenEthereum.
  • Fornecem dados que representam unidades de terabytes. Isso os torna menos atrativos para usuários comuns, mas úteis para serviços como block explorers, fornecedores de wallets e análise de dados on-chain.
Diagrama de nós Ethereum alcançando consenso de proof-of-work na rede
source: https://ethereum.org/en/developers/docs/nodes-and-clients/

Requisitos para instalar o Geth

  • CPU multi-core (7GB+ de RAM)
  • Drive SSD local com pelo menos ~600GB+ de espaço livre
  • OPCIONAL Use CPU com 16/32 GB+ para desempenho otimizado por meio de cache. Ao usar os recursos de cache (ou seja, usando a flag '--cache'), o Geth conseguirá obter o estado a partir da memória em vez do disco rígido.
  • Homebrew para usuários de Mac
  • PPA para Linux/Ubuntu
  • OPCIONAL Parity (para mais informações, saiba como migrar do parity para o Geth)‍

Métodos de instalação do Geth

Você pode instalar o Geth via gerenciador de pacotes, via homebrew no MacOS ou PPA no Ubuntu, baixá-lo diretamente, executá-lo em um docker, ou até compilá-lo a partir do zero.

Homebrew usando o terminal do MacOS:

text
Copied
$ brew tap ethereum/ethereum $ brew install ethereum

Confira uma lista de diferentes comandos úteis aqui (abigen, bootnode, checkpoint-admin, clef, devp2p, ethkey, evm, faucet, geth, etc.) ou você também pode executar:

text
Copied
$ geth --help

PPA para linux/ubuntu:

text
Copied
$ sudo add-apt-repository -y ppa:ethereum/ethereum

Instale a versão estável do go-Ethereum:

text
Copied
$ sudo apt-get update $ sudo apt-get install ethereum

Docker:

Baixe o Docker aqui. Depois execute o seguinte:

text
Copied
$ docker pull ethereum/client-go:latest

E então execute:

text
Copied
$ docker run ethereum/client-go:latest

Execute o Geth

Execute este comando em um terminal no local onde descompactamos a pasta do Geth/pasta raiz para que possamos executá-lo:

text
Copied
$ ./Geth console --testnet --syncmode "light" --rpc --rpcaddr "localhost" --rpcport "8485" --rpccorsdomain "*" --rpcapi="db,eth,net,web3,personal"

Isso nos levará diretamente ao console do Geth.

Digitando net, podemos ver se temos algum peer. Digitando eth.syncing, podemos ver se o nó está sincronizando no momento. É possível que seu nó não comece a sincronizar até que você o reinicie.

Por exemplo, executar eth.syncing vai gerar a seguinte consulta de exemplo:

Saída do console do Geth de uma consulta eth.syncing mostrando o progresso da sincronização de blocos

Considerações finais

O Geth já costuma estar incluído na maioria das wallets web/extensão disponíveis para uso do consumidor (MetaMask, Coinbase, Rainbow, etc).

Mas instalar e executar o Geth vale bastante a pena se você quiser experimentar com mineração ou desenvolver seu próprio software Ethereum personalizado. Também é útil se você simplesmente quiser controlar seu próprio nó e a chave da sua wallet (assinando suas próprias transações em vez de depender de software de terceiros). Usando o Geth, você abre um mundo inteiro de desenvolvimento Ethereum!

Background gradient

Construa magia blockchain

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