diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d51fb63 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,62 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + + +## [0.2.0] + +### Added + +- Add `SelectorError::InsufficientAssets` variant [#39](https://github.com/bitcoindevkit/bdk-tx/pull/39) +- Add members `change_script`, `change_dust_relay_feerate`, `change_min_value`, `change_longterm_feerate` to `SelectorParams` [#39](https://github.com/bitcoindevkit/bdk-tx/pull/39) +- feat: Add trait `FeeRateExt` [#39](https://github.com/bitcoindevkit/bdk-tx/pull/39) +- Added methods `is_block_timelocked` and `is_time_timelocked` for `Input` and `InputGroup` [#36](https://github.com/bitcoindevkit/bdk-tx/pull/36) +- `enable_anti_fee_sniping` field is added to `PsbtParams` for BIP326 anti-fee-sniping protection [#5](https://github.com/bitcoindevkit/bdk-tx/pull/5) +- Added error variants `InvalidLockTime` and `UnsupportedVersion` to `CreatePsbtError` [#5](https://github.com/bitcoindevkit/bdk-tx/pull/5) +- Added `Selection::create_psbt_with_rng` method for custom RNG [#5](https://github.com/bitcoindevkit/bdk-tx/pull/5) +- Added optional `sighash_type` member field to `PsbtParams` [#25](https://github.com/bitcoindevkit/bdk-tx/pull/25) +- feat: Update signer impl for `XOnlyPublicKey` [#20](https://github.com/bitcoindevkit/bdk-tx/pull/20) +- feat(selector): allow multiple change sources on `SelectorParams` [#18](https://github.com/bitcoindevkit/bdk-tx/pull/18) + +### Changed + +- ci: update CI actions and enable caching [#46](https://github.com/bitcoindevkit/bdk-tx/pull/46) +- ci: add code coverage workflow [#45](https://github.com/bitcoindevkit/bdk-tx/pull/45) +- `SelectorParams::new` is changed to accept `target_feerate`, `target_outputs`, and `change_script` as inputs. [#39](https://github.com/bitcoindevkit/bdk-tx/pull/39) +- `SelectorParams` is no longer Clone [#39](https://github.com/bitcoindevkit/bdk-tx/pull/39) +- `is_timelocked` is changed for `Input` and `InputGroup` to take an optional `absolute::Time` and returns `Option` [#36](https://github.com/bitcoindevkit/bdk-tx/pull/36) +- `TxStatus` is renamed to `ConfirmationStatus` [#36](https://github.com/bitcoindevkit/bdk-tx/pull/36) +- `filter_unspendable_now` is renamed to `filter_unspendable` [#36](https://github.com/bitcoindevkit/bdk-tx/pull/36) +- `CreatePsbtError::MissingFullTxForLegacyInput` and `CreatePsbtError::MissingFullTxForSegwitV0Input` now wraps `Input` in `Box` [#5](https://github.com/bitcoindevkit/bdk-tx/pull/5) +- docs: Improve documentation of `Finalizer` [#34](https://github.com/bitcoindevkit/bdk-tx/pull/34) +- chore: Bump MSRV to 1.85.0 [#23](https://github.com/bitcoindevkit/bdk-tx/pull/23) +- deps: Bump `miniscript` to 12.3.6 +- deps: Bump `bdk_coin_select` to 0.4.1 + +### Fixed + +- fix: replace deprecated `FeeRate::from_sat_per_vb_unchecked` [#51](https://github.com/bitcoindevkit/bdk-tx/pull/51) +- fix(finalizer): set finalized to false on error and add full coverage [#44](https://github.com/bitcoindevkit/bdk-tx/pull/44) +- fix(selection): Improve handling of fallback locktime [#43](https://github.com/bitcoindevkit/bdk-tx/pull/43) +- Fix locktime calculations and improve API [#36](https://github.com/bitcoindevkit/bdk-tx/pull/36) +- fix: Include `fallback_locktime` in locktime accumulation [#24](https://github.com/bitcoindevkit/bdk-tx/pull/24) + +### Removed + +- Removed `change_descriptor` field from `SelectorParams` [#18](https://github.com/bitcoindevkit/bdk-tx/pull/18) +- Removed `ChangePolicyType` enum [#32](https://github.com/bitcoindevkit/bdk-tx/pull/32) + +## [0.1.0] + +### Added + +- The new "Tx builder" [#1](https://github.com/bitcoindevkit/bdk-tx/pull/1) + +[unreleased]: https://github.com/bitcoindevkit/bdk-tx/compare/0.2.0...HEAD +[0.2.0]: https://github.com/bitcoindevkit/bdk-tx/compare/0.1.0...0.2.0 +[0.1.0]: https://github.com/bitcoindevkit/bdk-tx/releases/tag/0.1.0 diff --git a/Cargo.toml b/Cargo.toml index 8693aaf..8edd049 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bdk_tx" -version = "0.1.0" +version = "0.2.0" edition = "2021" rust-version = "1.85.0" homepage = "https://bitcoindevkit.org" @@ -14,22 +14,27 @@ readme = "README.md" unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage_nightly)'] } [dependencies] -miniscript = { version = "12.3.5", default-features = false } -bdk_coin_select = "0.4.0" +miniscript = { version = "12.3.6", default-features = false } rand_core = { version = "0.6.4", default-features = false } rand = { version = "0.8", optional = true } +[dependencies.bdk_coin_select] +version = "0.4.1" +default-features = false +git = "https://github.com/bitcoindevkit/coin-select" +rev = "a077ec9d8712f1fac4ef93508a855141eae6b9e8" + [dev-dependencies] anyhow = "1" bdk_tx = { path = "." } -bitcoin = { version = "0.32", default-features = false, features = ["rand-std"] } +bitcoin = { version = "0.32.8", default-features = false, features = ["rand-std"] } bdk_testenv = "0.13.0" -bdk_bitcoind_rpc = "0.20.0" -bdk_chain = { version = "0.23.0" } +bdk_bitcoind_rpc = "0.22.0" +bdk_chain = { version = "0.23.3" } [features] default = ["std"] -std = ["miniscript/std", "rand/std"] +std = ["miniscript/std", "rand/std", "bdk_coin_select/std"] [[example]] name = "synopsis" diff --git a/examples/common.rs b/examples/common.rs index 22d3c7a..a704593 100644 --- a/examples/common.rs +++ b/examples/common.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use bdk_bitcoind_rpc::{Emitter, NO_EXPECTED_MEMPOOL_TXIDS}; +use bdk_bitcoind_rpc::{Emitter, NO_EXPECTED_MEMPOOL_TXS}; use bdk_chain::{ bdk_core, Anchor, Balance, CanonicalizationParams, ChainPosition, ConfirmationBlockTime, }; @@ -42,17 +42,17 @@ impl Wallet { pub fn sync(&mut self, env: &TestEnv) -> anyhow::Result<()> { let client = env.rpc_client(); let last_cp = self.chain.tip(); - let mut emitter = Emitter::new(client, last_cp, 0, NO_EXPECTED_MEMPOOL_TXIDS); + let mut emitter = Emitter::new(client, last_cp, 0, NO_EXPECTED_MEMPOOL_TXS); while let Some(event) = emitter.next_block()? { let _ = self .graph .apply_block_relevant(&event.block, event.block_height()); let _ = self.chain.apply_update(event.checkpoint); } - let mempool = emitter.mempool()?; + let mempool_event = emitter.mempool()?; let _ = self .graph - .batch_insert_relevant_unconfirmed(mempool.new_txs); + .batch_insert_relevant_unconfirmed(mempool_event.update); Ok(()) } diff --git a/src/lib.rs b/src/lib.rs index 46866f4..ca2ce8d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,8 @@ extern crate alloc; #[cfg(feature = "std")] extern crate std; +pub extern crate bdk_coin_select; + mod canonical_unspents; mod finalizer; mod input;