]> Untitled Git - bdk/log
bdk
20 months agoMerge bitcoindevkit/bdk#1397: Introduce proptesting, starting with `CheckPoint::range`
志宇 [Fri, 12 Apr 2024 05:29:26 +0000 (13:29 +0800)]
Merge bitcoindevkit/bdk#1397: Introduce proptesting, starting with `CheckPoint::range`

446b045161ebad3fbdf0ea96e8ff6f9da8ad212c test(chain): introduce proptest for `CheckPoint::range` (志宇)

Pull request description:

  ### Description

  This is based on #1369. It made sense for me to introduce the `CheckPoint::range` test as a proptest. I think we should also start introducing it for other methods too.

  ### Changelog notice

  * Added proptest for `CheckPoint::range`.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added tests for the new feature
  * [x] I've added docs for the new feature

Top commit has no ACKs.

Tree-SHA512: 2d8aad5a1ad152413fbc716fed4a47ad621e723928c5331728da2fbade995ebd677acfa05d2e7639d74d0f66e0971c72582d9cd562ea008b012774057b480d62

20 months agotest(chain): introduce proptest for `CheckPoint::range`
志宇 [Fri, 5 Apr 2024 08:43:13 +0000 (16:43 +0800)]
test(chain): introduce proptest for `CheckPoint::range`

Ensure that `CheckPoint::range` returns expected values by comparing
against values returned from a primitive approach.

I think it is a good idea to start writing proptests for this crate.

20 months agoMerge bitcoindevkit/bdk#1385: Fix last seen unconfirmed
志宇 [Thu, 11 Apr 2024 13:32:57 +0000 (21:32 +0800)]
Merge bitcoindevkit/bdk#1385: Fix last seen unconfirmed

a2a64ffb6e92baf46a912f36294f3f4f521a528a fix(electrum)!: Remove `seen_at` param from `into_tx_graph` (valued mammal)
37fca35ddede6cbc9d9428a2722eff82a405b1b2 feat(tx_graph): Add method update_last_seen_unconfirmed (valued mammal)

Pull request description:

  A method `update_last_seen_unconfirmed` is added for `TxGraph` that allows inserting a `seen_at` time for all unanchored transactions.

  fixes #1336

  ### Changelog notice

  Changed:
  - Methods `into_tx_graph` and `into_confirmation_time_tx_graph`for `RelevantTxids` are changed to no longer accept a `seen_at` parameter.

  Added:
  - Added method `update_last_seen_unconfirmed` for `TxGraph`.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  evanlinjin:
    ACK a2a64ffb6e92baf46a912f36294f3f4f521a528a

Tree-SHA512: 9011e63314b0e3ffcd50dbf5024f82b365bab1cc834c0455d7410b682338339ed5284caa721ffc267c65fa26d35ff6ee86cde6052e82a6a79768547fbb7a45eb

20 months agoUpgrade miniscript/bitcoin dependency
Tobin C. Harding [Mon, 16 Oct 2023 08:51:53 +0000 (19:51 +1100)]
Upgrade miniscript/bitcoin dependency

Upgrade:

- bitcoin to v0.31.0
- miniscript to v11.0.0

Note: The bitcoin upgrade includes improvements to the
`Transaction::weight()` function, it appears those guys did good, we
no longer need to add the 2 additional weight units "just in case".

20 months agofix(electrum)!: Remove `seen_at` param from `into_tx_graph`
valued mammal [Tue, 2 Apr 2024 14:19:56 +0000 (10:19 -0400)]
fix(electrum)!: Remove `seen_at` param from `into_tx_graph`

and `into_confirmation_time_tx_graph`, since now it makes
sense to use `TxGraph::update_last_seen_unconfirmed`.

Also, use `update_last_seen_unconfirmed` in examples for
electrum/esplora. We show how to update the last seen
time for transactions by calling `update_last_seen_unconfirmed`
on the graph update returned from a blockchain source, passing
in the current time, before applying it to another `TxGraph`.

20 months agofeat(tx_graph): Add method update_last_seen_unconfirmed
valued mammal [Sat, 30 Mar 2024 01:37:38 +0000 (21:37 -0400)]
feat(tx_graph): Add method update_last_seen_unconfirmed

That accepts a `u64` as param representing the latest timestamp
and internally calls `insert_seen_at` for all transactions in
graph that aren't yet anchored in a confirmed block.

20 months agoMerge bitcoindevkit/bdk#1369: feat(chain): add `get` and `range` methods to `CheckPoint`
志宇 [Sat, 6 Apr 2024 02:16:33 +0000 (10:16 +0800)]
Merge bitcoindevkit/bdk#1369: feat(chain): add `get` and `range` methods to `CheckPoint`

53942cced492138174638a8087b08f643a8d41ad chore(chain)!: rm `From<LocalChain> for BTreeMap<u32, BlockHash>` (志宇)
2d1d95a6850a5bab9c5bf369a498fe090852cd93 feat(chain): impl `PartialEq` on `CheckPoint` (志宇)
9a62d56900a33a519dd0165ccdb91711917772f3 feat(chain): add `get` and `range` methods to `CheckPoint` (志宇)

Pull request description:

  Partially fixes #1354

  ### Description

  These methods allow us to query for checkpoints contained within the linked list by height and height range. This is useful to determine checkpoints to fetch for chain sources without having to refer back to the `LocalChain`.

  Currently this is not implemented efficiently, but in the future, we will change `CheckPoint` to use a skip list structure.

  ### Notes to the reviewers

  Please refer to the conversation in #1354 for more details. In summary, both `TxGraph::missing_heights` and `tx_graph::ChangeSet::missing_heights_from` are problematic in their own ways. Additionally, it's a better API for chain sources if we only need to lock our receiving structures twice (once to obtain initial state and once for applying the update). Instead of relying on methods such as `EsploraExt::update_local_chain` to get relevant checkpoints, we can use these query methods instead. This allows up to get rid of `::missing_heights`-esc methods and remove the need to lock receiving structures in the middle of the sync.

  ### Changelog notice

  * Added `get` and `range` methods to `CheckPoint` (and in turn, `LocalChain`). This simulates an API where we have implemented a skip list of checkpoints (to implement in the future). This is a better API because we can query for any height or height range with just a checkpoint tip instead of relying on a separate checkpoint index (which needs to live in `LocalChain`).
  * Changed `LocalChain` to have a faster `Eq` implementation. We now maintain an xor value of all checkpoint block hashes. We compare this xor value to determine whether two chains are equal.
  * Added `PartialEq` implementation for `CheckPoint` and `local_chain::Update`.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added tests for the new feature
  * [x] I've added docs for the new feature

ACKs for top commit:
  LLFourn:
    ACK 53942cced492138174638a8087b08f643a8d41ad

Tree-SHA512: 90ef8047fe1265daa54c9dfe8a8c520685c898a50d18efd6e803707fcb529d0790d20373c9e439b9c7ff301db32b47453020cae7db4da2ea64eba895aa047f30

20 months agochore(chain)!: rm `From<LocalChain> for BTreeMap<u32, BlockHash>`
志宇 [Fri, 5 Apr 2024 07:59:09 +0000 (15:59 +0800)]
chore(chain)!: rm `From<LocalChain> for BTreeMap<u32, BlockHash>`

I don't think this was ever used. The only possible usecase I can think
of is for tests, but I don't think that is a strong enough incentive for
us to keep this.

20 months agofeat(chain): impl `PartialEq` on `CheckPoint`
志宇 [Mon, 25 Mar 2024 04:30:31 +0000 (12:30 +0800)]
feat(chain): impl `PartialEq` on `CheckPoint`

We impl `PartialEq` on `CheckPoint` instead of directly on `LocalChain`.
We also made the implementation more efficient.

20 months agofeat(chain): add `get` and `range` methods to `CheckPoint`
志宇 [Wed, 6 Mar 2024 05:04:12 +0000 (13:04 +0800)]
feat(chain): add `get` and `range` methods to `CheckPoint`

These methods allow us to query for checkpoints contained within the
linked list by height and height range. This is useful to determine
checkpoints to fetch for chain sources without having to refer back to
the `LocalChain`.

Currently this is not implemented efficiently, but in the future, we
will change `CheckPoint` to use a skip list structure.

20 months agoMerge bitcoindevkit/bdk#1345: fix: remove deprecated max_satisfaction_weight
志宇 [Tue, 2 Apr 2024 11:21:18 +0000 (19:21 +0800)]
Merge bitcoindevkit/bdk#1345: fix: remove deprecated max_satisfaction_weight

798ed8ced25156049126645435127a22245e916f fix: remove deprecated `max_satisfaction_weight (Jose Storopoli)

Pull request description:

  ### Description
  Continuation of #1115.
  Closes #1036.

  * Change deprecated `max_satisfaction_weight` to `max_weight_to_satisfy`
  * Remove `#[allow(deprecated)]` flags

  ### Notes to the reviewers

  I've changed all `max_satisfaction_weight()` to `max_weight_to_satisfy()` in `Wallet.get_available_utxo()` and `Wallet.build_fee_bump()`. Checking the docs on the `miniscript` crate for `max_weight_to_satisfy` has the following note:

  We are testing if the underlying descriptor `is.segwit()` or `.is_taproot`,
  then adding 4WU if true or leaving as it is otherwise.

  Another thing, we are not testing in BDK tests for legacy (pre-segwit) descriptors.
  Should I also add them to this PR?

  ### Changelog notice
  ### Fixed
  Replace the deprecated `max_satisfaction_weight` from `rust-miniscript` to `max_weight_to_satisfy`.

  ### Checklists
  #### All Submissions:
  * [x]  I've signed all my commits
  * [x]  I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x]  I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:
  * [ ]  This pull request breaks the existing API
  * [ ]  I've added tests to reproduce the issue which are now passing
  * [x]  I'm linking the issue being fixed by this PR

ACKs for top commit:
  evanlinjin:
    ACK 798ed8ced25156049126645435127a22245e916f

Tree-SHA512: 60babecee13c24915348ddb64894127a76a59d9421d52ea37acc714913685d57cc2be1904f9d0508078dd1db1f7d7dad83a734af5ee981801ca87de2e9984429

20 months agoMerge bitcoindevkit/bdk#1373: Wrap transactions as `Arc<Transaction>` in `TxGraph`
志宇 [Sun, 31 Mar 2024 09:50:00 +0000 (17:50 +0800)]
Merge bitcoindevkit/bdk#1373: Wrap transactions as `Arc<Transaction>` in `TxGraph`

8ab58af093ff295b86c3f8189aa96dea313092c4 feat(chain)!: wrap `TxGraph` txs with `Arc` (志宇)

Pull request description:

  ### Description

  This PR makes `TxGraph` store transactions as `Arc<Transaction>`.

  `Arc<Transaction>` can be shared between the chain-source and receiving structures. This allows the chain-source to keep the already-fetched transactions (save bandwith) and have a shared pointer to the transaction (save memory).

  Our current logic to avoid re-fetching transactions is to refer back to the receiving structures. However, this means an additional round of locking our receiving structures.

  ### Notes to the reviewers

  This will make more sense once I update the esplora/electrum chain sources to make use of both #1369 and this PR. The result would be chain sources which would only require locking the receiving structures twice (once for initiating the update, and once for applying the update).

  ### Changelog notice

  * Changed `TxGraph` to store transactions as `Arc<Transaction>`. This allows chain-sources to cheaply keep a copy of already-fetched transactions.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [x] I've added docs for the new feature

ACKs for top commit:
  LLFourn:
    ACK 8ab58af093ff295b86c3f8189aa96dea313092c4
  notmandatory:
    ACK 8ab58af093ff295b86c3f8189aa96dea313092c4

Tree-SHA512: 81d7ad35fed7f253a3b902f09a41aaef2877f6201d4f6e78318741bf00e4b898a8000d878ffcbfe75701094ce3e9021bd718b190a655331a9e11f0ad66bdb02f

20 months agofix: remove deprecated `max_satisfaction_weight
Jose Storopoli [Sun, 10 Sep 2023 09:53:56 +0000 (05:53 -0400)]
fix: remove deprecated `max_satisfaction_weight

- Change deprecated `max_satisfaction_weight` to `max_weight_to_satisfy`
- Remove `#[allow(deprecated)]` flags
- updates the calculations in TXIN_BASE_WEIGHT and P2WPKH_SATISFACTION_SIZE

Update crates/bdk/src/wallet/coin_selection.rs

Co-authored-by: ValuedMammal <valuedmammal@protonmail.com>
20 months agoMerge bitcoindevkit/bdk#1389: Bump bdk version to 1.0.0-alpha.8 v1.0.0-alpha.8
Steve Myers [Wed, 27 Mar 2024 16:13:24 +0000 (11:13 -0500)]
Merge bitcoindevkit/bdk#1389: Bump bdk version to 1.0.0-alpha.8

7b97c956c7abdd6415ccdda79c26cf212e15cb4e Bump bdk version to 1.0.0-alpha.8 (Steve Myers)

Pull request description:

  ### Description

  Bump versions:

  bdk version to 1.0.0-alpha.8
  bdk_bitcoind_rpc to 0.7.0
  bdk_electrum to 0.10.0
  bdk_esplora to 0.10.0
  bdk_file_store to 0.8.0
  bdk_hwi to 0.2.0

  fixes #1388

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  evanlinjin:
    ACK 7b97c956c7abdd6415ccdda79c26cf212e15cb4e

Tree-SHA512: 32286f33f8fe595f79ef6b9450c7906dee15b5c93ad62435025f4fb1446f9ee8c6147190d628b95e21b8f36c02ca3f8b86b8a5e8cab3835773750967f9e36489

20 months agoBump bdk version to 1.0.0-alpha.8
Steve Myers [Tue, 26 Mar 2024 18:35:10 +0000 (13:35 -0500)]
Bump bdk version to 1.0.0-alpha.8

bdk_bitcoind_rpc to 0.7.0
bdk_electrum to 0.10.0
bdk_esplora to 0.10.0
bdk_file_store to 0.8.0
bdk_hwi to 0.2.0

20 months agoMerge bitcoindevkit/bdk#1391: Fix cargo manifest for `bdk_testenv`
志宇 [Wed, 27 Mar 2024 07:12:22 +0000 (15:12 +0800)]
Merge bitcoindevkit/bdk#1391: Fix cargo manifest for `bdk_testenv`

25800139124a37608c9da0a6ad76c22795f110d6 chore(testenv): fix cargo manifest (志宇)

Pull request description:

  ### Description

  This will make the `bdk_testenv` crate actually publishable.

  ### Changelog notice

  * Fix cargo manifest of `bdk_testenv`.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  LLFourn:
    ACK 25800139124a37608c9da0a6ad76c22795f110d6

Tree-SHA512: 52707450473713490cb1115af06747dc4d6f78cf4bf877cd3a246064af11786b5a89829731e911ffba19a71db9b19a60ad5b12f20871d57b296427761707d826

20 months agochore(testenv): fix cargo manifest
志宇 [Wed, 27 Mar 2024 06:58:46 +0000 (14:58 +0800)]
chore(testenv): fix cargo manifest

20 months agoMerge bitcoindevkit/bdk#1351: fix: define and document `stop_gap`
Steve Myers [Tue, 26 Mar 2024 23:59:13 +0000 (18:59 -0500)]
Merge bitcoindevkit/bdk#1351: fix: define and document `stop_gap`

7c1861aab9a76f2ba4a2ae372a16c9669a33f5de fix: define and document `stop_gap` (Jose Storopoli)

Pull request description:

  ### Description

  - changes the code implementation to "the maximum number of consecutive unused addresses" in esplora async and blocking extensions.
  - for all purposes treats `stop_gap = 0` as `stop_gap = 1`.
  - renames `past_gap_limit` to `gap_limit_reached` to indicate we want to break once the gap limit is reached and not go further in `full_scan`, as suggested in https://github.com/bitcoindevkit/bdk/issues/1227#issuecomment-1859040463
  - change the tests according to the new implementation.
  - add notes on what `stop_gap` means and links to convergent definition in other Bitcoin-related software.

  Closes #1227.

  ### Notes to the reviewers

  We can iterate over the wording and presentation of the `stop_gap` definition
  and details.

  ### Changelog notice

  - BREAKING: change `stop_gap` definition and effects in `full_scan`
    to reflect the common definitions in most Bitcoin-related software.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added tests for the new feature
  * [x] I've added docs for the new feature

  #### Bugfixes:

  * [x] This pull request breaks the existing API
  * [x] I've added tests to reproduce the issue which are now passing
  * [x] I'm linking the issue being fixed by this PR

ACKs for top commit:
  notmandatory:
    ACK 7c1861aab9a76f2ba4a2ae372a16c9669a33f5de

Tree-SHA512: d9bc5f8ebace47fa33f023ceddb3df5629ad3e7fa130a407311a0303ac59810e6527254efb9075f9e87bf37bec8655c4726eb9cb99f6b038fbeb742f79e995c0

20 months agofix: define and document `stop_gap`
Jose Storopoli [Tue, 26 Mar 2024 15:44:03 +0000 (12:44 -0300)]
fix: define and document `stop_gap`

- changes the code implementation to "the maximum number of consecutive unused addresses"
  in esplora async and blocking extjensions.
- treat `stop_gap = 0` as `stop_gap = 1` for all purposes.
- renames `past_gap_limit` to `gap_limit_reached` to indicate we want to break once the gap
  limit is reached and not go further in `full_scan`, as suggested in
  https://github.com/bitcoindevkit/bdk/issues/1227#issuecomment-1859040463
- change the tests according to the new implementation.
- add notes on what `stop_gap` means and links to convergent definition in other
  Bitcoin-related software.

Closes #1227

20 months agofeat(chain)!: wrap `TxGraph` txs with `Arc`
志宇 [Thu, 14 Mar 2024 06:20:51 +0000 (14:20 +0800)]
feat(chain)!: wrap `TxGraph` txs with `Arc`

Wrapping transactions as `Arc<Transaction>` allows us to share
transactions cheaply between the chain-source and receiving structures.
Therefore the chain-source can keep already-fetched transactions (save
bandwidth) and have a shared pointer to the transactions (save memory).

This is better than the current way we do things, which is to refer back
to the receiving structures mid-sync.

Documentation for `TxGraph` is also updated.

20 months agoMerge bitcoindevkit/bdk#1171: chore: extract `TestEnv` into separate crate
志宇 [Sat, 23 Mar 2024 10:37:20 +0000 (18:37 +0800)]
Merge bitcoindevkit/bdk#1171: chore: extract `TestEnv` into separate crate

7c9ba3cfc855dc0845476fe923dac4e47cb5c06a chore(electrum,testenv): move `test_reorg_is_detected_in_electrsd` (志宇)
2462e9041599f395673f9b14f0b618877832f099 chore(esplora): rm custom WASM target spec test dependency (志宇)
04d0ab5a978fbfd45a5c795f9142ff4a9ba29ee3 test(electrum): added scan and reorg tests Added scan and reorg tests to check electrum functionality using `TestEnv`. (Wei Chen)
4edf533b678cb21f4c29ded22692e607ff75e2cd chore: extract `TestEnv` into separate crate `TestEnv` is extracted into its own crate to serve as a framework for testing other block explorer APIs. (Wei Chen)
6e648fd5afa188290b05f8e050ba69fe5f8b80e4 chore: update MSRV dependency for nightly docs (Wei Chen)

Pull request description:

  ### Description

  `TestEnv` is extracted into its own crate with `electrsd` support added so that `TestEnv` can also serve `esplora` and `electrum`.
  The tests in the `esplora` crate have also been updated to use `TestEnv`.

  The `tx_can_become_unconfirmed_after_reorg()` test in `test_electrum` suggests that the electrum issue where a reorged tx would be stuck at confirmed does not exist anymore.

  ### Notes to the reviewers

  The code for `tx_can_become_unconfirmed_after_reorg()` was adapted from the same test in `bitcoind_rpc/test_emitter`. This electrum version of the test requires extra review, as I am uncertain if I used the API efficiently.

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  evanlinjin:
    ACK 7c9ba3cfc855dc0845476fe923dac4e47cb5c06a

Tree-SHA512: 36c6501e477abb7ae68073b6f4776f1f69f8964010ab758aa3677aae96df10f2cb632421872cacd73b37123d6db8a9dbefb5b6416e0dd524b712bf3fc56b7139

20 months agochore(electrum,testenv): move `test_reorg_is_detected_in_electrsd`
志宇 [Sat, 23 Mar 2024 10:28:49 +0000 (18:28 +0800)]
chore(electrum,testenv): move `test_reorg_is_detected_in_electrsd`

20 months agochore(esplora): rm custom WASM target spec test dependency
志宇 [Sat, 23 Mar 2024 09:57:27 +0000 (17:57 +0800)]
chore(esplora): rm custom WASM target spec test dependency

None of the `bdk_esplora` tests can run under WASM anyway since we
depend on `electrsd`.

21 months agotest(electrum): added scan and reorg tests
Wei Chen [Fri, 2 Feb 2024 10:35:24 +0000 (18:35 +0800)]
test(electrum): added scan and reorg tests
Added scan and reorg tests to check electrum functionality using
`TestEnv`.

21 months agochore: extract `TestEnv` into separate crate
Wei Chen [Fri, 2 Feb 2024 10:33:18 +0000 (18:33 +0800)]
chore: extract `TestEnv` into separate crate
`TestEnv` is extracted into its own crate to serve as a framework
for testing other block explorer APIs.

21 months agochore: update MSRV dependency for nightly docs
Wei Chen [Wed, 20 Mar 2024 08:02:05 +0000 (16:02 +0800)]
chore: update MSRV dependency for nightly docs

21 months agoMerge bitcoindevkit/bdk#1378: Update bdk README
志宇 [Fri, 22 Mar 2024 07:05:44 +0000 (15:05 +0800)]
Merge bitcoindevkit/bdk#1378: Update bdk README

06d7dc5c3a890f0a141de4cf6f421fe766d99ec3 doc(bdk): Update bdk README (vmammal)

Pull request description:

  fixes #1044

  ### Notes

  The code snippet is a compile fail because variables `txout` and `outpoint` are not initialized. Any other suggestions are welcome.

  There is still some old commented code in the file that's probably not needed unless we want to provide another example snippet, say for getting new address info.

  * [x] Fix broken links
  * [x] Use a new unused tprv
  * [ ] Try to make persistence example make sense, or maybe just do away with it

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  evanlinjin:
    ACK 06d7dc5c3a890f0a141de4cf6f421fe766d99ec3

Tree-SHA512: 09a671bc6bea574d7a4b42b64718380ee71a0c5d36c6b7ca1dc19a2c567de510b27ccc91fe05e7178bf31c562db66bc64f660415de5bb2f32f369b13c44ad3d2

21 months agoMerge bitcoindevkit/bdk#1310: Remove extra taproot fields when finalizing PSBT
志宇 [Fri, 22 Mar 2024 04:38:42 +0000 (12:38 +0800)]
Merge bitcoindevkit/bdk#1310: Remove extra taproot fields when finalizing PSBT

5840ce473e430de4c4e3698734e9667cc476fee4 fix(bdk): Remove extra taproot fields when finalizing Psbt (vmammal)
8c78a42163dee06b640f46d74255df37dbc53873 test(psbt): Fixup test_psbt_multiple_internalkey_signers (vmammal)

Pull request description:

  We currently allow removing `partial_sigs` from a finalized PSBT, which is relevant to non-taproot inputs, however taproot related PSBT fields were left in place despite the recommendation of BIP371 to remove them once the `final_script_witness` is constructed. This can cause confusion for parsers that encounter extra taproot metadata in an already satisfied input.

  Fix this by introducing a new member to SignOptions `remove_taproot_extras`, which when true will remove extra taproot related data from a PSBT upon successful finalization. This change makes removal of all taproot extras the default but configurable.

  fixes #1243

  ### Notes to the reviewers

  If there's a better or more descriptive name for `remove_taproot_extras`, I'm open to changing it.

  ### Changelog notice

  Fixed an [issue](https://github.com/bitcoindevkit/bdk/issues/1243) finalizing taproot inputs following BIP371

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:

  <!-- * [ ] This pull request breaks the existing API -->
  * [x] I've added tests to reproduce the issue which are now passing
  * [x] I'm linking the issue being fixed by this PR

ACKs for top commit:
  evanlinjin:
    ACK 5840ce473e430de4c4e3698734e9667cc476fee4

Tree-SHA512: 69f022c6f736500590e36880dd2c845321464f89af6a2c67987d1c520f70a298328363cade0f55f270c4e7169e740bd4ada752ec2c75afa02b6a5a851f9030c3

21 months agoMerge bitcoindevkit/bdk#1216: Migrate to bitcoin::FeeRate
志宇 [Fri, 22 Mar 2024 04:34:01 +0000 (12:34 +0800)]
Merge bitcoindevkit/bdk#1216: Migrate to bitcoin::FeeRate

475a77219a6e7649c91b7cfeb44871cee9d0f374 refactor(bdk)!: Remove trait Vbytes (vmammal)
0d64beb040e885d653adb901dc49482f9daafddf chore: organize some imports (vmammal)
89608ddd0fd582d011f7b7ae8bbeb63dee6a3b99 refactor(bdk): display CreateTxError::FeeRateTooLow in sat/vb (vmammal)
09bd86e2d82020d5f4079c5d234888a9eed50489 test(bdk): initialize all feerates from `u64` (vmammal)
004957dc2969171b7a37ce92d2cdb0e8f22b6da5 refactor(bdk)!: drop FeeRate from bdk::types (vmammal)

Pull request description:

  ### Description

  This follows a similar approach to #1141 namely to remove `FeeRate` from `bdk::types` and instead defer to the upstream implementation for all fee rates. The idea is that making the switch allows BDK to benefit from a higher level abstraction, leaving the implementation details largely hidden.

  As noted in #774, we should avoid extraneous conversions that can result in deviations in estimated transaction size and calculated fee amounts, etc. This would happen for example whenever calling a method like `FeeRate::to_sat_per_vb_ceil`. The only exception I would make is if we must return a fee rate error to the user, we might prefer to display it in the more familiar sats/vb, but this would only be useful if the rate can be expressed as a float.

  ### Notes to the reviewers

  `bitcoin::FeeRate` is an integer whose native unit is sats per kilo-weight unit. In order to facilitate the change, a helper method `feerate_unchecked` is added and used only in wallet tests and psbt tests as necessary to convert existing fee rates to the new type. It's "unchecked" in the sense that we're not checking for integer overflow, because it's assumed we're passing a valid fee rate in a unit test.

  Potential follow-ups can include:
  - [x] Constructing a proper `FeeRate` from a `u64` in all unit tests, and thus obviating the need for the helper `feerate_unchecked` going forward.
  - [x] Remove trait `Vbytes`.
  - Consider adding an extra check that the argument to `TxBuilder::drain_to` is within "standard" size limits.
  - Consider refactoring `coin_selection::select_sorted_utxos` to be efficient and readable.

  closes #1136

  ### Changelog notice

  - Removed `FeeRate` type. All fee rates are now rust-bitcoin [`FeeRate`](https://docs.rs/bitcoin/latest/bitcoin/blockdata/fee_rate/struct.FeeRate.html).
  - Removed trait `Vbytes`.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  evanlinjin:
    ACK 475a77219a6e7649c91b7cfeb44871cee9d0f374

Tree-SHA512: 511dab8aa7a65d2b15b160cb4feb96964e8401bb04cda4ef0f0244524bf23a575b3739783a14b90d2dccc984b3f30f5dabfb0a890ffe7c897c2dc23ba301bcaf

21 months agorefactor(bdk)!: Remove trait Vbytes
vmammal [Sat, 2 Mar 2024 14:48:16 +0000 (09:48 -0500)]
refactor(bdk)!: Remove trait Vbytes

The only place this is being used is a unit test that is
easily refactored. For size conversions prefer methods
on e.g. `Weight`.

21 months agochore: organize some imports
vmammal [Thu, 16 Nov 2023 23:45:21 +0000 (18:45 -0500)]
chore: organize some imports

21 months agorefactor(bdk): display CreateTxError::FeeRateTooLow in sat/vb
vmammal [Thu, 16 Nov 2023 23:13:44 +0000 (18:13 -0500)]
refactor(bdk): display CreateTxError::FeeRateTooLow in sat/vb

Also modify a unit test `test_bump_fee_low_fee_rate` to
additionally assert the expected error message

21 months agotest(bdk): initialize all feerates from `u64`
vmammal [Thu, 16 Nov 2023 23:09:20 +0000 (18:09 -0500)]
test(bdk): initialize all feerates from `u64`

This makes the helper `feerate_unchecked` now redundant but
still usable.

21 months agorefactor(bdk)!: drop FeeRate from bdk::types
vmammal [Thu, 16 Nov 2023 23:00:58 +0000 (18:00 -0500)]
refactor(bdk)!: drop FeeRate from bdk::types

Adopt `bitcoin::FeeRate` throughout

21 months agoMerge pull request #1384 from evanlinjin/file_store_clippy_happy
Lloyd Fournier [Fri, 22 Mar 2024 00:48:34 +0000 (11:48 +1100)]
Merge pull request #1384 from evanlinjin/file_store_clippy_happy

Explicitly state that we truncate file for `create_new`

21 months agochore(file_store): explicitly state that we truncate file for `create_new`
志宇 [Thu, 21 Mar 2024 23:41:17 +0000 (07:41 +0800)]
chore(file_store): explicitly state that we truncate file for `create_new`

This makes clippy happy.

21 months agodoc(bdk): Update bdk README
vmammal [Thu, 15 Feb 2024 06:32:09 +0000 (01:32 -0500)]
doc(bdk): Update bdk README

21 months agoMerge bitcoindevkit/bdk#1365: Bump bdk version to 1.0.0-alpha.7 v1.0.0-alpha.7
Steve Myers [Tue, 5 Mar 2024 03:38:40 +0000 (21:38 -0600)]
Merge bitcoindevkit/bdk#1365: Bump bdk version to 1.0.0-alpha.7

fef70d5e8fe1903aa532897e1093b1b972e08055 Bump version to 1.0.0-alpha.7 (Steve Myers)

Pull request description:

  Bump bdk version to 1.0.0-alpha.7

  bdk_chain to 0.11.0
  bdk_bitcoind_rpc to 0.6.0
  bdk_electrum to 0.9.0
  bdk_esplora to 0.9.0
  bdk_file_store to 0.7.0

  fixes #1364

ACKs for top commit:
  danielabrozzoni:
    ACK fef70d5e8fe1903aa532897e1093b1b972e08055

Tree-SHA512: 94ba5cad102d89122897436390d4ababf49a19cf97f4118c0804b3288955dd591b543d4605268dcc1967f34e523a0c4058b06f9cd74c7e8c4394e902abc17022

21 months agoBump version to 1.0.0-alpha.7
Steve Myers [Sat, 2 Mar 2024 17:05:30 +0000 (11:05 -0600)]
Bump version to 1.0.0-alpha.7

bdk_chain to 0.11.0
bdk_bitcoind_rpc to 0.6.0
bdk_electrum to 0.9.0
bdk_esplora to 0.9.0
bdk_file_store to 0.7.0

21 months agoMerge bitcoindevkit/bdk#1349: Fix `KeychainTxOutIndex::lookahead_to_target`
Steve Myers [Sat, 2 Mar 2024 16:38:40 +0000 (10:38 -0600)]
Merge bitcoindevkit/bdk#1349: Fix `KeychainTxOutIndex::lookahead_to_target`

b290b2950221578d73c3194a1accfd080f83631a test(chain): change test case comments to docstring (志宇)
c151d8fd230fb87f27aadb965157f94f01f021a2 fix(chain): `KeychainTxOutIndex::lookahead_to_target` (志宇)

Pull request description:

  ### Description

  This method was not used (so it was untested) and it was not working. This fixes it.

  The old implementation used `.next_store_index` which returned the keychain's last index stored in `.inner` (which include lookahead spks). This is WRONG because `.replenish_lookahead` needs the difference from last revealed.

  ### Changelog notice

  Fix `KeychainTxOutIndex::lookahead_to_target`

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:

  * [x] I've added tests to reproduce the issue which are now passing

ACKs for top commit:
  notmandatory:
    ACK b290b2950221578d73c3194a1accfd080f83631a

Tree-SHA512: af50c6af18b6b57494cfa37f89b0236674fa331091d791e858f67b7d0b3a1e4e11e7422029bd6a2dc1c795914cdf6d592a14b42a62ca7c7c475ba6ed37182539

21 months agofix(bdk): Remove extra taproot fields when finalizing Psbt
vmammal [Wed, 31 Jan 2024 21:18:09 +0000 (16:18 -0500)]
fix(bdk): Remove extra taproot fields when finalizing Psbt

We currently allow removing `partial_sigs` from a finalized Psbt,
which is relevant to non-taproot inputs, however taproot related Psbt
fields were left in place despite the recommendation of BIP371 to remove
them once the `final_script_witness` is constructed. This can cause
confusion for parsers that encounter extra taproot metadata in an
already satisfied input.

Fix this by introducing a new member to SignOptions
`remove_taproot_extras`, which when true will remove extra taproot
related data from a Psbt upon successful finalization. This change
makes removal of all taproot extras the default but configurable.

test(wallet): Add test
`test_taproot_remove_tapfields_after_finalize_sign_option`
that checks various fields have been cleared for taproot
Psbt `Input`s and `Output`s according to BIP371.

21 months agotest(chain): change test case comments to docstring
志宇 [Wed, 28 Feb 2024 08:47:25 +0000 (05:47 -0300)]
test(chain): change test case comments to docstring

21 months agotest(psbt): Fixup test_psbt_multiple_internalkey_signers
vmammal [Sun, 11 Feb 2024 20:32:36 +0000 (15:32 -0500)]
test(psbt): Fixup test_psbt_multiple_internalkey_signers

to verify the signature of the input and ensure the right internal
key is used to sign. This fixes a shortcoming of a previous
version of the test that relied on the result of `finalize_psbt`
but would have erroneously allowed signing with the wrong key.

21 months agoMerge bitcoindevkit/bdk#1344: tx_builder: Relax generic constraints on TxBuilder
Daniela Brozzoni [Thu, 22 Feb 2024 15:32:30 +0000 (16:32 +0100)]
Merge bitcoindevkit/bdk#1344: tx_builder: Relax generic constraints on TxBuilder

2efa299d0486e0b08376a062e86c6ca8e03916da tx_builder: Relax generic constraints on TxBuilder (Steven Roose)

Pull request description:

  Closes https://github.com/bitcoindevkit/bdk/issues/1312

ACKs for top commit:
  danielabrozzoni:
    ACK 2efa299d0486e0b08376a062e86c6ca8e03916da

Tree-SHA512: 6bfe052c22697eb910cf1f3d453e89f4432159fa017b38532d097cdc07b7a7c3b986be658b81e51acdb54cab999345ab463184e80c8eacefc73d77748c018992

21 months agoMerge bitcoindevkit/bdk#1357: ci: Remove jobserver pin
Steve Myers [Thu, 22 Feb 2024 00:42:35 +0000 (18:42 -0600)]
Merge bitcoindevkit/bdk#1357: ci: Remove jobserver pin

2647aff4bc030e3b63287d353fb6293ab2f1442c ci: Remove jobserver pin (Daniela Brozzoni)

Pull request description:

ACKs for top commit:
  evanlinjin:
    ACK 2647aff4bc030e3b63287d353fb6293ab2f1442c

Tree-SHA512: bb3821c44a1d4fb7a84b8e548b9545c74b4ae84feca4d434791c041618dc9a2f03d8c3a64183844fb5b19dfbfa1c19716191e9810d443d6ddc449f171317a20e

22 months agotx_builder: Relax generic constraints on TxBuilder
Steven Roose [Wed, 14 Feb 2024 15:50:00 +0000 (15:50 +0000)]
tx_builder: Relax generic constraints on TxBuilder

22 months agoci: Remove jobserver pin
Daniela Brozzoni [Wed, 21 Feb 2024 12:24:31 +0000 (13:24 +0100)]
ci: Remove jobserver pin

It is not needed anymore. Discovered in #1344

22 months agofix(chain): `KeychainTxOutIndex::lookahead_to_target`
志宇 [Fri, 16 Feb 2024 18:20:44 +0000 (02:20 +0800)]
fix(chain): `KeychainTxOutIndex::lookahead_to_target`

22 months agoMerge bitcoindevkit/bdk#1325: Add `map_anchors` for `TxGraph`
志宇 [Fri, 16 Feb 2024 18:29:39 +0000 (02:29 +0800)]
Merge bitcoindevkit/bdk#1325: Add `map_anchors` for `TxGraph`

5489f905a434ecc06867603c7c421e3e50d993ca feat(chain): add `map_anchors` for `TxGraph` and `ChangeSet` (Antonio Yang)
022d5a21cff6c46fb869f8fd538b4026e531ee57 test(chain) use `Anchor` generic on `init_graph` (Antonio Yang)

Pull request description:

  ### Description
  Fix #1295

  ### Checklists
  #### All Submissions:
  * [X] I've signed all my commits
  * [X] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [X] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [ ] I've added docs for the new feature

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [ ] I've added tests to reproduce the issue which are now passing
  * [ ] I'm linking the issue being fixed by this PR

ACKs for top commit:
  evanlinjin:
    ACK 5489f905a434ecc06867603c7c421e3e50d993ca
  LLFourn:
    ACK 5489f905a434ecc06867603c7c421e3e50d993ca

Tree-SHA512: c8327f2e7035a46208eb32c6da1f9f0bc3e8625168450c5b0b39f695268e42b0b9053b6eb97805b116328195d77af7ca9edb1f12206c50513fbe295dded542e7

22 months agoMerge bitcoindevkit/bdk#1347: Bump bdk version to 1.0.0-alpha.6 v1.0.0-alpha.6
Steve Myers [Thu, 15 Feb 2024 17:20:21 +0000 (11:20 -0600)]
Merge bitcoindevkit/bdk#1347: Bump bdk version to 1.0.0-alpha.6

83798390108ef37443dbe2d6ec0d35a346e69957 Bump version to 1.0.0-alpha.6 (Steve Myers)

Pull request description:

  ### Description

  Fixes #1343

  Bump bdk version to 1.0.0-alpha.6, also bump:

  bdk_chain to 0.10.0
  bdk_bitcoind_rpc to 0.5.0
  bdk_electrum to 0.8.0
  bdk_esplora to 0.8.0
  bdk_file_store to 0.6.0

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  danielabrozzoni:
    utACK 83798390108ef37443dbe2d6ec0d35a346e69957

Tree-SHA512: b16a8f88ab66ed78d6f6402d60acfa79b2371a12580a277f9bb3d3df212fb608a8305b6f5082bb280b9a18e209c70be0db38c893fff2f5c1f6085a99e3819479

22 months agoBump version to 1.0.0-alpha.6
Steve Myers [Thu, 15 Feb 2024 16:23:05 +0000 (10:23 -0600)]
Bump version to 1.0.0-alpha.6

bdk_chain to 0.10.0
bdk_bitcoind_rpc to 0.5.0
bdk_electrum to 0.8.0
bdk_esplora to 0.8.0
bdk_file_store to 0.6.0

22 months agofeat(chain): add `map_anchors` for `TxGraph` and `ChangeSet`
Antonio Yang [Tue, 13 Feb 2024 13:29:12 +0000 (21:29 +0800)]
feat(chain): add `map_anchors` for `TxGraph` and `ChangeSet`

22 months agoMerge bitcoindevkit/bdk#1335: fix(chain): tx_graph::ChangeSet::is_empty
志宇 [Sun, 11 Feb 2024 09:48:42 +0000 (17:48 +0800)]
Merge bitcoindevkit/bdk#1335: fix(chain): tx_graph::ChangeSet::is_empty

13ab5a835d59341e387fbbefec12fe4f48e5f3c8 chore(chain): Improve TxGraph::ChangeSet docs (LLFourn)
dbbd51424284a960a95c3801b02dc1973322725f fix(chain)!: rm duplicate `is_empty` method in tx graph changeset (志宇)
ae00e1ee7b95c622fc3992c0804dd4b4517efc7b fix(chain): tx_graph::ChangeSet::is_empty (LLFourn)

Pull request description:

  🙈

  ### Changelog notice

  - Fix bug in `tx_graph::ChangeSet::is_empty` where is returns true even when it wasn't empty

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [x] I've added tests to reproduce the issue which are now passing

ACKs for top commit:
  LLFourn:
    Self-ACK: 13ab5a835d59341e387fbbefec12fe4f48e5f3c8
  evanlinjin:
    ACK 13ab5a835d59341e387fbbefec12fe4f48e5f3c8

Tree-SHA512: b9f1f17fd2ed0f8e2337a8033e1cbd3e9f15b1ad4b32da3f0eb73a30913d6798e7a08d6b297d93bd08c2e1c388226e97648650ac636846b2c7aa95c3bcefbcfd

22 months agochore(chain): Improve TxGraph::ChangeSet docs
LLFourn [Fri, 9 Feb 2024 22:13:08 +0000 (09:13 +1100)]
chore(chain): Improve TxGraph::ChangeSet docs

22 months agoMerge bitcoindevkit/bdk#1334: Reorder fields in ConfirmationHeightAnchor fields so...
志宇 [Fri, 9 Feb 2024 20:17:13 +0000 (04:17 +0800)]
Merge bitcoindevkit/bdk#1334: Reorder fields in ConfirmationHeightAnchor fields so Ord DWIM

adc95137ac2e52f4d45c4ec778703001c95a362f fix(chain)! Re-order fields in anchors so Ord DWIM (LLFourn)

Pull request description:

  Something that is confirmed more recently should be greater than something that is confirmed earlier regardless of anchor.

ACKs for top commit:
  evanlinjin:
    ACK adc95137ac2e52f4d45c4ec778703001c95a362f

Tree-SHA512: 9a588b64afc7e20b35a9abb8c25b8b82858c0f89886320c0fc91f6c61592fccfa7fbaa3020a393b1d5fd79f71302a388255b69cb3726a38a0f2fdab8bb93769c

22 months agofix(chain)!: rm duplicate `is_empty` method in tx graph changeset
志宇 [Fri, 9 Feb 2024 19:35:48 +0000 (03:35 +0800)]
fix(chain)!: rm duplicate `is_empty` method in tx graph changeset

22 months agofix(chain): tx_graph::ChangeSet::is_empty
LLFourn [Fri, 9 Feb 2024 08:43:26 +0000 (19:43 +1100)]
fix(chain): tx_graph::ChangeSet::is_empty

22 months agofix(chain)! Re-order fields in anchors so Ord DWIM
LLFourn [Fri, 9 Feb 2024 02:48:19 +0000 (13:48 +1100)]
fix(chain)! Re-order fields in anchors so Ord DWIM

22 months agotest(chain) use `Anchor` generic on `init_graph`
Antonio Yang [Thu, 8 Feb 2024 07:45:42 +0000 (15:45 +0800)]
test(chain) use `Anchor` generic on `init_graph`

22 months agoMerge bitcoindevkit/bdk#1308: feat(esplora): include previous `TxOut`s for fee calcul...
Daniela Brozzoni [Mon, 5 Feb 2024 11:44:43 +0000 (12:44 +0100)]
Merge bitcoindevkit/bdk#1308: feat(esplora): include previous `TxOut`s for fee calculation

552f11cb5f66a9366dbc05c801fcae043ebe5b82 feat(esplora): include previous `TxOut`s for fee calculation The previous `TxOut` for transactions received from an external wallet are added as floating `TxOut`s to `TxGraph` to allow for fee calculation. (Wei Chen)

Pull request description:

  ### Description

  Partially implements #1265.

  The previous `TxOut` for transactions received from an external wallet are added as floating `TxOut`s to `TxGraph` to allow for fee calculation.

  ### Notes to the reviewers

  Currently only the `esplora` portion of #1265 has been implemented.
  The `electrum` portion will potentially be done in a new PR, as discussed on the 1/30/24 Lib call.

  ### Checklists

  #### To Do:
  * [ ] Implement `electrum` portion of #1265.

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added tests for the new feature
  * [x] I've added docs for the new feature

ACKs for top commit:
  evanlinjin:
    re-ACK 552f11cb5f66a9366dbc05c801fcae043ebe5b82
  danielabrozzoni:
    ACK 552f11cb5f66a9366dbc05c801fcae043ebe5b82

Tree-SHA512: 752a24ebd0b9ad7952c1b093ecb251473e346c77b860c1a80c73418130189227405a0f0d7652967cf8c7b89994e8c37df96cd52b52b6daff9cc8c88b5194069a

22 months agoMerge bitcoindevkit/bdk#1316: tx_builder: Support setting explicit nSequence for...
Daniela Brozzoni [Mon, 5 Feb 2024 11:36:02 +0000 (12:36 +0100)]
Merge bitcoindevkit/bdk#1316: tx_builder: Support setting explicit nSequence for foreign inputs

9bb39a3a3fcdebeec53a8a771091954c845db7a5 Avoid a wildcard match in tx construction (Steven Roose)
9e098a5b6d0802eb39f3e200605b8576c77030eb tx_builder: Support setting explicit nSequence for foreign inputs (Steven Roose)

Pull request description:

  Fixes https://github.com/bitcoindevkit/bdk/issues/1315.

ACKs for top commit:
  evanlinjin:
    ACK 9bb39a3a3fcdebeec53a8a771091954c845db7a5
  danielabrozzoni:
    utACK 9bb39a3a3fcdebeec53a8a771091954c845db7a5

Tree-SHA512: 42c96a58a762fa8737402ebd0132ce20ce0359c996cee9feeecb0b84e6fb73305be1aec9429fb97ba932486f0b35ac5caed7b43656456c5fb053e55330a12d47

22 months agofeat(esplora): include previous `TxOut`s for fee calculation
Wei Chen [Wed, 31 Jan 2024 15:41:42 +0000 (23:41 +0800)]
feat(esplora): include previous `TxOut`s for fee calculation
The previous `TxOut` for transactions received from an external
wallet are added as floating `TxOut`s to `TxGraph` to allow for
fee calculation.

22 months agoMerge bitcoindevkit/bdk#1319: chore: typos
Steve Myers [Sun, 4 Feb 2024 19:18:47 +0000 (13:18 -0600)]
Merge bitcoindevkit/bdk#1319: chore: typos

8d93fad778565f44cbcc053c7f51fbc27bebf99a chore: typos (Jose Storopoli)

Pull request description:

  More caught on by Nix CI in #1257.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [ ] I've added docs for the new feature

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [ ] I've added tests to reproduce the issue which are now passing
  * [ ] I'm linking the issue being fixed by this PR

ACKs for top commit:
  evanlinjin:
    ACK 8d93fad778565f44cbcc053c7f51fbc27bebf99a
  notmandatory:
    ACK 8d93fad778565f44cbcc053c7f51fbc27bebf99a

Tree-SHA512: 28e0316d457658266b2af1de76b114f87ce7485e386ddecd805dda1266a4e8645612c0fa6bc921c58daa4886558b32b538cccbb1644c96c3bab638dd7c42ee2b

22 months agochore: typos
Jose Storopoli [Sun, 4 Feb 2024 09:13:40 +0000 (06:13 -0300)]
chore: typos

More caught on by Nix CI in #1257.

22 months agoAvoid a wildcard match in tx construction
Steven Roose [Fri, 2 Feb 2024 02:02:27 +0000 (02:02 +0000)]
Avoid a wildcard match in tx construction

22 months agotx_builder: Support setting explicit nSequence for foreign inputs
Steven Roose [Fri, 2 Feb 2024 01:24:39 +0000 (01:24 +0000)]
tx_builder: Support setting explicit nSequence for foreign inputs

22 months agoMerge bitcoindevkit/bdk#1186: Clean up clippy allows
志宇 [Wed, 31 Jan 2024 17:18:16 +0000 (01:18 +0800)]
Merge bitcoindevkit/bdk#1186: Clean up clippy allows

1c15cb2f9169bb08a4128c183eeeca80fff97ab7 ref(example_cli): Add new struct Init (vmammal)
89a7ddca7f6ed8c65ed0124774f3a868d08faf68 ref(esplora): `Box` a large `esplora_client::Error` (vmammal)
097d818d4c7fff12d72ce0ef10ceb9b575c154e1 ref(wallet): `Wallet::preselect_utxos` now accepts a `&TxParams` (vmammal)
f11d663b7efb98dd72fed903ade8c5e7af0b5a3a ref(psbt): refactor body of `get_utxo_for` to address `clippy::manual_map` (vmammal)
4679ca1df7209d2b356fbb8cbd675f07756d1301 ref(example_cli): add typedefs to reduce type complexity (vmammal)
64a90192d9d49c3df22d2b5f489ba20222fd941a refactor: remove old clippy allow attributes (vmammal)

Pull request description:

  closes #1127

  There are several instances in the code where we allow clippy lints that would otherwise be flagged during regular checks. It would be preferable to minimize the number of "clippy allow" attributes either by fixing the affected areas or setting a specific configuration in `clippy.toml`. In cases where we have to allow a particular lint, it should be documented why the lint doesn't apply.

  For context see https://github.com/bitcoindevkit/bdk/issues/1127#issuecomment-1784256647 as well as the commit message details.

  One area I'm unsure of is whether `Box`ing a large error in 4fc2216 is the right approach. Logically it makes sense to avoid allocating a needlessly heavy `Result`, but I haven't studied the implications or tradeoffs of such a change.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  evanlinjin:
    ACK 1c15cb2f9169bb08a4128c183eeeca80fff97ab7

Tree-SHA512: 5fa3796a33678651414e7aad7ef8309b4cbe2a9ab00dce094964b40784edb2f46a44067785d95ea26f4cd88d593420485be94c9b09ac589f632453fbd8c94d85

22 months agoref(example_cli): Add new struct Init
vmammal [Tue, 30 Jan 2024 22:56:51 +0000 (17:56 -0500)]
ref(example_cli): Add new struct Init

for holding the items returned from `example_cli::init`

22 months agoref(esplora): `Box` a large `esplora_client::Error`
vmammal [Sun, 29 Oct 2023 05:02:31 +0000 (01:02 -0400)]
ref(esplora): `Box` a large `esplora_client::Error`

to address `clippy::result_large_err`. Clippy's default large-error-
threshold is 128. `esplora_client::Error` currently has size 272.

22 months agoref(wallet): `Wallet::preselect_utxos` now accepts a `&TxParams`
vmammal [Fri, 10 Nov 2023 15:54:56 +0000 (10:54 -0500)]
ref(wallet): `Wallet::preselect_utxos` now accepts a `&TxParams`

to reduce the number of required function args in order to satisfy
`clippy::too_many_arguments`

22 months agoref(psbt): refactor body of `get_utxo_for` to address `clippy::manual_map`
vmammal [Sun, 29 Oct 2023 03:12:22 +0000 (23:12 -0400)]
ref(psbt): refactor body of `get_utxo_for` to address `clippy::manual_map`

22 months agoref(example_cli): add typedefs to reduce type complexity
vmammal [Sun, 29 Oct 2023 02:53:37 +0000 (22:53 -0400)]
ref(example_cli): add typedefs to reduce type complexity

- Add typedefs to model the result of functions `planned_utxos`
and `init`

- Add new struct `CreateTxChange` to hold any change info
resulting from `create_tx`

These changes help resolve clippy::type_complexity

22 months agorefactor: remove old clippy allow attributes
vmammal [Sun, 29 Oct 2023 02:32:32 +0000 (22:32 -0400)]
refactor: remove old clippy allow attributes

These lints either resolved themselves, or the code has changed such that
they no longer apply, hence they can be removed with no further changes.

`clippy::derivable_impls`
`clippy::needless_collect`
`clippy::almost_swapped`

22 months agoMerge bitcoindevkit/bdk#1307: Bump version to 1.0.0-alpha.5 v1.0.0-alpha.5
Steve Myers [Wed, 31 Jan 2024 16:01:53 +0000 (10:01 -0600)]
Merge bitcoindevkit/bdk#1307: Bump version to 1.0.0-alpha.5

d597f4c761d10966c12ddaf59f4ed0d9ffdac21b Bump version to 1.0.0-alpha.5 (Steve Myers)

Pull request description:

  ### Description

  Bump version to 1.0.0-alpha.5

  bdk_chain to 0.9.0
  bdk_bitcoind_rpc to 0.4.0
  bdk_electrum to 0.7.0
  bdk_esplora to 0.7.0
  bdk_file_store to 0.5.0

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  danielabrozzoni:
    ACK d597f4c761d10966c12ddaf59f4ed0d9ffdac21b

Tree-SHA512: 36ba783083441ddd8d209ede35ff46832fd2532f588ddbff0e4e23fb336aff398f8ca612e2bfd5fa214d0f4c14a4dea9147b34724734cc43b752789765e7a447

22 months agoBump version to 1.0.0-alpha.5
Steve Myers [Wed, 31 Jan 2024 15:23:20 +0000 (09:23 -0600)]
Bump version to 1.0.0-alpha.5

bdk_chain to 0.9.0
bdk_bitcoind_rpc to 0.4.0
bdk_electrum to 0.7.0
bdk_esplora to 0.7.0
bdk_file_store to 0.5.0

22 months agoMerge bitcoindevkit/bdk#1306: Implement `ElectrumExt` for all that implements `Electr...
Steve Myers [Wed, 31 Jan 2024 14:59:05 +0000 (08:59 -0600)]
Merge bitcoindevkit/bdk#1306: Implement `ElectrumExt` for all that implements `ElectrumApi`

ce8c617c9d562a54728c6cafc0562a66bae56b3e feat(electrum): impl `ElectrumExt` for all that impl `ElectrumApi` (志宇)

Pull request description:

  ### Description

  Implement `ElectrumExt` for all that implements `ElectrumApi`.

  I realized this while looking into #1171.

  https://github.com/bitcoindevkit/bdk/blob/2196685cca741a249f4a5b53c7609162469714ba/crates/electrum/tests/test_electrum.rs#L54-L55

  Line 55 here should not be necessary.

  ### Changelog notice

  * Changed to implement `ElectrumExt` for all that implements `ElectrumApi`.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  notmandatory:
    ACK ce8c617c9d562a54728c6cafc0562a66bae56b3e

Tree-SHA512: d95193a9a356a0aa3f467db3b8c7bf2cfdf83afd520f5254721912cfe82355de1198256b90323e51ffdb0bf955ff923a9ceb8b4541d4a5ad2331ff0bf26ab937

22 months agofeat(electrum): impl `ElectrumExt` for all that impl `ElectrumApi`
志宇 [Wed, 31 Jan 2024 14:19:01 +0000 (22:19 +0800)]
feat(electrum): impl `ElectrumExt` for all that impl `ElectrumApi`

22 months agoMerge bitcoindevkit/bdk#1267: Simplify `Esplora::update_local_chain` and add tests
Steve Myers [Wed, 31 Jan 2024 14:32:37 +0000 (08:32 -0600)]
Merge bitcoindevkit/bdk#1267: Simplify `Esplora::update_local_chain` and add tests

c5afbaa95d7bc699981d6fe7f9964a41b7587d5c ci: update zstd-sys version to work with MSRV 1.63 (Steve Myers)
929b5ddb0c2e0dc7c346c08888201ac54efab84d refactor(esplora): better variable naming and docs (志宇)
216648bcfd2c622890bf7f50fb2eaa4396c42ed1 chore(esplora): Clarify consistency guarantees (LLFourn)
63fa710319f231f7f28d92cb49b0399f3250c9da fix(esplora): reuse returned height instead of zipping (志宇)
6f824cf325c6c882b00742d814be1d72602f05a6 test(esplora): introduce test cases for `update_local_chain` (志宇)
f05e8502e69a051af9869be6ba5ad9a376b25fc2 feat(esplora): greatly simplify `update_local_chain` (志宇)

Pull request description:

  Fixes #1199

  ### Description

  After a second look at the `update_local_chain` implementations, it was clear that they were over complicated. This PR simplifies the `EsploraExt::update_local_chain` method(s) of the `bdk_esplora` crate and adds a whole bunch of tests.

  ### Notes to the reviewers

  The description of #1199 is very brief, however @danielabrozzoni mentioned about potentially-problematic logic with `ASSUME_FINAL_DEPTH`. The logic was indeed convoluted and it did not need to be that way. This PR removes the need for `ASSUME_FINAL_DEPTH`.

  ### Changelog notice

  Fixed
  - Simplified `EsploraExt::update_local_chain` logic.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:

  ~* [ ] This pull request breaks the existing API~
  ~* [ ] I've added tests to reproduce the issue which are now passing~ (there are now lots of tests though)
  * [x] I'm linking the issue being fixed by this PR

ACKs for top commit:
  evanlinjin:
    ACK c5afbaa95d7bc699981d6fe7f9964a41b7587d5c
  notmandatory:
    utACK c5afbaa95d7bc699981d6fe7f9964a41b7587d5c

Tree-SHA512: f588493a4643f0f68d3181f27adf91793d4e336be6e853a26289e0916ed83169e1067260b75e627f190842f691ec095e668c0b799ca80e7da2849dd28de32754

22 months agoci: update zstd-sys version to work with MSRV 1.63
Steve Myers [Wed, 31 Jan 2024 14:15:37 +0000 (08:15 -0600)]
ci: update zstd-sys version to work with MSRV 1.63

22 months agorefactor(esplora): better variable naming and docs
志宇 [Wed, 31 Jan 2024 07:55:44 +0000 (15:55 +0800)]
refactor(esplora): better variable naming and docs

22 months agoMerge bitcoindevkit/bdk#1279: Filter duplicate coins before coin selection
志宇 [Wed, 31 Jan 2024 08:00:04 +0000 (16:00 +0800)]
Merge bitcoindevkit/bdk#1279: Filter duplicate coins before coin selection

5299db34cb9117ad1b66a6afcb51f6ca7e1f0d95 fix(wallet): filter duplicates before coin selection (志宇)
d9501187ef3c4436b7baedb23a4d4f6b1f46a03d test(wallet): fix tests helpers to generate unique utxos (志宇)

Pull request description:

  Fixes #1240

  ### Description

  We now filter out duplicate coins before calling `CoinSelectionAlgorithm::coin_select`. If a UTXO exists in both `required_utxos` and `optional_utxos`, only the copy in `required_utxos` will be kept.

  Test helper methods are also updated to not create duplicate UTXOs.

  ### Changelog notice

  Fixed

  * Filter out duplicate UTXOs before calling `CoinSelectionAlgorithm::coin_select`. If a UTXO exists in both `required_utxos` and `optional_utxos`, only the copy in `required_utxos` will be kept.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:

  ~* [ ] This pull request breaks the existing API~
  * [x] I've added tests to reproduce the issue which are now passing
  * [x] I'm linking the issue being fixed by this PR

ACKs for top commit:
  danielabrozzoni:
    utACK 5299db34cb9117ad1b66a6afcb51f6ca7e1f0d95

Tree-SHA512: 9cb5517b7f74f89c06172efc344766b16b3216a25b1ebdd6eb84767a9e103124cead9eb0a7f3b5feb562fbb925517a9bf0404399de74b4e898982a5b3795aa04

22 months agochore(esplora): Clarify consistency guarantees
LLFourn [Tue, 30 Jan 2024 02:57:06 +0000 (13:57 +1100)]
chore(esplora): Clarify consistency guarantees

22 months agofix(wallet): filter duplicates before coin selection
志宇 [Tue, 16 Jan 2024 07:51:15 +0000 (15:51 +0800)]
fix(wallet): filter duplicates before coin selection

22 months agoMerge bitcoindevkit/bdk#1287: doc(store): update doc for `Store::aggregate_changesets`
志宇 [Mon, 29 Jan 2024 12:54:20 +0000 (20:54 +0800)]
Merge bitcoindevkit/bdk#1287: doc(store): update doc for `Store::aggregate_changesets`

3829fc18c7f2d16d2c72852bde4b4b70bff8e370 doc(store): update doc for `Store::aggregate_changesets` (vmammal)

Pull request description:

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  evanlinjin:
    ACK 3829fc18c7f2d16d2c72852bde4b4b70bff8e370

Tree-SHA512: 55e3dea6db4e023edcd6f12e3c2e8f63c79654b178e01e2fb8b66f3a66399aabedb1d159cd015b78bc2166be6e640e0ed684e3571f2c4f2f6a53fa68d2ef9849

22 months agofix(esplora): reuse returned height instead of zipping
志宇 [Mon, 29 Jan 2024 09:43:41 +0000 (18:43 +0900)]
fix(esplora): reuse returned height instead of zipping

22 months agoMerge bitcoindevkit/bdk#1290: doc(example_cli): add missing cli docs
志宇 [Mon, 29 Jan 2024 09:06:50 +0000 (18:06 +0900)]
Merge bitcoindevkit/bdk#1290: doc(example_cli): add missing cli docs

c4d5f2ccd8435b9c424eec5ba35ba44a3383b04d doc(example_cli): add missing cli docs (vmammal)

Pull request description:

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  evanlinjin:
    ACK c4d5f2ccd8435b9c424eec5ba35ba44a3383b04d

Tree-SHA512: 43684abbb32570f07e0dc05ed07062bc7969cbe7c4fefe8ae7ebe41ac28aedfbba76ffc801bc4ddb3bf08a940ca81c128376dc3f6c76a04f1391e43c18e0d50b

22 months agoMerge bitcoindevkit/bdk#1299: fix(file_store): rm lifetime from `FileError`
志宇 [Mon, 29 Jan 2024 08:52:00 +0000 (17:52 +0900)]
Merge bitcoindevkit/bdk#1299: fix(file_store): rm lifetime from `FileError`

5611c9e42adb4106f48039e19ab0797b266c7fff fix(file_store): rm lifetime from `FileError` (志宇)

Pull request description:

  ### Description

  The lifetime on the error needed to be the same as the input magic bytes which was annoying.

  ### Changelog notice

  Fixed
  * Remove `bdk_file_store::FileError` lifetime.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  LLFourn:
    ACK 5611c9e42adb4106f48039e19ab0797b266c7fff

Tree-SHA512: 0eca5128c71c9adb10a712d169a2170b8cbb91678f93986957e86b26dbfed3ab19217a136b57328249a13a51cc06e6c424d58683d74a0fa3d29c22af04a95591

22 months agoMerge bitcoindevkit/bdk#1301: Fix `ConfirmationTime` conversion from `ChainPosition`
志宇 [Mon, 29 Jan 2024 08:51:00 +0000 (17:51 +0900)]
Merge bitcoindevkit/bdk#1301: Fix `ConfirmationTime` conversion from `ChainPosition`

e687c27096e1c8f36c3a129dc6d92af9c5d05a30 fix(chain): convert to `ConfirmationTime` fix (志宇)

Pull request description:

  ### Description

  We forgot to include the `last_seen` when converting from `ChainPosition` to `ConfirmationTime`.

  ### Notes to the reviewers

  No brainer.

  ### Changelog notice

  * Fix `ConfirmationTime` conversion from `ChainPosition` to include the `last_seen`.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  LLFourn:
    ACK e687c27096e1c8f36c3a129dc6d92af9c5d05a30

Tree-SHA512: 182f804309c7ea7f2a42911bc00d836ef48a8617c156b2275d6908b07f619b2466039f54728dd3ca2552f4cd11528a8733618f4ce6a4c88d7e88a05a3d82ffaf

22 months agoMerge pull request #1296 from yukibtc/change-default-lookahead
Lloyd Fournier [Mon, 29 Jan 2024 08:19:49 +0000 (19:19 +1100)]
Merge pull request #1296 from yukibtc/change-default-lookahead

chain: set `DEFAULT_LOOKAHEAD` to 25

22 months agofix(chain): convert to `ConfirmationTime` fix
志宇 [Mon, 29 Jan 2024 08:14:23 +0000 (17:14 +0900)]
fix(chain): convert to `ConfirmationTime` fix

We forgot to include the `last_seen` when converting from
`ChainPosition` to `ConfirmationTime`.

22 months agofix(file_store): rm lifetime from `FileError`
志宇 [Thu, 25 Jan 2024 15:39:59 +0000 (00:39 +0900)]
fix(file_store): rm lifetime from `FileError`

The lifetime on the error needed to be the same as the input magic bytes
which was annoying.

22 months agoMerge bitcoindevkit/bdk#1270: Improve performance of `bdk_file_store::EntryIter`
志宇 [Thu, 25 Jan 2024 14:49:51 +0000 (23:49 +0900)]
Merge bitcoindevkit/bdk#1270: Improve performance of `bdk_file_store::EntryIter`

51bd01b3dd3d68c1628d74be9dc6d0f1cf1f15fe fix(file_store): recover file offset after read (志宇)
66dc34e75ab1ec2ae533bd540327721f6226eca1 refactor(file_store): Use BufReader but simplify (LLFourn)
c8717646700bdac0f1e13ec499481bd1fee30ffd test(file_store): `last_write_is_short` (志宇)
a3aa8b6682a3a13958fd5fbadc4074a1907a78db feat(file_store)!: optimize `EntryIter` by reducing syscalls (志宇)

Pull request description:

  ### Description

  `EntryIter` performance is improved by reducing syscalls. The underlying file reader is wrapped with `BufReader` (to reduce calls to `read` and `seek`).

  Two new tests are introduced. One ensures correct behavior when the last changeset write is too short. The other ensures the next write position is correct after a short read.

  ### Notes to the reviewers

  This is extracted from #1172 as suggested by https://github.com/bitcoindevkit/bdk/pull/1172#pullrequestreview-1817465627.

  ### Changelog notice

  Changed
  * `EntryIter` performance is improved by reducing syscalls.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added tests for the new feature
  * [x] I've added docs for the new feature

ACKs for top commit:
  LLFourn:
    ACK 51bd01b3dd3d68c1628d74be9dc6d0f1cf1f15fe

Tree-SHA512: 9c25f9f2032cb2d551f3fe4ac62b856ceeb69a388f037b34674af366c55629a2eaa2b90b1ae4fbd425415ea8d02f44493a6c643b4b1a57f4507e87aa7ade3736

22 months agoMerge bitcoindevkit/bdk#1294: Expose `SpkIterator::new_with_range`
志宇 [Thu, 25 Jan 2024 11:56:25 +0000 (20:56 +0900)]
Merge bitcoindevkit/bdk#1294: Expose `SpkIterator::new_with_range`

8305e648494cbdd1f6438904ec367f8442fba606 feat(chain): expose `SpkIterator::new_with_range` (志宇)

Pull request description:

  ### Description

  This method is useful, I'm not sure why it is not public.

  I've also updated the docs and tests.

  ### Changelog notice

  Added
  * Expose `SpkIterator::new_with_range`

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added tests for the new feature
  * [x] I've added docs for the new feature

ACKs for top commit:
  danielabrozzoni:
    utACK 8305e648494cbdd1f6438904ec367f8442fba606
  LLFourn:
    ACK 8305e648494cbdd1f6438904ec367f8442fba606

Tree-SHA512: 26389bf65bea74742ebb4d170f3d21aeb02e5be1b3fd20ef16eb318393145809d2b21b96767ebb42acfd8dd789a82bb2d7b29ded24249dabf06bd1e6d23cf0cf

22 months agofix(file_store): recover file offset after read
志宇 [Tue, 23 Jan 2024 04:32:13 +0000 (12:32 +0800)]
fix(file_store): recover file offset after read

Because we use wrap the file with `BufReader` with the `EntryIter`, we
need to sync the `BufReader`'s position with the file's offset when we
drop the `EntryIter`. Therefore we have a custom drop impl for
`EntryIter`.

22 months agochain: set `DEFAULT_LOOKAHEAD` to 25
Yuki Kishimoto [Tue, 23 Jan 2024 08:44:38 +0000 (09:44 +0100)]
chain: set `DEFAULT_LOOKAHEAD` to 25

22 months agofeat(chain): expose `SpkIterator::new_with_range`
志宇 [Mon, 22 Jan 2024 06:21:20 +0000 (14:21 +0800)]
feat(chain): expose `SpkIterator::new_with_range`

Also update docs and add tests

22 months agorefactor(file_store): Use BufReader but simplify
LLFourn [Mon, 22 Jan 2024 02:48:48 +0000 (13:48 +1100)]
refactor(file_store): Use BufReader but simplify

22 months agoMerge bitcoindevkit/bdk#1253: Remove deprecated checksum routines
Daniela Brozzoni [Mon, 22 Jan 2024 21:24:25 +0000 (22:24 +0100)]
Merge bitcoindevkit/bdk#1253: Remove deprecated checksum routines

ed91a4bdb49276057eb7458e1a94653553be24e7 Consolidate `calc_checksum_bytes_internal` routine (Sebastian Falbesoner)
179cfeff51cefda80c16fa4558ba039143a2ad2c Remove deprecated `get_checksum{,_bytes}` routines (Sebastian Falbesoner)

Pull request description:

  ### Description

  This PR removes the routines `get_checksum` and `get_checksum_bytes` (in the bdk crate, descriptor/checksum.rs), which have been deprecated in 0.24.0. Consequently, the routine `calc_checksum_bytes_internal` is consolidated into `calc_checksum_bytes`, as the boolean parameter `exclude_hash` is not needed anymore. See also the two TODOs in the touched file.

  ### Notes to the reviewers

  In the second commit, the signature of the function `calc_checksum_bytes` slightly changes, as the `desc` parameter now is declared as `mut`, in order to change the local variable within the function. My rust experience is rather limited, so I'm not sure if this is a problem for users. IIUC, this is comparable to changing a pass-by-value parameter in C++ from `const std::string desc` to `std::string desc`, which is relevant only for the function implementation, but doesn't change the interface.

  ### Changelog notice

  - Remove deprecated `get_checksum` and `get_checksum_bytes` routines

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  danielabrozzoni:
    ACK ed91a4bdb49276057eb7458e1a94653553be24e7

Tree-SHA512: a29ead57d0369b67e7e79734d7ddc26f42e7ee78b3a6a336cbf9dfa5579f55e7ddbc20b1662d4bedddd7b40a49511dc21c2652911f56d84c9663099b383e1084

22 months agodoc(example_cli): add missing cli docs
vmammal [Wed, 17 Jan 2024 18:58:40 +0000 (13:58 -0500)]
doc(example_cli): add missing cli docs

22 months agoMerge bitcoindevkit/bdk#1277: fix(readme): update examples
Daniela Brozzoni [Mon, 22 Jan 2024 11:27:56 +0000 (12:27 +0100)]
Merge bitcoindevkit/bdk#1277: fix(readme): update examples

914db84824edf25418ab0b7b2df7bca84605d64d fix(readme): update examples (Jose Storopoli)

Pull request description:

  ### Description

  Some janitor cleaning in the README to update the `example-crates/`

  ### Notes to the reviewers

  None.

  ### Changelog notice

  - fix(readme): update example crates

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [ ] I've added docs for the new feature

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [ ] I've added tests to reproduce the issue which are now passing
  * [ ] I'm linking the issue being fixed by this PR

ACKs for top commit:
  danielabrozzoni:
    ACK 914db84824edf25418ab0b7b2df7bca84605d64d

Tree-SHA512: 9376e7ac816ebc4b0bd9652c2e357486e39c55f6542ef650087962b7a864655f7f70a6305b315363e3ed750ce4cea1a328b6a413c340aa94b693b130da2d36b5