commit 401c24e4ad3dfa99c2e985ba7270807664be7838
parent 4eb1eb3677759dc2215a062a8f1568589525a28e
Author: ThomasV <thomasv@gitorious>
Date: Sun, 29 Sep 2013 02:43:30 +0200
add input_info when transaction is created
Diffstat:
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/lib/transaction.py b/lib/transaction.py
@@ -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']
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -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)