From 950944276506619d9e4ef8f0f2b47f11741b8deb Mon Sep 17 00:00:00 2001 From: rustaceanrob Date: Wed, 3 Sep 2025 14:12:31 +0100 Subject: [PATCH] Add a design document --- doc/ROADMAP.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 doc/ROADMAP.md diff --git a/doc/ROADMAP.md b/doc/ROADMAP.md new file mode 100644 index 0000000..5dc0fd4 --- /dev/null +++ b/doc/ROADMAP.md @@ -0,0 +1,31 @@ +# Phase One + +First step is to make something with some nice "shock-value", benchmarks, etc. With no changes to the p2p layer, only the assume-valid version of SwiftSync is possible. This restricts the feature set to: + +- [x] Use kernel to download the block header chain to the assume-valid height +- [x] Build a hintfile that clients can parse +- [x] Use a hintfile to determine if one should update an accumulator or add a UTXO +- [x] Download blocks in parallel +- [ ] Add coins to Bitcoin Core (kernel) +- [ ] Start `bitcoind` in pruned mode + +To complete this we need(ed) from kernel: +- [x] Process new block headers +- [x] `HaveCoin` to generate the hintfile +- [ ] `AddCoin` to bypass `ProcessBlock` + +# Phase Two + +Next, some changes are required to move beyond assume-valid. + +Patches to Bitcoin Core: +- [ ] Send undo-data over the p2p layer for parallel validation (and batch validation) +- [ ] Create a hintfile from Bitcoin Core + +Additions to SwiftSync: +- [ ] Validate blocks +- [ ] Write blocks to kernel + +Additions to kernel: +- [ ] Write blocks without `ProcessBlock` +