URI: 
       tMerge pull request #1113 from romanz/transaction-fixes - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 41cf7603d87677df2c1023a691b70dcb64c66ffe
   DIR parent e2225ce17e8e8e66dabf24bafd49822d580325d5
  HTML 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:
         M gui/qt/main_window.py               |       6 +++---
         M lib/commands.py                     |      10 +++++-----
         M lib/transaction.py                  |      10 +++++-----
         M plugins/cosigner_pool.py            |       2 +-
         M scripts/authenticator.py            |       2 +-
       
       5 files changed, 15 insertions(+), 15 deletions(-)
       ---
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -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"))
       t@@ -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)
       t@@ -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:
   DIR diff --git a/lib/commands.py b/lib/commands.py
       t@@ -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):
       t@@ -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"
        
   DIR diff --git a/lib/transaction.py b/lib/transaction.py
       t@@ -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
        
        
   DIR diff --git a/plugins/cosigner_pool.py b/plugins/cosigner_pool.py
       t@@ -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_()
   DIR diff --git a/scripts/authenticator.py b/scripts/authenticator.py
       t@@ -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