Um guia simplificado para executar seu próprio servidor Electrumx

Tradução para o português do original “A simplified guide to running your own Electrumx server” de im_uname.

Você usa muito o Electron-Cash? É uma excelente carteira para o Bitcoin Cash. Alguns diriam que é a melhor carteira desktop, e isso por boas razões: mescla (shuffle), tem controle de moeda, existem múltiplos servidores, portanto quase nunca está fora do ar, as transações têm um método simples de busca e etiquetado, permite incluir op_returns arbitrários, tem suporte para assinaturas Schnorr, você pode usar seu servidor próprio…

Um momento, eu disse servidor próprio? Parece toda uma tarefa. Por que alguém iria querer fazer isso fora de “Sou um cara legal e quero servir o público”?

Bom, para começar, você sabia que todos os endereços da sua carteira estão subscritos ao servidor que você usa? Isso faz com que o operador do mesmo tenha a capacidade de vincular seus endereços, sem importar quanto você mescle (shuffle). Sabemos que algumas pessoas como eu não rastreiam você, mas não podemos garantir o que outros operadores fazem ou deixam de fazer! O que aconteceria se um deles fosse literalmente do FBI?

Existem propostas para mitigar isso, até certo ponto, alterando o código de rede no Electron-cash, mas não é um trabalho trivial e o cronograma associado é um tanto incerto. Ao mesmo tempo, não há substituto algum em relação a executar seu próprio servidor Electronx enquanto oferece um serviço para outras pessoas no processo. Esta é a configuração final para a privacidade de rede, sem exceção.

“Ok, acho que há um guia por aí, mas parece bastante intimidante e ele deixa de mencionar muitas coisas.”

Exatamente. É por isso que vou tentar simplificar um pouco. Vou apenas listar uma série de passos e, sempre que você os seguir, deverá estar online e em execução em um dia. Você precisa saber como lidar com a linha de comando do Linux? Sim. Isso vai facilitar sua vida? Espero que sim.

  1. Obtenha um hosting Linux KVM VPS (ou dedicado). Um mínimo de 8 GB RAM / 300 GB disco / 4 núcleos CPU / 5TB por mês de largura de banda e recomendado quanto mais melhor, não precisa SSD, embora seja bom. Obtenha o Debian 9 ou 10 pré-instalado. Obtenha um domínio e aponte-o para o ip do seu servidor.
  2. Faça os ajustes de segurança necessários: sudo apt update && sudo apt upgrade, Feche todas as portas, exceto SSH, 50002, 50001, 8333. Não seja inocente, proteja o login SSH do seu servidor com uma senha aleatória longa ou uma chave pública.
  3. Na sua pasta de início: Coloque um nó bitcoind (Bitcoin-ABC ou Bitcoin Unlimited), descomprima-o e faça ~/.bitcoin/bitcoin.conf e certifique-se de ter  daemon=1server=1,rpcuser=yourusername,rpcpassword=yourpassword and txindex=1. Obviamente, não coloque literalmente “yourpassword”. Sério.
  4. Execute o bitcoind: É recomendável executar o bitcoind como um serviço systemd, para que o mesmo não seja interrompido no caso de um problema com o servidor. Para fazer isso, crie um arquivo bitcoind.service em /etc/systemd/system, e siga o template de forking. Depois sudo systemctl enable bitcoind && sudo systemctl start bitcoind e o nó deveria começar a sincronizar. Prossiga para a próximo passo.
  5. sudo apt install git python3-aiohttp build-essential python3-pip 
  6. sudo pip3 install pylru plyvel
  7. git clone https://github.com/Electron-Cash/electrumx.git
  8. cd electrumx && python3 ./setup.py build && sudo python3 ./setup.py install
  9. Não o execute ainda! Prossiga com a configuração do certificado SSL. Você pode usar um self-signed ou Let’s encrypt. As instruções para Let’s encrypt podem ser encontradas aqui, mas não vou entrar em detalhes. Para um certificado self-signed de 5 anos (!), bom o suficiente para fins anti-MiTM, siga as instruções aqui.
  10. Recomendação: Faça seu Electrumx funcionar como um serviço systemd também. Adapte o arquivo de serviço ao seu /etc/systemd/system/electrumx.service:
 [Unit]
Description=Electrumx
After=network.target
[Service]
EnvironmentFile=/etc/electrumx.conf
ExecStart=/usr/local/bin/electrumx_server
User=user
LimitNOFILE=8192
TimeoutStopSec=30min
[Install]
WantedBy=multi-user.target

/etc/electrumx.conf, substituindo as partes óbvias pelas suas:

DB_DIRECTORY = /home/user/.electrumx
COIN = BitcoinCash
NET = mainnet
ELECTRUMX = /usr/local/bin/electrumx_server.py
USERNAME = user
DB_ENGINE = leveldb
DB_DIRECTORY = /home/user/.electrumx
DAEMON_URL = http://user:yourpassword@127.0.0.1:8332/
SSL_CERTFILE=/path/to/yourcreatedcert
SSL_KEYFILE=/path/to/yourcreatedkeyfile
TCP_PORT=50001
SSL_PORT=50002
REPORT_HOST=your.domain.tld
HOST=
LOG_SESSIONS = 1000
ANON_LOGS = 127.0.0.1
DONATION_ADDRESS=bitcoincash:qpzd64xyvvmrkx6v2008t00d2zd06q3nygscv2u0eh
BANNER_FILE=/etc/electrumx/banner.txt
MAX_SESSIONS=4000
CACHE_MB=2048
MAX_SEND=10000000
ALLOW_ROOT=Y
MAX_SESSIONS_PER_IP=50
BLACKLIST_URL=https://raw.githubusercontent.com/Electron-Cash/electronx-blacklist/master/blacklist.json
BLACKLIST_POLL_INTERVAL=300
  1. Crie uma pasta /etc/electrumx e coloque o que você quiser em banner.txt dentro dela. Nerds como eu verão seu anúncio (banner) quando você estiver conectado e sorrirão.
  2. sudo systemctl enable electrumx && sudo systemctl start electrumx. Espere meio dia.
  3. Agora você deveria ter um servidor Electrumx funcional! Prove-o conectando-se via Electron-cash. Lembre-se de manter seu bitcoind atualizado a cada seis meses para se manter ao dia com a rede! 🙂
  4. Recomendação: Participe do Telegram Electron-cash para se gabar do seu novo servidor ou até mesmo gritar comigo se a guia não funcionar. Envie um pedido de adição à lista de servidores preferenciais se você planeja mantê-lo ativo, é bom para sua privacidade e para todos.

Caso tenha esquecido alguma coisa, me avise!