URI: 
       tinput_script: return txin.scriptSig if available. replace txin.is_coinbase with type. fixes #2321 - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 1d840291731832488ceb1328326e8e63667aaabc
   DIR parent fdee755198ccc82f1e76703f32c1d64f85dc3a8d
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Tue, 21 Mar 2017 09:08:16 +0100
       
       input_script: return txin.scriptSig if available. replace txin.is_coinbase with type. fixes #2321
       
       Diffstat:
         M gui/qt/transaction_dialog.py        |       2 +-
         M lib/transaction.py                  |      15 ++++++++-------
         M lib/wallet.py                       |       4 ++--
         M plugins/digitalbitbox/digitalbitbo… |       2 +-
         M plugins/ledger/ledger.py            |       2 +-
         M plugins/trezor/plugin.py            |       2 +-
       
       6 files changed, 14 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/gui/qt/transaction_dialog.py b/gui/qt/transaction_dialog.py
       t@@ -242,7 +242,7 @@ class TxDialog(QDialog, MessageBoxMixin):
                i_text.setMaximumHeight(100)
                cursor = i_text.textCursor()
                for x in self.tx.inputs():
       -            if x.get('is_coinbase'):
       +            if x['type'] == 'coinbase':
                        cursor.insertText('coinbase')
                    else:
                        prevout_hash = x.get('prevout_hash')
   DIR diff --git a/lib/transaction.py b/lib/transaction.py
       t@@ -409,15 +409,14 @@ def parse_input(vds):
            prevout_hash = hash_encode(vds.read_bytes(32))
            prevout_n = vds.read_uint32()
            scriptSig = vds.read_bytes(vds.read_compact_size())
       -    d['scriptSig'] = scriptSig.encode('hex')
            sequence = vds.read_uint32()
       +    d['scriptSig'] = scriptSig.encode('hex')
       +    d['prevout_hash'] = prevout_hash
       +    d['prevout_n'] = prevout_n
       +    d['sequence'] = sequence
            if prevout_hash == '00'*32:
       -        d['is_coinbase'] = True
       +        d['type'] = 'coinbase'
            else:
       -        d['is_coinbase'] = False
       -        d['prevout_hash'] = prevout_hash
       -        d['prevout_n'] = prevout_n
       -        d['sequence'] = sequence
                d['pubkeys'] = []
                d['signatures'] = {}
                d['address'] = None
       t@@ -637,6 +636,8 @@ class Transaction:
        
            @classmethod
            def input_script(self, txin, estimate_size=False):
       +        if txin.get('scriptSig'):
       +            return txin['scriptSig']
                _type = txin['type']
                pubkeys, sig_list = self.get_siglist(txin, estimate_size)
                script = ''.join(push_script(x) for x in sig_list)
       t@@ -796,7 +797,7 @@ class Transaction:
                r = 0
                s = 0
                for txin in self.inputs():
       -            if txin.get('is_coinbase'):
       +            if txin['type'] == 'coinbase':
                        continue
                    signatures = filter(None, txin.get('signatures',[]))
                    s += len(signatures)
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -582,13 +582,13 @@ class Abstract_Wallet(PrintError):
                            return addr
        
            def add_transaction(self, tx_hash, tx):
       -        is_coinbase = tx.inputs()[0].get('is_coinbase') == True
       +        is_coinbase = tx.inputs()[0]['type'] == 'coinbase'
                with self.transaction_lock:
                    # add inputs
                    self.txi[tx_hash] = d = {}
                    for txi in tx.inputs():
                        addr = txi.get('address')
       -                if not txi.get('is_coinbase'):
       +                if txi['type'] != 'coinbase':
                            prevout_hash = txi['prevout_hash']
                            prevout_n = txi['prevout_n']
                            ser = prevout_hash + ':%d'%prevout_n
   DIR diff --git a/plugins/digitalbitbox/digitalbitbox.py b/plugins/digitalbitbox/digitalbitbox.py
       t@@ -366,7 +366,7 @@ class DigitalBitbox_KeyStore(Hardware_KeyStore):
                    
                    # Build hasharray from inputs
                    for i, txin in enumerate(tx.inputs()):
       -                if txin.get('is_coinbase'):
       +                if txin['type'] == 'coinbase':
                            self.give_error("Coinbase not supported") # should never happen
                        
                        if txin['type'] in ['p2sh']:
   DIR diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py
       t@@ -275,7 +275,7 @@ class Ledger_KeyStore(Hardware_KeyStore):
                # Fetch inputs of the transaction to sign
                derivations = self.get_tx_derivations(tx)
                for txin in tx.inputs():
       -            if txin.get('is_coinbase'):
       +            if txin['type'] == 'coinbase':
                        self.give_error("Coinbase not supported")     # should never happen
        
                    if txin['type'] in ['p2sh']:
   DIR diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
       t@@ -259,7 +259,7 @@ class TrezorCompatiblePlugin(HW_PluginBase):
                inputs = []
                for txin in tx.inputs():
                    txinputtype = self.types.TxInputType()
       -            if txin.get('is_coinbase'):
       +            if txin['type'] == 'coinbase':
                        prev_hash = "\0"*32
                        prev_index = 0xffffffff  # signed int -1
                    else: