I recently decided that I’m shrugging my responsibility too much by only using an SPV thin wallet and started up bitcoin-core to run a full node. Electrum is a great wallet and I’ve used it for over a year now (before that I was even more irresponsible and just left my coins on Coinbase). I’d definitely recommend Electrum to anyone just starting to explore bitcoin.
I’m running on somewhat dated hardware i5 Core Duo 2.9 GHz, and started on a magnetic HDD – 2TB external Toshiba so it looked like it was going to take weeks to sync. As of 5/5/2019, there is approximately 223 GB of block data, and since I don’t have that much free SSD space, I had to install to an external HD.
I’ve been syncing my full node for a couple days, intermittently, but it was starting to get really sluggish once it hit blocks from around late 2016. I decided to look if there was a way to cache something on my SSD to speed things up and it turns out you can! By copying the chainstate directory which is only 2-3 GB and making a symbolic link, you greatly speed up your sync time without putting the entire 220+ GB blockchain on your on SSD.
My client went from %0.03 percent an hour to between 0.3% to 2% per hour. Huge increase in sync speed taking me from a week to hopefully under a day.
For windows – close your syncing qt GUI or CLI bitcoin application. Copy the chainstate folder from the data directory to your SSD. For bitcoin core 17.1, my data directory was named:
Rename the chainstate folder on your HDD to chainstate.bak or something similar. Then, open a command prompt in admin mode and make a symbolic link using mklink like this
mklink /d chainstate c:\chainstate
You should get the following output
symbolic link created for chainstate <<===>> c:\chainstate
Restart your GUI or CLI and now you should be syncing significantly faster! There’s potentially another improvement by increasing the dbcache parameter which increases your RAM usage, but I don’t think that’s necessary for me at this point.