From Bitcoin Wiki
Revision as of 12:11, 13 May 2012 by JulianTosh (talk | contribs) (How to prepare an offline wallet)
Jump to: navigation, search
Electrum logo.png
screenshot of Electrum with its Qt gui

Electrum is a lightweight Bitcoin client, based on a client-server protocol. It was released on november 5, 2011.

Main features:

  • Encrypted wallet: the file that contains your bitcoins is protected with a password. You are protected from thieves.
  • Deterministic key generation: If you lose your wallet, you can recover it from its seed. You are protected from your own mistakes.
  • Instant on: the client does not download the blockchain, it requests that information from a server. No delays, always up-to-date.
  • Transactions are signed locally: Your private keys are not shared with the server. You do not have to trust the server with your money.
  • Freedom and Privacy: The server does not store user accounts. You are not tied to a particular server, and the server does not need to know you.
  • No scripts: Electrum does not download any script. A compromised server cannot send you arbitrary code and steal your bitcoins.
  • No single point of failure: The server code is open source, anyone can run a server.
  • Firewall friendly: The client does not need to open a port, it simply polls the server for updates.
  • Free software: Gnu GPL v3. Anyone can audit the code.
  • Written in Python. The code is short, and easy to review.
  • Support for Bitcoin URIs, signed URIs and Bitcoin aliases

Graphical User Interfaces

Electrum has two GUIs: one that is based on Gtk, and a newer one based on Qt. The Qt GUI is enabled by default. To use the gtk interface, type:

$ ./electrum -g gtk

In addition, Electrum has a rich set of commands for the command line interface.

Brain Wallet

Electrum uses a type 2 deterministic key generation algorithm. This means that all the keys are derived from a seed.

Typical seeds have 128 bits of entropy. Electrum provides mnemonic code in order to represent the seed.


  • hexadecimal: 431a62f1c86555d3c45e5c4d9e10c8c7
  • mnemonic: "constant forest adore false green weave stop guy fur freeze giggle clock"

You can display the seed with the command line interface. Example:

$ ./electrum seed
431a62f1c86555d3c45e5c4d9e10c8c7 "constant forest adore false green weave stop guy fur freeze giggle clock"

Multiple wallets

Electrum uses one single file per wallet. Your default wallet is located in your user account. If you want to use another wallet, use the -w option followed by the wallet path and name:

$ ./electrum -w /path/to/my/wallet/wallet_name

Export and import addresses

You can export your private keys using the 'addresses' command:

$ ./electrum addresses -ak
12YNehfAoYTiwjTXULwaZqTCauu2D61fq6:5Jvcq19ePCXKcVun4n7US99CsrEByUK2kgxXBA3rBVBqYZjhfwD  [change] 

There are two options in this example:

  • option -a means: 'list all addresses'. if you don't use it, change addresses are not listed.
  • option -k means: display the private keys

You can also import addresses into an electrum wallet, with the 'import' command:

$ ./electrum import 1LGoehbyeX4QBEPK1a6dhyaoMQZfqg5LKX:5JBSttEGhjEcPidSovW66Rin2EZ6LEHZ2qx8Pu2RqqNaDTBVWaF
keypair imported

Note that imported keys do not belong to the deterministic sequence of your wallet; if you import keys in a wallet, you must back it up!

Offline wallet

It is possible to create a transaction on an offline computer, and to broadcast them from another computer, with a wallet that does not have the seed or private keys.

How to prepare an offline wallet

  • step 1: create a wallet on your offline computer
[offline]$ electrum -o -w wallet create
  • step 2: extract the seed from your wallet file:
[offline]$ electrum -o -w wallet deseed 

This will remove the seed from 'wallet', and save it to a file named 'wallet.seed'

  • step 3: transfer the deseeded wallet to the online computer (for example with a usb stick)
  • step 4: run electrum on the online computer; this will synchronize your wallet with the bitcoin network, and you will be able to monitor incoming transactions:
[online]$ electrum -w wallet

How to send a transaction with an offline wallet

  • step 1: copy the synchronized wallet file to your offline computer, in the directory where the seed is.
  • step 2: restore the seed in the wallet file:
[offline]$ electrum -w wallet reseed
  • step 3: create the transaction
[offline]$ electrum -w wallet mktx <recipient> <amount>  >  tx_file
  • step 4: with the usb stick, copy the transaction to the online computer:
  • step 5: broadcast the transaction on the online computer:
[online]$ electrum -w wallet sendtx  `cat tx_file`

List of commands

command description syntax requires password needs to be online
addresses show your list of addresses, optionally with private keys. addresses [-a] [-b] [-k] iff -k no
balance shows the balance of your wallet or of an address balance [address] no yes
contacts print your list of contacts contacts no no
create create a new wallet create no no
deseed Remove seed from wallet and store it to .seed file deseed no no
eval call python eval eval <expression> no no
help display the help for a command help [command] no no
history print the transaction history history no yes
import import a keypair import <address:private_key> yes no
label change the label of a transaction or address label <label> no no
mktx create a transaction and dump it mktx [-s sourceaddr] [-c changeaddr] [-f fee] <address> <amount> yes no
password update your password password yes no
payto create and broadcast a transaction payto [-s sourceaddr] [-c changeaddr] [-f fee] <address> <amount> yes yes
reseed take seed from .seed file and add it to wallet (it checks that keys are consistent). reseed no no
restore restore a wallet from seed restore no yes
sendtx broadcast a transaction sendtx <tx> no yes
seed print your seed seed yes no
signmessage sign a message (as in bitcoind) signmessage <address> <message> yes no
validateaddress check is the argument is a valid bitcoin address validateaddress <address> no no
verifymessage verify a message (as in bitcoind) verifymessage <address> <signature> <message> no no


Electrum was announced November 5, 2011[1].

See Also

External Links