Lightning Network Daemon
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
Oliver Gugger fe24f195b8
Merge pull request #7508 from positiveblue/fix-linter
1 week ago
.github build: bump min Go version to 1.19 2 weeks ago
.vscode .vscode: add editor settings for VS Code 9 months ago
aezeed multi: add new build tag `integration` 4 weeks ago
aliasmgr aliasmgr: export StartingAlias so other packages can use it 2 months ago
amp multi: fix `make fmt` 7 months ago
autopilot autopilot: fix loop variables, use require 5 months ago
batch kvdb: move channeldb/kvdb to top level 2 years ago
blockcache multi: bump neutrino+btcwallet versions, use new generic lru cache 4 weeks ago
brontide brontide,lnwire,wtwire,zpay32: appease linter 4 months ago
buffer lnwire: remove unused MaxMessagePayload const 2 years ago
build build: bump version to v0.16.0-rc3 2 weeks ago
cert cert: removed unused args from cert.GenCertPair 1 month ago
chainntnfs chainntnfs: fix temp dir creation and rpcpolling switch 2 weeks ago
chainreg chainntnfs: move cache implementation to channeldb 2 months ago
chanacceptor rpc: validate closing channel address in open channel requests 3 months ago
chanbackup chanbackup: replace defer cleanup with `t.Cleanup` 5 months ago
chanfitness fix typos [skip ci] 11 months ago
channeldb Merge pull request #7415 from bitromortac/2302-max-htlc 4 weeks ago
channelnotifier channelnotifier: add `InactiveLinkEvent` 2 months ago
clock clock: add missing package `require` and replace `assert` [skip ci] 7 months ago
cluster cluster: replace defer cleanup with `t.Cleanup` 5 months ago
cmd Merge pull request #7444 from bitromortac/2302-capacity-config 3 weeks ago
contractcourt multi: add new build tag `integration` 4 weeks ago
contrib docs: remove PIDFile from example systemd service 1 year ago
discovery discovery+server: add more trace log 2 weeks ago
docker scripted-diff: replace ⛰ emoji with $ [skip ci] 5 months ago
docs docs/release-notes: add note for new tx rebroadcast 2 weeks ago
feature feature+lncfg: add config option to turn of anysegwit 7 months ago
funding funding: fix itest flake with pending channels 4 weeks ago
healthcheck build(deps): bump golang.org/x/sys in /healthcheck 4 weeks ago
htlcswitch htlcswitch: fix HandleChannelUpdate by selecting on link's quit chan 4 weeks ago
input multi: add version to MuSig2 API, bump btcd/btcec to v2.3.2 2 months ago
internal/musig2v040 internal/musig2: rename to musig2v040 to avoid confusion 2 months ago
invoices invoices: fix flake in `TestInvoiceExpiryWithRegistry` 1 month ago
itest Merge pull request #7444 from bitromortac/2302-capacity-config 3 weeks ago
keychain mod+keychain+lntest: bump btcd to version with tweak fix 4 months ago
kvdb build(deps): bump golang.org/x/net from 0.4.0 to 0.7.0 in /kvdb 1 month ago
labels multi: fix `make fmt` 7 months ago
lncfg multi: add new build tag `integration` 4 weeks ago
lnencrypt lnencrypt: Moves the crypto functions in the chanbackup package into its own package called lnencrypt 6 months ago
lnmock lnmock: add new package `lnmock` to host mocks 2 months ago
lnpeer multi: use btcd's btcec/v2 and btcutil modules 1 year ago
lnrpc Merge pull request #7451 from CRex15/walletkit+labeltransaction 2 weeks ago
lntest lntest: use trace log level for discovery 2 weeks ago
lntypes lntypes+routing: add generic Min/Max functions 3 months ago
lnutils multi: make linter happy 1 week ago
lnwallet multi: make linter happy 1 week ago
lnwire multi: rename due to required maxHTLC bit 4 weeks ago
macaroons multi: add new build tag `integration` 4 weeks ago
make build: bump min Go version to 1.19 2 weeks ago
mobile docs: remove $ from multiline commands or frequently copied [skip ci] 5 months ago
monitoring Merge pull request #6224 from Roasbeef/prometheus-latency-histograms 1 year ago
multimutex multimutex: add hash mutex 3 years ago
nat multi: Fix typos [skip ci] 1 year ago
netann multi: enhance loggings and fix logging format 4 weeks ago
peer multi: enhance loggings and fix logging format 4 weeks ago
peernotifier multi: add shutdown logs in subservers 2 years ago
pool pool: replace defer cleanup with `t.Cleanup` 5 months ago
queue queue: replace defer cleanup with `t.Cleanup` 5 months ago
record routing+channeldb: send payment metadata from invoice 11 months ago
routing routing: trace capacity in probability log 4 weeks ago
rpcperms multi: improve readability of goroutine defers 4 months ago
scripts itest: remove unused flag `goroutineDump` 4 weeks ago
shachain multi: fix `make fmt` 7 months ago
signal multi: Update Licenses to 2022 [skip ci] 1 year ago
subscribe multi: add interface for subscribe client so it can be mocked 3 years ago
sweep multi: add new build tag `integration` 4 weeks ago
ticker multi: improve readability of goroutine defers 4 months ago
tlv multi: update to latest version of btcd in submodules 4 months ago
tools ci: fix lint VSC permissions error 2 months ago
tor build(deps): bump golang.org/x/net in /tor 3 weeks ago
walletunlocker walletunlocker: fix unit test flake by closing DB 1 month ago
watchtower watchtower/wtdb: add tower-to-session index entry for all towers 2 weeks ago
zpay32 multi: fix make lint 4 months ago
.editorconfig .editorconfig: add editor settings for most editors 9 months ago
.gitignore multi: move `itest` out of `lntest` 4 weeks ago
.golangci.yml golangci: remove linter exceptions for itest 4 weeks ago
.travis.yml build: bump min Go version to 1.19 2 weeks ago
Dockerfile build: bump min Go version to 1.19 2 weeks ago
LICENSE multi: Update Licenses to 2022 [skip ci] 1 year ago
Makefile multi: add new build tag `integration` 4 weeks ago
README.md trivial: link from readme to builder's guide 2 years ago
SECURITY.md lnd: add SECURITY.MD to bolster security entry in README 5 months ago
channel_notifier.go multi: use btcd's btcec/v2 and btcutil modules 1 year ago
chanrestore.go channeldb: BigSize migration, store zero-conf, scid-alias bits 9 months ago
config.go Merge pull request #7264 from yyforyongyu/gossip-resend-messages 4 weeks ago
config_builder.go multi: make linter happy 1 week ago
dev.Dockerfile build: bump min Go version to 1.19 2 weeks ago
doc.go lnd: rename package main->lnd 4 years ago
go.mod build: bump min Go version to 1.19 2 weeks ago
go.sum mod: bump neutrino lru cache version 3 weeks ago
intercepted_forward.go contractcourt: add onchain interception 11 months ago
lnd.go lnd: Add ability to encrypt TLS key on disk 2 months ago
log.go multi: add sub-server dep 11 months ago
logo.png README: add logo to top portion of page 6 years ago
pilot.go multi: use btcd's btcec/v2 and btcutil modules 1 year ago
rpcserver.go rpcserver: assign peer alias lookup error 3 weeks ago
rpcserver_test.go Rpcserver: Add GetAllPermissions function for retrieving permissions for external macaroon baking 1 year ago
sample-lnd.conf routing+lnrpc: make capacity factor configurable 4 weeks ago
server.go discovery+server: add more trace log 2 weeks ago
server_test.go multi: add new build tag `integration` 4 weeks ago
subrpcserver_config.go chainrpc: add chainkit RPC service 3 months ago
tls_manager.go lnd: bump lnd/cert version 1 month ago
tls_manager_test.go lnd: Add ability to encrypt TLS key on disk 2 months ago
witness_beacon.go multi: create channeldb/models package 2 months ago
witness_beacon_test.go lnd: replace defer cleanup with `t.Cleanup` 5 months ago

README.md

Lightning Network Daemon

Build Status MIT licensed Irc Godoc

The Lightning Network Daemon (lnd) - is a complete implementation of a Lightning Network node. lnd has several pluggable back-end chain services including btcd (a full-node), bitcoind, and neutrino (a new experimental light client). The project's codebase uses the btcsuite set of Bitcoin libraries, and also exports a large set of isolated re-usable Lightning Network related libraries within it. In the current state lnd is capable of:

  • Creating channels.
  • Closing channels.
  • Completely managing all channel states (including the exceptional ones!).
  • Maintaining a fully authenticated+validated channel graph.
  • Performing path finding within the network, passively forwarding incoming payments.
  • Sending outgoing onion-encrypted payments through the network.
  • Updating advertised fee schedules.
  • Automatic channel management (autopilot).

Lightning Network Specification Compliance

lnd fully conforms to the Lightning Network specification (BOLTs). BOLT stands for: Basis of Lightning Technology. The specifications are currently being drafted by several groups of implementers based around the world including the developers of lnd. The set of specification documents as well as our implementation of the specification are still a work-in-progress. With that said, the current status of lnd's BOLT compliance is:

  • BOLT 1: Base Protocol
  • BOLT 2: Peer Protocol for Channel Management
  • BOLT 3: Bitcoin Transaction and Script Formats
  • BOLT 4: Onion Routing Protocol
  • BOLT 5: Recommendations for On-chain Transaction Handling
  • BOLT 7: P2P Node and Channel Discovery
  • BOLT 8: Encrypted and Authenticated Transport
  • BOLT 9: Assigned Feature Flags
  • BOLT 10: DNS Bootstrap and Assisted Node Location
  • BOLT 11: Invoice Protocol for Lightning Payments

Developer Resources

The daemon has been designed to be as developer friendly as possible in order to facilitate application development on top of lnd. Two primary RPC interfaces are exported: an HTTP REST API, and a gRPC service. The exported API's are not yet stable, so be warned: they may change drastically in the near future.

An automatically generated set of documentation for the RPC APIs can be found at api.lightning.community. A set of developer resources including guides, articles, example applications and community resources can be found at: docs.lightning.engineering.

Finally, we also have an active Slack where protocol developers, application developers, testers and users gather to discuss various aspects of lnd and also Lightning in general.

Installation

In order to build from source, please see the installation instructions.

Docker

To run lnd from Docker, please see the main Docker instructions

IRC

  • irc.libera.chat
  • channel #lnd
  • webchat

Safety

When operating a mainnet lnd node, please refer to our operational safety guidelines. It is important to note that lnd is still beta software and that ignoring these operational guidelines can lead to loss of funds.

Security

The developers of lnd take security very seriously. The disclosure of security vulnerabilities helps us secure the health of lnd, privacy of our users, and also the health of the Lightning Network as a whole. If you find any issues regarding security or privacy, please disclose the information responsibly by sending an email to security at lightning dot engineering, preferably encrypted using our designated PGP key (91FE464CD75101DA6B6BAB60555C6465E5BCB3AF) which can be found here.

Further reading