Skip to content
buybitcoinsmart

Glossary / Nodes & software

Electrum server

Also known as Electrum Personal Server.

Definition
An Electrum server indexes the blockchain by script and answers address queries for lightweight wallets, so those wallets get instant balances without downloading the chain themselves.

Somebody has to do the searching. A full node knows which coins are unspent but keeps no map from an address to its history, so wallets that want that history in a second rather than an hour ask a server that has built one. Standard practice is to run your own alongside your own node, because the alternative hands a stranger the complete list of addresses you own.

How it works

An Electrum server sits between Bitcoin Core and a wallet, translating between the two.

It reads each block from the node as it arrives, extracts every output script, and stores a mapping from that script to the transactions touching it. Wallets then connect over a simple line-based JSON protocol, plain text on port 50001 or TLS on port 50002, and either ask a question or subscribe to be told when the answer changes. Subscription is what makes an Electrum wallet feel immediate: the server pushes a notification the moment a payment lands, instead of the wallet polling.

Wallets do not send addresses over that connection. They send a script hash, the SHA-256 digest of the output script with its bytes reversed, which is a protocol convention rather than a privacy measure. The server still learns precisely which coins you are watching, because it returns the history for that hash and can look up the corresponding address in its own index in a moment. Treating script hashes as anonymity is the single most common misunderstanding about this software.

What the wallet does keep to itself is verification. It downloads the chain of block headers and checks the merkle proof the server supplies for each transaction, so a server cannot invent a payment that never happened without also producing a fake header chain backed by real proof of work. It can still lie by omission, hiding a transaction or a spend from you, which is a smaller but genuine risk.

Three implementations cover almost all deployments: electrs in Rust, favored for its small index; Fulcrum in C++, favored for query speed; and ElectrumX in Python, the original. Electrum Personal Server takes a different route, watching only the wallets you list in a configuration file rather than indexing the whole chain, which costs almost no disk but answers nothing about anyone else's addresses.

Where you see it

Electrum servers are the invisible half of most desktop bitcoin wallets.

Electrum itself, first released by Thomas Voegtlin in November 2011, connects to public servers run by volunteers unless you tell it otherwise. Sparrow, Specter, and BlueWallet all speak the same protocol. Every popular node bundle, including Umbrel, Start9, RaspiBlitz and myNode, ships electrs or Fulcrum precisely so that the wallet on your laptop can query your own machine and nobody else learns your addresses.

The reason that matters is not hypothetical. From late December 2018 attackers ran malicious servers on the public Electrum network and exploited a weakness in versions before 3.3.3, where a server could return arbitrary rich text as an error message. Users trying to send a payment were shown what looked like an official prompt to install an update, and the download was malware. Reported losses ran into hundreds of bitcoin. The client was changed to strip formatting from server messages, but the lesson stands: a public server is an untrusted party that your wallet talks to constantly.

Electrum server vs Neutrino

An Electrum server does the searching for you and learns what you were looking for; Neutrino sends you the raw material so it learns almost nothing. The Electrum model is cheap, a few kilobytes per query and an instant answer, which is why it dominates desktop wallets that pair with a hardware device. The Neutrino model downloads a compact filter for every block and inspects it locally, spending far more bandwidth to avoid revealing which scripts matched. Choose the server model when the server is yours, and the filter model when it cannot be.

Not to be confused with

Frequently asked questions

Does a public Electrum server see my addresses?

Yes, all of them. Your wallet subscribes to every script it owns, and although it sends hashes rather than addresses, the server holds the index that reverses them. Running your own server, which every popular node bundle makes a one-click install, is the only way to close that leak.

Can an Electrum server show me a fake balance?

Not easily. Your wallet checks each transaction against block headers it downloaded itself, so a fabricated payment would need a fake chain with real proof of work behind it. A hostile server can, however, hide transactions from you or refuse to relay the ones you send.

Read next

Related terms

More in Nodes & software