add input_info when transaction is created
authorThomasV <thomasv@gitorious>
Sun, 29 Sep 2013 00:43:30 +0000 (02:43 +0200)
committerThomasV <thomasv@gitorious>
Sun, 29 Sep 2013 00:43:30 +0000 (02:43 +0200)
lib/transaction.py
lib/wallet.py

index a248532..6f2460a 100644 (file)
@@ -391,7 +391,14 @@ class Transaction:
         self.outputs = outputs
         extras = []
         for i in self.inputs:
-            e = { 'txid':i['tx_hash'], 'vout':i['index'], 'scriptPubKey':i.get('raw_output_script') }
+            
+            e = { 'txid':i['tx_hash'],
+                  'vout':i['index'],
+                  'scriptPubKey':i.get('raw_output_script'),
+                  'KeyID':i['KeyID'],
+                  'redeemScript':i.get('redeemScript'),
+                  'redeemPubkey':i.get('redeemPubkey')
+                  }
             extras.append(e)
             # fixme: simplify this
             i['prevout_hash'] = i['tx_hash']
index 07d9736..3f9b672 100644 (file)
@@ -1181,6 +1181,7 @@ class Wallet:
         inputs, total, fee = self.choose_tx_inputs( amount, fee, domain )
         if not inputs:
             raise ValueError("Not enough funds")
+        self.add_input_info(inputs)
         outputs = self.add_tx_change(inputs, outputs, amount, fee, total, change_addr)
         return Transaction.from_io(inputs, outputs)
 
@@ -1196,9 +1197,8 @@ class Wallet:
         return tx
 
 
-    def sign_transaction(self, tx, password):
-        keypairs = {}
-        for i, txin in enumerate(tx.inputs):
+    def add_input_info(self, inputs):
+        for txin in inputs:
             address = txin['address']
             account, sequence = self.get_address_index(address)
             txin['KeyID'] = self.get_keyID(account, sequence)
@@ -1207,6 +1207,12 @@ class Wallet:
                 txin['redeemScript'] = redeemScript
             else:
                 txin['redeemPubkey'] = self.accounts[account].get_pubkey(*sequence)
+
+
+    def sign_transaction(self, tx, password):
+        keypairs = {}
+        for i, txin in enumerate(tx.inputs):
+            address = txin['address']
             private_keys = self.get_private_key(address, password)
             for sec in private_keys:
                 pubkey = public_key_from_private_key(sec)