1
0

tx dialog: try harder to show fee

This commit is contained in:
SomberNight
2019-11-07 02:24:16 +01:00
parent 6573e7f1f3
commit 8a7c3447b3
3 changed files with 18 additions and 4 deletions

View File

@@ -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:

View File

@@ -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:

View File

@@ -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