# Como rodar seu próprio light node do Ethereum. 

By [Lucca Benedetti](https://paragraph.com/@benedetti) · 2022-07-12

---

Introdução
----------

O Ethereum é uma rede distribuída de computadores rodando _software_ específico que verifica as transações em um bloco, sendo este _software_ conhecido como _client_. Um “_node_” é um computador que roda um _client_ do Ethereum. Até o _Merge,_ apenas um _software_ é necessário para rodar um _full node_ (ou um _light node_, no nosso caso). Após o _Merge,_ além de um _client_ de execução, também será necessário rodar um _client_ de consenso para manter um _node_.

Ao contrário do Bitcoin, em que existe apenas um _software_ de _client_ (o Bitcoin Core), existem diversos _clients_ do Ethereum escritos em diferentes linguagens de programação, como Go, Rust, JavaScript, TypeScript, Python, C#, etc. O que todos estes _clients_ tem em comum são as especificações sobre como a _blockchain_ do Ethereum funciona, definidas no _yellow paper_.

Neste tutorial aprenderemos a rodar um _light node_ utilizado o Geth, cliente do Ethereum escrito em Go. Um _light node,_ ao contrário de um _full node_ não faz o _download_ da história completa da _blockchain_. Na verdade, um _light node_ faz o _download_ de apenas os cabeçalhos de blocos, resultando numa grande diferença de espaço de armazenamento necessário. Enquanto _full nodes_ necessitam de 2TB ou mais de espaço livre, _light nodes_ necessitam de ~400MB, tornando muito mais fácil para o usuário comum rodar em sua máquina pessoal.

Em teoria você poderia rodar qualquer _client_ do Ethereum, entretanto, o único que atualmente suporta _light nodes_ é o Geth.

Instalando o Geth
-----------------

O geth está disponível para praticamente qualquer sistema operacional, e é possível compilar o programa a partir do código fonte se você assim desejar. No link abaixo você pode conferir o processo de instalação do Geth:

[https://geth.ethereum.org/docs/install-and-build/installing-geth](https://geth.ethereum.org/docs/install-and-build/installing-geth)

No meu caso, estarei utilizando uma distribuição Linux baseada no Arch. Para instalar o geth é necessário abrir o terminal e digitar o seguinte comando:

`sudo pacman -S geth`

e pressionar _enter_.

Prontinho! Após digitar sua senha de administrador e confirmar a instalação, o processo deve começar e terminar rapidamente.

![Processo de instalação do Geth](https://storage.googleapis.com/papyrus_images/ed1ea4e4201cdc852c4cf213edbf365787ef92f6e435b0299b9d8d9acaf4019b.png)

Processo de instalação do Geth

Rodando seu light node
----------------------

Agora, com o Geth instalado, é só rodar o seguinte comando em seu terminal:

`geth --syncmode light --http`

![O que você deve ver quando rodar o geth pela primeira vez.](https://storage.googleapis.com/papyrus_images/c53ec89bc38babbbbabf36dbabc8fd8e0263a557fe8aaf7b5649a6789d34ed1c.png)

O que você deve ver quando rodar o geth pela primeira vez.

Com o Geth rodando, o software irá procurar por _peers_ de onde ele pode baixar os cabeçalhos dos blocos. _Peers_ são outros usuários do _software_ que estão rodando _full nodes_ e compartilham os dados com os _light nodes_.

Assim que o Geth encontrar um _peer_ ele começará a importar os cabeçalhos de bloco.

![Geth importando cabeçalhos de bloco.](https://storage.googleapis.com/papyrus_images/8aac4a5a969e7e7e13fc87510042b82f9ef1614af6e49a182193ab9f73a7759b.png)

Geth importando cabeçalhos de bloco.

Porque rodar seu próprio light node.
------------------------------------

No passado já houveram problemas na utilização de Dapps devido a falhas no RPC utilizado pela metamask, o Infura. Mais recentemente, _hackers_ tomaram o controle de RPCs muito utilizados da Fantom e Polygon, fazendo com que usuários perdessem fundos no processo.

Rodando seu próprio _light node_ você deixa de ter de confiar em terceiros, como as empresas que mantém os RPCs mais utilizados, e tem uma maneira de se comunicar diretamente com os _full nodes_ na rede, tornando a experiência mais segura e privada.

Utilizando seu node.
--------------------

Ótimo, agora você está rodando seu próprio _light node,_ mas, como você USA ele?

Se você é como 99% dos usuários de DeFi, você utiliza a MetaMask como sua carteira. Nesta parte do tutorial, iremos aprender a como configurar nosso _light node_ para que possamos utilizá-lo para interagir com o _blockchain_ do Ethereum.

OBS: é possível utilizar seu light node com outras carteiras também.

Se lembra de como utilizamos a opção `--http` quando iniciamos o Geth? Essa opção nos permite conectar facilmente nossa carteira MetaMask ao nosso _light node_.

*   Primeiramente, abra as configurações em sua carteira MetaMask
    

![Como abrir as configurações na MetaMask.](https://storage.googleapis.com/papyrus_images/78c32bf753f0c4b37268bd7aa704db4fdcb68cc6eadc1e84612f43eb814ffdfd.png)

Como abrir as configurações na MetaMask.

*   Selecione a aba “_Networks_”.
    

![Localização da aba "Networks" em sua carteira MetaMask.](https://storage.googleapis.com/papyrus_images/dce3dc336c02672469d778342697c2f85d82499ce7757484c1e1154cce04f406.png)

Localização da aba "Networks" em sua carteira MetaMask.

*   Clique em “Localhost 8545”.
    

![Localização do "Localhost 8545"](https://storage.googleapis.com/papyrus_images/78865872b97335647280f262ead9f0cedde8bb178344d2382a27b82b1712e2f3.png)

Localização do "Localhost 8545"

*   Agora, cheque se seu node está rodando na porta correta. No meu caso, o Geth já estava rodando na porta 8545, então eu só preciso ajustar o “Chain ID” nas configurações. Mude o valor do "Chain ID” para 1 e salve.
    

![Informações da porta utilizada pelo servidor HTTP do Geth.](https://storage.googleapis.com/papyrus_images/74467ac8059e1b6a8d4906997e919fec1058645259c88dd12987b0b4985422ef.png)

Informações da porta utilizada pelo servidor HTTP do Geth.

![Mude o valor do "Chain ID" para 1.](https://storage.googleapis.com/papyrus_images/102a6c4b7287cf745e6c646fd2a642092b38a113a85e9131f0f72b8fcd76963a.png)

Mude o valor do "Chain ID" para 1.

*   Agora, selecione o “Localhost 8545” na tela de seleção de rede de sua MetaMask. Se a opção não aparecer na lista, é necessário que você habilite as redes de teste nas configurações em Settings > Advanced > Show test networks.
    

![Selecione a rede "Localhost 8545".](https://storage.googleapis.com/papyrus_images/fb0ea406294dd3b582987a522a218e6a9d110ae696f44b3034655abada311f88.png)

Selecione a rede "Localhost 8545".

Pronto! você já pode fazer transações e interagir com contratos inteligentes utilizando seu próprio light node! Parabéns!

É importante lembrar que para ter o máximo de privacidade e descentralização, o ideal é rodar seu próprio _full node_. O Geth, hoje, é de longe o _client_ de execução mais utilizado. Se você deseja contribuir com a descentralização do Ethereum rodando seu próprio _full node,_ sugiro que rode outros _clients_, como OpenEthereum, Nethermind, Besu e Erigon.

Para mais informações sobre _nodes_ e _clients_ do _Ethereum,_ leia:

[https://ethereum.org/en/developers/docs/nodes-and-clients/](https://ethereum.org/en/developers/docs/nodes-and-clients/)

Me siga no [Twitter](https://twitter.com/LuccaNBenedetti)!

---

*Originally published on [Lucca Benedetti](https://paragraph.com/@benedetti/como-rodar-seu-pr-prio-light-node-do-ethereum)*
