Today is a good day! Btcd, our alternative, full-node Bitcoin client written in Go, has now officially entered Beta (Release Notes). To our knowledge, btcd is the most complete alternative full-node daemon available. We have made it a priority to be as close of a drop-in alternative to Bitcoin Core as possible while making several improvements along the way.
It has certainly been a fun ride implementing nearly all facets of the original Satoshi client with a proper modular design and improved to better meet the demands of business users. We’d like to thank the countless alpha testers who provided invaluable feedback and even code in several instances.
Although there are still 3 major features I’ll discuss later in this post that we want to implement prior to moving to a full, non-Beta, release, we decided that it’s time to move to Beta test for the following reasons:
- Btcd has been running in production on mainnet for over 6 months on the Coinvoice servers with no unexpected downtime and no issues.
EDIT: As pointed out on reddit, there was one chain fork on the 4th of February that I overlooked. This issue was fixed within 3 hours and had no effect on the Coinvoice service.
- At this point, it is theoretically possible for the entire Bitcoin network to run only on btcd including mining via cgminer. Please note that we firmly believe there needs to be multiple implementations, so we wouldn’t want this situation to occur at all, but it serves to illustrate the current completeness of btcd.
What’s Left Before Full Launch
As previously mentioned, there are 3 main features we plan to implement and rigorously test prior to moving to a full launch (non-Beta) release:
- Add support for getblocktemplate mining. As previously mentioned, btcd supports getwork, but that is deprecated by Bitcoin Core and will eventually be removed.
- Full support for SPV clients. Our wire protocol package, btcwire, already supports the network messages necessary for SPV clients, however btcd does not yet handle bloom filters.
- Support for protocol version 70002. Just as the previous point, btcwire already supports the network messages necessary for full protocol version 70002 support, however btcd does not yet make use of that infrastructure and therefore negotiates to a maximum protocol version of 70001.