tx dialog: try harder to show fee
This commit is contained in:
@@ -31,7 +31,7 @@ from typing import TYPE_CHECKING, Dict, Optional, Set, Tuple, NamedTuple, Sequen
|
||||
from . import bitcoin
|
||||
from .bitcoin import COINBASE_MATURITY
|
||||
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 .verifier import SPV
|
||||
from .blockchain import hash_header
|
||||
@@ -650,6 +650,8 @@ class AddressSynchronizer(Logger):
|
||||
break
|
||||
else:
|
||||
value = None
|
||||
if value is None:
|
||||
value = txin.value_sats()
|
||||
if value is None:
|
||||
is_pruned = True
|
||||
else:
|
||||
|
||||
@@ -81,6 +81,10 @@ class MalformedBitcoinScript(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class MissingTxInputAmount(Exception):
|
||||
pass
|
||||
|
||||
|
||||
SIGHASH_ALL = 1
|
||||
|
||||
|
||||
@@ -1605,13 +1609,19 @@ class PartialTransaction(Transaction):
|
||||
self.invalidate_ser_cache()
|
||||
|
||||
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:
|
||||
return sum(o.value for o in self.outputs())
|
||||
|
||||
def get_fee(self) -> int:
|
||||
return self.input_value() - self.output_value()
|
||||
def get_fee(self) -> Optional[int]:
|
||||
try:
|
||||
return self.input_value() - self.output_value()
|
||||
except MissingTxInputAmount:
|
||||
return None
|
||||
|
||||
def serialize_preimage(self, txin_index: int, *,
|
||||
bip143_shared_txdigest_fields: BIP143SharedTxDigestFields = None) -> str:
|
||||
|
||||
@@ -457,6 +457,8 @@ class Abstract_Wallet(AddressSynchronizer):
|
||||
|
||||
def get_tx_info(self, tx) -> TxWalletDetails:
|
||||
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
|
||||
can_broadcast = False
|
||||
can_bump = False
|
||||
|
||||
Reference in New Issue
Block a user