Difference between revisions of "Electrum"

From Bitcoin Wiki
Jump to: navigation, search
(ElectrumX)
 
(88 intermediate revisions by 15 users not shown)
Line 1: Line 1:
Electrum is a lightweight Bitcoin client, based on a client-server protocol.
+
[[Image:Electrum_logo.png|400px]][[Image:Capture-Electrum.png|right|600px|screenshot of Electrum with its Qt gui]]
It was released on november 5, 2011.
 
  
===Main features:===
+
[https://electrum.org Electrum] is a lightweight Bitcoin client, based on a client-server protocol.
* Encrypted wallet
+
It was released on November 5, 2011.
* Deterministic key generation. If you lose your wallet, you can recover it from its seed.
+
 
* No blockchain download; the client requests that information from a server
+
== Main features ==
* Private keys are not shared with the server.
+
* Encrypted wallet: the file that contains bitcoin [[private keys]] is protected with a password, and never leaves the user's computer.
 +
* Deterministic key generation: If you lose your wallet file, you can recover it from its [[seed phrase|seed]]. You are protected from your own mistakes. (Note that Electrum's seed phrase is not according to the BIP39 standard.)
 +
* Instant on: by default 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.
 +
* [[Cold storage]]: Keeping private keys offline is supported. Has a watch-only mode for online use.
 +
* [[Multisignature]]: Dividing the power to spend coins between multiple wallets is supported.
 +
* [[Hardware wallet]] integration: Many leading hardware wallets can interface with Electrum, including [[Coldcard]], [[Trezor]] and [[Ledger]].
 +
* Redundancy: You are not tied to a particular server, and the server does not need to know you. One server going down doesn't cause user downtimes.
 +
* No single point of failure: The server code is open source, anyone can run a server. Private keys can be exported and imported into other wallets.
 
* Firewall friendly: The client does not need to open a port, it simply polls the server for updates.
 
* Firewall friendly: The client does not need to open a port, it simply polls the server for updates.
* No single point of failure: The server code is open source, anyone can run a server.
+
* Free software: MIT License. Anyone can audit the code.
* Python. Very compact code, easy to contribute.
+
* Written in Python. The code is short, and easy to review.
 +
* Add-ons: third-party plugins are supported.
 +
* Support for Bitcoin URIs, signed URIs and Bitcoin aliases
 +
 
 +
__TOC__
 +
 
 +
==Documentation==
 +
 
 +
Documentation is hosted on http://docs.electrum.org/
 +
 
 +
It includes tutorials for the multisignature, cold storage and hardware wallet features.
 +
 
 +
==History==
 +
 
 +
Electrum was announced November 5, 2011<ref>[http://bitcointalk.org/index.php?topic=50936.0 Electrum - a new thin client]</ref>.
 +
 
 +
== Server software ==
  
===Brain Wallet===
+
The server code is open source, anyone can run a server. There are several implementations.
  
Electrum uses a type 2 deterministic key generation algorithm.
+
Public Electrum servers run by strangers can easily spy on Electrum users. For this reason many people run their own server. For maximum [[Full node#Why should you use a full node wallet|trustlessness, privacy and security]]; users should point Electrum to their own servers.
This means that all the keys are derived from a seed.
 
  
Electrum makes it easy to memorize its seed, because it uses a mnemonic code.
+
=== bwt ===
  
Example:
+
'''bwt''' is a lightweight and performant HD wallet indexer backed by a bitcoin full node that [https://github.com/shesek/bwt#electrum-plugin can also be installed as an Electrum plugin].
*hexadecimal: 8a44dfd6ad4f687b5e3c80563c327027
 
*mnemonic: "shade weave eternity kept true tangle new talk clay warmth fish match"
 
  
===Multiple wallets===
+
=== ElectrumX ===
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:
 
<pre>
 
$ ./electrum -w /path/to/my/wallet/wallet_name
 
</pre>
 
  
===Export and import addresses===
+
ElectrumX is the latest iteration of general purpose Electrum servers. Written in python, it tries to be as efficient as possible to keep synchronization times low. ElectrumX is able to serve thousands of clients at once, it is suited to be an always-on server that contributes to bitcoin. Make sure that the version of ElectrumX you download supports Bitcoin. As of May 2020 some versions of ElectrumX only support [[altcoin]]s.
  
You can export your private keys using the 'addresses' command:
+
GitHub: https://github.com/spesmilo/electrumx
<pre>
 
$ ./electrum addresses -ak
 
Password:
 
1LGoehbyeX4QBEPK1a6dhyaoMQZfqg5LKX:5JBSttEGhjEcPidSovW66Rin2EZ6LEHZ2qx8Pu2RqqNaDTBVWaF 
 
1KcsBJa2cCxVkGJfSsg5bUeXN7Y5uLa8mP:5KiP4uiNT6KG8jnXbainCM8rDWRrgxt3PAyut4FFpDoCo1Rh6VM 
 
1PXsn7LVXTccGhJPTUL8r2EGB4fF9kvex3:5Kj8mvBJReyk8xEBMx5cTnciQCxto5JmudiTPkqwMcd61Kf1Jqc 
 
1KteSFTAphyByLTtUfFiVQ9s7fMVmx7c2h:5JeZ3FTbWcksLt3PKydd5U9p952UQRHwv3LoxzCA9LZ7V2bku5p 
 
1GE5ZChAobeTEPLHDCDDKTSg3XvLkcQFjS:5JwtGEygTwF2nouhRVzW3w5DWZd1sCgxLtnd1v51wjkbUrp5sqH 
 
12YNehfAoYTiwjTXULwaZqTCauu2D61fq6:5Jvcq19ePCXKcVun4n7US99CsrEByUK2kgxXBA3rBVBqYZjhfwD  [change]
 
</pre>
 
The option -a means: 'list all addresses'
 
The option -k means: display the private keys
 
  
You can also import addresses into an electrum wallet, with the 'import' command:
+
<!-- seems less relevant now... not sure
<pre>
+
Interview with author: https://btcmanager.com/nobody-has-setup-an-electrum-server-for-over-a-year/ archive: https://archive.is/lUnfa -->
$ ./electrum import 1LGoehbyeX4QBEPK1a6dhyaoMQZfqg5LKX:5JBSttEGhjEcPidSovW66Rin2EZ6LEHZ2qx8Pu2RqqNaDTBVWaF
 
keypair imported
 
</pre>
 
Note that imported keys do not belong to the deterministic sequence of your wallet; if you import keys in a wallet, you must backup it up!
 
  
===Offline wallet===
+
=== Electrum Personal Server ===
  
It is possible to create a transaction while your computer is offline, and to broadcast it from another computer,
+
Electrum Personal Server has a different approach to a normal server. It is intended to be used by a single person only. Instead of creating a database of every transaction and address ever used on the bitcoin blockchain, Electrum Personal Server only tracks the user's own wallets. This allows it to be much more efficient with resources, it does not need any extra data files and is compatible with [[Bitcoin Core]]'s pruning feature.
with a wallet that does not have the seed or private keys.
 
  
====How to prepare an offline wallet ====
+
Electrum Personal Server is probably the best way to combine Electrum's feature-richness (hardware wallet integration, multisignature, [[seed phrase]], etc) with a [[full node]]'s strong security and privacy.
*step 1: create a wallet on your offline computer
 
<pre>
 
$ ./electrum -w wallet create
 
</pre>
 
*step 2: save the seed of your wallet to a file that will remain on the offline computer:
 
<pre>
 
./electrum -w wallet seed | awk '{print $1}'> seedfile
 
</pre>
 
*step 3: blank the seed in your wallet file.
 
For example, under linux, you may type:
 
<pre>
 
$ cat w | sed "s/`cat seedfile`/trololololo/g" > wallet.no_seed
 
</pre>
 
or you can open the file in an editor and do it manually. After this step you may remove the wallet file:
 
<pre>
 
rm wallet
 
</pre>
 
*step 4: transfer the wallet.no_seed file to the online computer.
 
For example, copy the wallet file to a usb stick:
 
<pre>
 
$ cp wallet.no_seed /my/usb/wallet.no_seed
 
</pre>
 
and once you have plugged the usb key to the online computer:
 
<pre>
 
$ cp /my/usb/wallet.no_seed ./wallet.no_seed
 
</pre>
 
*step 5: run electrum on the online computer; this will synchronize your wallet with the bitcoin network, and you will be able to monitor incoming transactions:
 
<pre>
 
./electrum -w wallet.no_seed
 
</pre>
 
  
====How to send a transaction with an offline wallet====
+
GitHub: https://github.com/chris-belcher/electrum-personal-server
*step 1: copy the synchronized wallet file to your offline computer
 
<pre>
 
$ cp wallet.no_seed /usb/stick/wallet.no_seed
 
</pre>
 
*step 2: edit the wallet file and restore the seed :
 
<pre>
 
$ cat w | sed "s/trololololo/`cat seedfile`/g" > wallet.seed
 
</pre>
 
you may also do this manually with a file editor if you do not know how to use sed.
 
  
*step 3: create the transaction
+
==See Also==
<pre>
 
./electrum -w wallet.seed mktx <recipient> <amount>  >  tx_file
 
</pre>
 
*step 4: with the usb stick, copy the transaction to the online computer:
 
<pre>
 
$cp tx_file /usb/tx_file
 
</pre>
 
and:
 
<pre>
 
$cp /usb/tx_file tx_file
 
</pre>
 
*step 5: broadcast the transaction:
 
<pre>
 
./electrum sendtx <transaction> `cat tx_file`
 
</pre>
 
  
===Screenshot===
+
* [[Thin Client Security]]
[[Image:Capture-Electrum.png]]
+
* [[Hardware wallet]]
 +
* [[Seed phrase]]
 +
* [[Multisignature]]
 +
* [[Cold storage]]
  
=== Security ===
+
==External Links==
  
See [[Thin Client Security]]
+
* [http://electrum.org/ Electrum] project website
 +
* [https://github.com/spesmilo/electrum/ Electrum] project source
  
===links===
+
==References==
*homepage: http://ecdsa.org/electrum
+
<references />
*source code: https://gitorious.org/electrum
 
*download: <tt>git clone git://gitorious.org/electrum/electrum.git</tt>
 
  
[[category:Clients]]
+
[[Category:Clients]]
 +
[[Category:Open Source]]

Latest revision as of 13:15, 6 June 2020

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 bitcoin private keys is protected with a password, and never leaves the user's computer.
  • Deterministic key generation: If you lose your wallet file, you can recover it from its seed. You are protected from your own mistakes. (Note that Electrum's seed phrase is not according to the BIP39 standard.)
  • Instant on: by default 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.
  • Cold storage: Keeping private keys offline is supported. Has a watch-only mode for online use.
  • Multisignature: Dividing the power to spend coins between multiple wallets is supported.
  • Hardware wallet integration: Many leading hardware wallets can interface with Electrum, including Coldcard, Trezor and Ledger.
  • Redundancy: You are not tied to a particular server, and the server does not need to know you. One server going down doesn't cause user downtimes.
  • No single point of failure: The server code is open source, anyone can run a server. Private keys can be exported and imported into other wallets.
  • Firewall friendly: The client does not need to open a port, it simply polls the server for updates.
  • Free software: MIT License. Anyone can audit the code.
  • Written in Python. The code is short, and easy to review.
  • Add-ons: third-party plugins are supported.
  • Support for Bitcoin URIs, signed URIs and Bitcoin aliases

Documentation

Documentation is hosted on http://docs.electrum.org/

It includes tutorials for the multisignature, cold storage and hardware wallet features.

History

Electrum was announced November 5, 2011[1].

Server software

The server code is open source, anyone can run a server. There are several implementations.

Public Electrum servers run by strangers can easily spy on Electrum users. For this reason many people run their own server. For maximum trustlessness, privacy and security; users should point Electrum to their own servers.

bwt

bwt is a lightweight and performant HD wallet indexer backed by a bitcoin full node that can also be installed as an Electrum plugin.

ElectrumX

ElectrumX is the latest iteration of general purpose Electrum servers. Written in python, it tries to be as efficient as possible to keep synchronization times low. ElectrumX is able to serve thousands of clients at once, it is suited to be an always-on server that contributes to bitcoin. Make sure that the version of ElectrumX you download supports Bitcoin. As of May 2020 some versions of ElectrumX only support altcoins.

GitHub: https://github.com/spesmilo/electrumx


Electrum Personal Server

Electrum Personal Server has a different approach to a normal server. It is intended to be used by a single person only. Instead of creating a database of every transaction and address ever used on the bitcoin blockchain, Electrum Personal Server only tracks the user's own wallets. This allows it to be much more efficient with resources, it does not need any extra data files and is compatible with Bitcoin Core's pruning feature.

Electrum Personal Server is probably the best way to combine Electrum's feature-richness (hardware wallet integration, multisignature, seed phrase, etc) with a full node's strong security and privacy.

GitHub: https://github.com/chris-belcher/electrum-personal-server

See Also

External Links

References