All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Expand Wallet API surface (#21):
Wallet::finalize_psbtfor finalizing PSBTs (adding finalized script/witness to inputs)Wallet::cancel_txfor releasing reserved change addresses when a transaction won't be broadcastWallet::tx_detailsfor retrieving comprehensive transaction details (sent, received, fee, fee rate, balance delta, chain position)Wallet::descriptor_checksumfor getting the descriptor checksum string for a keychainWallet::next_derivation_indexfor getting the next unused derivation index for a keychain
TxDetailstype with getters fortxid,sent,received,fee,fee_rate,balance_delta_sat,chain_position, andtx- Block-by-block processing with events (#20):
Wallet::apply_block_eventsfor applying a block and connecting viaprev_blockhash, returnsWalletEventsWallet::apply_block_connected_to_eventsfor applying a block with explicit chain connection point, returnsWalletEventsWallet::apply_evicted_txsfor marking unconfirmed transactions as evicted from the mempoolWallet::checkpointsfor listing all checkpoints in the wallet's internal chain
Blocktype withfrom_bytes()deserialization and accessors (block_hash,prev_blockhash,time,txdata,tx_count)BlockIdconstructor from height and hash stringEvictedTxtype for pairing a transaction ID with an eviction timestampBdkErrorCode::CannotConnectandBdkErrorCode::UnexpectedConnectedToHasherror codes for block application errors- Expand TxBuilder API for hardware wallet support and advanced transaction construction (#21):
TxBuilder::add_datafor embedding OP_RETURN data in transactions (up to 80 bytes)TxBuilder::only_spend_changeshorthand forChangeSpendPolicy::OnlyChangeTxBuilder::current_heightfor coinbase maturity checks and anti-fee-sniping locktimeTxBuilder::only_witness_utxoto reduce PSBT size for segwit-only walletsTxBuilder::include_output_redeem_witness_scriptfor ColdCard/BitBox hardware wallet compatibilityTxBuilder::add_global_xpubsfor multisig hardware wallet workflowsTxBuilder::set_exact_sequencefor fine-grained nSequence control
TxIn::sequencegetter for reading the nSequence value of transaction inputs
- Expand Node and regtest integration coverage for wallet address lifecycle, output introspection, and fee calculation APIs (#22)
- Audit and refresh Rust and Node development dependencies to their latest compatible releases (#24)
- Rust:
bdk_esplora0.22.1 → 0.22.2,wasm-bindgen0.2.114 → 0.2.117,wasm-bindgen-futures0.4.64 → 0.4.67,web-sys0.3.91 → 0.3.94,wasm-bindgen-test0.3.64 → 0.3.67 - Node tests:
eslint10.0.2 → 10.2.0,eslint-plugin-jest29.15.0 → 29.15.1,globals17.3.0 → 17.4.0,jest30.2.0 → 30.3.0,ts-jest29.4.6 → 29.4.9,typescript-eslint8.56.1 → 8.58.1
0.3.0 - 2026-03-16
- Expand TxBuilder API (#21):
fee_absolutefor setting absolute fee amountsadd_utxoandadd_utxosfor must-spend UTXOsonly_spend_fromto restrict to manually added UTXOsenable_rbfandenable_rbf_with_sequencefor BIP 125 signalingnlocktimefor setting absolute locktimeversionfor setting transaction versionchange_policyanddo_not_spend_changefor controlling change output usageChangeSpendPolicyenum (ChangeAllowed,OnlyChange,ChangeForbidden)
Wallet::build_fee_bumpfor creating RBF fee-bump transactions (#21)Wallet::create_singlefor single-descriptor wallets (#21)Wallet::mark_usedandWallet::unmark_usedfor address usage management (#21)Wallet::insert_txoutfor providing external TxOut values for fee calculation (#21)BuildFeeBumpErrorvariants:TransactionNotFound,TransactionConfirmed,IrreplaceableTransaction,FeeRateUnavailable,InvalidOutputIndexWalletEventtype andWallet::apply_update_eventsfor reacting to wallet state changes (#19)Transaction::to_bytesandTransaction::from_bytesfor consensus serialization (#38, #39). Enables BDK ↔ LDK interop (e.g. channel funding transactions)- Upgrade BDK to 2.3.0 with new API wrappers (#14):
Wallet::create_from_two_path_descriptor(BIP-389 multipath descriptors)TxBuilder::exclude_unconfirmedandTxBuilder::exclude_below_confirmations
- Dust check methods (#13):
Amount::is_dust(script)— check whether an amount is below the dust limit for a given scriptScriptBuf::minimal_non_dust()— returns the minimum non-dust amount for a scriptScriptBuf::minimal_non_dust_custom(dust_relay_fee)— same with a custom dust relay fee rate
- Regtest integration test environment with Docker Compose and Esplora (#26)
CLAUDE.mdwith agent instructions and project conventions (#14)
- Upgrade wasm-pack from 0.13.1 to 0.14.0 in CI (#31). Install method changed from deprecated
installer/init.shscript to direct binary download from GitHub releases esplora.test.tsis now network-agnostic viaNETWORKandESPLORA_URLenvironment variables (#26)- Node CI job excludes Esplora tests; dedicated Esplora integration job runs against regtest (#26)
- Suppress deprecated
SignOptionswarnings with#[allow(deprecated)](#14)
bdk_wallet2.0.0 → 2.3.0bdk_esplora0.22.0 → 0.22.1wasm-bindgen0.2.100 → 0.2.114bitcoin0.32.6 → 0.32.8anyhow1.0.98 → 1.0.102serde1.0.219 → 1.0.228web-sys0.3.77 → 0.3.91getrandom0.2.16 → 0.2.17wasm-bindgen-test0.3.50 → 0.3.64- CI:
actions/checkoutv4.3.1 → v6.0.2,actions/setup-nodev4.4.0 → v6.2.0,actions/cachev4 → v5.0.3 - CI:
dtolnay/rust-toolchainv1,Swatinem/rust-cachev2.8.2 (unchanged),actionlint1.7.11 - All CI actions SHA-pinned with version comments (including
publish-release.yml) - Node tests:
jest29 → 30,@types/jest29 → 30,eslint9 → 10,eslint-plugin-jest28 → 29,globals16 → 17
0.2.0 - 2025-08-25
Initial release under the bitcoindevkit organization. Repository transferred from MetaMask.
- WASM bindings for
bdk_wallet2.0.0 viawasm-bindgen - Core wallet functionality:
Wallet(create, load, sign, addresses, UTXOs, transactions) TxBuilderfor constructing transactionsEsploraClientfor blockchain sync (full scan and incremental sync)Descriptorutilities- WASM-compatible type wrappers with
From/Intoconversions for all BDK/bitcoin types CloneandCopytrait implementations for applicable types- Browser and Node.js build targets
- Node.js integration tests (Jest) against Mutinynet signet
- Browser tests via
wasm-pack test - CI with GitHub Actions: lint (fmt + clippy), browser builds, Node.js build + test
- CODEOWNERS file
- Automated npm publishing for
@bitcoindevkit/bdk-wallet-weband@bitcoindevkit/bdk-wallet-node