Como configurar um node bitcoin
Aqui estão documentados os procedimentos ao instalar e executar meu próprio nó Bitcoin.
> (Editado em )
Aqui estão documentados os procedimentos ao instalar e executar meu próprio nó Bitcoin.
> (Editado em )
Existem diversos motivos para executar um nó Bitcoin, como a independência, já que você não depende de outros serviços para verificar informações na blockchain. Além disso, há a questão da privacidade, uma vez que ao usar serviços de terceiros, você pode ser rastreado, pois eles podem armazenar seu endereço IP e as transações que você consultou, podendo até mesmo compartilhar esses dados com governos ou outros terceiros. Outro motivo importante é contribuir para a rede Bitcoin, já que seu nó auxiliará na verificação de blocos. Se preferir, achei esse vídeo prático em inglês1. Você pode obter informações "do zero" sobre o Bitcoin a partir do Guia Bitcoin2, o qual foi criado com base nas minhas anotações também. Não confie cegamente; verifique! ⚠️ Inicialmente, é necessário baixar e instalar o Bitcoin Core e, em seguida, baixar toda a blockchain desde o início. Os passos necessários estão documentados no próprio site oficial3.
Você pode instalá-lo em seu computador, desde que tenha armazenamento e recursos suficientes. Para executar um nó completo, com toda a blockchain, em 15 de fevereiro de 2024, são necessários aproximadamente 600GB. Caso não queira rodar um nó completo, ainda será preciso baixar toda a blockchain, mas depois é possível podar, reduzindo o armazenamento para cerca de 8GB.
Para conferir o hardware que escolhi para rodar o nó, você pode visitar este link, onde detalho as configurações do meu servidor4.
Após baixar e instalar o Bitcoin Core, você terá acesso aos programas bitcoind, bitcoin-qt e bitcoin-cli. Para obter mais informações, você pode visitar a página do desenvolvedor do Bitcoin5. Para iniciar o Bitcoin Core, utilize o comando:
bitcoin -daemon
Dessa forma, ele identificará e verificará os blocos, iniciando o download dos blocos faltantes, o que resultará no download completo da blockchain do zero. Com as configurações do meu servidor, esse processo levou 3 dias. Você pode acompanhar o progresso com o seguinte comando:
tail -f ~/.bitcoin/debug.log
É possível verificar as informações da blockchain com o comando:
bitcoin-cli getblockchaininfo
Para verificar as carteiras:
bitcoin-cli getwalletinfo
Para interromper o processo de forma segura:
bitcoin-cli stop
Normalmente, o diretório .bitcoin
é inicializado na pasta home do usuário que está executando o comando. Optei por definir outro local para a pasta do Bitcoin:
bitcoind -daemon -datadir=/outro/diretorio/qualquer/.bitcoin
O problema é que, dessa forma, é preciso sempre lembrar de fornecer o diretório nos comandos. E caso o arquivo bitcoin.conf6 não esteja no diretório padrão (a pasta home), é necessário especificar a localização dele em outros comandos também. Portanto, resolvi criar um link simbólico do arquivo bitcoin.conf existente no diretório /outro/diretorio/qualquer/general/.bitcoin dentro do diretório padrão do Bitcoin.
ln -s /outro/diretorio/qualquer/.bitcoin/bitcoin.conf .bitcoin/bitcoin.conf
Em seguida, editei o arquivo bitcoin.conf para informar o diretório real. O arquivo bitcoin.conf ficou da seguinte forma:
datadir=/outro/diretorio/qualquer/.bitcoin
Dessa forma, para iniciar o Bitcoin Core, só preciso executar o comando simples sem parâmetros novamente:
bitcoin -daemon
É possível definir caminhos diferentes para sua carteira, blocos, etc. Optei por concentrar tudo nesse diretório, então deletei todos os arquivos dentro da pasta .bitcoin na home, exceto o link simbólico bitcoin.conf.
⚠️ Tenha cuidado! ⚠️ Não deve ser um problema deletar esses arquivos se você acabou de realizar uma instalação limpa. No entanto, se já baixou a blockchain, criou carteiras, tome cuidado e faça sempre backup!⚠️
É recomendável colocar uma senha para evitar execuções remotas não autorizadas. Para isso, baixei o rpcauth.py do código-fonte do Bitcoin7:
wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py
chmod +x rpcauth.py
./rpcauth.py um_usuario_qualquer sua-senha-super-forte
No código acima, é baixado do repositório o rpcauth, é concedida permissão de execução ao script e, finalmente, é executado passando um usuário e uma senha, onde o usuário é um_usuario_qualquer e a senha é sua-senha-super-forte; substitua com suas informações. O resultado será algo do tipo:
~$ ./rpcauth.py um_usuario_qualquer sua-senha-super-forte
String to be appended to bitcoin.conf:
rpcauth=um_usuario_qualquer:88d3ab05478ebca31b4aa61775949cd8$3035beb6aba42014ec7c490ba94128971089c037e463703c3d88e63192c72b77
Your password:
sua-senha-super-forte
⚠️ Não compartilhe essas informações! ⚠️
Após gerado, pegue o valor em rpcauth e salve no arquivo bitcoin.conf. Ele ficará assim, observe os IPs dos dispositivos que eu autorizo as chamadas:
~$ cat .bitcoin/bitcoin.conf
datadir=/outro/diretorio/qualquer/.bitcoin
server=1
txindex=1
daemon=1
rpcport=8332
rpcbind=0.0.0.0
rpcallowip=127.0.0.1
rpcallowip=10.0.0.0/8
rpcallowip=172.0.0.0/8
rpcallowip=192.0.0.0/8
zmqpubrawblock=tcp://0.0.0.0:28332
zmqpubrawtx=tcp://0.0.0.0:28333
zmqpubhashblock=tcp://0.0.0.0:28334
whitelist=127.0.0.1
rpcauth=um_usuario_qualquer:88d3ab05478ebca31b4aa61775949cd8$3035beb6aba42014ec7c490ba94128971089c037e463703c3d88e63192c72b77
Aqui está uma análise das configurações:
Geral:
Interfaces RPC (Remote Procedure Call):
Publicações ZeroMQ:
Existe uma relação entre as configurações rpcbind
e rpcallowip
no arquivo bitcoin.conf
:
rpcbind
determina em qual interface o daemon escuta por conexões RPC.rpcallowip
determina quais endereços IP podem se conectar ao daemon.Exemplo:
rpcbind
estiver definido como 0.0.0.0
(escuta em todas as interfaces) e rpcallowip
estiver definido como 127.0.0.1
(permitir apenas loopback), o daemon só permitirá conexões RPC do loopback local.Vá novamente ao repositório do Bitcoin no GitHub e procure pelo arquivo bitcoind.service. É necessário baixá-lo na pasta /etc/systemd/system/
:
cd /etc/systemd/system/
wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/contrib/init/bitcoind.service
Nesse arquivo, alterei algumas configurações que podem ou não fazer sentido, dependendo de cada um.
Aqui, acrescentei -daemon
e removi conf
e datadir
:
[Service]
ExecStart=/usr/local/bin/bitcoind -daemon \
-pid=/run/bitcoind/bitcoind.pid \
-startupnotify='systemd-notify --ready' \
-shutdownnotify='systemd-notify --stopping'
Modifiquei as linhas User=bitcoin
e Group=bitcoin
para refletir o usuário e grupo correto que irá executar o bitcoind. Comentei #ExecStartPre=/bin/chgrp bitcoin /etc/bitcoin
e #ProtectHome=true
.
Por fim, habilitei, iniciei e verifiquei o status do serviço:
sudo systemctl enable bitcoind
sudo systemctl start bitcoind
sudo systemctl status bitcoind
Dessa forma, sempre que realizar um novo boot, o bitcoind iniciará automaticamente. Mais Informações sobre configurações de serviço para bitcoind aqui8.
Utilizar o Tor é importante para evitar que seu IP seja vazado, proporcionando uma melhoria em sua privacidade quando configurado corretamente.
Instalo o Tor e, em seguida, verifico se o serviço está em execução:
sudo apt install tor
sudo systemctl status tor
Depois, edito o arquivo em /etc/tor/torrc
, acrescentando estas linhas no final do arquivo:
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1
Veja o que cada um significa:
ControlPort
: Define a porta para comandos de controle do Tor.CookieAuthentication
: Habilita a autenticação por cookie para o serviço de controle.CookieAuthFileGroupReadable
: Define se o arquivo de cookie de autenticação pode ser lido por todos os membros do grupo do usuário.Depois disso, é necessário reiniciar o serviço:
sudo systemctl restart tor
E então, é necessário adicionar o seu usuário ao grupo:
sudo usermod -a -G debian-tor seu-user-aqui
No arquivo bitcoin.conf
, foram adicionadas as seguintes linhas para que o bitcoind rode utilizando a rede do Tor:
proxy=127.0.0.1:9051
listen=1
bind=127.0.0.1
onlynet=onion
Após reiniciar o computador, para confirmar que está utilizando a rede Tor, execute o comando bitcoin-cli getnetworkinfo
e verifique se em networks
, tanto IPv4 quanto IPv6, estão com o valor "reachable": false,
e que em localaddresses
há um onion address.
Para fazer o upgrade de versão do bitcoind, pode seguir os mesmos passos da instalação inicial. O binário pode estar mais atualizado, com alguma versão experimental, disponível no site do Bitcoin Core9.
Este texto é orgânico,
criado de forma natural por um humano.
Pode ter passado por correções gramaticais,
com ou sem o auxílio de IA,
mas a essência original permanece intacta.
Blogues são conversas
Entre na conversa via e-mail