Como executar um nó completo Bitcoin sobre o Tor em uma máquina virtual Ubuntu (Linux)

8bg Blocked Desbloquear Seguir Seguindo 10 de janeiro

Um guia passo-a-passo para colocar um Bitcoin Full Node rodando no seu computador – sem experiência prévia!

Nodos completos são o sistema nervoso do Bitcoin!

Como tudo isso opera em uma máquina virtual, você não precisa se preocupar em corromper seu sistema operacional principal / host. Isso fornecerá a você um playground de nó Bitcoin de baixo risco. Este guia é feito com a versão Microsoft Windows do VirtualBox, mas o processo é quase idêntico no MacOS.

Como sei o quanto pode ser difícil encontrar guias atualizados para esse tipo de configuração, planejo atualizar este guia regularmente com novos lançamentos do Bitcoin Core, VirtualBox e Ubuntu. Espero que isso garanta que curiosos consertadores sempre tenham um guia preciso e atualizado disponível.

Esta versão inicial será principalmente baseada em texto, mas em futuras revisões, espero adicionar capturas de tela ou até mesmo vídeos de diferentes etapas. Por favor, consulte as referências na parte inferior – eu não poderia ter compilado este guia sem eles.

Parte Zero – Visão Geral

Neste guia, estaremos realizando quatro tarefas principais:

  1. Configurando um host da máquina virtual do VirtualBox
  2. Instalando e configurando a última versão estável e de suporte a longo prazo do Ubuntu Server nesse host de máquina virtual
  3. Instalando e configurando um nó completo do Bitcoin Core (bitcoind)
  4. Configurando o bitcoind para executar a rede Tor (isso protege a sua privacidade enquanto convenientemente evita a necessidade de modificar quaisquer configurações do roteador doméstico para permitir o tráfego de entrada da rede Bitcoin)

Parte um – pré-requisitos

Como um verdadeiro nó completo requer o download e o armazenamento de todo o histórico do blockchain do Bitcoin, você precisará garantir que tenha aproximadamente 200 GB de espaço livre no disco rígido, idealmente mais próximo de 250 GB. Embora você possa executar o que é conhecido como “podar” para reduzir a quantidade de espaço em disco usada após o download inicial do blockchain, não cobrirei isso aqui.

O tamanho do blockchain também significa que, dependendo da sua conexão de rede, o download / sincronização inicial pode levar horas, dias … ou até mais. Seja paciente!

Parte Dois – Configurando a plataforma do VirtualBox

VirtualBox é um programa gratuito de código aberto para executar máquinas virtuais no seu computador. Para fazer o download, visite https://www.virtualbox.org/

Baixe a versão mais recente (atualmente 5.2.22) para a sua plataforma, que para mim (no Windows 10) é VirtualBox-5.2.22–126460-Win.exe

Inicie o instalador exe e simplesmente aceite todos os padrões. Quando isso estiver concluído, estamos prontos para instalar o Ubuntu!

Parte Três – Configurando nossa máquina virtual do servidor Ubuntu Linux

O Ubuntu é uma das distribuições mais populares do sistema operacional Linux e é gratuito para download e uso. Neste guia, usarei o que é conhecido como a versão LTS (suporte a longo prazo), que é suportada e forneceu atualizações de segurança por cinco anos.

Isso é ótimo para um servidor “sem cabeça” (sem GUI), onde não são necessários gráficos extravagantes ou aplicativos de consumo de última geração. Dito isto, você poderia usar sua versão mais recente e atualizada com mais frequência. Apenas esteja ciente de que as coisas podem quebrar… Mas o Bitcoin é conhecido por sua estabilidade de código, então faz sentido executá-lo em um sistema operacional que também é conhecido por sua estabilidade de código!

Para começar, baixe a última versão do LTS (atualmente 18.04LTS) do site do Ubuntu: https://www.ubuntu.com/download/server/thank-you?version=18.04.1&architecture=amd64 . O nome do arquivo para esta versão é ubuntu-18.04.1-live-server-amd64.iso

Uma vez baixado o arquivo ISO (imagem de disco), inicie o Virtual Box. Você será presenteado com a interface principal, que está bastante em branco no momento. Então, vamos adicionar uma nova VM:

(Futuro acréscimo: como adicionar um segundo host de rede para que possamos fazer SSH na VM para facilitar a cópia / colagem de texto)

Clique em Novo

Dê um nome à VM, como o Ubuntu Server – o que você quiser

Em Type selecione Linux

Na versão selecione Ubuntu (64 bits)

Na caixa de diálogo Tamanho da memória , escolha o máximo de memória possível sem afetar negativamente sua capacidade de usar seu computador enquanto o VirtualBox estiver em execução. Eu tenho 16GB de RAM no meu computador host, então vou escolher ~ 4GB aqui. Quanto mais memória você puder alocar, melhor, como o download / sincronização inicial do blockchain do Bitcoin consome muita memória. Você sempre pode dimensionar isso de volta (ou para cima) mais tarde, conforme necessário.

Na caixa de diálogo Disco rígido , selecione Criar um disco rígido virtual agora e clique no botão Criar

Na caixa de diálogo Tipo de arquivo do disco rígido , deixe a VDI selecionada.

Na caixa de diálogo Armazenamento no disco rígido físico , deixe Dinamicamente alocado selecionado.

Na caixa de diálogo Localização e tamanho do arquivo , você deverá escolher pelo menos 200 GB . No momento em que escrevo, o banco de dados blockchain consome aproximadamente 180 GB e você precisa de espaço para crescimento. Observe que o VirtualBox não consumirá esse espaço imediatamente, mas aumentará o tamanho do disco virtual conforme necessário, até esse limite.

Clique em Criar

A instalação será concluída e você verá uma nova entrada na coluna à esquerda listando sua nova máquina virtual. Agora precisamos começar a trabalhar!

Parte Quatro – Instalando o Ubuntu Linux em nosso novo disco de máquina virtual

Escolha Iniciar no menu principal do VirtualBox. Você será solicitado a fornecer um disco de inicialização. Escolha o arquivo .iso do Ubuntu que baixamos anteriormente e clique em Iniciar .

O instalador do Ubuntu será lançado. Após uma breve espera, você será saudado com a tela de boas-vindas. Como esse é um instalador de servidor sem cabeçalho, não há uma interface gráfica tradicional baseada em mouse.

Para navegar pelo instalador baseado em texto, você deve usar as teclas de seta para mover-se entre as seleções, a tecla Tab para ir para os botões de confirmação (sim / não / pronto / continuar) e a tecla Enter para selecionar. Você também pode usar as teclas de seta para percorrer todo o caminho até os botões de confirmação, mas Tab é muito mais rápido.

Página 1Tela de boasvindas

Escolha seu idioma preferido (lembrete – navegue com as teclas de seta e pressione Enter quando seu idioma estiver destacado)

Página 2Configuração do teclado

Selecione o layout do teclado (o padrão geralmente é bom – basta pressionar Enter )

Página 3Instalação do Ubuntu

Deixar Instalar o Ubuntu selecionado

Página 4Conexões de rede

Suas configurações de rede devem ser automaticamente identificadas e um endereço IP local gerado. Se isso não acontecer, a resolução está muito além do escopo deste guia – você precisará procurar ajuda.

Página 5Configurar proxy

Deixe em branco

Página 6Configurar o espelho de arquivo do Ubuntu

Deixar o Espelho padrão selecionado

Page 7 aConfiguração do sistema de arquivos

Deixar usar um disco inteiro selecionado

Página 7b

Escolha o disco padrão para instalar

Página 7c

Aceite o layout padrão do sistema de arquivos

Escolha Continuar na caixa de diálogo Confirmar ação destrutiva (lembre-se, estamos em uma Máquina Virtual, portanto, isso não está apagando nada no seu sistema operacional host / principal!)

Página 7d

Digite seu nome (ou o que você preferir), um nome para o servidor e um nome de usuário e senha. O nome de usuário inserido aqui será aquele que usamos para executar o próprio serviço Bitcoind. Para este guia, vou usar o núcleo

Deixar Importar identidade SSH definida como Não

Página 7e

Deixar todos os Snaps de servidor em destaque não selecionados

Página 10 (sim, pula de 7 para 10) – Instalação do sistema

Você só precisa esperar aqui até a conclusão da instalação, geralmente apenas alguns minutos

Página 11Instalação completa!

Escolha Reiniciar Agora

Pressione Enter quando solicitado a Por favor, remova a mídia de instalação

A VM será reinicializada e, após alguns minutos, você verá o prompt de login. (Pode ser necessário pressionar Enter quando as mensagens de inicialização pararem – às vezes, o prompt de login não aparecerá de outra forma).

Antes de prosseguirmos para a próxima seção deste guia, queremos garantir que nosso servidor esteja atualizado com as últimas atualizações de segurança e software.

Para fazer isso, faça o login e, em seguida, no tipo de prompt

 sudo apt-get update e& sudo apt-get upgrade 

Digite sua senha quando solicitado, pressione Enter e aguarde que tudo seja atualizado. Você deve executar o comando acima periodicamente para garantir que seu servidor esteja atualizado com os patches de segurança!

Agora podemos chegar à parte divertida: instalando o servidor Bitcoin-Core, bitcoind!

Parte Cinco – Instalando o servidor Bitcoin Core (bitcoind)

Para instalar o bitcoind, nós estaremos baixando e compilando o código-fonte tanto para o bitcoin quanto para o Berkeley Database que ele usa para armazenar as informações da carteira. Antes de podermos fazer isso, precisaremos instalar algum software de pré-requisito.

Primeiro, precisamos ativar um repositório de software adicional que contenha algumas ferramentas de compilação essenciais (você precisará inserir sua senha para a maioria dos comandos a seguir):

 sudo add-apt-repository universe 

Pacotes adicionais serão instalados. Depois de concluído, podemos instalar nossos outros pré-requisitos:

 sudo apt-get instalar build-essential autoconf libtool pkg-config libboost-all-dev libssl-dev libevent-dev doxygen libzmqpp-dev 

Estamos prontos para instalar o software de banco de dados BerkeleyDB que é necessário para a funcionalidade de carteira do Bitcoin. Primeiro, usaremos o comando wget para fazer o download do software:

 wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz 

Em seguida, verificaremos se o download é autêntico / não foi adulterado:

 echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256sum -c 

Se a saída terminar em “OK”, o arquivo estará seguro! Os próximos comandos irão extrair o software, definir algumas variáveis de ambiente e configurá-lo, compilá-lo e instalá-lo. Digite cada comando separadamente!

 tar -xvf db-4.8.30.NC.tar.gz 
 cd db-4.8.30.NC/build_unix 
mkdir -p build
 BDB_PREFIX = $ (pwd) / build 
 ../dist/configure --disable-shared --enable-cxx --with-pic --prefix = $ BDB_PREFIX 
 faça instalar 

O último passo levará alguns minutos. Quando terminar, podemos – finalmente! – baixe, configure, compile e instale o Bitcoin Core.

Primeiro, certifique-se de retornar ao diretório inicial do Ubuntu (que é um til, geralmente no seu teclado à esquerda do numeral 1):

 cd ~ 

Usaremos a ferramenta de versionamento do software Git para baixar o código-fonte do Bitcoin e sincronizá-lo com nossa VM:

 clone git https://github.com/bitcoin/bitcoin.git 

Agora precisamos verificar a versão estável mais recente (atualmente v0.17.0.1 – você pode executar a git tag para as versões de lista):

 cd bitcoin 
 git checkout v0.17.0.1 
 git status 

O último comando deve relatar o HEAD desanexado seguido pelo número da versão que você solicitou. Estamos prontos para obter os scripts de construção preparados para compilar a origem:

 ./autogen.sh 

Poucos minutos depois, estamos prontos para configurar as opções que queremos compilar em nossa compilação Bitcoin. Para este artigo, não usaremos a Interface Gráfica do Usuário (GUI), para que possamos desabilitar isso. Os outros flags misteriosos são usados para dizer ao compilador onde / como usar o Berkeley Database:

 ./configure CPPFLAGS = "- $ {BDB_PREFIX} / include / -O2" LDFLAGS = "- L $ {BDB_PREFIX} / lib /" --with-gui = não 

Finalmente, estamos prontos para compilar! Este passo pode demorar bastante, dependendo da velocidade do seu sistema, por isso seja paciente – vá fazer café!

 faço 
 fazer cheque 
 sudo make install 

Depois de terminar seu café, podemos continuar configurando o Bitcoin para usar o Tor.

Parte 6 – Configurando o Bitcoin para usar o Tor

Antes de lançarmos o servidor Bitcoin Core (bitcoind), precisaremos criar seu arquivo de configuração para garantir que ele faça o download do histórico completo de blockchain (para que possamos inspecionar diretamente qualquer transação) e use apenas conexões Tor. Por padrão, mesmo que você tenha o Tor instalado e configurado, o bitcoind continuará a se comunicar com os nós através do TCP – nós temos que explicitamente dizer para usar somente o TOR para proteger nossa privacidade:

 cd ~ 
 mkdir .bitcoin 
 toque em .bitcoin / bitcoin.conf 
 echo "txindex = 1" >> .bitcoin / bitcoin.conf 
 echo "onlynet = cebola" >> .bitcoin / bitcoin.conf 

Observe que, se posteriormente você determinar que o bitcoind está consumindo muito rendimento em sua rede, poderá ajudar a reduzir seu uso limitando quantos outros nós se conectam por vez:

 echo "maxconnections = 20" >> .bitcoin / bitcoin.conf 

Experimente com números diferentes em que usei 20 acima até atingir um nível aceitável de taxa de transferência de rede.

Note que o download inicial do blockchain leva muito tempo, mas leva mais tempo até que o Tor, já que a rede Tor é um gargalo. Você pode considerar permitir o download inicial do blockchain diretamente sobre o TCP (colocando # na frente da linha Onlynet para desabilitá-lo). Depois disso, você pode prosseguir com os recursos do Tor abaixo. Observe que fazer isso exporá seu endereço IP externo à rede, no entanto.

Agora precisamos instalar o Tor, que é simples no Ubuntu:

 sudo apt-get install tor 

Assegure-se de que as seguintes linhas estejam (em qualquer lugar) no arquivo de configuração Tor – / usr / share / tor / tor-service-defaults-torrc :

ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1

Para ver as configurações padrão, use o comando:

 menos / usr / share / tor / tor-service-defaults-torrc 

Se alguma das linhas acima estiver faltando, adicione-as usando o comando echo como antes, por exemplo:

 sudo sh -c "echo 'ControlPort 9051' >> / usr / compartilhamento / tor / tor-service-defaults-torrc" 

Se você tiver que adicionar qualquer uma das linhas acima, não se esqueça de reiniciar o serviço do Tor:

 sudo /etc/init.d/tor restart 

Para permitir o acesso bitcoind à autenticação que o Tor usa, temos que adicionar o usuário que executa o bitcoind (aquele que você instalou anteriormente ao instalar o Ubuntu) no grupo Tor (para mim, vou colocar o core onde o nome de usuário está listado abaixo, como esse é o usuário que eu configurei anteriormente):

 sudo usermod -a -G nome de usuário do debian-tor 

Agora, certifique-se de fazer logout e voltar para garantir que a associação ao grupo seja atualizada (também pode apenas reiniciar a VM, se desejar). Feito isso, finalmente estamos prontos para lançar o Bitcoin sobre o Tor!

 bitcoind -daemon 

Você pode usar o seguinte comando para monitorar o progresso:

 tail -f ~ / .bitcoin / debug.log 

Pode levar vários dias (ou mais) para baixar e inicializar o blockchain inteiro. Depois disso, seu nó estará totalmente operacional e poderá servir blocos para outros nós na rede Tor. Você desejará verificar se IPv4 e IPv6 estão definidos como "false" na seguinte saída de comando para garantir que você esteja operando APENAS sobre o Tor:

 bitcoin-cli getnetworkinfo 

Quando seu nó estiver totalmente sincronizado e servindo ativamente blocos para outros nós, você poderá executar o seguinte comando para ver se está fazendo isso. Se você vir algum resultado “verdadeiro”, está funcionando!

 bitcoin-cli getpeerinfo | grep true 

Sinta-se à vontade para fazer qualquer pergunta ou postar sobre problemas nos comentários. Obrigado pela leitura!

Referências

https://medium.com/@lopp/how-to-run-bitcoin-as-a-tor-hidden-service-on-ubuntu-cff52d543756

https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch03.asciidoc

https://www.reddit.com/r/Bitcoin/comments/4y7nc3/create_bitcoin_full_node_with_tor_step_by_step/?st=j5n7z1q1&sh=392084c9

https://hackernoon.com/a-complete-beginners-guide-to-installing-a-bitcoin-full-node-on-linux-2018-edition-cb8e384479ea