commit 41cf7603d87677df2c1023a691b70dcb64c66ffe
parent e2225ce17e8e8e66dabf24bafd49822d580325d5
Author: ThomasV <electrumdev@gmail.com>
Date: Mon, 30 Mar 2015 19:12:24 +0200
Merge pull request #1113 from romanz/transaction-fixes
Fix a few issues with transaction serialization and deserialization
Diffstat:
5 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
@@ -2229,7 +2229,7 @@ class ElectrumWindow(QMainWindow):
if is_hex:
try:
- return Transaction.deserialize(txt)
+ return Transaction(txt)
except:
traceback.print_exc(file=sys.stdout)
QMessageBox.critical(None, _("Unable to parse transaction"), _("Electrum was unable to parse your transaction"))
@@ -2238,7 +2238,7 @@ class ElectrumWindow(QMainWindow):
try:
tx_dict = json.loads(str(txt))
assert "hex" in tx_dict.keys()
- tx = Transaction.deserialize(tx_dict["hex"])
+ tx = Transaction(tx_dict["hex"])
#if tx_dict.has_key("input_info"):
# input_info = json.loads(tx_dict['input_info'])
# tx.add_input_info(input_info)
@@ -2312,7 +2312,7 @@ class ElectrumWindow(QMainWindow):
if ok and txid:
r = self.network.synchronous_get([ ('blockchain.transaction.get',[str(txid)]) ])[0]
if r:
- tx = transaction.Transaction.deserialize(r)
+ tx = transaction.Transaction(r)
if tx:
self.show_transaction(tx)
else:
diff --git a/lib/commands.py b/lib/commands.py
@@ -176,22 +176,22 @@ class Commands:
return tx
def signtxwithkey(self, raw_tx, sec):
- tx = Transaction.deserialize(raw_tx)
+ tx = Transaction(raw_tx)
pubkey = bitcoin.public_key_from_private_key(sec)
tx.sign({ pubkey:sec })
return tx
def signtxwithwallet(self, raw_tx):
- tx = Transaction.deserialize(raw_tx)
+ tx = Transaction(raw_tx)
self.wallet.sign_transaction(tx, self.password)
return tx
def decoderawtransaction(self, raw):
- tx = Transaction.deserialize(raw)
+ tx = Transaction(raw)
return {'inputs':tx.inputs, 'outputs':tx.outputs}
def sendrawtransaction(self, raw):
- tx = Transaction.deserialize(raw)
+ tx = Transaction(raw)
return self.network.synchronous_get([('blockchain.transaction.broadcast', [str(tx)])])[0]
def createmultisig(self, num, pubkeys):
@@ -403,7 +403,7 @@ class Commands:
raw = self.network.synchronous_get([ ('blockchain.transaction.get',[tx_hash]) ])[0]
if raw:
- return Transaction.deserialize(raw)
+ return Transaction(raw)
else:
return "unknown transaction"
diff --git a/lib/transaction.py b/lib/transaction.py
@@ -755,14 +755,14 @@ class Transaction:
def has_address(self, addr):
return (addr in self.get_output_addresses()) or (addr in (tx.get("address") for tx in self.inputs))
-
def as_dict(self):
+ if self.raw is None:
+ self.raw = self.serialize()
self.deserialize()
- import json
out = {
- "hex":str(self),
- "complete":self.is_complete()
- }
+ 'hex': self.raw,
+ 'complete': self.is_complete()
+ }
return out
diff --git a/plugins/cosigner_pool.py b/plugins/cosigner_pool.py
@@ -189,7 +189,7 @@ class Plugin(BasePlugin):
return
self.listener.clear()
- tx = transaction.Transaction.deserialize(message)
+ tx = transaction.Transaction(message)
d = transaction_dialog.TxDialog(tx, self.win)
d.saved = False
d.exec_()
diff --git a/scripts/authenticator.py b/scripts/authenticator.py
@@ -299,7 +299,7 @@ class Authenticator:
data = r['extras']['SCAN_RESULT']
data = base_decode(data.encode('utf8'), None, base=43)
data = ''.join(chr(ord(b)) for b in data).encode('hex')
- tx = Transaction.deserialize(data)
+ tx = Transaction(data)
#except:
# modal_dialog('Error', 'Cannot parse transaction')
# continue