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.
- Add CONTRIBUTING.md
- Add a Discord badge to the README
- Add code coverage github actions workflow
- Add scheduled audit check in CI
- Add CHANGELOG.md
- Rename the library to
bdk
- Prettify README examples on github
- Change CI to github actions
- Bump rust-bitcoin to 0.25, fix Cargo dependencies
- Enable clippy for stable and tests by default
- Switch to "mainline" rust-miniscript
- Generate a different cache key for every CI job
- Fix to at least bitcoin ^0.25.2
- Fix or ignore clippy warnings for all optional features except compact_filters
- Pin cc version because last breaks rocksdb build
- Add a trait to create
Blockchain
s from a configuration - Add an
AnyBlockchain
enum to allow switching at runtime - Document
AnyBlockchain
andConfigurableBlockchain
- Use our Instant struct to be compatible with wasm
- Make esplora call in parallel
- Allow to set concurrency in Esplora config and optionally pass it in repl
- Fix receiving a coinbase using Electrum/Esplora
- Use proper type for EsploraHeader, make conversion to BlockHeader infallible
- Eagerly unwrap height option, save one collect
- Simplify the architecture of blockchain traits
- Improve sync
- Remove unused varaint HeaderParseFail
- Conditionally remove cli args according to enabled feature
- Add max_addresses param in sync
- Split the internal and external policy paths
- Add
AnyDatabase
andConfigurableDatabase
traits
- Add a macro to write descriptors from code
- Add descriptor templates, add
DerivableKey
- Add ToWalletDescriptor trait tests
- Add support for
sortedmulti
indescriptor!
- Add ExtractPolicy trait tests
- Add get_checksum tests, cleanup tests
- Add descriptor macro tests
- Improve the descriptor macro, add traits for key and descriptor types
- Fix the recovery of a descriptor given a PSBT
- Add BIP39 support
- Take
ScriptContext
into account when converting keys - Add a way to restrict the networks in which keys are valid
- Add a trait for keys that can be generated
- Fix entropy generation
- Less convoluted entropy generation
- Re-export tiny-bip39
- Implement
GeneratableKey
trait forbitcoin::PrivateKey
- Implement
ToDescriptorKey
trait forGeneratedKey
- Add a shortcut to generate keys with the default options
- Fix all-keys and cli-utils tests
- Allow to define static fees for transactions Fixes #137
- Merging two match expressions for fee calculation
- Incorporate RBF rules into utxo selection function
- Add Branch and Bound coin selection
- Add tests for BranchAndBoundCoinSelection::coin_select
- Add tests for BranchAndBoundCoinSelection::bnb
- Add tests for BranchAndBoundCoinSelection::single_random_draw
- Add test that shwpkh populates witness_utxo
- Add witness and redeem scripts to PSBT outputs
- Add an option to include
PSBT_GLOBAL_XPUB
s in PSBTs - Eagerly finalize inputs
- Use collect to avoid iter unwrapping Options
- Make coin_select take may/must use utxo lists
- Improve
CoinSelectionAlgorithm
- Refactor
Wallet::bump_fee()
- Default to SIGHASH_ALL if not specified
- Replace ChangeSpendPolicy::filter_utxos with a predicate
- Make 'unspendable' into a HashSet
- Stop implicitly enforcing manaul selection by .add_utxo
- Rename DumbCS to LargestFirstCoinSelection
- Rename must_use_utxos to required_utxos
- Rename may_use_utxos to optional_uxtos
- Rename get_must_may_use_utxos to preselect_utxos
- Remove redundant Box around address validators
- Remove redundant Box around signers
- Make Signer and AddressValidator Send and Sync
- Split
send_all
intoset_single_recipient
anddrain_wallet
- Use TXIN_DEFAULT_WEIGHT constant in coin selection
- Replace
must_use
withrequired
in coin selection - Take both spending policies into account in create_tx
- Check last derivation in cache to avoid recomputation
- Use the branch-and-bound cs by default
- Make coin_select return UTXOs instead of TxIns
- Build output lookup inside complete transaction
- Don't wrap SignersContainer arguments in Arc
- More consistent references with 'signers' variables
- Fix signing for
ShWpkh
inputs - Fix the recovery of a descriptor given a PSBT
- Support esplora blockchain source in repl
- Revert back the REPL example to use Electrum
- Remove the
magic
alias forrepl
- Require esplora feature for repl example
- Use dirs-next instead of dirs since the latter is unmantained
0.1.0-beta.1 - 2020-09-08
- Lightweight Electrum client with SSL/SOCKS5 support
- Add a generalized "Blockchain" interface
- Add Error::OfflineClient
- Add the Esplora backend
- Use async I/O in the various blockchain impls
- Compact Filters blockchain implementation
- Add support for Tor
- Impl OnlineBlockchain for types wrapped in Arc
- Add a generalized database trait and a Sled-based implementation
- Add an in-memory database
- Wrap Miniscript descriptors to support xpubs
- Policy and contribution
- Transform a descriptor into its "public" version
- Use
miniscript::DescriptorPublicKey
- Add a feature to enable the async interface on non-wasm32 platforms
- Wallet logic
- Add
assume_height_reached
in PSBTSatisfier - Add an option to change the assumed current height
- Specify the policy branch with a map
- Add a few commands to handle psbts
- Add hd_keypaths to outputs
- Add a
TxBuilder
struct to simplifycreate_tx()
's interface - Abstract coin selection in a separate trait
- Refill the address pool whenever necessary
- Implement the wallet import/export format from FullyNoded
- Add a type convert fee units, add
Wallet::estimate_fee()
- TxOrdering, shuffle/bip69 support
- Add RBF and custom versions in TxBuilder
- Allow limiting the use of internal utxos in TxBuilder
- Add
force_non_witness_utxo()
to TxBuilder - RBF and add a few tests
- Add AddressValidators
- Add explicit ordering for the signers
- Support signing the whole tx instead of individual inputs
- Create a PSBT signer from an ExtendedDescriptor
- Add REPL broadcast command
- Add a miniscript compiler CLI
- Expose list_transactions() in the REPL
- Use
MemoryDatabase
in the compiler example - Make the REPL return JSON