This BIP91 / SegWit issue you might have heard about, and the uncertain effects on our precious coins of the upcoming chain split on August 1st raises a question whether we should put our money in a desktop wallet instead of leaving them having a rest at an exchange or an online wallet. Now I can see, that a desktop wallet actually does blow that haze away from the future… partially.
Split to be or not to be
After the block chain splits, you’ll have some BTC (XBT) and some BCC coins, however the exchanges announced different approach to handle the situation, thus it’s extremely recommended to be well informed about the wallet where you hold your money. For instance, with Coinbase, you are going to lose your BCC(!) option. Saving your coins in your desktop wallet can be a solution for that, but of course it won’t help to avoid value losses due to volatility during the upcoming days.
The slow client
So I’m here to give a hint on the desktop wallet problem to those who decided to use the Bitcoin Core client from the whole wallet-palette. By using Bitcoin Core, you’ll be an active component of the Bitcoin ecosystem, however this contribution comes at a rather high cost: it consumes more than 125 GB on your drive as of today (07/23/2017) to store the complete Bitcoin blockchain.
What does that mean? You need this free space and it also comes with a slooooooooow initial synchronization procedure. I mean it. If you have a mediocre computer, you need even days to have it synced. You can use your wallet somewhat in the meantime, but you won’t see your transactions updated until you arrive to the most recent blocks (it starts processing from the oldest block).
Why is it so slow? – I hear you ask. Because it’s huge. Basically. But I can state that the client uses the disk abnormally intensively, I haven’t seen anything else on my computer yet that makes the HDD scratching so much like this program. However, I’ve heard the developers admitted this and already planned to release related fixes in the v0.15.0 sometimes in Autumn.
Well, then what do I need to speed it up? A fast CPU + an Internet connection with high bandwidth + a fast storage device.
I cannot help you in the first two, but for the last bottleneck here are two options:
- Use the -prune parameter to run the client in “light node” mode, or
- Speed up your drive somehow.
As we are following a plan to secure our coin’s future in the blockchain, I go with unfolding the latter.
- Your default, not too fast drive with enough space (~140 GB) and
- an SSD with ~2,5 GB free space
or a RAM disk of 2,5GB. (I’m sure, you have one SSD somewhere, even if it’s already occupied by the OS, just free up this little portion of space on that somehow)
I highly do not recommend to use RAM disks, despite their performance boost. If your computer turns off unexpectedly during the process, you will have a great chance to lose your wallet, thus your money.
The poor sync performance comes from the huge amount i/o operations on the hard disk drive, so we have to put all those files on the SSD leaving the heavy blockchain data on the slow HDD. The key is to make the program believe that everything is at its place right there in the Wallet directory.
Let’s fix it!
I give you a step-by-step:
- Install Bitcoin Core.
- It asks the path to your wallet: set it somewhere on your hard drive having the 140GB+ free space.
- Leave the client to run for a couple of minutes to initialize everything.
- Close Bitcoin Core and wait until it stops completely.
- Create a folder on your SSD, let’s say: c:\ssdwallet
- Navigate to your wallet that you defined a few steps ago. There you should see:
- …and so on.
- Make a backup copy of the whole, just to be sure.
- Move the followings from the installed wallet to the ssdwallet folder you created:
- [chainstate] directory
- [blocks]\[index] (don’t move the whole blocks folder, but the [index] subfolder only)
- Now we make the program believe they are still there in the installed folder:
- Open the Command prompt and go to the installed wallet directory: Start menu > cmd > cd
e.g.: cd d:\wallet
- if you are on a different drive, don’t forget to switch to it. E.g.: “d:”
- type: mklink /j chainstate c:\ssdwallet\chainstate
- type: mklink /j blocks\index c:\ssdwallet\blocks\index
The last two command create hard symlinks to directories called “junctions”. From this moment, you are ready to start Bitcoin Core again to let it finish its sync todos. You’ll see the difference, I promise:
- Start Bitcoin Core.
- Let it run until it finishes its neverending sync stuff.
- Close the program and wait for exit.
- Remove the two symlinks you created just like you delete any other file.
- Move the to folders from the ssdwallet folder back to their original place.
And here we are! Don’t forget to make a backup of your wallet, but first let me suggest you to do a transaction with a small amount to check if everything’s right. After that, encrypt the wallet, memorize the private key and backup.
Please note, that I was using program version 0.14.2 on Windows 7 with an Atom based GA-D525TUD motherboard, 8 GB RAM and 128 GB SSD. There may be other steps in your solution due to the differences in your environment and client version.
Finally, I went up to 2.5x of the original speed, so 3 days was enough to finish the initial blockchain sync. 🙂 Sure, I switched to SSD only after 36 hours of pain. You can clearly see, that using such a low-low-low-end computer without any muscles in its CPU, and having a poor 4 MB/s Internet connection and having an absolutely average hard disk (1TB Samsung), there’s still enough room to make it 2.5x faster just by using an SSD for the administration files. I cannot even imagine what a big difference could be there with a strong CPU.
Share your experiences in the comments below. If you find this article helpful, I really appreciate any kind of donation on one of these addresses:
- Bitcoin: 3LLzWCTCiLGnj5WT127BduHaCehbZUJdwT
- Ether: 0x57A0ac917775D1dfEe5D7e551BE145bb57b49724
- ZCash: t1TccE92FHfLQXaZnJBssXgMSE5nNNh2HBa