Overview
Electrum is one of the oldest and most widely used Bitcoin wallets, first released in November 2011 by Thomas Voegtlin. It follows a client-server architecture where the lightweight wallet application connects to Electrum servers that index the blockchain. This design allows users to have a feature-rich Bitcoin wallet without downloading and validating the entire blockchain.
Architecture
┌─────────────────┐ ┌──────────────────┐
│ Electrum Wallet │◄──SSL──►│ Electrum Server │
│ (lightweight) │ │ (ElectrumX / │
│ │ │ Fulcrum) │
│ - Stores keys │ │ │
│ - Signs txs │ │ - Full blockchain│
│ - Coin control │ │ - Address index │
│ - UI │ │ - Tx lookup │
└─────────────────┘ └────────┬─────────┘
│
┌───────┴────────┐
│ Bitcoin Core │
│ (full node) │
└────────────────┘
Key Features
- Deterministic wallets: Electrum was one of the first wallets to implement seed-based key generation, predating BIP32. It uses its own seed format alongside standard BIP39 support.
- Hardware wallet support: Native integration with Trezor, Ledger, ColdCard, and other hardware wallets
- Multisig: Built-in support for creating and managing multi-signature wallets
- Coin control: Users can select specific UTXOs for transactions, aiding privacy management
- Lightning support: Electrum includes an integrated Lightning Network implementation
- Plugin system: Extensible architecture through Python plugins
Privacy Considerations
By default, Electrum connects to public Electrum servers, which can observe:
- All addresses belonging to the wallet
- Transaction history and balances
- IP address of the user
To mitigate these concerns, privacy-conscious users can:
- Run their own Electrum server (ElectrumX or Fulcrum) connected to their own full node
- Connect through Tor to hide their IP address
- Use the "one-server" mode to reduce address correlation across servers
Electrum Server Implementations
- ElectrumX: The original Python-based server implementation
- Fulcrum: A high-performance C++ implementation that has become the preferred choice for most operators
- Electrs: A Rust-based implementation popular with node-in-a-box solutions
Common Misconceptions
- Electrum is not a full node wallet. It trusts the Electrum server for blockchain data, though it does verify transaction proofs.
- The Electrum seed format is not compatible with BIP39 by default. Wallets created with Electrum's native seed cannot be restored in most other wallets without using the specific Electrum derivation.
- Running your own Electrum server largely eliminates the privacy trade-offs of the client-server architecture.