diff --git a/electrum/transaction.py b/electrum/transaction.py index cca06ff189db..54f725b87ea9 100644 --- a/electrum/transaction.py +++ b/electrum/transaction.py @@ -625,9 +625,11 @@ def read_uint64(self): return self._read_num(' Sequence[TxInput]: return self._inputs def outputs(self) -> Sequence[TxOutput]: - if self._outputs is None: + # Avoid redundant deserialization if _outputs already set. + outputs = self._outputs + if outputs is None: self.deserialize() - return self._outputs + outputs = self._outputs + return outputs def deserialize(self) -> None: if self._cached_network_ser is None: @@ -1451,6 +1466,7 @@ def input_value(self) -> int: return sum(input_values) def output_value(self) -> int: + # Use sum with generator, avoids creation of intermediate lists. return sum(o.value for o in self.outputs()) def get_fee(self) -> Optional[int]: