Image for post
Image for post

Run your own Full Node

Ben
Ben
Nov 1, 2017 · 4 min read

One of the best (and most straight forward) ways of understanding how various crypto-asset technology works (or doesn’t work, for that matter) is to try the software yourself. It will give you a great idea of the state of development and the usability of the software — which, for me at least, is a great indicator of whether it’s something I want to support or not. I find it very informative for both the technology and trading lenses.

The other advantage is that running your own node allows you to get involved early, as some of the newer tech may not be available yet for trading on your favorite exchange. Running the software yourself allows you to both experiment as well as accrue assets (if only experimentally) without having to go through a centralized exchange.

There is a cost of course. Namely, how much space you have on your computer and how much bandwidth you have available. If the answer is “not much” to the latter, you may not want to go this route. I sometimes get “throttled” by my ISP when trying out a new crypto-asset because of the initial download. Yes, I’m aware my ISP sucks but I have no choice at the moment.

The good news is that once most projects hit a certain level of sophistication they include the ability to not eat your entire hard drive with raw transaction data.

In my experience, it’s important to make sure you’re running the latest version of the software to get the full effect. I got caught in the middle of a recent IOTA snapshot and (maybe?) lost some funds because I was using an older version when the transaction was broadcast (I’m still working on that one…) I’ve also seen a good deal of confusion with some Litecoin clients not accepting newer Segwit addresses. The point is, even if you keep close tabs on this market you may still get caught in the crossfire every once in a while.

Keeping software up-to-date can be a constant challenge for newcomers because a) the technology moves so fast and b) people often don’t sign up for any mailing lists or other means of notification to stay abreast of updates. It can be a pain-in-the-ass to check for new software every time you want to create a transaction but I view all of this as just a sign of the times — the crypto-space is moving incredibly fast (which is awesome) but it takes some extra effort to keep up.

Speaking of disk space…what about Bitcoin?

Ironically, many Bitcoin users have never run a full node (e.g. Bitcoin-QT wallet from bitcoin.org) despite that Bitcoin is perhaps the easiest to track since updates are relatively rare, often make the news, and don’t matter much in many cases since the Core team has a strong preference for backwards compatibility. I’m not going to get into the current politics of the upcoming 2X fork but if you’re interested/involved in Bitcoin and have never run a full Core node, you would do well to at least try it…especially if you’re a strong believer in large blocks.

I often hear from friends that running a full node is not possible/super inconvenient because the size of the blockchain is now over 130gb. If you fall into this camp, there are a couple things to note about the most recent Bitcoin-QT release (v 0.15.0.1):

  1. It is 30-40% faster to validate in v0.15.0. Unfortunately, the size of the blockchain is also larger now so you won’t feel these rewards directly…but at least it’s not slower?
  2. A common misunderstanding is that you have to keep the full 130+gb of blockchain data on your drive at all times. This is incorrect. Bitcoin-qt (since v0.12) allows “pruning” of the blockchain to basically whatever size is convenient for you.

Pruning, like many things Bitcoin is not immediately self-explanatory. When you enable pruning, you can set the amount of raw, historical data to be kept on your computer, simple as that. You can set the minimum of 550 (mb) but just be aware that your node will be kicked off if there is a reorg that exceeds 2 days worth of blocks…but that is very unlikely.

Unfortunately (but necessarily), this does not speed up the initial sync time ( more than a day) since the entire blockchain must still be validated but Bitcoin-QT can prune the raw data to a minimal size. Remember, you are validating some 9 years of transactions! How long do you think that should take? (And imagine if those blocks were 8x the size…hmmm)

Also unfortunate is that enabling pruning is (still) not straightforward. I really don’t understand why this is not included in the GUI interface and enabled by default so many versions later…but it’s not. If you’re using the GUI (as most newcomers will be), to turn on pruning you have to edit the “bitcoin.conf” file. This also adds to the confusion since this file doesn’t exist by default even though there is a button to edit it in the GUI. I get that these devs are smart but are we trying to make Bitcoin more confusing than it is already??

If you are using the default install paths in macOS, save yourself some time and just open a terminal and copy/paste the following:

echo “prune=550” >> ~/Library/Application\ Support/Bitcoin/bitcoin.conf

You can read more about pruning in the Bitcoin-QT v0.11.0 release notes.

Additionally, you can speed things up a bit by allowing the software to use more memory. Under Preferences > Main > “Size of Database Cache” you can increase this value which does help significantly with validation in my experience.

It will still likely take more than a day to validate the entire blockchain but at least your drive will not be filling up in the meantime and you can rest assured knowing that you are in full control of your assets.

Happy pruning!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store