We’d like to announce the first beta release of the bchd Bitcoin Cash full node implementation. It has been a little over two months since bchd was forked from btcd and in that time it’s undergone a large amount of development.

We’ve implemented all four of the Bitcoin Cash hardforks and removed a major softfork (segwit) from the codebase. This release contains a number features and improvements over btcd including a utxo memory cache, prune mode, and bip159 NODE_NETWORK_LIMITED to allow pruned nodes to offer blockchain services to the network.

We were waiting until after the hardfork to release this beta version because we wanted to make sure there were no issues transitioning to the new consensus rules, but we had no issues at all as bchd operated incredibly smooth right through the fork.

Bchd is currently the only full node implementation running on the network that supports bip157/158 NODE_CF in which the node maintains a compact filter index to serve to lite clients. This allows developers to build a new type of P2P SPV wallet that uses client side filtering to provide SPV users with unmatched privacy.

To that end we’ve also ported the Neutrino wallet backend to BCH so we actually have an SPV wallet that makes use of this functionality. At present it’s the most private SPV codebase on the market. There really isn’t a close second in terms of privacy. We’ll have more information about neutrino in an upcoming blog post.

What’s in the box

The release consists of three separate software programs:

bchd

bchd is the blockchain server. It connects to the peer network and handles all of the blockchain processing. It offers an optional transaction index and address index that give access to additional RPC calls when turned on. It’s also the only full node that automatically sets up SSL for the RPC connection to allow you to easily run it on a remote machine.

bchwallet

By itself bchd has no wallet. This is different from the c++ implementations which bundle the wallet together with the node software. By decoupling the two we create a much easier to manage codebase. bchwallet is wallet software that connects to your running instance of bchd to scan for relevant transactions. This software also allows you to switch to the neutrino backend (mentioned above) if you want to run in SPV mode.

bchctl

bchctl is the command line interface for controlling both bchd and bchwallet . If you connect it to the bchwallet you will not only have access to the wallet RPCs, but it will proxy the blockchain RPCs from bchd .

There are binaries available for a wide variety of operating systems including BSD*, Plan 9, and Solaris.

You can download these binaries from our website or from github.

Please keep in mind this is beta software and probably not ready for production usage, though it is in pretty good shape right now. Please help us test it out by downloading it and taking it for a test drive. You can report issues and bugs to us on github.

We’d like to thank the following people who contributed their time and code to making bchd happen.

cpacia, zquestz, tyler-smith, romainPellerin, emergent-reasons, swdee, Shanon Denize, nhandl3, DYDYSY, and all of the btcd contributors who created the codebase we forked from.