Nó
Um computador rodando o Bitcoin
Um nó é um computador rodando o programa Bitcoin.
Ele se conecta a outros nós na rede para compartilhar informações sobre transações e blocos.
Um nó é qualquer dispositivo que envia, recebe ou processa dados conectado a uma rede.
A forma mais fácil de se tornar um nó é baixar e rodar o software Bitcoin Core.
Função
O que um nó faz?
Um nó tem duas funções principais:
1. Manter uma cópia da blockchain
Quando você roda o Bitcoin pela primeira vez, ele se conecta a outros nós da rede para baixar uma cópia completa da blockchain.
Isso permite que seu nó se atualize com o estado atual da blockchain, para que você possa começar a receber (e validar) as transações e blocos mais recentes sendo enviados pela rede.
Baixar a blockchain completa também significa que ela está replicada em outro computador. Isso reforça a rede, porque qualquer um que queira destruir o Bitcoin precisaria tentar remover cada cópia da blockchain. E, ao manter uma cópia da blockchain, você ajuda a replicá-la para outros nós que entram na rede no futuro.
- Tamanho atual da blockchain:
- 851,53 GB
- 953.548 blocos
Observação: Este é o tamanho da blockchain no meu nó local. O tamanho da sua blockchain vai variar dependendo de quantas reorganizações de cadeia seu nó passou e de quantos blocos órfãos (stale) você tem armazenados em disco.
O Bitcoin é muito parecido com o torrent, onde muitos computadores diferentes estão semeando o mesmo arquivo (a blockchain).
2. Validar e retransmitir novas transações e blocos
Depois de baixar a cópia mais recente da blockchain, um nó pode começar a receber as transações e blocos mais recentes.
Cada nó verifica as transações e blocos que recebe contra um conjunto de regras, para garantir que são válidos, antes de retransmiti-los aos nós aos quais está conectado.
Como resultado, um nó trabalha constantemente para aplicar regras e transmitir dados pela rede.
Retransmissão de transações:
Retransmissão de blocos:
Requisitos
O que você precisa para rodar um nó Bitcoin?
O Bitcoin é só um programa de computador, então tudo o que você precisa para rodar um nó Bitcoin é um computador e uma conexão à Internet.
Há alguns requisitos de sistema que ajudam o programa a rodar bem:
Espaço em Disco
-
Recomendado: 2+ TB
- Tamanho atual da blockchain: 851,53 GB
Antes de tudo, você vai precisar de um disco grande o suficiente para armazenar a blockchain.
A blockchain também cresce a uma taxa de cerca de 100 GB/ano, então você precisa de espaço disponível em disco para acompanhar se planeja rodar um nó por um período prolongado.
Você pode reduzir drasticamente o espaço em disco necessário rodando um nó podado (pruned).
RAM
-
Recomendado: 2+ GB
- Tamanho atual da mempool: 1,21 vMB
A RAM é usada para armazenar as transações mais recentes na mempool, além de armazenar UTXOs para ajudar a acelerar a validação de novas transações e blocos.
Você não precisa de uma quantidade enorme de RAM para rodar o Bitcoin, mas quanto mais você puder dar a ele, mais eficientemente ele vai rodar.
Banda (Bandwidth)
-
Recomendado: 2+ TB/mês
- Entrada: 1,60 GB/dia (média)
- Saída: 28,57 GB/dia (média)
Um nó está constantemente enviando e recebendo dados (transações e blocos) de e para outros nós da rede, então você vai precisar de banda suficiente para cobrir isso.
Não é uma quantidade exorbitante de dados, mas um nó Bitcoin vai usar significativamente mais banda do que você usaria navegando em sites e enviando e-mails.
Se você é um usuário de torrent, sua banda mensal não será muito diferente do que você vê ao baixar e semear arquivos torrent.
Você pode limitar a quantidade de banda que seu nó usa com a configuração
maxuploadtarget.
Os maiores requisitos são ter o espaço em disco para armazenar a blockchain e banda suficiente para enviar e receber os dados mais recentes da rede.
Então o Bitcoin não é o programa mais leve do mundo, mas é perfeitamente possível rodá-lo em um laptop ou desktop do dia a dia. Na verdade, é comum as pessoas configurarem um nó Bitcoin em um Raspberry Pi.
Você não precisa manter um nó Bitcoin rodando 24/7.
É útil para a rede se você puder mantê-lo rodando o máximo possível, mas você pode iniciar e parar o programa quantas vezes precisar.
As mensagens são transmitidas no melhor esforço possível, e os nós podem sair e voltar à rede à vontade, aceitando a cadeia de prova de trabalho mais longa como prova do que aconteceu enquanto estavam fora.
Comunicação
Como um nó se comunica com outros nós?
Um nó se comunica com outros nós enviando muitas mensagens individuais.
Essas mensagens são enviadas via TCP (Transmission Control Protocol), uma forma comum de dois computadores em uma rede se comunicarem entre si.
Cada nó também precisa seguir um protocolo Bitcoin específico ao se comunicar, que é basicamente apenas um conjunto de regras sobre a estrutura e a ordem das mensagens enviadas entre os nós.
Então, além de seguir um protocolo único, não há nada de especial na forma como os nós se comunicam entre si. Da mesma forma que o seu computador e o meu servidor tiveram que se conectar um ao outro e seguir um protocolo para baixar esta página web (HTTP), os nós Bitcoin têm seu próprio protocolo customizado para enviar e receber transações e blocos (o Protocolo Bitcoin).
Seu nó vai manter uma conexão TCP com vários outros nós da rede, então seu nó vai estar enviando e recebendo muitas mensagens entre múltiplos computadores ao mesmo tempo. Por exemplo, o nó rodando neste site atualmente tem 114 conexões de entrada e 10 de saída.
A Rede Bitcoin é completamente aberta e acessível a qualquer um. Então, desde que você siga as regras para conectar e enviar mensagens, qualquer um pode escrever o próprio software para se comunicar com um nó. Veja redes para mais detalhes.
Benefícios
Por que rodar seu próprio nó?
Há algumas razões pelas quais você pode querer rodar seu próprio nó Bitcoin.
1. Confiança
Rodar seu próprio nó significa que você não precisa confiar em mais ninguém para obter informações sobre transações.
Isso significa que você pode saber com 100% de certeza que cada pagamento que recebe é válido, e que cada consulta que faz sobre a blockchain está correta. Se você não roda seu próprio nó, está confiando em outra pessoa que roda um nó para te enviar informações corretas sobre transações e blocos.
Eu nunca tive problema em obter dados de outros nós antes, mas se você quer cortar o intermediário completamente e não ter que depender de mais ninguém, rodar seu próprio nó é a forma de fazer isso.
Na sua forma mais pura, é disso que o Bitcoin se trata.
Não confie, verifique.
2. Privacidade
Rodar seu próprio nó significa que você não precisa compartilhar suas transações com serviços de terceiros.
Se você não roda seu próprio nó, precisa usar um site ou carteira de terceiros que roda um nó para enviar transações à rede por você. Esses serviços de terceiros podem rastrear suas requisições junto com seu IP para ajudar a montar um retrato das suas atividades.
Como você pode imaginar, isso não é ótimo para a privacidade.
Porém, ao rodar seu próprio nó, você pode transmitir transações diretamente pelo seu próprio nó, de modo que elas não passam mais por um intermediário antes de chegar à rede. Da mesma forma, você pode obter dados da sua própria blockchain sem ter que usar um site explorador de blockchain de terceiros.
Novamente, eu nunca tive problema em usar carteiras ou exploradores de blockchain confiáveis (até agora), mas é importante estar ciente de que há um potencial vazamento de privacidade se você fizer isso.
3. Apoiar a rede
Rodar seu próprio nó apoia a rede de duas formas:
- Replicação da blockchain. O Bitcoin é difícil de matar porque todo o histórico de transações está replicado pelo mundo, então adicionar mais um nó à rede torna o Bitcoin mais resiliente. Por exemplo, se todos os outros nós da rede explodissem e perdessem sua cópia da blockchain, você efetivamente estaria sustentando o sistema inteiro até que outros nós pudessem rebaixar a blockchain a partir de você.
- Transmissão de dados. O Bitcoin funciona porque muitos nós individuais cooperam para espalhar as transações e blocos mais recentes pela rede. Então, ao rodar um nó, você adiciona mais um retransmissor à rede. Por exemplo, se um monte de nós caíssem e alguns nós não conseguissem se conectar entre si por algum motivo, seu nó poderia acabar sendo um elo vital entre diferentes partes da rede.
Rodar um nó é como semear um arquivo torrent; e todo mundo adora um seeder.
Em resumo, ao rodar um nó você ajuda a rede a se manter viva.
Claro, o benefício de aumentar o número de nós diminui depois que a rede atinge um certo tamanho. Afinal, se há 10.000 cópias da blockchain espalhadas pelo mundo e todos os nós têm conexões saudáveis entre si, adicionar mais um nó não vai fazer uma diferença enorme. Então não é crucial que cada homem, mulher e geladeira inteligente faça o melhor para rodar um nó.
Mesmo assim, o Bitcoin é um sistema descentralizado que só existe porque as pessoas se voluntariam para rodar nós, e, ao fazer isso, você está contribuindo para a visão compartilhada que o mantém vivo.
E uma rede nunca pode ser resiliente demais.
4. Desenvolvimento
Rodar seu próprio nó é útil se você planeja se tornar um desenvolvedor de Bitcoin.
Há algumas vantagens:
- Dados. Se você tiver seu próprio nó completo, terá acesso a todos os dados do bitcoin no seu computador local. Por exemplo, você pode consultar rapidamente dados de blocos, transações e da rede usando comandos
bitcoin-cli, ou pode analisar a blockchain inteira usando ferramentas como o bitcoin-iterate. Algumas dessas tarefas seriam lentas e/ou difíceis se você dependesse de uma API de terceiros para seus dados. - Código-fonte. Se você compilar o Bitcoin Core do zero, terá acesso ao código que o faz rodar. Isso permite navegar pelo código no seu computador para ver como algo funciona, e brincar com ele para tentar fazer melhorias no software.
Em resumo, se você vai trabalhar com um programa, provavelmente vai querer sua própria cópia dele.
Claro, rodar seu próprio nó não é um requisito para criar suas próprias ferramentas para Bitcoin, mas é bom tê-lo ali. Eu instalo o Bitcoin Core em todos os meus computadores, mesmo que eu não o esteja rodando continuamente como um nó.
Definições
Quais são os diferentes tipos de nó?
Há alguns termos diferentes que descrevem os diferentes tipos de nó na rede Bitcoin.
Nó Completo (Full Node)
Um nó completo é um nó que consegue acompanhar a blockchain e validar os blocos e transações que recebe.
Um nó completo recebe uma cópia completa da blockchain, o que significa que tem memória de todo o histórico de transações e consegue determinar se qualquer novo bloco ou transação que recebe é válido.
Em outras palavras, um nó completo é capaz de aplicar as regras do sistema sobre todos os dados que passam por ele, e é, portanto, um participante ativo da rede.
Há dois tipos de "nó completo":
1. Nó de Arquivo (Archival Node)
Um nó de arquivo mantém uma cópia completa da blockchain.
Isso significa que ele pode replicar a blockchain inteira para qualquer novo nó que entrar na rede.
2. Nó Podado (Pruned Node)
Um nó podado não mantém uma cópia completa da blockchain.
Em vez disso, um nó podado recebe uma cópia completa da blockchain, mas vai deletando os blocos mais antigos, mais abaixo na cadeia, conforme avança, para economizar espaço em disco.
Então, embora um nó podado seja útil porque ainda consegue aplicar as regras do sistema (ou seja, validar e retransmitir novos blocos e transações), a única coisa que ele não consegue fazer é servir uma cópia completa da blockchain para novos nós que entram na rede.
Um nó mantém uma cópia de todos os UTXOs em um banco de dados separado, então, mesmo que um nó podado delete os blocos mais antigos conforme avança, ele sempre vai ter uma cópia completa dos UTXOs para referenciar, permitindo que valide novas transações e blocos.
Nó Leve (Lightweight Node)
"Thin Node", "Thin Client", "Lightweight Client"
Um nó leve é um nó que consegue acompanhar a blockchain, mas não consegue validar os blocos e transações que recebe.
Em vez disso, um nó leve consegue verificar que um bloco ou transação existe na blockchain, mas não consegue confirmar que são válidos.
Em outras palavras, um nó leve é incapaz de aplicar as regras do sistema e, portanto, não é um participante ativo da rede.
É mais correto se referir a um "nó leve" como um cliente. Um nó é um participante ativo na rede, ao passo que um cliente efetivamente apenas lê dados de outros nós da rede.
Carteira SPV
Simple Payment Verification (Verificação Simples de Pagamento)
Um tipo comum de nó leve é o que se conhece como carteira SPV (ex.: Electrum).
Uma carteira SPV só recebe os cabeçalhos de bloco da blockchain (que são muito menores que blocos completos), o que permite que ela acompanhe como a cadeia mais longa se parece:
Ela pode então solicitar uma prova a um nó completo para confirmar se uma transação específica está em um bloco específico:
Graças a essa prova, a carteira SPV pode ter confiança de que a transação está de fato dentro do bloco, e pode atualizar o saldo da carteira.
Porém, embora uma carteira SPV use mínima banda e espaço em disco (e consiga verificar que transações existem na blockchain), ela tem que confiar que a informação que está recebendo de um nó completo é válida.
Por exemplo, um nó completo poderia construir um cabeçalho de bloco válido e enviá-lo a uma carteira SPV, mas o bloco propriamente dito poderia conter transações inválidas. Em outras palavras, um nó completo pode mentir para um nó leve se quiser.
Daria muito trabalho para um nó completo mentir para uma carteira SPV dessa forma, pois o nó completo precisaria minerar um bloco inválido de propósito. Então uma carteira SPV opera sob a suposição de que seria custoso demais para um nó completo querer mentir para ela.
Se você quer ter certeza de que todas as transações que está vendo são válidas sem ter que confiar em ninguém, você precisa rodar um nó completo.
Minerador
Um minerador é alguém que trabalha para pegar transações da memory pool e adicioná-las à blockchain.
Porém:
- Um nó nem sempre é um minerador.
- Um minerador não precisa ser um nó.
No Whitepaper do Bitcoin, os nós às vezes são chamados de mineradores, e os mineradores são sempre considerados como rodando como nós completos.
No entanto, um minerador não precisa estar realizando a função de um nó. Em vez disso, um minerador pode simplesmente se conectar a um nó completo para obter as informações de que precisa para construir um bloco candidato, e então enviar o bloco de volta ao nó completo quando terminar.
Então, embora seja mais fácil pensar em um minerador como um "nó completo que minera blocos", tecnicamente falando um nó e um minerador podem ser separados para realizar dois papéis distintos.
Muitos dos diagramas neste site assumem que um minerador está sempre rodando como um nó completo. Eu fiz isso para manter os diagramas o mais simples possível.
Implementações
Que software eu preciso para rodar um nó completo?
A forma mais fácil de rodar um nó completo é baixar a implementação original:
No entanto, há implementações alternativas para rodar um nó Bitcoin, se você preferir:
Todas essas são bem menos populares que o cliente original, e eu recomendaria ficar com o Bitcoin Core se você é novo na configuração de um nó completo.
Todos os comandos bitcoin-cli mencionados neste site supõem que você está rodando um nó Bitcoin Core.
Software Personalizado
Nada impede você de escrever seu próprio software de nó, se quiser.
A rede Bitcoin é completamente aberta, então, se você descobrir como se conectar a outros nós e seguir as regras da rede (ou seja, conseguir enviar e receber transações e blocos), então conseguirá usar o Bitcoin com o seu próprio software. O que é bem legal.
No entanto, algumas pessoas acham que seria melhor se não houvesse muitas (ou nenhuma) implementação concorrente do software do Bitcoin:
Eu não acredito que uma segunda implementação compatível do Bitcoin algum dia seja uma boa ideia. Tanto do design depende de todos os nós obterem resultados exatamente idênticos em sincronia que uma segunda implementação seria uma ameaça à rede.
Por outro lado, se você tem múltiplas implementações, então é menos provável que elas sejam afetadas pelos mesmos bugs. Então, se todos os nós da rede rodando uma implementação específica caíssem por causa de um bug sério, os nós rodando uma implementação diferente continuariam online e manteriam a rede funcionando (supondo que não sofressem dos mesmos bugs).
Então eu consigo entender por que ter uma única implementação seria preferível em termos de simplificar o desenvolvimento, mas acho que é uma coisa boa ter nós na rede rodando diferentes implementações do software.
Mas, o mais importante, ninguém pode te impedir de escrever seu próprio software de nó se você quisesse, de qualquer forma.
E é disso que o Bitcoin se trata.