Skip to content

Latest commit

 

History

History
126 lines (103 loc) · 8.49 KB

File metadata and controls

126 lines (103 loc) · 8.49 KB

Changelog

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.

Added

  • Expand Wallet API surface (#21):
    • Wallet::finalize_psbt for finalizing PSBTs (adding finalized script/witness to inputs)
    • Wallet::cancel_tx for releasing reserved change addresses when a transaction won't be broadcast
    • Wallet::tx_details for retrieving comprehensive transaction details (sent, received, fee, fee rate, balance delta, chain position)
    • Wallet::descriptor_checksum for getting the descriptor checksum string for a keychain
    • Wallet::next_derivation_index for getting the next unused derivation index for a keychain
  • TxDetails type with getters for txid, sent, received, fee, fee_rate, balance_delta_sat, chain_position, and tx
  • Block-by-block processing with events (#20):
    • Wallet::apply_block_events for applying a block and connecting via prev_blockhash, returns WalletEvents
    • Wallet::apply_block_connected_to_events for applying a block with explicit chain connection point, returns WalletEvents
    • Wallet::apply_evicted_txs for marking unconfirmed transactions as evicted from the mempool
    • Wallet::checkpoints for listing all checkpoints in the wallet's internal chain
  • Block type with from_bytes() deserialization and accessors (block_hash, prev_blockhash, time, txdata, tx_count)
  • BlockId constructor from height and hash string
  • EvictedTx type for pairing a transaction ID with an eviction timestamp
  • BdkErrorCode::CannotConnect and BdkErrorCode::UnexpectedConnectedToHash error codes for block application errors
  • Expand TxBuilder API for hardware wallet support and advanced transaction construction (#21):
    • TxBuilder::add_data for embedding OP_RETURN data in transactions (up to 80 bytes)
    • TxBuilder::only_spend_change shorthand for ChangeSpendPolicy::OnlyChange
    • TxBuilder::current_height for coinbase maturity checks and anti-fee-sniping locktime
    • TxBuilder::only_witness_utxo to reduce PSBT size for segwit-only wallets
    • TxBuilder::include_output_redeem_witness_script for ColdCard/BitBox hardware wallet compatibility
    • TxBuilder::add_global_xpubs for multisig hardware wallet workflows
    • TxBuilder::set_exact_sequence for fine-grained nSequence control
  • TxIn::sequence getter for reading the nSequence value of transaction inputs

Changed

  • 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)

Dependencies

  • Rust: bdk_esplora 0.22.1 → 0.22.2, wasm-bindgen 0.2.114 → 0.2.117, wasm-bindgen-futures 0.4.64 → 0.4.67, web-sys 0.3.91 → 0.3.94, wasm-bindgen-test 0.3.64 → 0.3.67
  • Node tests: eslint 10.0.2 → 10.2.0, eslint-plugin-jest 29.15.0 → 29.15.1, globals 17.3.0 → 17.4.0, jest 30.2.0 → 30.3.0, ts-jest 29.4.6 → 29.4.9, typescript-eslint 8.56.1 → 8.58.1

0.3.0 - 2026-03-16

Added

  • Expand TxBuilder API (#21):
    • fee_absolute for setting absolute fee amounts
    • add_utxo and add_utxos for must-spend UTXOs
    • only_spend_from to restrict to manually added UTXOs
    • enable_rbf and enable_rbf_with_sequence for BIP 125 signaling
    • nlocktime for setting absolute locktime
    • version for setting transaction version
    • change_policy and do_not_spend_change for controlling change output usage
    • ChangeSpendPolicy enum (ChangeAllowed, OnlyChange, ChangeForbidden)
  • Wallet::build_fee_bump for creating RBF fee-bump transactions (#21)
  • Wallet::create_single for single-descriptor wallets (#21)
  • Wallet::mark_used and Wallet::unmark_used for address usage management (#21)
  • Wallet::insert_txout for providing external TxOut values for fee calculation (#21)
  • BuildFeeBumpError variants: TransactionNotFound, TransactionConfirmed, IrreplaceableTransaction, FeeRateUnavailable, InvalidOutputIndex
  • WalletEvent type and Wallet::apply_update_events for reacting to wallet state changes (#19)
  • Transaction::to_bytes and Transaction::from_bytes for 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_unconfirmed and TxBuilder::exclude_below_confirmations
  • Dust check methods (#13):
    • Amount::is_dust(script) — check whether an amount is below the dust limit for a given script
    • ScriptBuf::minimal_non_dust() — returns the minimum non-dust amount for a script
    • ScriptBuf::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.md with agent instructions and project conventions (#14)

Changed

  • Upgrade wasm-pack from 0.13.1 to 0.14.0 in CI (#31). Install method changed from deprecated installer/init.sh script to direct binary download from GitHub releases
  • esplora.test.ts is now network-agnostic via NETWORK and ESPLORA_URL environment variables (#26)
  • Node CI job excludes Esplora tests; dedicated Esplora integration job runs against regtest (#26)

Fixed

  • Suppress deprecated SignOptions warnings with #[allow(deprecated)] (#14)

Dependencies

  • bdk_wallet 2.0.0 → 2.3.0
  • bdk_esplora 0.22.0 → 0.22.1
  • wasm-bindgen 0.2.100 → 0.2.114
  • bitcoin 0.32.6 → 0.32.8
  • anyhow 1.0.98 → 1.0.102
  • serde 1.0.219 → 1.0.228
  • web-sys 0.3.77 → 0.3.91
  • getrandom 0.2.16 → 0.2.17
  • wasm-bindgen-test 0.3.50 → 0.3.64
  • CI: actions/checkout v4.3.1 → v6.0.2, actions/setup-node v4.4.0 → v6.2.0, actions/cache v4 → v5.0.3
  • CI: dtolnay/rust-toolchain v1, Swatinem/rust-cache v2.8.2 (unchanged), actionlint 1.7.11
  • All CI actions SHA-pinned with version comments (including publish-release.yml)
  • Node tests: jest 29 → 30, @types/jest 29 → 30, eslint 9 → 10, eslint-plugin-jest 28 → 29, globals 16 → 17

0.2.0 - 2025-08-25

Initial release under the bitcoindevkit organization. Repository transferred from MetaMask.

Added

  • WASM bindings for bdk_wallet 2.0.0 via wasm-bindgen
  • Core wallet functionality: Wallet (create, load, sign, addresses, UTXOs, transactions)
  • TxBuilder for constructing transactions
  • EsploraClient for blockchain sync (full scan and incremental sync)
  • Descriptor utilities
  • WASM-compatible type wrappers with From/Into conversions for all BDK/bitcoin types
  • Clone and Copy trait 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-web and @bitcoindevkit/bdk-wallet-node