-
Notifications
You must be signed in to change notification settings - Fork 322
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge #1269: Revamp
KeychainTxOutIndex
API to be safer
71fff16 feat(chain): add txout methods to `KeychainTxOutIndex` (志宇) 83e7b7e docs(chain): improve `KeychainTxOutIndex` docs (志宇) 9294e30 docs(wallet): improve docs for unbounded spk iterator methods (志宇) b74c2e2 fix(wallet): use efficient peek address logic (志宇) 81aeaba feat(chain): add `SpkIterator::descriptor` method (志宇) c7b47af refactor(chain)!: revamp `KeychainTxOutIndex` API (志宇) 705690e feat(chain): make output of `SpkTxOutIndex::unused_spks` cloneable (志宇) Pull request description: Closes #1268 ### Description Previously `SpkTxOutIndex` methods can be called from `KeychainTxOutIndex` due to the `DeRef` implementation. However, the internal `SpkTxOut` will also contain lookahead spks resulting in an error-prone API. `SpkTxOutIndex` methods are now not directly callable from `KeychainTxOutIndex`. Methods of `KeychainTxOutIndex` are renamed for clarity. I.e. methods that return an unbounded spk iter are prefixed with `unbounded`. In addition to this, I also optimized the peek-address logic of `bdk::Wallet` using the optimized `<SpkIterator as Iterator>::nth` implementation. ### Notes to the reviewers This is mostly refactoring, but can also be considered a bug-fix (as the API before was very problematic). ### Changelog notice Changed * Wallet's peek-address logic is optimized by making use of `<SpkIterator as Iterator>::nth`. * `KeychainTxOutIndex` API is refactored to better differentiate between methods that return unbounded vs stored spks. * `KeychainTxOutIndex` no longer directly exposes `SpkTxOutIndex` methods via `DeRef`. This was problematic because `SpkTxOutIndex` also contains lookahead spks which we want to hide. Added * `SpkIterator::descriptor` method which gets a reference to the internal descriptor. ### 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 #### Bugfixes: * [x] 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: danielabrozzoni: ACK 71fff16 Tree-SHA512: f29c7d2311d0e81c4fe29b8f57c219c24db958194fad5de82bb6d42d562d37fd5d152be7ee03a3f00843be5760569ad29b848250267a548d7d15320fd5292a8f
- Loading branch information
Showing
12 changed files
with
345 additions
and
172 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.