ThomasV
9 years ago
3 changed files with 0 additions and 162 deletions
@ -1,60 +0,0 @@ |
|||
<html> |
|||
<body> |
|||
<div style="width:35em;margin-left:5em;"> |
|||
<h2>Electrum for Android</h2> |
|||
|
|||
This page explains how to install Electrum on Android devices.<br/><br/> |
|||
|
|||
Please note that Electrum is not distributed as a binary package, but |
|||
as python source code; this gives users the possibility to see what |
|||
the code is doing, and to check that it does not contain malware. The |
|||
downside is that installation is slightly more complicated than |
|||
downloading an app on the Android market, but it remains very |
|||
simple. <br/><br/> |
|||
|
|||
It is possible to print this page on paper and to install everything from |
|||
QR codes. If you encounter problems, you may find help at |
|||
<a href="http://maketecheasier.com/install-applications-without-the-market/2011/01/28"> |
|||
this link</a>. |
|||
|
|||
|
|||
<h3>1. Download and install Google Scripting Layer for Android</h3> |
|||
|
|||
You can get |
|||
it <a href="http://code.google.com/p/android-scripting/wiki/Unofficial">here</a>, |
|||
or by scanning the following qr code: <br/> |
|||
<img src="http://chart.apis.google.com/chart?cht=qr&chs=150x150&chld=L&choe=UTF-8&chl=http%3A%2F%2Fwww.mithril.com.au%2Fandroid%2Fsl4a_r5x.apk" |
|||
/> |
|||
|
|||
|
|||
<h3>2. Download and install Python for Android</h3> |
|||
|
|||
You can get |
|||
it <a href="http://code.google.com/p/python-for-android/downloads/detail?name=PythonForAndroid_r5.apk">here</a>, |
|||
or by scanning the following qr code: <br/> |
|||
<img src="http://chart.apis.google.com/chart?cht=qr&chs=200x200&chld=L&choe=UTF-8&chl=http%3A%2F%2Fpython-for-android.googlecode.com%2Ffiles%2FPythonForAndroid_r5.apk"/> |
|||
<br/> |
|||
Once you have installed the apk, launch the Python for Android application and click 'install' |
|||
|
|||
<h3>3. Download the Electrum install script</h3> |
|||
|
|||
Download <a href="e4a_install.py">e4a_install.py</a> and install it in your sl4a/scripts directory. |
|||
You can do it manually, or from QR code, as follows: |
|||
<pre> |
|||
1. Launch SL4A. |
|||
2. Press the Menu button. |
|||
3. Tap Add. |
|||
4. Tap Scan Barcode. |
|||
5. Scan the following QRcode: |
|||
</pre> |
|||
<img src="http://chart.apis.google.com/chart?cht=qr&chs=300x300&chld=L&choe=UTF-8&chl=e4a_install.py%0Aimport+urllib%2C+zipfile%2C+os%0Ap%3D%22http%3A%2F%2Fecdsa.org%2Felectrum%2Fe4a%22%0An%3D%22Electrum-0.43d%22%0Anz%3Dn%2B%22.zip%22%0Aurllib.urlretrieve(p%2Cnz)%0Azipfile.ZipFile(nz).extractall()%0Aos.rename(n%2C'scripts%2F'%2Bn)" |
|||
/> |
|||
<pre>This will install a script named e4a_install.py</pre> |
|||
|
|||
<h3>4. Download and install Electrum</h3> |
|||
<pre> |
|||
1. Tap e4a_install.py: it will download and install a directory named "Electrum-0.43d" |
|||
2. To launch Electrum, visit the "Electrum-0.43d" directory and tap 'electrum4a.py' |
|||
</pre> |
|||
</body> |
|||
</html> |
@ -1,31 +0,0 @@ |
|||
Here is how to sign a transaction with an offline Electrum wallet. |
|||
|
|||
1. With your online (seedless) wallet, create the transaction using 'mktx': |
|||
|
|||
./electrum -w seedless_wallet mktx 1Cpf9zb5Rm5Z5qmmGezn6ERxFWvwuZ6UCx 0.1 |
|||
{ |
|||
"complete": false, |
|||
"hex": "01000000015a92850cc5dc7bb7c1a711c1ce0c1658596c085d49c17fce68c641cce0bdd188010000004801ff45fe197f1a7a7779f58690c3100364d7ce596bf47bb52e88e617e22940bf54a8f139194652584b0d357eb95defb8b4911b0a53118b8afecb96aedb1334e772df350901002800ffffffff02b1f0f65d000000001976a9147ea19cc36d846e2ce81762def3cb9299bed0847188ac80969800000000001976a91451e814c0f7637ba9a59bc11628337a2df6559a5088ac00000000" |
|||
} |
|||
|
|||
Electrum returns an unsigned transaction. Note that the serialization |
|||
format contains the master public key needed and key derivation, used |
|||
by the offline wallet to sign the transaction. |
|||
|
|||
|
|||
2. Sign the transaction with your offline wallet, using 'signrawtransaction': |
|||
|
|||
./electrum -w wallet_with_seed signrawtransaction 01000000015a92850cc5dc7bb7c1a711c1ce0c1658596c085d49c17fce68c641cce0bdd188010000004801ff45fe197f1a7a7779f58690c3100364d7ce596bf47bb52e88e617e22940bf54a8f139194652584b0d357eb95defb8b4911b0a53118b8afecb96aedb1334e772df350901002800ffffffff02b1f0f65d000000001976a9147ea19cc36d846e2ce81762def3cb9299bed0847188ac80969800000000001976a91451e814c0f7637ba9a59bc11628337a2df6559a5088ac00000000 |
|||
Password: |
|||
{ |
|||
"complete": true, |
|||
"hex": "01000000015a92850cc5dc7bb7c1a711c1ce0c1658596c085d49c17fce68c641cce0bdd188010000008b483045022100c65dd8899d4e1d12b1ebaa0ea15835f9a158343733fbe990cdfebde2164d89c802201a5a8fe737b07daf700aeecf3b6a4111c563ebc181da75b1f264883060c273da0141040beb415f075a532982fe982d01736453d4e3413566c79a39d16679474c7ab94022269b9f726edc152a89dfcf18cd3dd2a38fc5e442f24d22a51545ca42beb7b5ffffffff02b1f0f65d000000001976a9147ea19cc36d846e2ce81762def3cb9299bed0847188ac80969800000000001976a91451e814c0f7637ba9a59bc11628337a2df6559a5088ac00000000" |
|||
} |
|||
|
|||
The result is a fully signed transaction, as indicated by the "complete" field. |
|||
|
|||
|
|||
3. Broadcast the transaction to the Bitcoin network, using 'sendrawtransaction': |
|||
|
|||
./electrum sendrawtransaction 01000000015a92850cc5dc7bb7c1a711c1ce0c1658596c085d49c17fce68c641cce0bdd188010000008b483045022100c65dd8899d4e1d12b1ebaa0ea15835f9a158343733fbe990cdfebde2164d89c802201a5a8fe737b07daf700aeecf3b6a4111c563ebc181da75b1f264883060c273da0141040beb415f075a532982fe982d01736453d4e3413566c79a39d16679474c7ab94022269b9f726edc152a89dfcf18cd3dd2a38fc5e442f24d22a51545ca42beb7b5ffffffff02b1f0f65d000000001976a9147ea19cc36d846e2ce81762def3cb9299bed0847188ac80969800000000001976a91451e814c0f7637ba9a59bc11628337a2df6559a5088ac00000000 |
|||
"ef6b561232f3c507219ab7d2a79f8849e14ed7e926e77546c2d9e751905b825b" |
@ -1,71 +0,0 @@ |
|||
<html> |
|||
<head> |
|||
This is the documentation for the Electrum Console.<br/> |
|||
</head> |
|||
<body> |
|||
<div style="width:45em"> |
|||
<br/> |
|||
Most Electrum command-line commands are also available in the console. <br/> |
|||
The results are Python objects, even though they are |
|||
sometimes rendered as JSON for clarity.<br/> |
|||
<br/> |
|||
Let us call <tt>listunspent()</tt>, to see the list of unspent outputs in the wallet: |
|||
<pre> |
|||
>> listunspent() |
|||
[ |
|||
{ |
|||
"address": "12cmY5RHRgx8KkUKASDcDYRotget9FNso3", |
|||
"index": 0, |
|||
"raw_output_script": "76a91411bbdc6e3a27c44644d83f783ca7df3bdc2778e688ac", |
|||
"tx_hash": "e7029df9ac8735b04e8e957d0ce73987b5c9c5e920ec4a445130cdeca654f096", |
|||
"value": 0.01 |
|||
}, |
|||
{ |
|||
"address": "1GavSCND6TB7HuCnJSTEbHEmCctNGeJwXF", |
|||
"index": 0, |
|||
"raw_output_script": "76a914aaf437e25805f288141bfcdc27887ee5492bd13188ac", |
|||
"tx_hash": "b30edf57ca2a31560b5b6e8dfe567734eb9f7d3259bb334653276efe520735df", |
|||
"value": 9.04735316 |
|||
} |
|||
] |
|||
</pre> |
|||
Note that the result is rendered as JSON. <br/> |
|||
However, if we save it to a Python variable, it is rendered as a Python object: |
|||
<pre> |
|||
>> u = listunspent() |
|||
>> u |
|||
[{'tx_hash': u'e7029df9ac8735b04e8e957d0ce73987b5c9c5e920ec4a445130cdeca654f096', 'index': 0, 'raw_output_script': '76a91411bbdc6e3a27c44644d83f783ca7df3bdc2778e688ac', 'value': 0.01, 'address': '12cmY5RHRgx8KkUKASDcDYRotget9FNso3'}, {'tx_hash': u'b30edf57ca2a31560b5b6e8dfe567734eb9f7d3259bb334653276efe520735df', 'index': 0, 'raw_output_script': '76a914aaf437e25805f288141bfcdc27887ee5492bd13188ac', 'value': 9.04735316, 'address': '1GavSCND6TB7HuCnJSTEbHEmCctNGeJwXF'}] |
|||
</pre> |
|||
<br/> |
|||
This makes it possible to combine Electrum commands with Python.<br/> |
|||
For example, let us pick only the addresses in the previous result: |
|||
<pre> |
|||
>> map(lambda x:x.get('address'), listunspent()) |
|||
[ |
|||
"12cmY5RHRgx8KkUKASDcDYRotget9FNso3", |
|||
"1GavSCND6TB7HuCnJSTEbHEmCctNGeJwXF" |
|||
] |
|||
</pre> |
|||
Here we combine two commands, <tt>listunspent</tt> |
|||
and <tt>dumpprivkeys</tt>, in order to dump the private keys of all adresses that have unspent outputs: |
|||
<pre> |
|||
>> dumpprivkeys( map(lambda x:x.get('address'), listunspent()) ) |
|||
{ |
|||
"12cmY5RHRgx8KkUKASDcDYRotget9FNso3": "***************************************************", |
|||
"1GavSCND6TB7HuCnJSTEbHEmCctNGeJwXF": "***************************************************" |
|||
} |
|||
</pre> |
|||
Note that <tt>dumpprivkey</tt> will ask for your password if your |
|||
wallet is encrypted. |
|||
<br/> |
|||
The GUI methods can be accessed through the <tt>gui</tt> variable. |
|||
For example, you can display a QR code from a string using |
|||
gui.show_qrcode. |
|||
Example: |
|||
<pre> |
|||
gui.show_qrcode(dumpprivkey(listunspent()[0]['address'])) |
|||
</pre> |
|||
|
|||
</div> |
|||
</body> |
|||
</html> |
Loading…
Reference in new issue