Take the 2-minute tour ×
Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It's 100% free, no registration required.

btcd 1.0 was released October 3, 2013. Why use it instead of bitcoind?

share|improve this question
add comment

2 Answers 2

up vote 12 down vote accepted

EDIT (2014-07-10): This answer is outdated now in regards to the cons. It was accurate as of version 0.3.0-alpha, however btcd is now in beta, up to version 0.8.0-beta, and nearly all of the cons listed here have since been addressed. I will see about providing an updated answer this weekend.

I'll try to answer this as unbiased as possible, but, as a disclaimer, I am the lead developer for btcd.

First, a small correction. The initial release is version 0.3.0-alpha (https://github.com/conformal/btcd/releases). It is not yet up to version 1.0 as we first want to get a ton of public testing from early adopters before claiming it is production ready. We fully understand the importance of avoid block chain forks and are making herculean efforts to do everything we can to prevent that from happening.

I'll provide a list of pros and cons that I can think of for btcd relative to bitcoind below, but one thing I'd like point out isn't specifically related to btcd or bitcoind, but rather the Bitcoin ecosystem as a whole.

Diversity is something the Bitcoin ecosystem is in dire need of. Diverse, inter-operating implementations make the Bitcoin network more robust against several things such as denial-of-service attacks, vulnerabilities, and individual application bugs. History has shown that for any protocol to thrive and gain wide-spread acceptance, multiple implementations on multiple devices is inevitably required. One prolific example is TCP/IP. TCP/IP would not be where it is today if only a single implementation existed.

Pros

  • btcd offers a unique architecture in that it separates the chain services from the wallet services (see NOTES [a])
  • btcd is written in Go which has several advantages over C++ (See NOTES [b])
  • btcd is a clean refactor of the entire Bitcoin protocol rather than one that is monolithic
  • the btcd codebase strives to provide easy to follow and well-commented code (bitcoind is definitely improving in this area, but there is still a lot of undocumented "magic")
  • the btcd core packages provide more extensive unit test coverage to help prevent regressions (for example btcwire provides 100% test coverage)

Cons

  • btcd is brand new, so it undoubtedly has bugs
  • btcd does not yet provide all of the same RPC calls that bitcoind has (which equates to not having all the features available to callers)
  • btcd is currently using the Go standard library for ECDSA cryptography with the specific curve parameters needed for Bitcoin (secp256k1) which is much slower than OpenSSL (see NOTES [c])
  • btcd does not yet daemonize itself or run as a service

Notes

[a] A full discussion of the advantages of separating the chain and wallet services would require an entire blog post, but a few examples are that it opens a lot of opportunities for lower powered hardware, offers better multi-user support, and results in less waste in small networks which can share the chain services.

[b] Some advantages we believe Go has over C++

  • Integrated test infrastructure
  • Platform independent code
  • Simpler parallelism and excellent support for concurrency
  • No active memory management which leads to eliminating an entire class of the most common security vulnerabilities like buffer overflows
  • Built-in profiling and documentation facilities
  • Significantly faster compilation times

[c] The main place the slower cryptography is noticeable is during the initial chain download after you get past the final checkpoint (currently around block height 250000).

share|improve this answer
add comment

as davec mentioned, btcd is written in go, and thus runs on any platform that go runs on. although not officially supported, go runs on plan 9, and so i run btcd on plan 9. proof: btcd on plan 9

share|improve this answer
1  
This is awesome. –  Colin Dean Oct 19 '13 at 0:33
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.