diff --git a/electrum/transaction.py b/electrum/transaction.py index cca06ff189db..7a1270873b43 100644 --- a/electrum/transaction.py +++ b/electrum/transaction.py @@ -625,9 +625,11 @@ def read_uint64(self): return self._read_num(' None: delattr(self, '_script_to_output_idx') def get_change_outputs(self) -> Sequence[PartialTxOutput]: + # Use list comprehension as before; no change needed for speed. + # This method is only slow if _outputs is large. See has_change for an optimized use-case. return [o for o in self._outputs if o.is_change] def has_change(self) -> bool: - return len(self.get_change_outputs()) > 0 + # Optimization: Avoid creating the full list when only checking existence. + for o in self._outputs: + if o.is_change: + return True + return False def get_dummy_output(self, dummy_addr: str) -> Optional['PartialTxOutput']: idxs = self.get_output_idxs_from_address(dummy_addr)