Como conectar sua Hardware Wallet com seu node usando a Electrum (MacOS)

Canivete Suíço Bitcoinheiro

Bitcoinheiros
13 min readSep 18, 2019

EPS — Como usar sua Hardware Wallet com seu Full node

Este artigo é complementar ao vídeo “EPS-Electrum Personal Server”, parte da série “Canivete Suíço Bitcoinheiro". O artigo está dividido em duas partes:

  • Parte I — Teoria
  • Parte II — Tutorial

Parte I — Teoria

Por que você deve usar sua hardware wallet com seu full node?

O objetivo de fazer o setup para que sua hardware wallet conecte diretamente com o seu node é para que sua experiência com o bitcoin seja mais privada e mais segura.

Para isso, utilizaremos o EPS (Electrum Personal Server), uma implementação do protocolo do servidor Electrum para usar a carteira Electrum, conectada a um full node bitcoin, mas sem a necessidade do back-end de um servidor pesado.

Ele permite que o usuário se beneficie de todos os recursos de economia de recursos do Bitcoin Core como pruning, blocksonly e disabled txindex. Toda a riqueza de recursos da Electrum, como integração de hardware wallets, multisig, assinatura off-line, passphrase, coin selection, entre outras, ainda podem ser usados, mas conectados apenas ao full node do usuário.

Carteiras full node são importantes no bitcoin porque são parte integrante do que torna o sistema confiável. Dessa forma, as pessoas não precisam mais confiar em uma instituição financeira como um banco ou paypal, elas podem executar software em seus próprios computadores.

Se bitcoin é ouro digital, então uma carteira full node é seu próprio ourives pessoal que verifica se os pagamentos recebidos são genuínos.

Carteiras full node também são importantes para a privacidade. Usar a Electrum com a configuração padrão, requer que o envio de hashes de todos os seus endereços de bitcoin para algum servidor. Esse servidor pode, então, espionar facilmente suas transações. Já com a utilização do Electrum Personal server, você terá uma cópia completa da Blockchain que será usada para buscar seus próprios endereços e, dessa forma, não revelará a mais ninguém os endereços do seu interesse.

Exposição à Internet

Neste momento, o Electrum Personal Server é mais fácil de utilizar quando o seu full node e a sua carteira Electrum estão no mesmo computador.

Outras pessoas não devem se conectar ao seu servidor. Por padrão, o servidor aceitará conexões apenas do localhost, embora isso possa ser alterado no arquivo de configuração.

Número de conexões

Neste momento, o Electrum Personal Server só aceita uma conexão por vez.

Como isso é diferente de outros servidores Electrum?

São abordagens diferentes com diferentes compensações. O Electrum Personal Server é compatível com pruning, blocksonly and txindex=0, usa menos CPU e RAM, é adequado para ser usado de forma intermitente em vez de estar sempre ligado e não requer um índice de todos os endereços bitcoin já utilizados. A desvantagem é em casos quando é necessário recuperar uma carteira antiga, pois você terá que importar sua carteira primeiro fazer o rescandescrito acima e, por isso, ela perde o recurso “instant on” da carteira Electrum.

Os servidores tradicionais da Electrum não são muito escaláveis ​​e usam muitos recursos, oque leva as pessoas a usarem soluções centralizadas. É exatamente isso que queremos evitar com o Electrum Personal Server.

Tutorial detalhado passo a passo

O Electrum Personal Server conectará seu full node do Bitcoin à carteira Electrum. Isso possibilitará o uso de todas as funcionalidades da Electrum (suporte para Hardware Wallet, multisig, etc) e, ao mesmo tempo, validar e transmitir tudo com pelo seu full node.

1. Verifique a assinatura do arquivo de instalação

  • Faça o download da assinatura do desenvolvedor Chris Belcher que também pode ser encontrada no reddit. (Fingerprint: 0A8B 038F 5E10 CC27 89BF CFFF EF73 4EA6 77F3 1129)
  • Clique em "Raw"
  • Use Cmd + se salve a chave em uma pasta no seu computador (não altere a extensão do arquivo). Se o arquivo for salvo com alguma extensão além de .asc delete a extensão e mantenha apenas .asc
  • Navegue até a página com os releases e baixe o código-fonte mais recente (.zip) e o arquivo .asc correspondente (necessário para verificar o arquivo baixado).
  • Coloque os arquivos na mesma pasta em que você salvou a chave com a assinatura do Chris Belcher;
  • Verifique a assinatura conforme explicado no tutorial PGP dos Bitcoinheiros ou;
  • Abra o terminal;
  • Altere o diretório de trabalho para o diretório em que os arquivos baixados estão localizados. Se você colocou os arquivos em “downloads”, digite o seguinte (tudo após $) no terminal:
cd ~/downloads
  • Importe a assinatura do Chris Belcher para o PGP usando a interface do programa ou digitando no terminal o comando;
gpg —-import belcher.asc
  • Agora podemos verificar o download digitando (se você baixou outra versão, altere os nomes dos arquivos):
gpg --verify electrum-personal-server-v0.1.7.zip.asc electrum-personal-server-electrum-personal-server-v0.1.7.zip

O resultado deve ser algo semelhante a isto:

Podemos ver que a assinatura foi feita em uma data próxima ao lançamento, é uma boa assinatura e a fingerprintda chave primária é a mesma que no Github. Para ter ainda mais segurança, podemos fazer uma nova pesquisa on-line sobre a fingerprint. Isso confirma de várias fontes que a chave parece pertencer a Chris Belcher. Se você tiver como resultar uma fingerprintdiferente ou uma assinatura incorreta Bad signature, pare e investigue mais.

Se você quiser remover a pasta dos downloads, faça isso agora.

2. Altere as configurações do arquivo config.ini

A configuração do arquivo config.ini é fundamental para que o Electrum Personal Server possa se conectar corretamente à sua carteira da Electrum e passe informações como diretório de sua blockchain e os endereços que a carteira deverá observar.

  • Abra a pasta electrum-personal-server-electrum-personal-server-v0.1.7 e faça uma segunda cópia do arquivo config.ini_sample e renomeie este novo arquivo para config.ini
  • Atenção: Certifique-se de que você alterou a extensão do arquivo de config.ini_sample para config.ini
  • Abra o arquivo config.ini com um editor de texto
  • Importe suas carteiras multisig (caso tenha)

Para importar uma carteira multisig, primeiro abra a carteira na Electrum. Vá para Wallet>Information e copie a Master Public Keydo primeiro cosigner;

No arquivo config.cfg, crie uma nova linha e dê um nome à sua carteira. Se você estiver usando uma multisig 2 de 3, digite 2 (número de assinaturas obrigatórias) após o nome. Em seguida, cole a chave do cosigner 1. Volte à Electrum, copie a chave para o cosigner 2e cole após dar um espaço do cosigner 1 (na mesma linha). Volte para o Electrum e copie e cole a chavecosigner 3. Sua linha deve ficar conforme o exemplo abaixo:

meu_canivete_bitcoinheiro = 2 xpub661MyMwA… xpub6AMQ6ZPNa6… xpub6A2po6ffdf…

Atenção: Esse procedimento armazena suas Master Public Keysem texto não criptografado no seu computador. Um hacker pode se apossar dessa informação e daí derivar todos os seus endereços bitcoin (seus fundos não estão em risco por causa disso mas sim sua privacidade). Portanto, use sempre uma senha forte para proteger sua máquina e outra para ter acesso à sua carteira.

  • Importe suas carteiras comuns que tem apenas uma assinatura

Para adicionar uma carteira com apenas uma assinatura, por exemplo, com uma chave de uma hardware wallet, siga o mesmo procedimento. Abra a carteira na Electrume vá para Wallet>Information e copie a Master Public Key. Escolha um nome e cole-o no arquivo config.ini. Por exemplo:

Hw_Canivete_Bitcoinheiro = xpubkg4QUp5XpUdNf2uGXvQmnD4zcofZ1MN6Fo8PjqQ…
  • Configure a localização do seu diretório Bitcoin (onde está salva a sua blockchain do seu full node) para que a Electrum saiba onde pegar as informações do seu node. Por exemplo:
datadir = D:\Bitcoin
  • Configure o modo de conexão. Você pode usar a verificação RPC padrão para o Bitcoin Core. Nesse caso, o Bitcoin Core cria um arquivo de cookie para você e você não precisa adicionar mais nada ao config.ini
  • Outra alternativa é usar um rpcuser e um rpcpassword forte (muitos caracteres aleatórios) com o Bitcoin Core. Isso pode ser necessário para que aplicativos como a lightningfuncionem. Neste caso, precisará adicioná-lo ao config.ini também. Descomente (remova o #) das duas linhas rpc_usere rpc_password e adicione suas informações.

Veja como seu arquivo config.ini deve estar até o momento (as partes que começam com o # são apenas comentários em texto para organizar o código):

3. Altere a configuração do arquivo bitcoin.conf na pasta /bitcoin

Precisamos adicionar o comando server=1ao nosso arquivo de configuração bitcoin.conf para que o Bitcoin Core possa aceitar conexões do Electrum Personal Server.

server=1

Se você já usa um rpcuser e rpcpassowrd , será necessário também adicionar as linhas abaixo.

server =1
rpcuser=your_user
rpcpassword=your_password

4. Instale o servidor com python

  • Precisaremos do Python 3 para instalar o servidor. Para verificar se já está instalado em sua máquina, digite o comando abaixo no terminal:
sudo python3 --version

Se o Python 3 estiver instalado, você verá uma mensagem no terminal informando algo comoPython 3.7.2. Caso contrário, acesse https://www.python.org/downloads/ , faça o download e instale a versão mais recente.

  • Após confirmada a instalação do Python 3 usar o comando pip para instalar o Personal Server. Ele já deve ser sido instalado com o Python 3, mas certifique-se de ter a versão mais recente executando o comando abaixo no terminal:
sudo pip3 install --upgrade pip
  • Finalizado este procedimento, altere o diretório para a pasta electrum-personal-server. Se estiver localizado em “Downloads”, siga o comando abaixo (certifique-se de alterar o nome do arquivo no comando se estiver usando uma versão mais recente):
cd ~/downloads/electrum-personal-server-v0.1.7

Ou se estiver localizado em seu diretório pessoal, o comando abaixo (todos os demais exemplos estarão com a pasta localizada no diretório inicial):

cd ~/electrum-personal-server-eps-v0.1.7
  • Por fim, use o seguinte comando para instalar o Electrum Personal Server
pip3 install /caminho-do-arquivo/electrum-personal-server-electrum-personal-server-v0.1.7ousudo pip3 install --user

Resolução de erros desta etapa:

  • Se você está recebendo alguma mensagem de erro, confirme que tem instalada a versão mais recente do Python e do Pip.
  • Se você receber a mensagem DistutilsError ao instalar o servidor, talvez não tenha todas as dependências instaladas. Verifique a última linha na mensagem de erro, deve ser algo como Could not find suitable distribution for Requirement.parse ('pytest-runner'). Se esse for o caso, você precisa instalar o pytest-runner.

Para instalar o pytest-runner digite o comando:

sudo pip3 install pytest-runner

E em seguida repita o comando:

sudo pip3 install --user

5. Crie o Script que irá inicializar o Electrum Personal Server

Se tudo foi instalado sem erros, você deve ter dois scripts na sua pasta Python que, por padrão, se encontra em ˜/Library/Python/3.7/bin

electrum-personal-serverelectrum-personal-server-rescan

Abra uma nova janela no findere navegue até a pasta colando o caminho em Go>Go to Folder para confirmar que os scripts foram criados. Se você quiser navegar para a pasta manualmente, talvez seja necessário mostrar pastas ocultas para encontrá-la com o pressionando as teclas Cmd + Shift + .

  • Precisaremos dos caminhos dos arquivos electrum-personal-server e config.cfg que modificamos na pasta descompactada anteriormente. Por agora, vamos colocar o script no Desktop mas posteriormente você pode mudar para onde desejar.
  • Crie um novo arquivo de texto (.txt) e cole os caminhos para os arquivos um após o outro (conforme demonstrado abaixo). Se você usar o python 3.7 e colocar o arquivo descompactado em seu diretório home, a linha deve ser assim:
~/Library/Python/3.7/bin/electrum-personal-server ~/electrum-personal-server-eps-v0.1.7/config.ini
  • Antes de salvar, vá para as configurações e verifique se a Plain Text está selecionada e se a caixa de seleção “If no extension is provided, use ‘.txt’" está desmarcada na aba "Salvar".
  • Em seguida, salve o arquivo como eps na sua área de trabalho.
  • Agora vamos transformar este arquivo de texto em script executável. Para isso, digite o comando abaixo no seu Terminal
chmod 700 ~/desktop/eps
  • Volte para o seu desktop e clique duas vezes no arquivo.
  • O Electrum Personal Serverdeve iniciar e importar os endereços das Master Public Keysque você definiu no config.ini como "endereços de observação" do seu Full node Bitcoin Core.
  • Aguarde a importação terminar.

Resolução de erros desta etapa:

  • Se aparecer um erro como:
WARNING:2019–02–27 09:32:22,102: Unable to find .cookie file, try setting `datadir` config

Talvez você precise configurar seu rpc_user e rpc_password (atenção, não use o símbolo # na sua senha);

Ou precise configurar corretamente o seu diretório Bitcoin e se certificar de que o Bitcoin Core está rodando

  • Se o erro for:
Error with bitcoin json-rpc

Isso significa que o seu Electrum Personal Serverservidor não consegue se conectar com o seu Full node Bitcoin Core . Isso é característico de um erro na configuração doconfig.ini ou do bitcoin.conf .

Abaixo, um exemplo de um arquivo de configuração padrão do config.ini que se conecta utilizando o rpcuser e rpcpassword no bitcoin.conf(pode não ser o seu caso, aí basta não usar estas linhas). Todos os comentários # neste exemplo de arquivo foram removidos para facilitar a leitura, sugerimos que mantenha os mesmos).

[master-public-keys]
multisig_wallet = 2 xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3zgtU6LBpB85b3D2yc8sfvZU521AAwdZafEz7mnzBBsz4wKY5e4cp9LB xpub127pc4e5YKw4zsBBznm7zEfaZdwAA125UZvfs8cy2D3b58BpBL6Utgz3NdLWgninZAxdCv8J1HzSz97yXBsEeVSLX7w8SYEcbRqAwMyM9LB xpub7g5pc4e5YKwBL9MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3zgtU6LBpB85b3D2yc8sfvZU521AAwdZafEz7mnzBBsz4wKY5e4cp9LB
[watch-only-addresses]
[bitcoin-rpc]
host = 127.0.0.1
port = 8332
datadir = ~/Library/Application Support/Bitcoin/
rpc_user = user
rpc_password = password
wallet_filename =
poll_interval_listening = 30
poll_interval_connected = 5
initial_import_count = 1000
gap_limit = 25
[electrum-server]
host = 127.0.0.1
port = 50002
ip_whitelist = *
certfile = certs/cert.crt
keyfile = certs/cert.key

E o que precisa estar no bitcoin.conf (você pode ter outras configurações também, isso é o que é importante para o Electrum Personal Server):

server=1
rpcuser=user
rpcpassword=password
  • Você precisa reiniciar o Bitcoin Corepara que as alterações no bitcoin.conf tenham efeito.

Outra verificação que você pode fazer é se não há vários arquivos bitcoin.conf(no local padrão e no novo local, se você moveu a instalação). Se houver mais de um, renomeie o arquivo para que ele não seja usado por engano (se você não quiser excluí-lo).

Você também pode tentar alterar o método de autenticação. Se você usa rpcusere rpcpassword, tente o método cookie (descrito acima neste tutorial).

6. Inicie o Electrum Personal Server

Quando a importação estiver concluída, o Electrum Personal Server irá fechar.

  • Execute o Electrum Personal Server a partir do script eps em sua área de trabalho novamente para iniciar o servidor e aguarde esta mensagem:
Listening for Electrum Wallet …

Neste momento já seria possível abrir sua carteira Electrum , mas recomendamos que siga este tutorial para configurar que sua carteira se conecte apenas com o seu servidor, evitando qualquer dano à sua privacidade.

Como usar este setup com carteiras antigas que já tem transações:

Se você usar uma carteira da qual deseja importar transações antigas, será necessário que sua carteira verifique estas transações pelo seu full node.

Você pode fazer isso executando o seguinte comando no terminal (lembre-se de alterar os caminhos se os arquivos estiverem localizados em outros locais):

~/Library/Python/3.7/bin/electrum-personal-server-rescan ~/electrum-personal-server-eps-v0.1.7/config.ini

O terminal irá solicitar que você insira uma data (no formato DD/MM/AAAA) de quando você deseja iniciar a importação de endereços (quanto mais atrás mais tempo levará) e pressione Enter. Você receberá uma sugestão de altura de um bloco para começar. Digite e pressione Enter. Aguarde a conclusão da nova verificação (o servidor sairá automaticamente assim que terminar).

Se você não fizer isso e abrir uma carteira antiga, o saldo mostrará "0" pois as transações antigas ainda não foram buscadas.

Agora execute o Electrum Personal Server a partir do script eps em sua área de trabalho novamente para iniciar o servidor e aguarde esta mensagem:

Listening for Electrum Wallet …

7. Configure a carteira Electrum para conectar apenas com o seu Electrum Personal Server

  • Vamos criar um segundo script para que a Electrum seja inicializada apenas pelo seu servidor local e desabilite a possibilidade de qualquer conexão com um servidor externo que possa colocar sua privacidade em risco.
  • Vá no seu Desktop e faça uma cópia do arquivo eps que criamos anteriormente
  • Renomeie este novo arquivo com electrum-starter
  • Clique nele com o botão direito e abra com um editor de texto
  • Apague tudo e substitua pelo script abaixo (considerando que a Electrum está instalada em Applications )
open -a /applications/Electrum.app --args --oneserver --server localhost:50002:s
  • Salve e feche o arquivo

Agora você pode usar este arquivo electrum-starter para iniciar a Electrume nunca mais precisar se preocupar com a possibilidade de se conectar a qualquer servidor remoto por engano. Você pode fechar o script assim que a Electrum tiver iniciado.

Sua carteira deve estar conectada ao seu full node bitcoin (o círculo no canto inferior direito deve estar verde)!

Você pode verificar se apenas seu servidor está sendo usado acessando Tools>Network. Você deverá ver apenas o localhost .

Se mudar a aba para Server , Localhost deve estar selecionado e todo o reste deve estar "cinza" e sem a possibilidade de serem selecionados.

--

--

Bitcoinheiros

Tudo o que você sempre quis saber sobre Bitcoin, em português e sem frescura. Nada de ICOs, projetos Blockchain, Altcoins ou qualquer outra distração promovida.