IBD Performance Milestones in Bitcoin Core ReleasesIBD Performance Milestones in Bitcoin Core Releases
Bitcoin Core 0.3.2: Checkpoints: Hardcoded block hashes at specific heights to speed up synchronization by skipping validation of blocks before the checkpoint.Bitcoin Core 0.5.0: Skip Verification of Checkpointed Signatures: Further optimization by skipping signature verification for blocks before checkpoints.Bitcoin Core 0.8.0: LevelDB & Parallel Signature Validation: Replaced BerkeleyDB with LevelDB for better performance and implemented parallel signature validation.Bitcoin Core 0.10.0: Headers-First Sync: Downloads and validates lightweight block headers (80 bytes each) before full blocks, allowing parallel block downloads and protection against fake chains.Bitcoin Core 0.12.0: Switch to libsecp256k1: Replaced OpenSSL with custom-built libsecp256k1 library for signature verification, providing 5-7x speedup in this CPU-intensive operation.Bitcoin Core 0.14.0: AssumeValid: Allows nodes to skip signature verification for blocks before a trusted block hash, reducing IBD time by ~75% compared to previous versions.Bitcoin Core 0.26.0: AssumeUTXO: Will allow nodes to bootstrap from a trusted UTXO set snapshot, enabling immediate transaction verification without waiting for full chain download.UTREEXO (Future): Will optimize Bitcoin's storage by using cryptographic accumulators (Merkle trees) to validate transactions without storing the entire UTXO set.
Find a complete tutorial series of bitcoin technical concepts at https://bitcoindevs.xyz/decoding/welcome
I have heard claims that libbitcoin can sync a node in less than 1hr. It appears to be limited only by the internet bandwidth of the node running IBD.
If true, how is that possible? And why is bitcoin-core so slow and relying on skipping validation all together to "improve performance"?
Edit: looks like libbitcoin uses multiple async threads to verify ranges of blocks at once https://delvingbitcoin.org/t/libbitcoin-for-core-people/1222
Yeah, my understanding is that Core and libbitcoin do verification differently. Voskuil goes into quite a bit of detail about the differences on Vlad's recent podcast.
UTREEXO is not block download, it's a different thing with different trade-offs
Actually neither of the assumes are either, you're just skipping validation... this graph is nonsense beyond .12
100%
So most recent improvements to IBD times are based on "just trust me, bro." That doesn't seem great.
Indeed, peak clown marketing. Let's call that bullshit out. The y axis is duration so degradation instead of improvement of performance.
Worth mentioning Zerosync as well, which doesn't help with IBD per se but enables a node to sync to the chain tip with full security faster than proof-less syncing.
This formatting is god-tier
Great breakdown of Bitcoin Core’s IBD improvements over the years! It’s amazing to see how much progress has been made in speeding up synchronization while maintaining security. Excited to see how AssumeUTXO and UTREEXO shape the future!
deleted by author