# 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.