Skip to content

Release 1.0.0-alpha.10 #1418

@notmandatory

Description

@notmandatory

Create a new minor release

Summary

This incremental bi-weekly release improves the address API, simplifies the Esplora API, and introduced new structures for spk-based scanning that will enable easier syncing with electrum/esplora. It also introduces a new bdk-persist crate, removes the generic T from the Wallet, and makes KeychainTxOutIndex more range based.

Commit

fbe1782

Changelog

Fixed

Changed

  • KeychainTxOutIndex methods modified to take ranges of keychains instead. [chain] Make KeychainTxOutIndex more range based #1324
  • Remove the generic from wallet fix(wallet): remove the generic from wallet #1387
    • Changed PersistenceBackend errors to depend on the anyhow crate
    • Remove the generic T from Wallet
  • Improve address API [wallet] Improve address API #1402
    • Added Wallet methods:
      • peek_address
      • reveal_next_address
      • next_unused_address
      • reveal_addresses_to
      • list_unused_addresses
      • mark_used
      • unmark_used
    • Removed Wallet methods:
      • get_address
      • get_internal_address
      • try_get_address
      • try_get_internal_address
  • Simplified EsploraExt API Simplified EsploraExt API #1380
    • Changed EsploraExt API so that sync only requires one round of fetching data. The local_chain_update method is removed and the local_tip parameter is added to the full_scan and sync methods.
    • Removed TxGraph::missing_heights and tx_graph::ChangeSet::missing_heights_from methods.
    • Introduced CheckPoint::insert which allows convenient checkpoint-insertion. This is intended for use by chain-sources when crafting an update.
    • Refactored merge_chains to also return the resultant CheckPoint tip.
    • Optimized the update LocalChain logic - use the update CheckPoint as the new CheckPoint tip when possible.
  • Introduce bdk-persist crate Add new crate bdk-persist #1412
  • Introduce universal sync/full-scan structures for spk-based syncing Introduce universal sync/full-scan structures for spk-based syncing #1413
    • Add universal structures for initiating/receiving sync/full-scan requests/results for spk-based syncing.
    • Updated bdk_esplora chain-source to make use of new universal sync/full-scan structures.

Checklist

Release numbering must follow Semantic Versioning. These steps assume the current master branch development version is 1.0.0-alpha.9.

On the day of the feature freeze

Change the master branch to the 1.0.0-alpha.10 version:

  • Switch to the master branch.
  • Create a new PR branch called bump_dev_1.0.0_alpha.10.
  • Bump the bump_dev_1.0.0_alpha.10 branch to the next development MINOR+1 version.
    • Bump the modified crates versions in their Cargo.toml files. [update this list with only changed crates]
      • bdk
      • bdk_chain
      • bdk_bitcoind_rpc
      • bdk_electrum
      • bdk_esplora
      • bdk_file_store
      • bdk_testenv
      • bdk_persist
    • The commit message should be: [update this list with only changed crates]
      Bump bdk version to 1.0.0-alpha.10
      
      bdk_chain to 0.13.0
      bdk_bitcoind_rpc to 0.9.0
      bdk_electrum to 0.12.0
      bdk_esplora to 0.12.0
      bdk_file_store to 0.10.0
      bdk_testenv to 0.3.0
      bdk_persist to 0.2.0
      
  • Create PR and merge the bump_dev_1.0.0-alpha.10 branch to master.
    • Title PR "Bump bdk version to 1.0.0-alpha.10".

On the day of the release

Tag and publish new release:

  • Add a tag to the HEAD commit in the master branch.
    • The tag name should be v1.0.0-alpha.10
    • The first line of the tag message should be "Release 1.0.0-alpha.10".
    • In the body of the tag message put a copy of the Summary and Changelog for the release.
    • Make sure the tag is signed, for extra safety use the explicit --sign flag.
  • Wait for the CI to finish one last time.
  • Push the new tag to the bitcoindevkit/bdk repo.
  • Publish all the updated crates to crates.io. [update this list with only changed crates]
    • bdk_chain
    • bdk_testenv
    • bdk_bitcoind_rpc
    • bdk_electrum
    • bdk_esplora
    • bdk_file_store
    • bdk
    • bdk_persist
  • Create the release on GitHub.
    • Go to "tags", click on the dots on the right and select "Create Release".
    • Set the title to Release 1.0.0-alpha.10.
    • In the release notes body put the Summary and Changelog.
    • Use the "+ Auto-generate release notes" button to add details from included PRs.
    • Until we reach a 1.0.0 release check the "Pre-release" box.
  • Make sure the new release shows up on crates.io and that the docs are built correctly on docs.rs.
  • Announce the release, using the Summary, on Discord, Twitter and Nostr.
  • Celebrate 🎉

Metadata

Metadata

Labels

releaseRelease related issue or PR

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions