# SwiftSync -- Speeding up IBD with pre-generated hints (PoC)

**URL:** <https://delvingbitcoin.org/t/swiftsync-speeding-up-ibd-with-pre-generated-hints-poc/1562>\
**Category:** Implementation\
**Created:** [April 2, 2025, 5:21pm UTC](https://delvingbitcoin.org/t/swiftsync-speeding-up-ibd-with-pre-generated-hints-poc/1562 "2025-04-02T17:21:03Z")\
**Posts on this page:** 1\
**Showing post:** 18

<div class="post-metadata">

**Author:** ![rustaceanrob](https://delvingbitcoin.org/user_avatar/delvingbitcoin.org/rustaceanrob/32/443_2.png) [@rustaceanrob](https://delvingbitcoin.org/u/rustaceanrob)\
**Post date:** [September 8, 2025, 3:08pm UTC](https://delvingbitcoin.org/t/swiftsync-speeding-up-ibd-with-pre-generated-hints-poc/1562/18 "2025-09-08T15:08:15Z")

</div>

I am working on a Rust-based binary that performs SwiftSync [here](https://github.com/2140-dev/swiftsync/tree/master/node). We made a couple of patches to the `libbitcoinkernel` library to do this. From the client perspective, `ProcessNewBlockHeaders` to pre-sync block headers and manage the chain state. To build the hintfile, I also require `HaveCoin` on the `ChainStateManager`.

The IBD binary works as follows: 1. read a hintfile into memory and parse the agreed upon stop-hash 2. query DNS for reachable nodes 3. connect to a peer and sync block headers to that stop hash 4. spawn `N` threads to continually request batches of blocks 5. update an accumulator if the output is not contained in the UTXO set (given by the hint file) 6. return true/false if the accumulator state is zero once all blocks have been downloaded.

The times to sync have been promising when testing on my computer(s). I encourage people to try it out and give feedback!

Of note, I am working on a patch to divide block hashes into a “work-stealing” style, which should improve sync times in the coming days.

---

_[View the full topic](https://delvingbitcoin.org/t/swiftsync-speeding-up-ibd-with-pre-generated-hints-poc/1562)._
