Browse Source

tx dialog: try harder to show fee

master
SomberNight 6 years ago
parent
commit
8a7c3447b3
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 4
      electrum/address_synchronizer.py
  2. 16
      electrum/transaction.py
  3. 2
      electrum/wallet.py

4
electrum/address_synchronizer.py

@ -31,7 +31,7 @@ from typing import TYPE_CHECKING, Dict, Optional, Set, Tuple, NamedTuple, Sequen
from . import bitcoin from . import bitcoin
from .bitcoin import COINBASE_MATURITY from .bitcoin import COINBASE_MATURITY
from .util import profiler, bfh, TxMinedInfo from .util import profiler, bfh, TxMinedInfo
from .transaction import Transaction, TxOutput, TxInput, PartialTxInput, TxOutpoint from .transaction import Transaction, TxOutput, TxInput, PartialTxInput, TxOutpoint, PartialTransaction
from .synchronizer import Synchronizer from .synchronizer import Synchronizer
from .verifier import SPV from .verifier import SPV
from .blockchain import hash_header from .blockchain import hash_header
@ -650,6 +650,8 @@ class AddressSynchronizer(Logger):
break break
else: else:
value = None value = None
if value is None:
value = txin.value_sats()
if value is None: if value is None:
is_pruned = True is_pruned = True
else: else:

16
electrum/transaction.py

@ -81,6 +81,10 @@ class MalformedBitcoinScript(Exception):
pass pass
class MissingTxInputAmount(Exception):
pass
SIGHASH_ALL = 1 SIGHASH_ALL = 1
@ -1605,13 +1609,19 @@ class PartialTransaction(Transaction):
self.invalidate_ser_cache() self.invalidate_ser_cache()
def input_value(self) -> int: def input_value(self) -> int:
return sum(txin.value_sats() for txin in self.inputs()) input_values = [txin.value_sats() for txin in self.inputs()]
if any([val is None for val in input_values]):
raise MissingTxInputAmount()
return sum(input_values)
def output_value(self) -> int: def output_value(self) -> int:
return sum(o.value for o in self.outputs()) return sum(o.value for o in self.outputs())
def get_fee(self) -> int: def get_fee(self) -> Optional[int]:
return self.input_value() - self.output_value() try:
return self.input_value() - self.output_value()
except MissingTxInputAmount:
return None
def serialize_preimage(self, txin_index: int, *, def serialize_preimage(self, txin_index: int, *,
bip143_shared_txdigest_fields: BIP143SharedTxDigestFields = None) -> str: bip143_shared_txdigest_fields: BIP143SharedTxDigestFields = None) -> str:

2
electrum/wallet.py

@ -457,6 +457,8 @@ class Abstract_Wallet(AddressSynchronizer):
def get_tx_info(self, tx) -> TxWalletDetails: def get_tx_info(self, tx) -> TxWalletDetails:
is_relevant, is_mine, v, fee = self.get_wallet_delta(tx) is_relevant, is_mine, v, fee = self.get_wallet_delta(tx)
if fee is None and isinstance(tx, PartialTransaction):
fee = tx.get_fee()
exp_n = None exp_n = None
can_broadcast = False can_broadcast = False
can_bump = False can_bump = False

Loading…
Cancel
Save