Electrum
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. You can export your private keys.
- 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
Updates
Some contents can be outdated or deprecated. To see up to date documentation visit the repository Electrum Docs
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.
Example:
- 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 getseed Password: 431a62f1c86555d3c45e5c4d9e10c8c7 "constant forest adore false green weave stop guy fur freeze giggle clock"
Wallet File
The default wallet file is called default_wallet which is created when you first run the application and located under the /wallets folder.
On Windows
- Show hidden files
- Go to \Users\YourUserName\AppData\Roaming\Local\Electrum
On Mac
- Open Finder
- Go > Go to folder (shift+cmd+G) and type ~/.electrum
On Linux
- Home Folder
- Go > Location and type ~/.electrum
Multiple wallets
Electrum uses one single file per wallet. Your default wallet is located in your user account as listed above. 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 'dumpprivkeys' command:
$ ./electrum dumpprivkeys Password: { "1LGoehbyeX4QBEPK1a6dhyaoMQZfqg5LKX": "5JBSttEGhjEcPidSovW66Rin2EZ6LEHZ2qx8Pu2RqqNaDTBVWaF" "1KcsBJa2cCxVkGJfSsg5bUeXN7Y5uLa8mP": "5KiP4uiNT6KG8jnXbainCM8rDWRrgxt3PAyut4FFpDoCo1Rh6VM" "1PXsn7LVXTccGhJPTUL8r2EGB4fF9kvex3": "5Kj8mvBJReyk8xEBMx5cTnciQCxto5JmudiTPkqwMcd61Kf1Jqc" "1KteSFTAphyByLTtUfFiVQ9s7fMVmx7c2h": "5JeZ3FTbWcksLt3PKydd5U9p952UQRHwv3LoxzCA9LZ7V2bku5p" "1GE5ZChAobeTEPLHDCDDKTSg3XvLkcQFjS": "5JwtGEygTwF2nouhRVzW3w5DWZd1sCgxLtnd1v51wjkbUrp5sqH" "12YNehfAoYTiwjTXULwaZqTCauu2D61fq6": "5Jvcq19ePCXKcVun4n7US99CsrEByUK2kgxXBA3rBVBqYZjhfwD" [change] }
You can also import addresses into an electrum wallet, with the 'importprivkey' command:
$ ./electrum importprivkey 5JBSttEGhjEcPidSovW66Rin2EZ6LEHZ2qx8Pu2RqqNaDTBVWaF Keypair imported: 1LGoehbyeX4QBEPK1a6dhyaoMQZfqg5LKX
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.
see http://electrum.org/offline_wallets.html
List of commands
command | description | syntax | requires password | needs to be online |
---|---|---|---|---|
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 |
createmultisig | ?? | createmultisig | ?? | ?? |
createrawtransaction | ?? | createrawtransaction | ?? | ?? |
decoderawtransaction | ?? | decoderawtransaction | ?? | ?? |
deseed | Create a seedless version of a wallet with the suffix .seedless | deseed | no | no |
dumpprivkey | ?? | dumpprivkey | ?? | ?? |
dumpprivkeys | ?? | dumpprivkeys | ?? | ?? |
eval | call python eval | eval <expression> | no | no |
freeze | ?? | freeze | ?? | ?? |
getaddresshistory | ?? | getaddresshistory | ?? | ?? |
getbalance | ?? | getbalance | ?? | ?? |
getconfig | ?? | getconfig | ?? | ?? |
getseed | write the seed and its mnemonic to stdout | seed | yes | 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 |
importprivkey | ?? | importprivkey | ?? | ?? |
label | change the label of a transaction or address | label <label> | no | no |
listaddresses | ?? | listaddresses | ?? | ?? |
listunspent | ?? | listunspent | ?? | ?? |
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 |
prioritize | ?? | prioritize | ?? | ?? |
restore | restore a wallet from seed | restore | no | yes |
sendrawtransaction | broadcast a transaction | sendrawtransaction <tx> | no | yes |
setconfig | ?? | setconfig | ?? | ?? |
setlabel | ?? | setlabel | ?? | ?? |
signmessage | sign a message (as in bitcoind) | signmessage <address> <message> | yes | no |
signrawtransaction | ?? | signrawtransaction | ?? | ?? |
unfreeze | ?? | unfreeze | ?? | ?? |
unprioritize | ?? | unprioritize | ?? | ?? |
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 |
History
Electrum was announced November 5, 2011[1].
See Also
- Electrum/Documentation : General documentation of the Electrum client
- Electrum/Translation
- Electrum/TODO
- Thin Client Security
External Links
- Electrum project website
- Electrum project source
- Electrum Docs updated documentation