:::info
- **PR:** https://github.com/bitcoindevkit/bdk/pull/1034
- **Host:** @evanlinjin
- **Date:** August 10th, 2023 13:00 UTC
- **Location:** [BDK Discord @ #review-club-meeting](https://discord.com/channels/753336465005608961/1118461443235381288)
:::
### Notes
- [PR#1034](https://github.com/bitcoindevkit/bdk/pull/1034) replaces [PR#1002](https://github.com/bitcoindevkit/bdk/pull/1002) (we had a [review club for #1002](https://hackmd.io/@bdk/review_1002)).
- We rewrote `EsploraExt` and `EsploraAsyncExt` (again). We can use the confirmation block hash (as provided by the Esplora API) as an anchor. This simplifies our logic as we won't need any "reorg-detection logic" for creating a `TxGraph` update. `EsploraExt` now creates updates for `LocalChain` and `TxGraph` separately.
### Questions
- What are the benefits of having the `LocalChain` checkpoints stored as a reference-counted linked-list?
- What is the purpose of the internal [`CPInner`](https://github.com/bitcoindevkit/bdk/blob/feafaaca31a0a40afc03ce98591d151c48c74fa2/crates/chain/src/local_chain.rs#L27-L34) structure?
- We introduced a new [`local_chain::Update`](https://github.com/bitcoindevkit/bdk/blob/feafaaca31a0a40afc03ce98591d151c48c74fa2/crates/chain/src/local_chain.rs#L121-L144) structure which contains the update chain's `tip` as will as a flag `introduce_older_blocks`. Why was this introduced? What is the purpose of the `introduce_older_blocks` flag? How should the flag be set?
- What is the purpose of [`TxGraph::missing_heights`](https://github.com/evanlinjin/bdk/blob/b206a985cffaa9b614841219371faa53ba23dfc3/crates/chain/src/tx_graph.rs#L601-L662)? Where should it be used? (Hint: look at `EsploraExt`).