• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bitcoindevkit / bdk / 15277436161
79%

Build:
DEFAULT BRANCH: master
Ran 27 May 2025 02:07PM UTC
Jobs 1
Files 30
Run time 6min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 May 2025 02:03PM UTC coverage: 82.396% (-0.8%) from 83.23%
15277436161

push

github

ValuedMammal
Merge bitcoindevkit/bdk#1963: Persist spks derived from `KeychainTxOutIndex`

62767f070 fix(rusqlite_impl): Fix derived spks create table statement (valued mammal)
603f133d9 docs(chain): Adds docs for persisting spks in `KeychainTxOutIndex` (志宇)
3126cd214 feat(chain)!: Clean up ergonomics of `IndexedTxGraph` (志宇)
a05558171 feat(chain): `KeychainTxOutIndex`: Make spk cache optional (志宇)
19e3b5df1 feat(chain): Add `KeychainTxOutIndex::from_changeset` constructor (志宇)
d761265af feat(chain): `KeychainTxOutIndex`: Debug build checks (志宇)
76875e7a4 fix(chain)!: API and logical issues in `KeychainTxOutIndex` (志宇)
d299daea4 feat(chain)!: Persist spks derived from `KeychainTxOutIndex` (志宇)

Pull request description:

  Replaces #1960
  Fixes #1964

  ### Description

  Users with large wallet and/or complex descriptors may experience slow startup of `KeychainTxOutIndex`. This PR addresses this problem by providing the option to persist derived spks so that they no longer need to be re-derived on startup.

  The `IndexedTxGraph` API has been changed for better ergonomics.

  Compared to #1960, this is a more longterm solution that does not depend on multi-threading logic.

  ### Changelog notice

  ```md
  Changed
    - `KeychainTxOutIndex::new` to take in an additional parameter `persist_spks` to control whether derived spks are cached and persisted across restarts. The default of `persist_spks` is false.
    - `KeychainTxOutIndex` methods (`lookahead_to_target, `next_unused_spk`, `reveal_next_spk`) now return changesets as they may derive spks to be persisted.
    - The `InsertDescriptorError` type now wraps descriptors in `Box` to reduce enum size.

  Added
    - `spk_cache` field to `indexer::keychain_txout::Chang... (continued)

154 of 243 new or added lines in 4 files covered. (63.37%)

3 existing lines in 2 files now uncovered.

5579 of 6771 relevant lines covered (82.4%)

31732.94 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
19
72.01
3.24% crates/chain/src/indexer/keychain_txout.rs
26
75.78
-7.49% crates/chain/src/indexed_tx_graph.rs
44
67.98
-4.95% crates/chain/src/rusqlite_impl.rs

Uncovered Existing Lines

Lines Coverage ∆ File
1
67.98
-4.95% crates/chain/src/rusqlite_impl.rs
2
72.01
3.24% crates/chain/src/indexer/keychain_txout.rs
Jobs
ID Job ID Ran Files Coverage
1 15277436161.1 27 May 2025 02:07PM UTC 30
82.4
GitHub Action Run
Source Files on build 15277436161
  • Tree
  • List 30
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • e2175420 on github
  • Prev Build on master (#15209940801)
  • Next Build on master (#15278897330)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc