diff --git a/crates/chain/src/indexed_tx_graph.rs b/crates/chain/src/indexed_tx_graph.rs index c4ee32091..6d8c16ffa 100644 --- a/crates/chain/src/indexed_tx_graph.rs +++ b/crates/chain/src/indexed_tx_graph.rs @@ -229,12 +229,10 @@ impl IndexedTxGraph { match &txout.chain_position { ObservedAs::Confirmed(_) => { - if txout.is_on_coinbase { - if txout.is_mature(tip_height) { - confirmed += txout.txout.value; - } else { - immature += txout.txout.value; - } + if txout.is_confirmed_and_spendable(tip_height) { + confirmed += txout.txout.value; + } else if !txout.is_mature(tip_height) { + immature += txout.txout.value; } } ObservedAs::Unconfirmed(_) => { diff --git a/crates/chain/src/tx_graph.rs b/crates/chain/src/tx_graph.rs index ca6d0788a..cee688be7 100644 --- a/crates/chain/src/tx_graph.rs +++ b/crates/chain/src/tx_graph.rs @@ -860,7 +860,7 @@ impl TxGraph { chain_tip: BlockId, ) -> impl Iterator>, C::Error>> + 'a { self.try_list_chain_txouts(chain, chain_tip) - .filter(|r| !matches!(r, Ok(txo) if txo.spent_by.is_none())) + .filter(|r| matches!(r, Ok(txo) if txo.spent_by.is_none())) } /// List unspent outputs (UTXOs) that are in `chain` with `chain_tip`.