btcd is an alternative full node Bitcoin implementation written in Go.
The project addresses the need for a Bitcoin node implementation in a language other than C++, providing an independent codebase that validates and serves the blockchain according to Bitcoin's exact consensus rules, including historical consensus bugs. It downloads and validates blocks, relays newly mined blocks and transactions, and maintains a transaction pool with both standard blockchain rules and stricter miner-focused checks. The implementation includes a comprehensive block validation testing framework that runs on every pull request and passes all official Bitcoin Core test vectors to ensure consensus compatibility and prevent blockchain forks.
A key architectural decision distinguishes btcd from Bitcoin Core: it deliberately excludes wallet functionality. This separation of concerns means the tool cannot directly send or receive payments; instead, wallet operations are handled by companion projects like btcwallet and Paymetheus. Developers should choose btcd if they need a lightweight, independent node implementation for infrastructure purposes, such as running a validation node, building services that query blockchain data, or contributing to Bitcoin development without the overhead of wallet management. The Go implementation offers cross-platform compatibility and straightforward compilation from source.
The project maintains active development with regular updates and pull requests. The codebase demonstrates stability through production use spanning years. Documentation is acknowledged as a work-in-progress but exists in the repository's docs folder. Community engagement occurs through an IRC channel on Libera.Chat, and issue tracking uses the integrated GitHub system.