# Changelog Changelog information can also be found in each release's git tag (which can be viewed with `git tag -ln100 "v*"`), as well as on the [GitHub releases](https://github.com/bitcoindevkit/bdk-ffi/releases) page. See [DEVELOPMENT_CYCLE.md](DEVELOPMENT_CYCLE.md) for more details. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.30.0] This release has a new API and a few internal optimizations and refactorings. - APIs Added - Add BIP-86 descriptor templates [#388] [#388]: https://github.com/bitcoindevkit/bdk-ffi/pull/388 ## [0.29.0] This release has a number of new APIs, and adds support for Windows in bdk-jvm. Changelog - Add support for Windows in bdk-jvm [#336] - Add support for older version of Linux distros in bdk-jvm [#345] - APIs added - Expose `is_mine()` method on the `Wallet` type [#355] - Expose `to_bytes()` method on the `Script` type [#369] [#336]: https://github.com/bitcoindevkit/bdk-ffi/pull/336 [#345]: https://github.com/bitcoindevkit/bdk-ffi/pull/345 [#355]: https://github.com/bitcoindevkit/bdk-ffi/pull/355 [#369]: https://github.com/bitcoindevkit/bdk-ffi/pull/369 ## [v0.28.0] - Update BDK to version 0.28.0 [#341] - Drop support of pypy releases of Python libraries [#351] - Drop support for Python 3.6 and 3.7 [#351] - Drop support for very old Linux versions that do not support the manylinux_2_17_x86_64 platform tag [#351] - APIs changed: - Expose Address payload and network properties. [#325] - Add SignOptions to Wallet.sign() params. [#326] - address field on `AddressInfo` type is now of type `Address` [#333] - new PartiallySignedTransaction.json_serialize() function to get JSON serialized value of all PSBT fields. [#334] - Add from_script constructor to `Address` type [#337] [#325]: https://github.com/bitcoindevkit/bdk-ffi/pull/325 [#326]: https://github.com/bitcoindevkit/bdk-ffi/pull/326 [#333]: https://github.com/bitcoindevkit/bdk-ffi/pull/333 [#334]: https://github.com/bitcoindevkit/bdk-ffi/pull/334 [#337]: https://github.com/bitcoindevkit/bdk-ffi/pull/337 [#341]: https://github.com/bitcoindevkit/bdk-ffi/pull/341 [#351]: https://github.com/bitcoindevkit/bdk-ffi/pull/351 ## [v0.27.1] - Update BDK to version 0.27.1 [#312] - APIs changed - `PartiallySignedTransaction.extract_tx()` returns a `Transaction` instead of the transaction bytes. [#296] - `Blockchain.broadcast()` takes a `Transaction` instead of a `PartiallySignedTransaction`. [#296] - APIs added - New `Transaction` structure that can be created from or serialized to consensus encoded bytes. [#296] - Add Wallet.get_internal_address() API [#304] - Add `AddressIndex::Peek(index)` and `AddressIndex::Reset(index)` APIs [#305] [#296]: https://github.com/bitcoindevkit/bdk-ffi/pull/296 [#304]: https://github.com/bitcoindevkit/bdk-ffi/pull/304 [#305]: https://github.com/bitcoindevkit/bdk-ffi/pull/305 [#312]: https://github.com/bitcoindevkit/bdk-ffi/pull/312 ## [v0.26.0] - Update BDK to version 0.26.0 [#288] - APIs changed - The descriptor and change_descriptor arguments on the wallet constructor now take a `Descriptor` instead of a `String`. [#260] - TxBuilder.drain_to() argument is now `Script` instead of address `String`. [#279] - APIs added - Added RpcConfig, BlockchainConfig::Rpc, and Auth [#125] - Added Descriptor type in [#260] with the following methods: - Default constructor requires a descriptor in String format and a Network - new_bip44 constructor returns a Descriptor with structure pkh(key/44'/{0,1}'/0'/{0,1}/*) - new_bip44_public constructor returns a Descriptor with structure pkh(key/{0,1}/*) - new_bip49 constructor returns a Descriptor with structure sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*)) - new_bip49_public constructor returns a Descriptor with structure sh(wpkh(key/{0,1}/*)) - new_bip84 constructor returns a Descriptor with structure wpkh(key/84'/{0,1}'/0'/{0,1}/*) - new_bip84_public constructor returns a Descriptor with structure wpkh(key/{0,1}/*) - as_string returns the public version of the output descriptor - as_string_private returns the private version of the output descriptor if available, otherwise return the public version [#125]: https://github.com/bitcoindevkit/bdk-ffi/pull/125 [#260]: https://github.com/bitcoindevkit/bdk-ffi/pull/260 [#279]: https://github.com/bitcoindevkit/bdk-ffi/pull/279 [#288]: https://github.com/bitcoindevkit/bdk-ffi/pull/288 ## [v0.25.0] - Update BDK to version 0.25.0 [#272] - APIs Added: - from_string() constructors now available on DescriptorSecretKey and DescriptorPublicKey [#247] [#247]: https://github.com/bitcoindevkit/bdk-ffi/pull/247 [#272]: https://github.com/bitcoindevkit/bdk-ffi/pull/272 ## [v0.11.0] - Update BDK to version 0.24.0 [#221] - APIs changed - The constructor on the DescriptorSecretKey type now takes a Mnemonic instead of a String. - APIs added - Added Mnemonic struct [#219] with following methods: - new(word_count: WordCount) generates and returns Mnemonic with random entropy - from_string(mnemonic: String) converts string Mnemonic to Mnemonic type with error - from_entropy(entropy: Vec) generates and returns Mnemonic with given entropy - as_string() view Mnemonic as string - APIs removed - generate_mnemonic(word_count: WordCount) [#219]: https://github.com/bitcoindevkit/bdk-ffi/pull/219 [#221]: https://github.com/bitcoindevkit/bdk-ffi/pull/221 ## [v0.10.0] - Update BDK to version 0.23.0 [#204] - Update uniffi-rs to latest version 0.21.0 [#216] - Breaking Changes - Changed `TxBuilder.finish()` to return new `TxBuilderResult` [#209] - `TxBuilder.add_recipient()` now takes a `Script` instead of an `Address` [#192] - `AddressAmount` is now `ScriptAmount` [#192] - APIs Added - Added `TxBuilderResult` with PSBT and TransactionDetails [#209] - `Address` and `Script` structs have been added [#192] - Add `PartiallySignedBitcoinTransaction.extract_tx()` function [#192] - Add `secret_bytes()` method on the `DescriptorSecretKey` [#199] - Add `PartiallySignedBitcoinTransaction.combine()` method [#200] [#192]: https://github.com/bitcoindevkit/bdk-ffi/pull/192 [#199]: https://github.com/bitcoindevkit/bdk-ffi/pull/199 [#200]: https://github.com/bitcoindevkit/bdk-ffi/pull/200 [#204]: https://github.com/bitcoindevkit/bdk-ffi/pull/204 [#209]: https://github.com/bitcoindevkit/bdk-ffi/pull/209 [#216]: https://github.com/bitcoindevkit/bdk-ffi/pull/216 ## [v0.9.0] - Breaking Changes - Rename `get_network()` method on `Wallet` interface to `network()` [#185] - Rename `get_transactions()` method on `Wallet` interface to `list_transactions()` [#185] - Remove `generate_extended_key`, returned ExtendedKeyInfo [#154] - Remove `restore_extended_key`, returned ExtendedKeyInfo [#154] - Remove dictionary `ExtendedKeyInfo {mnenonic, xprv, fingerprint}` [#154] - Remove interface `Transaction` [#190] - Changed `Wallet` interface `list_transaction()` to return array of `TransactionDetails` [#190] - Update `bdk` dependency version to 0.22 [#193] - APIs Added [#154] - `generate_mnemonic()`, returns string mnemonic - `interface DescriptorSecretKey` - `new(Network, string_mnenoinc, password)`, constructs DescriptorSecretKey - `derive(DerivationPath)`, derives and returns child DescriptorSecretKey - `extend(DerivationPath)`, extends and returns DescriptorSecretKey - `as_public()`, returns DescriptorSecretKey as DescriptorPublicKey - `as_string()`, returns DescriptorSecretKey as String - `interface DescriptorPublicKey` - `derive(DerivationPath)` derives and returns child DescriptorPublicKey - `extend(DerivationPath)` extends and returns DescriptorPublicKey - `as_string()` returns DescriptorPublicKey as String - Add to `interface Blockchain` the `get_height()` and `get_block_hash()` methods [#184] - Add to `interface TxBuilder` the `set_recipients(recipient: Vec)` method [#186] - Add to `dictionary TransactionDetails` the `confirmation_time` field [#190] - Interfaces Added [#154] - `DescriptorSecretKey` - `DescriptorPublicKey` - `DerivationPath` [#154]: https://github.com/bitcoindevkit/bdk-ffi/pull/154 [#184]: https://github.com/bitcoindevkit/bdk-ffi/pull/184 [#185]: https://github.com/bitcoindevkit/bdk-ffi/pull/185 [#193]: https://github.com/bitcoindevkit/bdk-ffi/pull/193 ## [v0.8.0] - Update BDK to version 0.20.0 [#169] - APIs Added - `TxBuilder.add_data(data: Vec)` [#163] - `Wallet.list_unspent()` returns `Vec` [#158] - Add coin control methods on TxBuilder [#164] [#163]: https://github.com/bitcoindevkit/bdk-ffi/pull/163 [#158]: https://github.com/bitcoindevkit/bdk-ffi/pull/158 [#164]: https://github.com/bitcoindevkit/bdk-ffi/pull/164 [#169]: https://github.com/bitcoindevkit/bdk-ffi/pull/169 [#190]: https://github.com/bitcoindevkit/bdk-ffi/pull/190 ## [v0.7.0] - Update BDK to version 0.19.0 - fixes sqlite-db issue causing wrong balance - adds experimental taproot descriptor and PSBT support - APIs Removed - `Wallet.get_new_address()`, returned String, [#137] - `Wallet.get_last_unused_address()`, returned String [#137] - APIs Added - `Wallet.get_address(AddressIndex)`, returns `AddressInfo` [#137] - APIs Changed - `Wallet.sign(PartiallySignedBitcoinTransaction)` now returns a bool, true if finalized [#161] [#137]: https://github.com/bitcoindevkit/bdk-ffi/pull/137 [#161]: https://github.com/bitcoindevkit/bdk-ffi/pull/161 ## [v0.6.0] - Update BDK to version 0.18.0 - Add BumpFeeTxBuilder to bump the fee on an unconfirmed tx created by the Wallet - Change TxBuilder.build() to TxBuilder.finish() to align with bdk function name ## [v0.5.0] - Fix Wallet.broadcast function, now returns a tx id as a hex string - Remove creating a new spending Transaction via the PartiallySignedBitcoinTransaction constructor - Add TxBuilder for creating new spending PartiallySignedBitcoinTransaction - Add TxBuilder .add_recipient, .fee_rate, and .build functions - Add TxBuilder .drain_wallet and .drain_to functions - Update generate cli tool to generate all binding languages and rename to bdk-ffi-bindgen ## [v0.4.0] - Add dual license MIT and Apache 2.0 - Add sqlite database support - Fix memory database configuration enum, remove junk field ## [v0.3.1] - Remove hard coded sync progress value (was always returning 21.0) ## [v0.3.0] - Move bdk-kotlin bindings and ios example to separate repos - Add bin to generate Python bindings - Add `PartiallySignedBitcoinTransaction::deserialize` function as named constructor to decode from a string per [BIP 0174] - Add `PartiallySignedBitcoinTransaction::serialize` function to encode to a string per [BIP 0174] - Remove `PartiallySignedBitcoinTransaction.details` struct field [BIP 0174]:https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#encoding [v0.30.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.29.0...v0.30.0 [v0.29.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.28.0...v0.29.0 [v0.28.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.27.1...v0.28.0 [v0.27.1]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.26.0...v0.27.1 [v0.26.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.25.0...v0.26.0 [v0.25.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.11.0...v0.25.0 [v0.11.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.10.0...v0.11.0 [v0.10.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.9.0...v0.10.0 [v0.9.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.8.0...v0.9.0 [v0.8.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.7.0...v0.8.0 [v0.7.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.6.0...v0.7.0 [v0.6.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.5.0...v0.6.0 [v0.5.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.4.0...v0.5.0 [v0.4.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.3.1...v0.4.0 [v0.3.1]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.3.0...v0.3.1 [v0.3.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.2.0...v0.3.0 [v0.2.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v0.0.0...v0.2.0