From f1ad5bc23d99a300ca5c527fdf43ed3eb535a8ea Mon Sep 17 00:00:00 2001 From: SomberNight Date: Thu, 9 Oct 2025 14:46:42 +0000 Subject: [PATCH] transaction: (move-only) move some methods from Tx to PartialTx cls these were already assuming `isinstance(self, PartialTransaction)` --- electrum/transaction.py | 48 ++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/electrum/transaction.py b/electrum/transaction.py index 7126e0c88..eed3820e7 100644 --- a/electrum/transaction.py +++ b/electrum/transaction.py @@ -1436,30 +1436,6 @@ class Transaction: script = bitcoin.address_to_script(addr) return self.get_output_idxs_from_scriptpubkey(script) - def replace_output_address(self, old_address: str, new_address: str) -> None: - idx = list(self.get_output_idxs_from_address(old_address)) - assert len(idx) == 1 - amount = self._outputs[idx[0]].value - funding_output = PartialTxOutput.from_address_and_value(new_address, amount) - old_output = PartialTxOutput.from_address_and_value(old_address, amount) - self._outputs.remove(old_output) - self.add_outputs([funding_output]) - delattr(self, '_script_to_output_idx') - - def get_change_outputs(self): - return [o for o in self._outputs if o.is_change] - - def has_change(self): - return len(self.get_change_outputs()) > 0 - - def get_dummy_output(self, dummy_addr: str) -> Optional['PartialTxOutput']: - idxs = self.get_output_idxs_from_address(dummy_addr) - if not idxs: - return - assert len(idxs) == 1 - for i in idxs: - return self.outputs()[i] - def output_value_for_address(self, addr): # assumes exactly one output has that address for o in self.outputs(): @@ -2434,6 +2410,30 @@ class PartialTransaction(Transaction): self.BIP69_sort(inputs=False) self.invalidate_ser_cache() + def replace_output_address(self, old_address: str, new_address: str) -> None: + idx = list(self.get_output_idxs_from_address(old_address)) + assert len(idx) == 1 + amount = self._outputs[idx[0]].value + funding_output = PartialTxOutput.from_address_and_value(new_address, amount) + old_output = PartialTxOutput.from_address_and_value(old_address, amount) + self._outputs.remove(old_output) + self.add_outputs([funding_output]) + delattr(self, '_script_to_output_idx') + + def get_change_outputs(self): + return [o for o in self._outputs if o.is_change] + + def has_change(self): + return len(self.get_change_outputs()) > 0 + + def get_dummy_output(self, dummy_addr: str) -> Optional['PartialTxOutput']: + idxs = self.get_output_idxs_from_address(dummy_addr) + if not idxs: + return + assert len(idxs) == 1 + for i in idxs: + return self.outputs()[i] + def set_rbf(self, rbf: bool) -> None: nSequence = 0xffffffff - (2 if rbf else 1) for txin in self.inputs():