// the find
lightningnetwork/lnd
Lightning Network Daemon ⚡️
lnd is the reference Go implementation of a Lightning Network node — the layer-2 payment protocol that runs on top of Bitcoin. It handles the full channel lifecycle, onion routing, and invoice management, and exposes both gRPC and REST APIs for building apps on top. This is the codebase that most Lightning wallets, exchanges, and payment processors are actually running in production.
Full BOLT spec compliance with a checkbox list in the README that is actually kept up to date — rare for a protocol implementation of this age. The internal package decomposition is genuinely good: autopilot, chanbackup, chainntnfs, and the actor model are all independently usable libraries rather than one giant hairball. The migration story in channeldb is thorough — numbered migration packages with their own tests, not one long ALTER TABLE chain that breaks on upgrade. The brontide noise protocol implementation is clean, well-documented, and fuzz-tested separately from the rest of the daemon.
Still marked beta software after nearly a decade of mainnet use, which is either honest or a liability shield — either way it means 'loss of funds is possible' is still in the README. The gRPC API is explicitly unstable and they warn it may change drastically, which makes building on top of lnd a commitment to keeping up with breaking changes indefinitely. The codebase is enormous — the channeldb directory alone has 30+ migration packages — and onboarding a new contributor requires understanding Bitcoin consensus, Lightning protocol, and a large amount of lnd-specific abstractions before touching anything important. Neutrino (the light client backend) is marked experimental and remains the weakest link for anyone who wants to run lnd without a full Bitcoin node.