commit 4916aefe985cc2e674316ee28e972d8f6179884f
parent 8b8e2fd67b40d1ae8d354333b500dbdbdfa9a4d4
Author: thomasv <thomasv@gitorious>
Date: Mon, 25 Feb 2013 10:14:20 +0100
documentation for offline wallets, release notes
Diffstat:
3 files changed, 49 insertions(+), 14 deletions(-)
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
@@ -1,26 +1,35 @@
# Release 1.7
-* Synchronization waits until transactions have 2 confirmations before
-creating new addresses. This makes recovery from seed more robust, but
-it might create unwanted gaps if you use Electrum 1.7 together with
-older versions of Electrum.
+* The wallet does not create new addresses until transactions have 2
+confirmations. This makes recovery from seed more robust. Note that it
+might create unwanted gaps if you use Electrum 1.7 together with older
+versions of Electrum.
-* The Wall has been replaced by an interactive Python console. Wallet
-and Blockchain functions can be accessed through it. The goal is to
-let users extend Electrum through custom scripts.
+* An interactive Python console replaces the 'wall' tab. The provided
+python environment gives users access to the wallet and gui. Custom
+scripts an be loaded with a "run(filename)" command. Tab-completions
+are available.
-* The location of the Electrum folder in Windows changed from LOCALAPPDATA
-to APPDATA. Discussion on this topic can be found here: https://bitcointalk.org/index.php?topic=144575.0
+* The location of the Electrum folder in Windows changed from
+LOCALAPPDATA to APPDATA. Discussion on this topic can be found here:
+https://bitcointalk.org/index.php?topic=144575.0
* Private keys can be exported from within the classic GUI:
For a single address, use the address menu (right-click).
- To export keys for the entire wallet, use the settings dialog (import/export tab).
+ To export the keys of your entire wallet, use the settings dialog (import/export tab).
* It is possible to create, sign and redeem multisig transaction, using the command line interface.
- This is made possible by the following new commands:
+This is made possible by the following new commands:
dumpprivkey, listunspent, createmultisig, createrawtransaction, decoderawtransaction, signrawtransaction
- The syntax of these commands is similar to their bitcoind counterpart.
- For an example, see Gavin's tutorial: https://gist.github.com/gavinandresen/3966071
+The syntax of these commands is similar to their bitcoind counterpart.
+For an example, see Gavin's tutorial: https://gist.github.com/gavinandresen/3966071
+
+* Offline wallets do not need to be resynchronized in order to sign a transaction.
+ For this, use 'signrawtransaction'. ('signtx' is deprecated').
+ See the help in docs/offline_wallets
+
+
+
# Release 1.6.2
diff --git a/docs/offline_wallets b/docs/offline_wallets
@@ -0,0 +1,27 @@
+Here is how to sign a transaction with an offline Electrum wallet.
+
+1. With your online (seedless) wallet, create the transaction using mktx:
+
+./electrum mktx 1Cpf9zb5Rm5Z5qmmGezn6ERxFWvwuZ6UCx 0.1
+{
+ "complete": false,
+ "hex": "010000000296f054a6eccd3051444aec20e9c5c9b58739e70c7d958e4eb03587acf99d02e70000000000ffffffffdf350752fe6e27534633bb59327d9feb347756fe8d6e5b0b56312aca57df0eb30000000000ffffffff02f4345c35000000001976a914aaf437e25805f288141bfcdc27887ee5492bd13188ac80969800000000001976a91481acc8b7f9ec7cbf45a02dd8b758c6ac6a1481ca88ac00000000",
+ "input_info": "[{'scriptPubKey':'76a91411bbdc6e3a27c44644d83f783ca7df3bdc2778e688ac','electrumKeyID':(15,False),'vout':0,'txid':u'e7029df9ac8735b04e8e957d0ce73987b5c9c5e920ec4a445130cdeca654f096'},{'scriptPubKey':'76a914aaf437e25805f288141bfcdc27887ee5492bd13188ac','electrumKeyID':(112,True),'vout':0,'txid':u'b30edf57ca2a31560b5b6e8dfe567734eb9f7d3259bb334653276efe520735df'}]"
+}
+
+Note that returned json contains the unsigned tx in "hex". The field
+"complete" is false because the transaction is not signed, and
+"input_info" contains parameters that need to be passed to the offline
+wallet so that it knows which private keys to generate.
+
+2. Sign the transaction with your offline wallet: pass "hex" and "input_info" to 'signrawtransaction':
+
+./electrum signrawtransaction 010000000296f054a6eccd3051444aec20e9c5c9b58739e70c7d958e4eb03587acf99d02e70000000000ffffffffdf350752fe6e27534633bb59327d9feb347756fe8d6e5b0b56312aca57df0eb30000000000ffffffff0280969800000000001976a91481acc8b7f9ec7cbf45a02dd8b758c6ac6a1481ca88acf4345c35000000001976a914aaf437e25805f288141bfcdc27887ee5492bd13188ac00000000 "[{'scriptPubKey':'76a91411bbdc6e3a27c44644d83f783ca7df3bdc2778e688ac','electrumKeyID':(15,False),'vout':0,'txid':u'e7029df9ac8735b04e8e957d0ce73987b5c9c5e920ec4a445130cdeca654f096'},{'scriptPubKey':'76a914aaf437e25805f288141bfcdc27887ee5492bd13188ac','electrumKeyID':(112,True),'vout':0,'txid':u'b30edf57ca2a31560b5b6e8dfe567734eb9f7d3259bb334653276efe520735df'}]"
+Password:
+{
+ "complete": true,
+ "hex": "010000000296f054a6eccd3051444aec20e9c5c9b58739e70c7d958e4eb03587acf99d02e7000000008b483045022100893c91ffcf3886aeb9dd6b11e5063b501546924d888826c3a92e5c7f3cf5e43602207667a4bd014d7eda2d48a651f18540937f4aeaae629e2a8851826bcfdf0967cb01410483aab8cc5fb1497bf438fef22556d1d3ccda8e96c36d39c616ae56979f939057f1eee07212e7d02080d62e366a1d7eaaa25d0740d8f8f61c01b3405577204ad3ffffffffdf350752fe6e27534633bb59327d9feb347756fe8d6e5b0b56312aca57df0eb3000000008c493046022100d6086e63e3f0beac314cb71f29c52159ad2e6dccfb257b2378eeff1cbb0c2038022100eb1808698c2275565418731e16a6377c69c57209aba46c5fb65dc4240f1c06ba014104315efb3001e2452f7848c43329234f11e54a4e59df7bcadd8b32f4dd9c3ca384dac96820f39860011243586e30fe79be920378d3709ec71b504e59bb450f5066ffffffff0280969800000000001976a91481acc8b7f9ec7cbf45a02dd8b758c6ac6a1481ca88acf4345c35000000001976a914aaf437e25805f288141bfcdc27887ee5492bd13188ac00000000"
+}
+
+The command returns a fully signed transaction, as indicated by the "complete" field.
+This transaction can be sent to the network with 'sendrawtransaction'
diff --git a/lib/bitcoin.py b/lib/bitcoin.py
@@ -481,7 +481,6 @@ class Transaction:
self.outputs = outputs
extras = []
for i in self.inputs:
- print i
e = { 'txid':i['tx_hash'], 'vout':i['index'],'scriptPubKey':i['raw_output_script'] }
extras.append(e)
self.input_info = extras