Lightning Network Daemon

Oliver Gugger 0fadf97e72 Merge pull request #8808 from ProofOfKeags/fn/predicate-combinators hai 3 meses
.github a5c04bbd14 GitHub: increase itest parallelization to 16 tranches hai 3 meses
.vscode 0759b2657c meta: add build tags to workspace settings for lsp support hai 10 meses
aezeed 5f22d97b51 chore: fix function names in comment hai 4 meses
aliasmgr f8a8326141 multi: replace `FundingLocked` and `funding_locked` strings hai 1 ano
amp 0735522194 multi: fix `make fmt` %!s(int64=2) %!d(string=hai) anos
autopilot 3d56ffd0e4 Merge pull request #8662 from fuyangpengqi/master hai 4 meses
batch 60bc30dd08 remove repetitive words hai 6 meses
blockcache 4ee862e3be blockcache: fix heap escape in `GetBlock` hai 8 meses
brontide 648fb22f63 multi: wrap all errors hai 5 meses
buffer 4b12f40a48 lnwire: remove unused MaxMessagePayload const %!s(int64=3) %!d(string=hai) anos
build 1a8d196607 build: bump version to v0.18.0 beta hai 3 meses
cert 789c6bac8c multi: replace ioutil.WriteFile hai 4 meses
chainntnfs 347537791e sweep: improve loggings based on feedback hai 4 meses
chainreg 3837c3f12e lnwallet: add configurable cache for web fee estimator hai 4 meses
chanacceptor ebf98c6d51 chanacceptor: add simple taproot channels hai 1 ano
chanbackup ab83343c87 multi: repleace ioutil.ReadFile hai 4 meses
chanfitness 66b8700c0b multi: add debug logs to catch slow shutdown hai 11 meses
channeldb 1542424782 invoices: if there are no invoices make gc noop hai 4 meses
channelnotifier 66b8700c0b multi: add debug logs to catch slow shutdown hai 11 meses
clock 09d21345e1 multi: bump Go version hai 1 ano
cluster 60bc30dd08 remove repetitive words hai 6 meses
cmd a832371d61 Merge pull request #8491 from davidgumberg/invoice_cltv_expiry hai 3 meses
contractcourt 8da68bb7db multi: apply the new type `lntypes.WeightUnit` hai 3 meses
contrib 9ba341bd95 docs: remove PIDFile from example systemd service %!s(int64=2) %!d(string=hai) anos
discovery 648fb22f63 multi: wrap all errors hai 5 meses
docker d740e95c08 docs: preserve MINING_ADDRESS across docker-compose sessions hai 7 meses
docs a832371d61 Merge pull request #8491 from davidgumberg/invoice_cltv_expiry hai 3 meses
feature eaa85920ea multi: enable optional route blinding feature hai 4 meses
fn cd3c17e1c0 fn: add predicate combinators for && and || hai 3 meses
funding 30047feb35 chore: fix some comments hai 3 meses
healthcheck 39f94a150f lnd/healthcheck: add tests for callbacks and dynamic checks hai 6 meses
htlcswitch 8da68bb7db multi: apply the new type `lntypes.WeightUnit` hai 3 meses
input 17a089c899 input+lnwallet: apply the new type `lntypes.VByte` hai 3 meses
internal 789c6bac8c multi: replace ioutil.WriteFile hai 4 meses
invoices d4f63662c1 invoices: ensure synchronous access to NewTestSqliteDB hai 4 meses
itest c9cad6ab81 itest+sweep: refactor `testSignPsbt` to use `Subtest` and add logs hai 3 meses
keychain ed373baed0 multi: add tag option to SignMessageSchnorr hai 10 meses
kvdb 7302051f44 build: update to sqldb v1.0.2 hai 4 meses
labels 0735522194 multi: fix `make fmt` %!s(int64=2) %!d(string=hai) anos
lncfg e8196c6feb cfg: move experimental options to main protocol cfg hai 4 meses
lnencrypt b6abede4a3 lnencrypt: add ECDHEncryptor hai 8 meses
lnmock f85661d94a lnwallet+sweep: add new method `CheckMempoolAcceptance` hai 5 meses
lnpeer 15978a8691 funding+peer: add support for new musig2 channel funding flow hai 1 ano
lnrpc a832371d61 Merge pull request #8491 from davidgumberg/invoice_cltv_expiry hai 3 meses
lntest d9498a9d13 lntest: increase DefaultTimeout for postgres hai 3 meses
lntypes dc9a0b31c0 lntypes: add new units `WeightUnit` and `VByte` hai 3 meses
lnutils 2686ca324a lnwallet: check mempool acceptance before publishing hai 8 meses
lnwallet 30047feb35 chore: fix some comments hai 3 meses
lnwire eaa85920ea multi: enable optional route blinding feature hai 4 meses
macaroons 9287b755d8 macaroons: reject unknown macaroon versions hai 10 meses
make a585833fb5 build: update release builds and CI to Go 1.22.3 hai 4 meses
mobile bb5faf0f5a make+docs: pull in modules patch hai 1 ano
monitoring 9a50cc95b7 Merge pull request #6224 from Roasbeef/prometheus-latency-histograms %!s(int64=2) %!d(string=hai) anos
multimutex a7d6826f60 multimutex: remove HashMutex, make Mutex type a type param hai 1 ano
nat 530a2059e5 multi: Fix typos [skip ci] %!s(int64=2) %!d(string=hai) anos
netann db39a905cb multi: make NewChanIDFromOutpoint accept value instead of pointer hai 6 meses
peer 64639fb771 Merge pull request #8762 from ProofOfKeags/bugfix/ping-stability hai 4 meses
peernotifier 66b8700c0b multi: add debug logs to catch slow shutdown hai 11 meses
pool cd566eb097 multi: fix fmt.Errorf error wrapping hai 6 meses
queue 60bc30dd08 remove repetitive words hai 6 meses
record c48841a38b record: add TLV encoding/decoding for blinded route data blobs hai 5 meses
routing f62c00fe34 multi: Inbound fees are retained when not provided hai 4 meses
rpcperms 648fb22f63 multi: wrap all errors hai 5 meses
scripts ab00c8ad18 scripts: add gpg key for suheb [skip ci] hai 3 meses
shachain 0735522194 multi: fix `make fmt` %!s(int64=2) %!d(string=hai) anos
signal 62dc1b5323 multi: Update Licenses to 2022 [skip ci] %!s(int64=2) %!d(string=hai) anos
sqldb eb605a02fd sqldb+kvdb: update to sqlite v1.29.8 hai 4 meses
subscribe 78d9996620 trivial: Fix spelling errors hai 1 ano
sweep c9cad6ab81 itest+sweep: refactor `testSignPsbt` to use `Subtest` and add logs hai 3 meses
ticker 09d21345e1 multi: bump Go version hai 1 ano
tlv 454f56d4a8 tlv: generate TLV types for custom ranges hai 4 meses
tools 09d21345e1 multi: bump Go version hai 1 ano
tor 789c6bac8c multi: replace ioutil.WriteFile hai 4 meses
walletunlocker 648fb22f63 multi: wrap all errors hai 5 meses
watchtower 8da68bb7db multi: apply the new type `lntypes.WeightUnit` hai 3 meses
zpay32 648fb22f63 multi: wrap all errors hai 5 meses
.editorconfig 2681c02afd .editorconfig: add editor settings for most editors %!s(int64=2) %!d(string=hai) anos
.gitignore 8a5160e1de multi: add test coverage for integration tests hai 5 meses
.golangci.yml 581c16d72f lint: ensure the linter checks fmt.Errorf error wrapping hai 6 meses
.protolint.yaml 1402ffd17b protolint: configure protolint and fix the protolinting issues hai 8 meses
Dockerfile a585833fb5 build: update release builds and CI to Go 1.22.3 hai 4 meses
LICENSE 62dc1b5323 multi: Update Licenses to 2022 [skip ci] %!s(int64=2) %!d(string=hai) anos
Makefile c577dae372 makefile+dev.Dockerfile: add install-all command hai 4 meses
README.md 071214006f docs(readme): add release build and go report status badges hai 10 meses
SECURITY.md 609cc8b883 lnd: add SECURITY.MD to bolster security entry in README hai 1 ano
channel_notifier.go 7dfe4018ce multi: use btcd's btcec/v2 and btcutil modules %!s(int64=2) %!d(string=hai) anos
chanrestore.go cd566eb097 multi: fix fmt.Errorf error wrapping hai 6 meses
config.go e8196c6feb cfg: move experimental options to main protocol cfg hai 4 meses
config_builder.go 3837c3f12e lnwallet: add configurable cache for web fee estimator hai 4 meses
config_test.go 3e5f03eb0b config_test.go: add test cases for `supplyEnvValue` hai 6 meses
dev.Dockerfile a585833fb5 build: update release builds and CI to Go 1.22.3 hai 4 meses
doc.go b53899c43c lnd: rename package main->lnd %!s(int64=5) %!d(string=hai) anos
go.mod f536c9b608 build: update to kvdb v1.4.8 hai 4 meses
go.sum f536c9b608 build: update to kvdb v1.4.8 hai 4 meses
intercepted_forward.go 721fb4ee88 contractcourt: add onchain interception %!s(int64=2) %!d(string=hai) anos
lnd.go ab83343c87 multi: repleace ioutil.ReadFile hai 4 meses
log.go 2451e6ae50 lnd: fix orders when initializing subsystem loggers hai 1 ano
logo.png fba856068e README: add logo to top portion of page %!s(int64=7) %!d(string=hai) anos
pilot.go 5f22d97b51 chore: fix function names in comment hai 4 meses
rpcserver.go f62c00fe34 multi: Inbound fees are retained when not provided hai 4 meses
rpcserver_test.go 218fa1e43e Rpcserver: Add GetAllPermissions function for retrieving permissions for external macaroon baking %!s(int64=3) %!d(string=hai) anos
sample-lnd.conf e8196c6feb cfg: move experimental options to main protocol cfg hai 4 meses
server.go e8196c6feb cfg: move experimental options to main protocol cfg hai 4 meses
server_test.go 3912d5a0c6 multi: remove Litecoin config options hai 11 meses
sqlc.yaml 43a9e2f1ca multi: add sqlc support hai 1 ano
subrpcserver_config.go f7198c4105 walletrpc+subserver_config: add coin selection strategy hai 7 meses
sweeper_wallet.go 403c1baca6 lnd: skip canceling rebroadcast for neutrino backend hai 1 ano
tls_manager.go 789c6bac8c multi: replace ioutil.WriteFile hai 4 meses
tls_manager_test.go 789c6bac8c multi: replace ioutil.WriteFile hai 4 meses
witness_beacon.go dccf9c77ca lnd+contractcourt: add more debug logs hai 1 ano
witness_beacon_test.go 604a355db6 lnd: replace defer cleanup with `t.Cleanup` hai 1 ano

README.md

Lightning Network Daemon

Release build MIT licensed Irc Godoc Go Report Card

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:

  • [X] BOLT 1: Base Protocol
  • [X] BOLT 2: Peer Protocol for Channel Management
  • [X] BOLT 3: Bitcoin Transaction and Script Formats
  • [X] BOLT 4: Onion Routing Protocol
  • [X] BOLT 5: Recommendations for On-chain Transaction Handling
  • [X] BOLT 7: P2P Node and Channel Discovery
  • [X] BOLT 8: Encrypted and Authenticated Transport
  • [X] BOLT 9: Assigned Feature Flags
  • [X] BOLT 10: DNS Bootstrap and Assisted Node Location
  • [X] 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