Meeting Minutes 1 === ###### tags: `BDK Core` `Meeting` :::info - **Location:** Online - **Date:** Oct 5, 2022 10:00 am (UTC) - **Agenda** - Coin Selection chit-chat - How the coin selection is currently structured - How it could be better - How the bdk_core coin selection is structured - How to integrate the bdk_core coin selection in bdk - Improving TxBuilder - Segregating the coin selection in a different crate - **Participants:** - Alekos @afilini - Evan @evanlinjin - Daniela @danielabrozzoni - Cesar @csralvall ::: :timer_clock: Minutes -- - Thank you @daniela for signing up to HackMD. - Cesar provided an overview of how coin selection currently works in BDK and pointed out various "problems" with CS in BDK: - Database reference (not needed) - Required UTXOs (always included). Why? - We looked at how CS works in `bdk_core`: - `CoinSelector` - Add/remove selected utxos - `finish()` checks whether our selection has satisfied all constraints. - `CoinSelectorOpt` - The constraints/target of CS. - `WeightedValue` - Struct that holds UTXOs that need to be spent together, but they don't have to have the same spk (different from the Bitcoin Core OutputGroup) - BranchAndBound coin selection - `BranchStrategy`: how we continue from the node we're looking at. - Optimize for different things: either waste, or maybe some other scoring method (privacy?) - We need to use the waste metric for comparing the algorithm results as well :rocket: - How can we decouple tx building steps in BDK and integrate `bdk_core`? - Look at `Conditions` (in BDK) - Timelocks - Version (Add version)? - Add to "candidate UTXO" structure - Plan + Assets (in `miniscript`): Which signers are available? Which way is the best way to spend? Satisfaction weight? How long am I willing to wait for confirmation? (This can be before coin control, or the parameters should be provided to "coin control"). - "Fallback Algorithm" is currently hardcoded in BDK. A way to compose algorithm. We can clone coin selector and apply different. - ![](https://i.imgur.com/mqSxpFy.jpg) :closed_book: Tasks -- - Cesar will look into how we can make `bdk_core::coin_select::Select` and `bdk_core::coin_select::ExcessStrategy` more generic. - Alekos will look into how we can make `BnbIter` better. - Add meeting notes for Friday meeting. (0900 UTC)