Cointime

Download App
iOS & Android

Boost Your Bitcoin Node Sync With UTXO Snapshots

Cointime Official

From lopp net blog by Jameson Lopp

The recent Bitcoin Core v28 release added support for a new feature that has been under development for 5 years. First proposed in 2019 by James O’Beirne, AssumeUTXO enables full nodes to defer verification of old blockchain history by loading a recent snapshot of the UTXO set at a specific block height and syncing to chain tip from that point. This allows wallets and other software using the full node to start receiving and sending transactions within minutes of the node being started instead of having to wait hours or days for it to sync and validate the chain from the genesis block.

When you use AssumeUTXO, the node starts syncing from the snapshot to the chain tip, then the node downloads and verifies the old blockchain history in the background until it eventually verifies its initial UTXO state at the loaded snapshot, allowing it to ultimately obtain the same trustless security as a node that doesn’t use AssumeUTXO.

How to Use UTXO Snapshots

  1. Download a UTXO Snapshot file. You can find one for block height 840,000 on my site or from this torrent: magnet:?xt=urn:btih:596c26cc709e213fdfec997183ff67067241440c&dn=utxo-840000.dat&tr=udp%3A%2F%2Ftracker.bitcoin.sprovoost.nl%3A6969
  2. Download Bitcoin Core v28 or later.
  3. Run Bitcoin Core: bitcoind -daemon
  4. Wait for the block headers to finish syncing (should only take 1 or 2 minutes)
  5. Load the snapshot via: bitcoin-cli loadtxoutset /path/to/utxo-snapshot-height-840000.dat
  6. Wait for the command to finish (this will take tens of minutes depending upon the speed of your machine)
  7. Once the command finishes, your node's sync progress will jump forward to the block height of the snapshot and continue syncing normally from there.
  8. After it reaches chain tip, the node will start performing a sync from genesis in the background, but the node will be usable during that time.

Frequently Asked Questions

  1. Does it matter where I get the snapshot dat file from? No; Bitcoin Core will only load a snapshot with an aggregate UTXO set hash that matches one that's hard coded into Core.
  2. Can I create my own snapshots and load them? You can generate snapshots with the dumptxoutset RPC command or with this utility script. However, you won't be able to load a snapshot unless it's at one of the block heights hard coded into Core. At time of writing, the only supported height is 840,000.
  3. Can I use this to sync a pruned node? Yes.
  4. Can I use this to sync a node with indexes enabled? Yes, though it won't make building the indexes any faster - they still have to be generated linearly from genesis.

How Much Faster Does the Node Sync?

I ran two syncs of Bitcoin Core v28 on my benchmark machine with full default settings. One sync ran entirely from genesis while the other loaded the snapshot as soon as it started syncing.

It took 10 minutes for the node to load the snapshot, then it took 84 minutes to finish syncing to chain tip. On the other hand, it took 659 minutes to perform a full sync from genesis.

So we can see that the speedup is quite significant!

Is It Worth the Trouble?

You'll want to weigh some trade-offs when decided if you want to sync your node from a snapshot.

  1. How much of a rush are you in to be able to use your node?
  2. How fast is your node hardware? If it's really fast and can sync from genesis in less than a day, perhaps it's not worth the extra steps to load a snapshot. Something like a Raspberry Pi would likely find much greater benefit from loading a snapshot.

While I only expect that more technically savvy node operators who are comfortable operating on the command line will take advantage of this feature right now, it can certainly be worth the extra steps in order to get an order of magnitude speedup!

Perhaps in the future, Bitcoin Core could offer a bundled download that includes a recent snapshot that gets automatically loaded on startup so that less sophisticated users can also take advantage of this functionality.

Comments

All Comments

Recommended for you

  • BTC breaks through $69,000

     the market shows BTC breaking through $69,000, currently at $69,021.49, with a 24-hour increase of 1.15%. The market is highly volatile, please manage your risk accordingly.

  • Spanish Foreign Minister: Not worried about any consequences of refusing US access to military bases

     on March 3 local time, Spanish Foreign Minister Alvarez defended the Spanish government's refusal to provide the Rota and Moron military bases to the United States for participation in attacks on Iran. Alvarez stated that the operation initiated by the United States and Israel is not supported by the United Nations and is not part of the bilateral agreements allowing the use of the aforementioned Spanish sovereign military bases. Alvarez also said that the Spanish government is not concerned that this stance will have any consequences. Alvarez stated: "The position of the Spanish government represents the will of the vast majority of the Spanish people as well as the vast majority of people worldwide, which is to defend the UN Charter, respect international law, and believe that cooperation is always more powerful than confrontation."

  • Spot gold plunges nearly $100 in the short term.

     spot gold plunged nearly 100 dollars in a short time, spot gold fell below 5170 dollars/ounce, with a daily decline of 2.94%. 

  • BTC falls below $67,000

    the market shows BTC fell below $67,000, currently at $66,996.93, with a 24-hour increase of 1.18%. The market is highly volatile, please manage your risk accordingly.

  • ETH breaks $2,000

    the market shows ETH breaking through $2000, currently at $2001.64, with a 24-hour increase of 2.89%. The market is highly volatile, please manage your risks accordingly.

  • The US spot Bitcoin ETF saw a net inflow of $962.48 million yesterday.

    according to Trader T's monitoring, the US spot Bitcoin ETF had a net inflow of 962.48 million USD yesterday.

  • BTC falls below $66,000

     the market shows BTC fell below 66,000 USD, currently at 65,986.66 USD, with a 24-hour decline of 1.31%. The market is highly volatile, please manage your risks accordingly.

  • BTC falls below $66,000

     the market shows BTC fell below $66,000, currently at $65,973.16, a 24-hour drop of 2.66%. The market is highly volatile, please manage your risks accordingly.

  • ETH breaks $2,000

    market shows ETH breaking through $2000, currently at $2000.29, with a 24-hour increase of 3.73%. The market is volatile, please manage your risk accordingly.

  • The United States uses Anthropic's artificial intelligence technology in its airstrikes in the Middle East.

     United States used Anthropic's artificial intelligence technology in airstrikes in the Middle East, and just hours before the attack, Trump had just issued a ban against Anthropic.