Pular para o conteúdo
buybitcoinsmart

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.

Não confundir com

Perguntas frequentes

Um servidor Electrum público vê meus endereços?

Sim, todos. Sua carteira se inscreve em cada script que possui e, embora envie hashes em vez de endereços, o servidor tem o índice que os reverte. Executar seu próprio servidor, algo que todo pacote de nó popular transforma em uma instalação de um clique, é a única forma de fechar essa fuga.

Um servidor Electrum pode me mostrar um saldo falso?

Não com facilidade. Sua carteira confere cada transação com os cabeçalhos de bloco que ela mesma baixou, então um pagamento fabricado precisaria de uma cadeia falsa com prova de trabalho real por trás. Um servidor hostil pode, no entanto, esconder de você transações ou se recusar a retransmitir as que você envia.

Leia a seguir

Termos relacionados

Mais em Nós e software

Ler esta página em inglês