---
# System prepended metadata

title: Meeting Minutes 11 (`bdk_chain` Redesign)
tags: [Meeting, BDK Core]

---

# Meeting Minutes 11 (`bdk_chain` Redesign)

###### tags: `BDK Core` `Meeting`

:::info
- **Location:** Online
- **Date:** 21st March 2023, 23:00 (UTC)
- **Agenda:**
    - [Evan's `bdk_chain` Redesign Analysis and Proposal](/q3CjGJ6eTmex6Pz_wEhmZA)
- **Participants:**
    - @notmandatory
    - @danielabrozzoni
    - @LLFourn
    - @evanlinjin 
- **Reference:**
    - [Issue #895](https://github.com/bitcoindevkit/bdk/issues/895)
    - [Evan's `bdk_chain` Redesign Analysis and Proposal](/q3CjGJ6eTmex6Pz_wEhmZA)
:::

**Decisions:**

* Yes, we should go forward with `#895`.

**Questions:**

* Does nakamoto allow us to get height from blockhash?
* Can the new sync flow of the BDK Chain redesign allow us to enforce "Order" when syncing LDK?
    * Sort `Confirm::get_relevant_txids` -> Sort blockhashes in order and ask oracle if they are still in chain?
    * If not, unconfirm txs that are reorged out
    * TODO: Evan finish this.

**What else needs to be worked on:**

* Async examples: Syncing and getting balance at the same time. Lets brainstorm on this. Make a placeholder issue!
* Improving `bdk::Wallet` API; addresses, multi-descriptor? Or whether `Wallet` is even still necessary? For multi-descriptor, is descriptor trusted/non-trusted?
* Descriptor templates (separate crate).
* MSRV!!! CI, make sure certain subsets compile with rust v1.48. Set different `.toml`s for different MSRVs - does this work with cargo workspaces? CI, test compile with `no-std`.
* Expose `TxGraph` from `Wallet`. The cargo file need to be named `cargo.toml`, so can we put it in multiple directories?
* Kill `TransactionDetails`, get details of txs via methods from `Wallet` instead. Ensure rich data we have from `bdk_chain` can be observed from `Wallet`.
* Should we force wallet to use `LocalChainOracle` (model the chain locally?). Should we force wallet to use a specific chain source? If wallet is opinionated to use `LocalChainOracle`, user does not need to worry about different chain-specific behaviour.
* Always enable `no-std` (it means extra dependencies always), but should be fine. Or... we can document for people in `no-std` environments the features they need to enable.
* Remove `bdk::Error` (split it out, or remove it). This should not be a giant enum. Have error types for specific errors.

**Other thoughts:**

BDK 1.0 is not `bdk_chain` 1.0, the `bdk_chain` API can be considered "unstable" as in it may be changed around. We just need to guarantee that `bdk::Wallet`'s API is stable for BDK 1.0.