* `IndexedTxGraph::try_balance` should include "confirmed and spendable"
into `confirmed` balance.
* `TxGraph::try_list_chain_unspents` filter logic should be reversed.
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(_) => {
chain_tip: BlockId,
) -> impl Iterator<Item = Result<FullTxOut<ObservedAs<A>>, 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`.