URI: 
       tMerge pull request #3407 from SomberNight/fix_keepkey_p2sh_output - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit ff815acbd5619a7caf5c1bb5557e891503dcc43b
   DIR parent d878286a3a9a2db673b6fd34e66ab2cb34eac02e
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sat,  2 Dec 2017 16:57:57 +0100
       
       Merge pull request #3407 from SomberNight/fix_keepkey_p2sh_output
       
       fix: keepkey sending to p2sh output
       Diffstat:
         M plugins/trezor/plugin.py            |      17 +++++++++++++++--
       
       1 file changed, 15 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
       t@@ -4,7 +4,8 @@ from binascii import hexlify, unhexlify
        
        from electrum.util import bfh, bh2u
        from electrum.bitcoin import (b58_address_to_hash160, xpub_from_pubkey,
       -                              TYPE_ADDRESS, TYPE_SCRIPT, NetworkConstants)
       +                              TYPE_ADDRESS, TYPE_SCRIPT, NetworkConstants,
       +                              is_segwit_address)
        from electrum.i18n import _
        from electrum.plugins import BasePlugin
        from electrum.transaction import deserialize
       t@@ -351,7 +352,19 @@ class TrezorCompatiblePlugin(HW_PluginBase):
                            txoutputtype.script_type = self.types.PAYTOOPRETURN
                            txoutputtype.op_return_data = address[2:]
                        elif _type == TYPE_ADDRESS:
       -                    txoutputtype.script_type = self.types.PAYTOADDRESS
       +                    # trezor would be fine with self.types.PAYTOADDRESS
       +                    # for any non-change output
       +                    # but we need to maintain keepkey compatibility in this cls
       +                    if is_segwit_address(address):
       +                        txoutputtype.script_type = self.types.PAYTOWITNESS
       +                    else:
       +                        addrtype, hash_160 = b58_address_to_hash160(address)
       +                        if addrtype == NetworkConstants.ADDRTYPE_P2PKH:
       +                            txoutputtype.script_type = self.types.PAYTOADDRESS
       +                        elif addrtype == NetworkConstants.ADDRTYPE_P2SH:
       +                            txoutputtype.script_type = self.types.PAYTOSCRIPTHASH
       +                        else:
       +                            raise BaseException('addrtype: ' + str(addrtype))
                            txoutputtype.address = address
        
                    outputs.append(txoutputtype)