diff --git a/electrum/transaction.py b/electrum/transaction.py index cca06ff189d..1dd000894d0 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]: + # Avoid list comprehension when not needed, supports short-circuit in has_change + # but preserve original behavior for direct use return [o for o in self._outputs if o.is_change] def has_change(self) -> bool: - return len(self.get_change_outputs()) > 0 + # Optimized: check for a change output with short-circuit, do not build list + 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)