Bitcoin/Electrum

From Omnia
Jump to navigation Jump to search

Electrum

Electrum Bitcoin Client - http://electrum.org/

Lightweight Bitcoin Client

"Electrum is an easy to use Bitcoin client. It protects you from losing coins in a backup mistake or computer failure, because your wallet can be recovered from a secret phrase that you can write on paper or learn by heart. There is no waiting time when you start the client, because it does not download the Bitcoin blockchain."

Features:

  • Instant on: Your client does not download the blockchain, it uses a remote server.
  • Forgiving: Your wallet can be recovered from a secret seed.
  • Safe: Your seed or private keys are not sent to the server. Information received from the server is verified using SPV
  • No downtimes: Several public servers are available, you can switch instantly.
  • Ubiquitous: You can use the same wallet on different computers, it will auto-synchronize.
  • Open: You can export your private keys into other Bitcoin clients.
  • Tested and audited: Electrum is open source and was first released in November 2011.

Interesting:

"Electrum is a naturally occurring alloy of gold and silver, with trace amounts of copper and other metals. It has also been produced artificially, and is often known as green gold. The ancient Greeks called it 'gold' or 'white gold', as opposed to 'refined gold'. Its colour ranges from pale to bright yellow, depending on the proportions of gold and silver. The gold content of naturally occurring electrum in modern Western Anatolia ranges from 70% to 90%, in contrast to the 45–55% of electrum used in ancient Lydian coinage of the same geographical area. This suggests that one reason for the invention of coinage in that area was to increase the profits from seignorage by issuing currency with a lower gold content than the commonly circulating metal." [1]

GitHub

spesmilo/electrum · GitHub - https://github.com/spesmilo/electrum

Documentation

Electrum - Bitcoin - https://en.bitcoin.it/wiki/Electrum

  • List of commands

Installation

Electrum download - http://electrum.org/download.html

Ubuntu Linux

Install python-qt4 and pip:

sudo apt-get install python-qt4 python-pip

On Ubuntu 13.10 do:

sudo apt-get install python-slowaes

Install electrum:

# sudo pip install https://download.electrum.org/Electrum-1.9.8.tar.gz#md5=e3918fec0254267f08e41a1fb8691382
# sudo pip install https://download.electrum.org/2.6.4/Electrum-2.6.4.tar.gz
sudo pip2 install https://download.electrum.org/2.9.0/Electrum-2.9.0.tar.gz

Run: (X version)

electrum

Development Version

Dependencies: python, qt, pyqt, gettext, ecdsa, slowaes. On Ubuntu you can install the dependencies with:

sudo apt-get install python-pip python-qt4 pyqt4-dev-tools
sudo pip install ecdsa slowaes
sudo apt-get install python-pycurl  # ken #

Check out the code from Github

git clone git://github.com/spesmilo/electrum.git

Compile the icons

pyrcc4 icons.qrc -o gui/icons_rc.py

Create translations

python mki18n.py

Install Electrum

sudo python setup.py install

Initial Configuration

Try to check balance first. If timeout, switch servers:

electrum getbalance

Switch server:

electrum setconfig server bitcoin.epicinet.net:50002:s

Electrum Server List - http://electrum.qc.to/

Installation Location

/usr/local/lib/python2.7/dist-packages/Electrum_LTC-*
/usr/local/bin/electrum-ltc

Tutorials

BITCOIN – Setting Up A Wallet On A Raspberry Pi - http://www.instantsupportsite.com/self-help/bitcoin-setting-up-wallet-raspberry-pi/

Commands

Version

$ pip list | grep Electrum
Electrum (1.9.8)

Money

getbalance

ONLINE COMMAND

Return the balance of your wallet, or of one account in your wallet
Syntax: getbalance [<account>]
~# electrum getbalance
Connected to electrum.coinwallet.me:50002
{
    "confirmed": "0.03"
}

In offline mode:

# electrum -o getbalance
{
    "confirmed": "0.03"
}

Note: running this command will sync new addresses to match the gap_limit

Wallet

getseed

REQUIRES PASSWORD

Print the generation seed of your wallet.
# electrum getseed
{
    "hex": "e57ceca34c63e37b48002e1320d74017",
    "mnemonic": "verse path laugh creator ship guilty serious tumble kingdom wonderful mutter lip"
}

deseed

WARNING: DANGEROUS!

deseed - Remove seed from wallet, creating a seedless, watching-only wallet.

create

Create a new wallet
# electrum create
Password (hit return if you do not wish to encrypt your wallet):
server (default:electrum.coinwallet.me):
port (default:50002):
protocol [t=tcp;h=http] (default:s):
fee (default:0.0005):0
gap limit (default 5):
17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN
19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K
189GtcmuBLbno2LM3XMX5yYbixga3Rrerd
1BWMeAWW1ZHw3JtmZyyN8PVSRciubRdBWA
1A75ZG5bABjFGTnfXgmQtNdsxYBhqvyyHg
1GxSUrwHDTwDBa6q9m48F5cJW2y35cGALi
1LRnTCuUcaxPirNbh4xzB6MnuKjDK3vQi1
1Kk6WTB35E613yq6S4YwWiDNEon8Y7de82
Your wallet generation seed is: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Please keep it in a safe place; if you lose it, you will not be able to restore your wallet.
Equivalently, your wallet seed can be stored and recovered with the following mnemonic code:
"verse path laugh creator ship guilty serious tumble kingdom wonderful mutter lip"
Wallet saved in '/root/.electrum/electrum.dat'

restore

Restore a wallet
options:
 accepts a seed or master public key.
# electrum restore "some text words here"
Wallet saved in '/home/kenneth/.electrum/wallets/default_wallet'
# electrum restore
Password (hit return if you do not wish to encrypt your wallet):
server (default:electrum.coinwallet.me):
port (default:50002):
protocol [t=tcp;h=http] (default:s):
fee (default:0.0005):0
gap limit (default 5):10
seed:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Recovering wallet...
17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN
19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K
189GtcmuBLbno2LM3XMX5yYbixga3Rrerd
1BWMeAWW1ZHw3JtmZyyN8PVSRciubRdBWA
1A75ZG5bABjFGTnfXgmQtNdsxYBhqvyyHg
17aBaFQezCjw3bGk5edbe7FHqmwgY6jraH
1P5rCjyL4MrgMQwcierKK58AUvz5mELQDX
19jZyi7Jh4gwBxVTB3cUBuDUkbAKyPTGU7
12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
13uN81RX5HrniuC2rH8MPn2ZcrHvPuvey7
1GxSUrwHDTwDBa6q9m48F5cJW2y35cGALi
1LRnTCuUcaxPirNbh4xzB6MnuKjDK3vQi1
1Kk6WTB35E613yq6S4YwWiDNEon8Y7de82
12xD238UUzS5DHfsk6fendwC3RUbCZw2mE
1Lt6rW6t36ZKz9LUswCYACZoAnVh8ePCoE
1L4BFhzjZL5KFiLVdzgf4bT4ZtJtRA7LtK
Recovery successful
Wallet saved in '/root/.electrum/electrum.dat'

password

Change your password
# electrum password
New password:
Confirm:

QUESTION: How do you remove a password from a wallet, once you have added it?

Transactions

history

ONLINE COMMAND

Returns the transaction history of your wallet

Note: Affected by labels

Note: Does not show dates!  :-(

# electrum history
Connected to electrum.coinwallet.me:50002
[
    "            ----  test3                                                             0.02  0.02",
    "            ----  test2                                                             0.01  0.03",
    "            ----  deepbit                                                           0.01  0.04",
    "            ----  slushpool                                                         0.01006479  0.05006479",
    "            ----  myslush                                                           0.01003806  0.06010285",
    "            ----  bitminter                                                         0.01000297  0.07010582",
    "            ----  bitmit_2600                                                       -0.02502  0.04508582",
    "            ----  deepbitpps                                                        0.01  0.05508582"
]

Fields: ?date?, address/label, amount, balance

NOTE: There appears to be a bug that the dates won't show until after loading the GUI

# electrum history
Connected to electrum.coinwallet.me:50002
[
    "2013-10-05 18:50  import_test                                                       0.001  0.001",
    "2013-10-11 10:52  test2                                                             0.01  0.011",
    "2013-10-11 10:52  test3                                                             0.02  0.031",
    "2013-10-14 15:20  deepbit                                                           0.01  0.041",
    "2013-10-29 04:14  slushpool                                                         0.01006479  0.05106479",
    "2013-10-29 15:07  myslush                                                           0.01003806  0.06110285",
    "2013-10-30 09:08  bitminter                                                         0.01000297  0.07110582",
    "2013-11-01 02:35  bitmit_2600                                                       -0.02502  0.04608582",
    "2013-11-02 22:17  deepbitpps                                                        0.01  0.05608582"
]

Addresses

listaddresses

Returns your list of addresses.
options:
 -a: show all addresses, including change addresses
 -l: include labels in results
# electrum listaddresses
[
    "17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN",
    "19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K",
    ...
    "1L4BFhzjZL5KFiLVdzgf4bT4ZtJtRA7LtK"
]
With labels:
# electrum -l listaddresses
[
    {
        "address": "17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN"
    },
    {
        "address": "19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K",
        "label": "item1"
    },
...

setlabel

Assign a label to an item
Syntax: setlabel <tx_hash> <label>
# electrum setlabel 17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN first

Remove label:

# electrum setlabel 17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN ''

getaddressbalance

ONLINE COMMAND

Return the balance of an address
Syntax: getbalance <address>
# electrum getaddressbalance 19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K
Connected to electrum.coinwallet.me:50002
{
    "confirmed": "0.01"
}

validateaddress

Check that the address is valid
Syntax: validateaddress <address>
# electrum validateaddress 19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K
{
    "address": "19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K",
    "ismine": true,
    "isvalid": true,
    "pubkey": "0435104d8f67737d94fbf73b1e27e01fb8ba9fbdb506aa1375df60408a0c90fb6ced0a1cd2b7cb1ad31a60885b575cad37616d07d57e5398714dbeb8913f992b61"
}

listunspent

Returns a list of unspent inputs in your wallet.
# electrum listunspent
[
    {
        "address": "19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K",
        "index": 0,
        "raw_output_script": "76a9145d26476442224149ddc2d7ddf4f28a8536b4da4488ac",
        "tx_hash": "d5eef5996fd72aee5c1ee3578a645db9d43b5fc6184a38d9e92ceeddd316dd12",
        "value": "0.01"
    },
    {
        "address": "189GtcmuBLbno2LM3XMX5yYbixga3Rrerd",
        "index": 0,
        "raw_output_script": "76a9144e5978f1bd454aade7b881e3839bca27fa99a86188ac",
        "tx_hash": "7b2861235bb2e912494999ca15d223d5bcf47c7f7d4d3187a520ab8c01e39362",
        "value": "0.02"
    }
]

contacts

Show your list of contacts

Huh? Show favorite contacts? (set with setconfig)

# electrum contacts
{
    "16eFiVsWR5AQ87Evabja8kF1HZv5hE3zmk": "contact1",
    "17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN": "deepbit"
}

Send Money

payto

Create and broadcast a transaction.
Syntax: payto <recipient> <amount> [label]
<recipient> can be a bitcoin address or a label
options:
 --fee, -f: set transaction fee
 --fromaddr, -s: send from address -
 --changeaddr, -c: send change to address
# electrum payto 1AqipkayBadTbbjapoNJ4ZKpSyiN5nyZWr 0.02452 bitmit-2600
#  electrum payto 1GJH7pYPMocSL1fFEizn6tqj83uUJnybNg 0.01002203 mtgox-20131204 --fee 0

mktx

First step in a signing a transaction (manual process)

Create a signed transaction
Syntax: mktx <recipient> <amount> [label]
options:
 --fee, -f: set transaction fee
 --fromaddr, -s: send from address -
 --changeaddr, -c: send change to address

Here is how to sign a transaction with an offline Electrum wallet - http://electrum.org/offline_wallets.html

freeze

freeze - Freeze the funds at one of your wallet's addresses
Syntax: freeze <address>
# electrum freeze 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
true

unfreeze

unfreeze - Unfreeze the funds at one of your wallet's address
Syntax: unfreeze <address>
# electrum unfreeze 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
true


prioritize

prioritize - Coins at prioritized addresses are spent first.
Syntax: prioritize <address>
electrum unprioritize 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
# electrum prioritize 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
true

# electrum getconfig prioritized_addresses
['12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr']

unprioritize

Unprioritize an address Syntax: unprioritize <address>

# electrum unprioritize 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
true

# electrum getconfig prioritized_addresses
[]

Configuration

getconfig

Return a configuration variable
Syntax: getconfig <name>
options:
 accounts, addr_history, auto_cycle, column_widths, console-history, contacts,
 fee_per_kb, frozen_addresses, gap_limit, imported_keys, labels,
 master_public_key, num_zeros, prioritized_addresses, proxy, seed,
 seed_version, server, transactions, use_change, use_encryption, winpos-qt
# electrum getconfig accounts    #(output forced wrapped)
{0: {0: ['17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN', '19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K', '189GtcmuBLbno2LM3XMX5yYbixga3Rrerd', '1BWMeAWW1ZHw3JtmZyyN8PVSRciubRdBWA',
'1A75ZG5bABjFGTnfXgmQtNdsxYBhqvyyHg', '17aBaFQezCjw3bGk5edbe7FHqmwgY6jraH', '1P5rCjyL4MrgMQwcierKK58AUvz5mELQDX', '19jZyi7Jh4gwBxVTB3cUBuDUkbAKyPTGU7',
'12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr', '13uN81RX5HrniuC2rH8MPn2ZcrHvPuvey7', '12xD238UUzS5DHfsk6fendwC3RUbCZw2mE', '1Lt6rW6t36ZKz9LUswCYACZoAnVh8ePCoE',
'1L4BFhzjZL5KFiLVdzgf4bT4ZtJtRA7LtK'], 1: ['1GxSUrwHDTwDBa6q9m48F5cJW2y35cGALi', '1LRnTCuUcaxPirNbh4xzB6MnuKjDK3vQi1', '1Kk6WTB35E613yq6S4YwWiDNEon8Y7de82'], 'name': 'Main account'}}
# electrum getconfig addr_history    #(output forced wrapped)
{'12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr': [], '1P5rCjyL4MrgMQwcierKK58AUvz5mELQDX': [],
'189GtcmuBLbno2LM3XMX5yYbixga3Rrerd': [(u'7b2861235bb2e912494999ca15d223d5bcf47c7f7d4d3187a520ab8c01e39362', 262971)],
'13uN81RX5HrniuC2rH8MPn2ZcrHvPuvey7': [], '1LRnTCuUcaxPirNbh4xzB6MnuKjDK3vQi1': [], '1BWMeAWW1ZHw3JtmZyyN8PVSRciubRdBWA': [], '1L4BFhzjZL5KFiLVdzgf4bT4ZtJtRA7LtK': [],
'1Lt6rW6t36ZKz9LUswCYACZoAnVh8ePCoE': [], '17aBaFQezCjw3bGk5edbe7FHqmwgY6jraH': [], '19jZyi7Jh4gwBxVTB3cUBuDUkbAKyPTGU7': [], '1Kk6WTB35E613yq6S4YwWiDNEon8Y7de82': [],
'17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN': [], '19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K': [(u'd5eef5996fd72aee5c1ee3578a645db9d43b5fc6184a38d9e92ceeddd316dd12', 262971)],
'1GxSUrwHDTwDBa6q9m48F5cJW2y35cGALi': [], '12xD238UUzS5DHfsk6fendwC3RUbCZw2mE': [], '1A75ZG5bABjFGTnfXgmQtNdsxYBhqvyyHg': []}
# electrum getconfig auto_cycle
None
# electrum getconfig column_widths
None
# electrum getconfig console-history
None
# electrum getconfig contacts
[]

# electrum getconfig contacts
[u'16eFiVsWR5AQ87Evabja8kF1HZv5hE3zmk', u'17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN']
# electrum getconfig fee_per_kb
50000
# electrum getconfig frozen_addresses
[]
# electrum getconfig gap_limit
5
# electrum getconfig imported_keys
{}
# electrum getconfig labels
{'17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN': 'first', '19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K': 'item1'}
# electrum getconfig master_public_key
5ac4c655e0f0443b14199995c0a0fa527773ddc891d2fc93efd0f2b25ed71f4343bd2046178b7d54411c427f0035f96b0f68047311e6977149150213f0ef4846
# electrum getconfig num_zeros
0
# electrum getconfig prioritized_addresses
['17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN']
# electrum getconfig proxy
None
# electrum getconfig seed
9vK4QX7WpFsB11PO9sQKY8f8RixZFEB1b+GtXlAwUjC8O85vFdxZmHLFuvsKUJkZ9CzAie8woBcS8/sF7ipgYA==
# electrum getconfig seed_version
4
# electrum getconfig server
electrum.coinwallet.me:50002:s
# electrum getconfig transactions    #(output forced wrapped)
{u'7b2861235bb2e912494999ca15d223d5bcf47c7f7d4d3187a520ab8c01e39362': '010000000112dd16d3ddee2ce9d9384a18c65f3bd4b95d648a57e31e5cee2
ad76f99f5eed5010000006c493046022100aa2f4f1fa84e565614cb79d5dc4fc4bafe9167f2fd63870c865fd052d4e4d2160221009173c0694ce19fa9f204495b5ae
a86a7c33ea364c27462b59bcf545a76d8fa6b0121031046b1dc988daf65caa3879cd03b6f8710d1776c40b6556024a79c0528a6307fffffffff0280841e000000000
01976a9144e5978f1bd454aade7b881e3839bca27fa99a86188acc0450400000000001976a9140de8b58942b0488e1ee46767f3a2a934434a52f688ac00000000',
 u'd5eef5996fd72aee5c1ee3578a645db9d43b5fc6184a38d9e92ceeddd316dd12': '01000000017fd0651c7467b07604188bb90c7424908c7f6f1af7f178a31136ee91a119464a000000006a47304402205e602212d92147138026978c0670607293874
ffe3a1e96ba870fc7e49359e47502207369c85a3ee072ad8e84a6cac76f22520e11fffb05716e4c64c598f05454a701012103b9b84ec1b3e62dd523a6291fd2725b3
2fda24f22973f98962e430a1bfc44ead4ffffffff0240420f00000000001976a9145d26476442224149ddc2d7ddf4f28a8536b4da4488ac50f12200000000001976a
9140de8b58942b0488e1ee46767f3a2a934434a52f688ac00000000'}
# electrum getconfig use_change
True
# electrum getconfig use_encryption
True
# electrum getconfig winpos-qt
None

setconfig

Set a configuration variable
Syntax: setconfig <name> <value>
options:
 accounts, addr_history, auto_cycle, column_widths, console-history, contacts,
 fee_per_kb, frozen_addresses, gap_limit, imported_keys, labels,
 master_public_key, num_zeros, prioritized_addresses, proxy, seed,
 seed_version, server, transactions, use_change, use_encryption, winpos-qt
# electrum setconfig contacts "[u'16eFiVsWR5AQ87Evabja8kF1HZv5hE3zmk', u'17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN']"
# electrum setconfig contacts "['16eFiVsWR5AQ87Evabja8kF1HZv5hE3zmk', '17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN']"
Set Server

Server list - http://electrum.qc.to/

# electrum getconfig server
electrum.coinwallet.me:50002:s
# electrum setconfig server electrum.coinwallet.me:50002:s
True

# electrum setconfig server bitcoin.epicinet.net:50002:s
True

How to run your own Electrum server - https://github.com/spesmilo/electrum-server/blob/master/HOWTO.md

Get Servers

Server list - http://electrum.qc.to/

Assuming you can actually connect to the current server, you can get a list of other servers by:

$ electrum getservers
Starting daemon [bitcoin.chroot.ro:50002:s]
{
    "EAST.electrum.jdubya.info": {
        "s": "50002"
    },
    "bitcoin.chroot.ro": {
        "s": "50002"
    },
...
}

Private Keys

dumpprivkey

WARNING: ALL your private keys are secret.
Exposing a single private key can compromise your entire wallet!
In particular, DO NOT use 'redeem private key' services proposed by third parties.
dumpprivkey - Dumps a specified private key for a given address
Syntax: dumpprivkey <bitcoin address>
# electrum dumpprivkey 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
5JNt2dqtkyceaNcRKbRzMsrTJZ38RMYKdzbyLjTHGbE5Euo957J

dumpprivkeys

Export a private key, for backup or import into another source. (addresses are generated from private keys)

WARNING: ALL your private keys are secret.
Exposing a single private key can compromise your entire wallet!
In particular, DO NOT use 'redeem private key' services proposed by third parties.
dumpprivkeys - dump all private keys
# electrum dumpprivkeys
{
    "12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr": "5JNt2dqtkyceaNcRKbRzMsrTJZ38RMYKdzbyLjTHGbE5Euo957J",
    "12xD238UUzS5DHfsk6fendwC3RUbCZw2mE": "5J9cRMqQjiwxp5SZ7oM6Z1BX5u9Nnb4tEy5HHcy3nYSRdn6SnNX",
...
}

importprivkey

Import a private key generated by another source (addresses are generated from private keys)

importprivkey - Import a private key
Syntax: importprivkey <privatekey>
# electrum importprivkey KwHrykkGkgAZX4QRKpEJqzWAqDHWQM5VnC5Mw2ToEy6T8CQdsaNM
[
    "Keypair imported: ",
    "1HdcTEjkWN416GiMtqHFDWohGfU6yWTn2N"
]

NOTE: These addresses will not be auto included, if you ever rebuild your wallet!

Sign Message

"The "Sign Message" feature is an advanced functionality of the Bitcoin client which allows you to sign arbitrary messages to prove to somebody that you are (were) in control of the funds of some Bitcoin address. For a usage example see this answer. You normally don't need this feature for day-to-day use of Bitcoin." [2]

"The signing mechanism is a way of proving that a particular message was signed by the holder of an address' private key. A merchant could ask that you sign a message stating where you want your order shipped to, using one of the addresses your payment originated from.

You should sign a statement saying "I, Jane Doe (jane.doe@email.com) sent 1.23 BTC to Acme Corp at 12:34pm, 1st Jan 2012 in payment for product XYZ for delivery to 456 High Street, Anytown, USA".

You shouldn't sign a vague statement saying "yes, I sent that money; send the product to the address I emailed you", because anyone seeing a copy of that signed message can then pass that on to the merchant with his own postal address and get the product you paid for, in the same way as you wouldn't put your signature to a piece of paper saying "I agree to the above" where the above was left blank. The postal address part won't be signed, but perhaps the merchant won't care." [3]

signmessage

signmessage - Sign a message with a key
Syntax: signmessage <address> <message>
If you want to lead or end a message with spaces, or want double spaces inside the message make sure you quote the string. I.e. " Hello  This is a weird String "

Huh? I guess if you want to attach something to an email to verify it was you who sent the money??

# electrum signmessage 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr bitmint_sign_test
HJpIllY8N4OQXpHrICLuGg5pc9YDcS1B60i56RPnvrrNhC1ltncdQ7al4LjcyHeuBF8Yu/aQW4OOyuapFJZpOkg=

verifymessage

verifymessage - electrum Verifies a signature
Syntax: verifymessage <address> <signature> <message>
If you want to lead or end a message with spaces, or want double spaces inside the message make sure you quote the string. I.e. " Hello  This is a weird String "
# electrum verifymessage 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr HJpIllY8N4OQXpHrICLuGg5pc9YDcS1B60i56RPnvrrNhC1ltncdQ7al4LjcyHeuBF8Yu/aQW4OOyuapFJZpOkg= bitmint_sign_test
true

# electrum verifymessage 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr HJpIllY8N4OQXpHrICLuGg5pc9YDcS1B60i56RPnvrrNhC1ltncdQ7al4LjcyHeuBF8Yu/aQW4OOyuapFJZpOkg= goatcheese
false

help

help

# electrum help
Usage: %prog [options] command [options]

Options:
  -h, --help            show this help message and exit
  -g GUI, --gui=GUI     User interface: qt, lite, gtk or text
  -w WALLET_PATH, --wallet=WALLET_PATH
                        wallet path (default: electrum.dat)
  -o, --offline         remain offline
  -a, --all             show all addresses
  -b, --balance         show the balance of listed addresses
  -l, --labels          show the labels of listed addresses
  -f TX_FEE, --fee=TX_FEE
                        set tx fee
  -F FROM_ADDR, --fromaddr=FROM_ADDR
                        set source address for payto/mktx. if it isn't in the
                        wallet, it will ask for the private key unless
                        supplied in the format public_key:private_key. It's
                        not saved in the wallet.
  -c CHANGE_ADDR, --changeaddr=CHANGE_ADDR
                        set the change address for payto/mktx. default is a
                        spare address, or the source address if it's not in
                        the wallet
  -s SERVER, --server=SERVER
                        set server host:port:protocol, where protocol is t or
                        h
  -p PROXY, --proxy=PROXY
                        set proxy [type:]host[:port], where type is
                        socks4,socks5 or http
  -v, --verbose         show debugging information
  -P, --portable        portable wallet
  -L LANGUAGE, --lang=LANGUAGE
                        defaut language used in GUI
  -u, --usb             Turn on support for hardware wallets (EXPERIMENTAL)
Type 'electrum help <command>' to see the help for a specific command
Type 'electrum --help' to see the list of options

List of commands: contacts, create, createmultisig, createrawtransaction,
decoderawtransaction, deseed, dumpprivkey, dumpprivkeys, freeze,
getaddressbalance, getaddresshistory, getbalance, getconfig, getseed, help,
history, importprivkey, listaddresses, listunspent, mktx, password, payto,
prioritize, restore, sendrawtransaction, setconfig, setlabel, signmessage,
signrawtransaction, unfreeze, unprioritize, validateaddress, verifymessage

Other

createmultisig

createmultisig - similar to bitcoind's command

Huh?

createrawtransaction

createrawtransaction - similar to bitcoind's command

Huh?

decoderawtransaction

decoderawtransaction - similar to bitcoind's command

Huh?

getaddresshistory

getaddresshistory - Return the transaction history of an address
Syntax: getaddresshistory <address>
# electrum getaddresshistory 12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
Connected to electrum.coinwallet.me:50002
[
    [
        "18249931dd0ac76102fd07214cde8e0b5993d42c42abd63e8ebdac3b85db6566",
        266904
    ]
]

sendrawtransaction

sendrawtransaction - Broadcasts a transaction to the network.
Syntax: sendrawtransaction <tx in hexadecimal>

Huh?

signrawtransaction

signrawtransaction - similar to bitcoind's command

huh?

Wallet Create & Restore

Create:

# electrum create
Password (hit return if you do not wish to encrypt your wallet):
server (default:electrum.coinwallet.me):
port (default:50002):
protocol [t=tcp;h=http] (default:s):
fee (default:0.0005):0
gap limit (default 5):
17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN
19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K
189GtcmuBLbno2LM3XMX5yYbixga3Rrerd
1BWMeAWW1ZHw3JtmZyyN8PVSRciubRdBWA
1A75ZG5bABjFGTnfXgmQtNdsxYBhqvyyHg
1GxSUrwHDTwDBa6q9m48F5cJW2y35cGALi
1LRnTCuUcaxPirNbh4xzB6MnuKjDK3vQi1
1Kk6WTB35E613yq6S4YwWiDNEon8Y7de82
Your wallet generation seed is: e57ceca34c63e37b48002e1320d74017
Please keep it in a safe place; if you lose it, you will not be able to restore your wallet.
Equivalently, your wallet seed can be stored and recovered with the following mnemonic code:
"verse path laugh creator ship guilty serious tumble kingdom wonderful mutter lip"
Wallet saved in '/root/.electrum/electrum.dat'

Restore: (with a few used addresses)

# electrum restore
Password (hit return if you do not wish to encrypt your wallet):
server (default:electrum.coinwallet.me):
port (default:50002):
protocol [t=tcp;h=http] (default:s):
fee (default:0.0005):0
gap limit (default 5):10
seed:e57ceca34c63e37b48002e1320d74017
Recovering wallet...
17YYUy6V4zJwx8XBXUT9L7sj3P3kucBmGN
19VXhWB4j4yp3jLWqyLkedaDY4UJ8Pvs8K
189GtcmuBLbno2LM3XMX5yYbixga3Rrerd
1BWMeAWW1ZHw3JtmZyyN8PVSRciubRdBWA
1A75ZG5bABjFGTnfXgmQtNdsxYBhqvyyHg
17aBaFQezCjw3bGk5edbe7FHqmwgY6jraH
1P5rCjyL4MrgMQwcierKK58AUvz5mELQDX
19jZyi7Jh4gwBxVTB3cUBuDUkbAKyPTGU7
12oQAaTa6mRjnkbrgoCKVhYk37wtDsR6Zr
13uN81RX5HrniuC2rH8MPn2ZcrHvPuvey7
1GxSUrwHDTwDBa6q9m48F5cJW2y35cGALi
1LRnTCuUcaxPirNbh4xzB6MnuKjDK3vQi1
1Kk6WTB35E613yq6S4YwWiDNEon8Y7de82
12xD238UUzS5DHfsk6fendwC3RUbCZw2mE
1Lt6rW6t36ZKz9LUswCYACZoAnVh8ePCoE
1L4BFhzjZL5KFiLVdzgf4bT4ZtJtRA7LtK
Recovery successful
Wallet saved in '/root/.electrum/electrum.dat'
Exception in thread Thread-3 (most likely raised during interpreter shutdown):Exception in thread Thread-2 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner

  File "/usr/local/lib/python2.7/dist-packages/electrum/wallet.py", line 1121, in run  File "/usr/local/lib/python2.7/dist-packages/electrum/verifier.py", line 185, in run
  File "/usr/local/lib/python2.7/dist-packages/electrum/interface.py", line 192, in get_response

  File "/usr/local/lib/python2.7/dist-packages/electrum/verifier.py", line 238, in verify_chunk  File "/usr/lib/python2.7/Queue.py", line 174, in get

Clearly there are bugs

Issues

AttributeError: 'NetworkProxy' object has no attribute 'send' - v1.9.8

$ electrum getbalance
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.7/dist-packages/Electrum-1.9.8-py2.7.egg/electrum/verifier.py", line 106, in run
    if self.network.send([ ('blockchain.transaction.get_merkle',[tx_hash, tx_height]) ], lambda i,r: self.queue.put(r)):
AttributeError: 'NetworkProxy' object has no attribute 'send'

Solution:

ImportError: cannot import name _ - 63c7a27d7e35b4ae13a5eeb2b673a841a8c25242

Updated to development version to get around "'NetworkProxy' object has no attribute 'send'" error and ran into this:

$ sudo python setup.py install
Traceback (most recent call last):
  File "setup.py", line 13, in <module>
    util = imp.load_source('util', 'lib/util.py')
  File "lib/util.py", line 5, in <module>
    from i18n import _
ImportError: cannot import name _

I hacked this to get around it:

diff --git a/lib/util.py b/lib/util.py
index 38b13f3..0e96350 100644
--- a/lib/util.py
+++ b/lib/util.py
@@ -2,13 +2,14 @@ import os, sys, re, json
 import platform
 import shutil
 from datetime import datetime
-from i18n import _
+#from i18n import i18n

 class NotEnoughFunds(Exception): pass

 class InvalidPassword(Exception):
     def __str__(self):
-        return _("Incorrect password")
+        #return _("Incorrect password")
+        return "Incorrect password"

 class MyEncoder(json.JSONEncoder):
     def default(self, obj):

keywords