Running your own node is one of the most important premises which enables Bitcoin’s decentralization. It empowers every user to validate their own transactions, it increases security and privacy by storing the blockchain activity on your own device (so that nobody knows which addresses are yours and which ones belong to someone else), and it strengthens the network by further pressuring participants to remain honest. Furthermore, the node is an essential prerequisite for onboarding the Lightning Network.
In a system of checks and balances, the miners play the role of block producers, while full nodes validate each transaction and prevent arbitrary changes of consensus protocols. If this were physical gold, you could say that the former category waste valuable resources to mint new amounts of the precious metal, while the latter folks check its authenticity according to the chemical properties of gold.
To paraphrase the great bitcoiner Melik Manukyan, the past and the future must be secured simultaneously:
The good news for us non-technical users is that specialized developers have created friendly interfaces which allow us to run a full validating node without writing a single line of code. The bad news is that the process still isn’t as user-friendly as one might expect, and the system requirements might be a little deterring for some.
However, in a world where financial sovereignty is the supreme value, good security and decentralization come with a great responsibility. We shouldn’t expect others to run honest nodes for us, and it’s best to not rely on BIP37 light wallets. True bitcoiners will understand that these costs outweigh the benefits of convenience.
The DIY approach to running your own node
In the year 2019, you can simply spend $300 on a box that comes with a pre-synced Bitcoin node and allows you to onboard the Lightning Network with just a few clicks. However, an external high-speed SSD and 2 days of electricity are way cheaper and offer greater educational benefits about financial sovereignty.
On one hand, you get to learn how it’s done and actually enrich your bitcoiner knowledge by doing something useful. On the other hand, running the software yourself gives you more options than the simplified dashboard developed by a Bitcoin-friendly company (for instance, the Casa Node won’t let you set transaction fees and most likely uses the momentary network average, which means that you may always pay more satoshis than you would like). Choosing a Lightning implementation of your choice is also empowering.
Another option is to buy a Raspberry Pi, a hard drive, and some sort of enclosure. The RaspiBlitz DIY project is popular among community members, but the limited hardware capacity may prove to be slow and unreliable. Synchronizing a full Bitcoin node will take longer on a system which has a slower processor and less RAM, so it’s more efficient to make use of the computer you already own.
In order to conduct this experiment, I’ve bought a 512 gigabyte Adata SD600 SSD, which I can connect to one of the USB 3.1 ports in my computer. It’s cheap (somewhere between $80 and $100 on Amazon), small-sized, covered in rubber to absorb potential shocks, and pretty rugged. Naturally, there are plenty of other options (it’s said that the Samsung SSDs are most reliable and durable), but I’ve just picked the cheapest one I could find, and it also came with 3 years of warranty.
Also, given the fact that the Bitcoin blockchain size is about 246 GB at press time, with a conservative expectation of 1 MB/block every 10 minutes, then the remaining 266 GB will be occupied in approximately 1891 days (5.1 years). It will most likely take less due to SegWit and increasing demand, and I still haven’t taken into consideration Lightning clients. However, I expect about 3 years of service until I move on to a 1-2 TB device that will be much cheaper by that time.
Synchronizing the node
After you get a storage device that you can use only for the node and you also have the computer that you use on a daily basis, it’s time to run Bitcoin Core. Right now you can download version 0.17.1 of the client on the Bitcoin.org website, and install it on Windows, MacOS, or Linux (ARM, Tgz, and Ubuntu).
As Tom Petty once said, the waiting is the hardest part. It’s not difficult to save Bitcoin Core on your computer and run the installation steps, but the Initial Block Download can look intimidating. Depending on your internet speed, RAM availability, and processing power, it can take anywhere from a day (on a modern desktop with more than 8GB of RAM) to a few weeks (on a weak device like the Raspberry Pi).
In my case, it took 35 to 40 hours on a late 2015 iMac (i5 quad core processor, 8 GB of RAM) with a 300 mbps (37.5 MB/s) internet connection. I had to leave the computer on all this time, disable the screensaver and power saving features, and allow Bitcoin Core to use as much as 4 GB of the RAM so I could also surf the internet in the background.
The Initial Block Download could have been reduced significantly if I allowed the client to use more RAM from the very beginning. Sadly, I didn’t start toggling with the settings until the synchronization got to mid-2016. Given the fact that the default amount is 300 MB of RAM, it’s very likely that the process could have been reduced to 30 hours or less had I known about this little trick.
Andreas Antonopoulos has taken some time to explain the Initial Blockchain Download process, and he recommended a modern quad core processor, at least 4 GB of RAM, and a fast SSD drive in order to have a quick synchronization. In the case of a Raspberry Pi, the process can even take a few weeks – which is fine if the only purpose of that device is to run the full node, but it can get annoying if you want to become a first class citizen a lot faster and would rather use your computer than buy another device.
A clean synchronization from scratch on a Casa Node, RaspiBlitz project, or even Nodl takes a lot longer than on the average computer which fulfils the hardware specifications above. The only issue with using your desktop or laptop for running a full node will be encountered once you start using the Lightning Network, as your channels won’t be active at all times unless you leave your device permanently on (which definitely consumes more energy than a Raspberry Pi).
In Lightning Labs’ LND, there is a 24-hour clause which automatically closes down channels and returns the satoshis to their last owners unless you reactivate the connection on time. Also, you definitely won’t route too many payments and earn rewards if you’re only a part-timer. But if you only use Lightning when you need it, it’s all fine and you will find the service more than satisfactory.
I’ve synced my full node. Now what?
Congratulations, you’re a first class citizen who validates his own transactions and doesn’t trust third parties. The next logical step towards financial sovereignty is to also use your node on both your desktop and mobile devices.
For maximum privacy, you may run Wasabi Wallet, mix your BTC via CoinJoin, and also make every transaction under the protective veil of ToR. Thankfully, the implementation also connects to your full node, which means that you’re getting the maximum amount of privacy, security, and fungibility. The Bitcoin Core wallet is also a sturdy and time-tested option, but you definitely benefit from more functions with Wasabi.
Furthermore, a hardware wallet like Trezor can also connect to your full Bitcoin node, but requires some toggling: the backend must be compiled and ran next to the node. You may find more details on their GitHub, but it’s not recommended to do this kind of experimentation unless you know what you’re going. Ledger has yet to announce such an implementation, but we’re in the middle of an awakening where the fundamentals get discovered by a larger number of users, so it’s likely that the process will be sped up by increasing demand.
In terms of mobile wallets, it’s recommended that you use either Samourai Wallet or Blockstream Green. The issue is that, at press time, only the Android versions allow you to connect to your full node (developers from both team have made promises about iOS implementations, but it’s more difficult to make Apple allow certain features and settings for the apps in their store). Nevertheless, you can get a cheap phone with a clean installation of Android which doesn’t have any bloatware, and take advantage of your increased privacy – just be sure to not give away too much data to Google.
You’re also eligible to onboard the Lightning Network, but this discussion requires an entire article of its own and I’m planning to publish it after I experiment with some of the clients available (Lightning Labs’ LND, Blockstream’s C-Lightning, Pierre Rochard’s Node Launcher, et al).
But until the follow-up gets written, feel free to comment by mentioning how long it took to synchronize the full node on your system. If you feel comfortable with sharing the information with a research project which rewards you with Lightning tips, feel free to get in touch with Bitcoin IBD on Twitter.