diff --git a/electrum/network.py b/electrum/network.py index b9a9bb7a7..f1ce71f2a 100644 --- a/electrum/network.py +++ b/electrum/network.py @@ -1069,7 +1069,7 @@ class Network(Logger, NetworkRetryManager[ServerAddr]): raise RequestTimedOut() await self.interface.broadcast_transaction(tx, timeout=timeout) - async def try_broadcasting(self, tx, name) -> bool: + async def try_broadcasting(self, tx: 'Transaction', name: str) -> bool: try: await self.broadcast_transaction(tx) except Exception as e: diff --git a/electrum/transaction.py b/electrum/transaction.py index cdab3470a..33040b78c 100644 --- a/electrum/transaction.py +++ b/electrum/transaction.py @@ -203,6 +203,9 @@ class TxOutput: def __ne__(self, other): return not (self == other) + def __hash__(self) -> int: + return hash((self.scriptpubkey, self.value)) + def to_json(self): d = { 'scriptpubkey': self.scriptpubkey.hex(), diff --git a/electrum/txbatcher.py b/electrum/txbatcher.py index 419621c62..7aca7cdf3 100644 --- a/electrum/txbatcher.py +++ b/electrum/txbatcher.py @@ -303,6 +303,8 @@ class TxBatch(Logger): def _to_pay_after(self, tx: Optional[PartialTransaction]) -> Sequence[PartialTxOutput]: if not tx: return self.batch_payments + # note: the below is equivalent to + # to_pay = multiset(self.batch_payments) - multiset(tx.outputs()) to_pay = [] outputs = copy.deepcopy(tx.outputs()) for x in self.batch_payments: