Meeting Minutes 2
===
###### tags: `BDK Core` `Meeting`
:::info
- **Location:** Online
- **Date:** Oct 7, 2022 09:00 AM (UTC)
- **Agenda**
- Plan for the miniscript planning module.
- Standup.
- Did Alekos have time to look into `BnbIter` improvements.
- **Participants:**
- Evan (@evanlinjin)
- Alekos (@afilini)
- Daniela (@danielabrozzoni)
- Llyod (@LLFourn)
- **Reference:**
- [Last meeting (Wednesday)](https://hackmd.io/@evanlinjin/bdk_minutes_20221005)
:::
:timer_clock: Minutes
--
**Planning Module**
- How do you satisfy a descriptor?
- A plan means one specific way to satisfy.
- With a plan, you can figure out weight of satisfaction.
- With a plan, you can figure out the "best way" to complete a psbt.
- Use it as a satisfier? (like a signer?).
**How to get a plan?**
- (descriptor + assets) -> plan
- Otherwise, we can choose a specific branch.
- Assets: keys, values and constraints.
- Constraint ideas:
- "at most": I am willing to wait up to 100 blocks
- "at least": I should wait at least 100 blocks
- Alekos suggests two APIs:
- One for `(descriptor + assets) -> plan`
- One for `(descriptor + branch + assets) -> plan`
- Lloyd suggests:
- At each disjunction, give the user two plans (sub plans), what could be used. Witness template items. What things on lefthand side, what things on righthand side. Make a decision here. There will be no traversial for the user.
- So each disjunction, we call a callback for the above.
- Alekos' counter argument:
- Not always a binary choice. We could still do something similar, but would this make it too low level?
- Leave the "at least" and "at most" in would be simpler?
- Use it as a satisfier?
- I have these sigs so far, and the plan will say, this is what is missing.
- Generic marker to say whether plan is complete or non-complete.
- ~~The current satisfier fn... You can implement the same logic with a plan? We can actually legasize "satisfier", or use "plan" as a low level module for "satisfier".~~ (This seems wacky, this is awkward actually).
- We can think about this later.
- What is the actual API of "assets"?
- No trait for Assets structure (container for keys, preimages).
- Trait to fill up the assets? Like `extend` method, turn anything into an iterator?
- PSBT -> Assets, merge with other assets.
- Lloyd has `keys -> can derive?`. This cannot be a boolean. "This asset could derive this thing". This should return a derivation path like a hint. "How do you get the actual key from the asset key".
- Having individual keys is a mistake because if we have a hint, we can do it.
- Looking through descriptor branch, compare it with an asset, output a derivation path of how to actually derive from the asset.
- Alekos moved away from this. It is nice to return a vector of what is missing?
- Incomplete -> The hashes that do not have preimages yet. The keys that are not signed for. Plan will remember the "hint/advice" for each asset key.
- Could we make a plan from a string descriptor?
- Partial API? Can look at weights of things.
**BnbIter:**
- Alekos abandoned it?
- So you can have "default strategy" and "default scorer".
- Lloyd will handle it.
- Score can decide branching?
:closed_book: Tasks
--
- Alekos and Daniela will continue with miniscript plan.
- Evan will work with Lloyd early on in the week together to "kick start" Evan on sparse chain. Then Lloyd will look into how to refine coin selector and bnb.