URI: 
       tFix make_unsigned_transaction for trustedcoin - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit d98f123f92f0c5485693a51453f2f53189c2c10a
   DIR parent 21038843ea9ab846b1afaf796b3b33b03da6d191
  HTML Author: Neil Booth <kyuupichan@gmail.com>
       Date:   Tue,  5 Jan 2016 19:35:44 +0900
       
       Fix make_unsigned_transaction for trustedcoin
       
       Fixes #1600
       
       Diffstat:
         M plugins/trustedcoin/trustedcoin.py  |      30 ++++++++++++++++++------------
       
       1 file changed, 18 insertions(+), 12 deletions(-)
       ---
   DIR diff --git a/plugins/trustedcoin/trustedcoin.py b/plugins/trustedcoin/trustedcoin.py
       t@@ -33,7 +33,7 @@ from electrum import version
        from electrum.wallet import Multisig_Wallet, BIP32_Wallet
        from electrum.i18n import _
        from electrum.plugins import BasePlugin, run_hook, hook
       -
       +from electrum.util import NotEnoughFunds
        
        from decimal import Decimal
        
       t@@ -206,7 +206,7 @@ class Wallet_2fa(Multisig_Wallet):
            def can_sign_without_server(self):
                return self.master_private_keys.get('x2/') is not None
        
       -    def extra_fee(self, tx):
       +    def extra_fee(self, tx=None):
                if self.can_sign_without_server():
                    return 0
                if self.billing_info.get('tx_remaining'):
       t@@ -216,7 +216,7 @@ class Wallet_2fa(Multisig_Wallet):
                # trustedcoin won't charge if the total inputs is lower than their fee
                price = int(self.price_per_tx.get(1))
                assert price <= 100000
       -        if tx.input_value() < price:
       +        if tx and tx.input_value() < price:
                    self.print_error("not charging for this tx")
                    return 0
                return price
       t@@ -226,17 +226,23 @@ class Wallet_2fa(Multisig_Wallet):
                fee += self.extra_fee(tx)
                return fee
        
       -    def get_tx_fee(self, tx):
       -        fee = Multisig_Wallet.get_tx_fee(self, tx)
       -        fee += self.extra_fee(tx)
       -        return fee
       -
       -    def make_unsigned_transaction(self, *args):
       -        tx = BIP32_Wallet.make_unsigned_transaction(self, *args)
       -        fee = self.extra_fee(tx)
       +    def make_unsigned_transaction(self, coins, outputs, config,
       +                                  fixed_fee=None, change_addr=None):
       +        tx = BIP32_Wallet.make_unsigned_transaction(
       +            self, coins, outputs, config, fixed_fee, change_addr)
       +        # Plain TX was good.  Now add trustedcoin fee.
       +        fee = self.extra_fee()
                if fee:
                    address = self.billing_info['billing_address']
       -            tx.outputs.append(('address', address, fee))
       +            outputs = outputs + [('address', address, fee)]
       +            try:
       +                return BIP32_Wallet.make_unsigned_transaction(
       +                    self, coins, outputs, config, fixed_fee, change_addr)
       +            except NotEnoughFunds:
       +                # trustedcoin won't charge if the total inputs is
       +                # lower than their fee
       +                if tx.input_value() >= tcoin_fee:
       +                    raise
                return tx
        
            def sign_transaction(self, tx, password):