Fast Sync for Initial Bitcoin Node

March 3, 2023

The initial sync of your Bitcoin node can take up to a week on a slow CPU and internet connection. Here are some options to speed it up:

Option 1 - Use This Bitcoin Fast Sync Command

There is no torrent or copy method which would be faster than just using the Bitcoin network “hive” - which is huge. There may be a way to sync using local or low-latency nodes nearby, but any time you specify which nodes you sync from - it introduces risk.

Very good to have a fast drive (NVMe or SSD), fast CPU and plenty of RAM - I read that an SSD is not as important as RAM, however, using NVMe drives - my ram usage did not go above 12GB.

With this command I was able to download the entire bitcoin blockchain and create all indices in almost exactly 7 hours:

bitcoind -txindex=1 -dbcache=16384 -daemon

Note - this is for 16GB of RAM - if you have 32GB of RAM, you can use 32768 for dbcache in the command above

Source and commentary I found helpful: https://www.reddit.com/r/Bitcoin/comments/wwdrmu/how_to_download_the_entire_btc_blockchain_in_24h/

Now what I did was a little different from that post and my results were amazing.

Basically, I installed the latest bitcoind from source, tuned the CPU frequency, and set up a bitcoin.conf file which you can do too by following this guide I wrote install bitcoind on Ubuntu.

Using this server, I was able to sync fully in 7 hours:

Intel(R) Xeon(R) E-2356G CPU @ 3.20GHz
64GB RAM
1TB INTEL NVMe SSDPE2KX010T8

Option 2 - Copy data from a (trusted) node over rsync SSH - not as safe as option 1:

Another option is to copy the directories from another node that is synchronized with the index you need:

Make sure old data is removed:

sudo rm -rf ./bitcoin/blocks
sudo rm -rf ./bitcoin/chainstate
sudo rm -rf ./bitcoin/indexes

Copy the blocks and chainstate folders from your existing node to ~/.bitcoin/

For example (fill in with your own IP / FQDN and path for SSH):

sudo rsync -aP [email protected]:$HOME/.bitcoin/blocks $HOME/.bitcoin/
sudo rsync -aP [email protected]:$HOME/.bitcoin/chainstate $HOME/.bitcoin/
sudo rsync -aP [email protected]:$HOME/.bitcoin/indexes $HOME/.bitcoin/

Option 3 - Copy data to and from a (trusted) node using an external SSD:

Copy fully sync’d node to external drive

sudo rsync $HOME/.bitcoin/blocks /mnt/externaldrive/.bitcoin/
sudo rsync $HOME/.bitcoin/chainstate /mnt/externaldrive/.bitcoin/
sudo rsync $HOME/.bitcoin/indexes /mnt/externaldrive/.bitcoin/

Copy from external drive to node

sudo rsync /mnt/externaldrive/.bitcoin/blocks $HOME/.bitcoin/
sudo rsync /mnt/externaldrive/.bitcoin/chainstate $HOME/.bitcoin/
sudo rsync /mnt/externaldrive/.bitcoin/indexes $HOME/.bitcoin/

If this is missing anything, or if you have any comments or questions - ping me on Twitter and I will update this page.


Let's keep the internet safe and free? →→ Click!