Glossário / Nós e software
Servidor Electrum
Outros nomes: Electrum Personal Server, Electrum server.
- O que é um servidor Electrum?
- Um servidor Electrum indexa a blockchain por script e responde a consultas de endereços para carteiras leves, de modo que essas carteiras obtêm saldos instantâneos sem baixar a cadeia elas mesmas.
Alguém precisa fazer a busca. Um nó completo sabe quais bitcoins não foram gastos mas não guarda nenhum mapa de um endereço para seu histórico, então as carteiras que querem esse histórico em um segundo e não em uma hora perguntam a um servidor que construiu um. A prática padrão é executar o seu próprio ao lado do seu próprio nó, porque a alternativa entrega a um desconhecido a lista completa dos endereços que você possui.
Como funciona
Um servidor Electrum fica entre o Bitcoin Core e uma carteira, traduzindo entre os dois.
Ele lê cada bloco do nó conforme chega, extrai cada script de saída e armazena um mapeamento desse script para as transações que o tocam. Depois, as carteiras se conectam por um protocolo JSON simples baseado em linhas, texto puro na porta 50001 ou TLS na porta 50002, e fazem uma pergunta ou se inscrevem para ser avisadas quando a resposta mudar. A inscrição é o que faz uma carteira Electrum parecer imediata: o servidor envia uma notificação no momento em que um pagamento chega, em vez de a carteira consultar repetidamente.
As carteiras não enviam endereços por essa conexão. Elas enviam um hash de script, o resumo SHA-256 do script de saída com seus bytes invertidos, o que é uma convenção do protocolo e não uma medida de privacidade. O servidor ainda descobre exatamente quais bitcoins você está observando, porque devolve o histórico daquele hash e pode procurar em um instante o endereço correspondente em seu próprio índice. Tratar hashes de script como anonimato é o mal-entendido mais comum sobre este software.
O que a carteira guarda para si é a verificação. Ela baixa a cadeia de cabeçalhos de bloco e confere a prova de Merkle que o servidor fornece para cada transação, então um servidor não pode inventar um pagamento que nunca aconteceu sem também produzir uma cadeia de cabeçalhos falsa lastreada por prova de trabalho real. Ele ainda pode mentir por omissão, escondendo de você uma transação ou um gasto, o que é um risco menor, mas real.
Três implementações cobrem quase todas as instalações: electrs em Rust, preferida por seu índice pequeno; Fulcrum em C++, preferida pela velocidade das consultas; e ElectrumX em Python, a original. O Electrum Personal Server segue outro caminho: observa apenas as carteiras que você lista em um arquivo de configuração em vez de indexar toda a cadeia, o que quase não ocupa disco, mas não responde nada sobre os endereços de mais ninguém.
Onde você o encontra
Os servidores Electrum são a metade invisível da maioria das carteiras de bitcoin de desktop.
A própria Electrum, lançado pela primeira vez por Thomas Voegtlin em novembro de 2011, se conecta a servidores públicos operados por voluntários, a menos que você indique outra coisa. A Sparrow, a Specter e a BlueWallet falam todas o mesmo protocolo. Todo pacote de nó popular, incluindo Umbrel, Start9, RaspiBlitz e myNode, inclui electrs ou Fulcrum justamente para que a carteira no seu notebook possa consultar sua própria máquina e ninguém mais saiba seus endereços.
O motivo de isso importar não é hipotético. Do fim de dezembro de 2018 em diante, atacantes operaram servidores maliciosos na rede pública do Electrum e exploraram uma fraqueza nas versões anteriores à 3.3.3, em que um servidor podia devolver texto formatado arbitrário como mensagem de erro. Usuários que tentavam enviar um pagamento viam o que parecia um aviso oficial para instalar uma atualização, e o download era malware. As perdas relatadas chegaram a centenas de bitcoin. O cliente foi alterado para remover a formatação das mensagens do servidor, mas a lição permanece: um servidor público é uma parte não confiável com a qual sua carteira fala o tempo todo.
Servidor Electrum vs Neutrino
Um servidor Electrum faz a busca por você e descobre o que você estava procurando; o Neutrino envia a matéria-prima para você, de modo que quase não descobre nada. O modelo do Electrum é barato, alguns kilobytes por consulta e uma resposta instantânea, e por isso domina as carteiras de desktop que se conectam a um dispositivo de hardware. O modelo do Neutrino baixa um filtro compacto para cada bloco e o inspeciona localmente, gastando muito mais largura de banda para não revelar quais scripts corresponderam. Escolha o modelo de servidor quando o servidor for seu, e o modelo de filtros quando não puder ser.