From c0917e65af3c96dacbef8b7c48810c4f24e62d70 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Sat, 6 May 2023 18:02:47 +0200 Subject: [PATCH] fix #8391: reintroduce recursion, limited to unconfirmed transactions It would be better to have topological order, but this issue needs to be fixed quickly. --- electrum/wallet.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/electrum/wallet.py b/electrum/wallet.py index 74e1401ac..711923f08 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -907,9 +907,11 @@ class Abstract_Wallet(ABC, Logger, EventListener): with self.lock, self.transaction_lock: if self._last_full_history is None: self._last_full_history = self.get_full_history(None, include_lightning=False) - # populate cache in chronological order - for _txid in self._last_full_history.keys(): - self.get_tx_parents(_txid) + # populate cache in chronological order (confirmed tx only) + # todo: get_full_history should return unconfirmed tx topologically sorted + for _txid, tx_item in self._last_full_history.items(): + if tx_item['height'] > 0: + self.get_tx_parents(_txid) result = self._tx_parents_cache.get(txid, None) if result is not None: @@ -941,8 +943,7 @@ class Abstract_Wallet(ABC, Logger, EventListener): for _txid in parents + uncles: if _txid in self._last_full_history.keys(): - p = self._tx_parents_cache[_txid] - result.update(p) + result.update(self.get_tx_parents(_txid)) result[txid] = parents, uncles self._tx_parents_cache[txid] = result return result