Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
79691f9
refactor(chain)!: introduce `CanonicalizationTask`
oleonardolima Sep 18, 2025
38d2100
refactor(chain)!: use `CanonicalizationTask` instead of `CanonicalIter`
oleonardolima Sep 22, 2025
80249c8
refactor(chain)!: remove `canonical_iter` module
oleonardolima Sep 23, 2025
9ea0f5a
refactor(core,chain)!: extract generic `ChainQuery` trait from `Canon…
oleonardolima Sep 25, 2025
28da51a
refactor(chain)!: generalize `ChainQuery` trait with generic type
oleonardolima Sep 25, 2025
a858ea2
refactor(chain): use single queue for `anchored_txs` in canonicalization
oleonardolima Oct 3, 2025
afb2f7d
refactor(chain)!: introduce stage based canonicalization processing
oleonardolima Oct 3, 2025
7568334
refactor(core,chain)!: consolidate state machine into `next_query` loop
evanlinjin Feb 13, 2026
37773a9
refactor(chain)!: split canonicalization into two tasks with generic …
evanlinjin Feb 13, 2026
b334628
refactor(core,chain)!: move `chain_tip` from `ChainRequest` to `Chain…
evanlinjin Feb 13, 2026
5f92264
refactor(core)!: remove generics from `ChainQuery`, `ChainRequest`, `…
evanlinjin Feb 13, 2026
fed6b36
fix(chain): check anchors for assumed txs in `CanonicalViewTask`
evanlinjin Feb 13, 2026
c74c870
refactor(chain): split `canonical_view.rs` into `canonical.rs` + `can…
evanlinjin Feb 13, 2026
94d6b9b
chore(chain,example)!: Remove `ChainOracle` and fix docs
evanlinjin Mar 8, 2026
3e3249f
chore(test): ignore test module in coverage
oleonardolima Mar 16, 2026
4176336
fix(chain): position resolution for assumed txs
oleonardolima Mar 16, 2026
8aa42d0
feat(core): Add `#[must_use]` to `ChainQuery::next_query`
evanlinjin Apr 28, 2026
a5d91e9
ci: Fix pin-msrv
evanlinjin Apr 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ci/pin-msrv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ set -euo pipefail
# cargo clean
# rustup override set 1.85.0

cargo update -p idna_adapter --precise "1.2.1"
cargo update -p icu_normalizer --precise "2.1.1"
cargo update -p icu_provider --precise "2.1.1"
cargo update -p icu_locale_core --precise "2.1.1"
3 changes: 2 additions & 1 deletion crates/bitcoind_rpc/examples/filter_iter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ fn main() -> anyhow::Result<()> {
println!("\ntook: {}s", start.elapsed().as_secs());
println!("Local tip: {}", chain.tip().height());

let canonical_view = graph.canonical_view(&chain, chain.tip().block_id(), Default::default());
let chain_tip = chain.tip().block_id();
let canonical_view = chain.canonical_view(graph.graph(), chain_tip, Default::default());

let unspent: Vec<_> = canonical_view
.filter_unspent_outpoints(graph.index.outpoints().clone())
Expand Down
16 changes: 8 additions & 8 deletions crates/bitcoind_rpc/tests/test_emitter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use bdk_chain::{
bitcoin::{Address, Amount, Txid},
local_chain::{CheckPoint, LocalChain},
spk_txout::SpkTxOutIndex,
Balance, BlockId, CanonicalizationParams, IndexedTxGraph, Merge,
Balance, BlockId, CanonicalParams, IndexedTxGraph, Merge,
};
use bdk_testenv::{
anyhow,
Expand Down Expand Up @@ -320,9 +320,9 @@ fn get_balance(
) -> anyhow::Result<Balance> {
let chain_tip = recv_chain.tip().block_id();
let outpoints = recv_graph.index.outpoints().clone();
let balance = recv_graph
.canonical_view(recv_chain, chain_tip, CanonicalizationParams::default())
.balance(outpoints, |_, _| true, 1);
let balance = recv_chain
.canonical_view(recv_graph.graph(), chain_tip, CanonicalParams::default())
.balance(outpoints, |_, _| true, 0);
Ok(balance)
}

Expand Down Expand Up @@ -631,8 +631,8 @@ fn test_expect_tx_evicted() -> anyhow::Result<()> {
let _txid_2 = core.send_raw_transaction(&tx1b)?;

// Retrieve the expected unconfirmed txids and spks from the graph.
let exp_spk_txids = graph
.canonical_view(&chain, chain_tip, Default::default())
let exp_spk_txids = chain
.canonical_view(graph.graph(), chain_tip, Default::default())
.list_expected_spk_txids(&graph.index, ..)
.collect::<Vec<_>>();
assert_eq!(exp_spk_txids, vec![(spk, txid_1)]);
Expand All @@ -647,8 +647,8 @@ fn test_expect_tx_evicted() -> anyhow::Result<()> {
// Update graph with evicted tx.
let _ = graph.batch_insert_relevant_evicted_at(mempool_event.evicted);

let canonical_txids = graph
.canonical_view(&chain, chain_tip, CanonicalizationParams::default())
let canonical_txids = chain
.canonical_view(graph.graph(), chain_tip, CanonicalParams::default())
.txs()
.map(|tx| tx.txid)
.collect::<Vec<_>>();
Expand Down
23 changes: 7 additions & 16 deletions crates/chain/benches/canonicalization.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use bdk_chain::CanonicalizationParams;
use bdk_chain::CanonicalParams;
use bdk_chain::{keychain_txout::KeychainTxOutIndex, local_chain::LocalChain, IndexedTxGraph};
use bdk_core::{BlockId, CheckPoint};
use bdk_core::{ConfirmationBlockTime, TxUpdate};
Expand Down Expand Up @@ -95,31 +95,22 @@ fn setup<F: Fn(&mut KeychainTxGraph, &LocalChain)>(f: F) -> (KeychainTxGraph, Lo
}

fn run_list_canonical_txs(tx_graph: &KeychainTxGraph, chain: &LocalChain, exp_txs: usize) {
let view = tx_graph.canonical_view(
chain,
chain.tip().block_id(),
CanonicalizationParams::default(),
);
let chain_tip = chain.tip().block_id();
let view = chain.canonical_view(tx_graph.graph(), chain_tip, CanonicalParams::default());
let txs = view.txs();
assert_eq!(txs.count(), exp_txs);
}

fn run_filter_chain_txouts(tx_graph: &KeychainTxGraph, chain: &LocalChain, exp_txos: usize) {
let view = tx_graph.canonical_view(
chain,
chain.tip().block_id(),
CanonicalizationParams::default(),
);
let chain_tip = chain.tip().block_id();
let view = chain.canonical_view(tx_graph.graph(), chain_tip, CanonicalParams::default());
let utxos = view.filter_outpoints(tx_graph.index.outpoints().clone());
assert_eq!(utxos.count(), exp_txos);
}

fn run_filter_chain_unspents(tx_graph: &KeychainTxGraph, chain: &LocalChain, exp_utxos: usize) {
let view = tx_graph.canonical_view(
chain,
chain.tip().block_id(),
CanonicalizationParams::default(),
);
let chain_tip = chain.tip().block_id();
let view = chain.canonical_view(tx_graph.graph(), chain_tip, CanonicalParams::default());
let utxos = view.filter_unspent_outpoints(tx_graph.index.outpoints().clone());
assert_eq!(utxos.count(), exp_utxos);
}
Expand Down
6 changes: 3 additions & 3 deletions crates/chain/benches/indexer.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use bdk_chain::{
keychain_txout::{InsertDescriptorError, KeychainTxOutIndex},
local_chain::LocalChain,
CanonicalizationParams, IndexedTxGraph,
CanonicalParams, IndexedTxGraph,
};
use bdk_core::{BlockId, CheckPoint, ConfirmationBlockTime, TxUpdate};
use bitcoin::{
Expand Down Expand Up @@ -84,8 +84,8 @@ fn do_bench(indexed_tx_graph: &KeychainTxGraph, chain: &LocalChain) {
// Check balance
let chain_tip = chain.tip().block_id();
let op = graph.index.outpoints().clone();
let bal = graph
.canonical_view(chain, chain_tip, CanonicalizationParams::default())
let bal = chain
.canonical_view(graph.graph(), chain_tip, CanonicalParams::default())
.balance(op, |_, _| false, 1);
assert_eq!(bal.total(), AMOUNT * TX_CT as u64);
}
Expand Down
Loading
Loading