Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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<bool>` [#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
19 changes: 12 additions & 7 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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"
Expand Down
8 changes: 4 additions & 4 deletions examples/common.rs
Original file line number Diff line number Diff line change
@@ -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,
};
Expand Down Expand Up @@ -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(())
}

Expand Down
2 changes: 2 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//! `bdk_tx`
#![cfg_attr(coverage_nightly, feature(coverage_attribute))]

Check warning on line 2 in src/lib.rs

View workflow job for this annotation

GitHub Actions / Code Coverage

feature `coverage_attribute` is declared but not used

Check warning on line 2 in src/lib.rs

View workflow job for this annotation

GitHub Actions / Code Coverage

feature `coverage_attribute` is declared but not used
#![warn(missing_docs)]
#![no_std]

Expand All @@ -9,6 +9,8 @@
#[cfg(feature = "std")]
extern crate std;

pub extern crate bdk_coin_select;

mod canonical_unspents;
mod finalizer;
mod input;
Expand Down