commit ff815acbd5619a7caf5c1bb5557e891503dcc43b
parent d878286a3a9a2db673b6fd34e66ab2cb34eac02e
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:
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/plugins/trezor/plugin.py b/plugins/trezor/plugin.py
@@ -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
@@ -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)