Lightning Network Daemon

Oliver Gugger 15c1eb1397 Merge pull request #7099 from sputn1ck/v0.14.5 1 year ago
.github e9e580ee1a GitHub+Makefile: remove travis goals 2 years ago
aezeed 0b4e03f5fc multi: add golang 1.17 compatible build tags 2 years ago
amp 2d397b12b1 amp: create amp.ShardTracker 3 years ago
autopilot d6fa912188 multi: further decouple graph 2 years ago
batch 14c851c8fc kvdb: move channeldb/kvdb to top level 3 years ago
blockcache 275d55c9e6 blockcache: add blockcache package 3 years ago
brontide 8c6dbc9ffa brontide: when decrypting re-use the allocated ciphertext buf 2 years ago
buffer 4b12f40a48 lnwire: remove unused MaxMessagePayload const 2 years ago
build 7a92b50c99 build: bump version to v0.14.5 1 year ago
cert 06433d351e Upgrade to go 1.16 for the left over packages 2 years ago
chainntnfs 3d0bd75947 chainntnfs: add more verbose logs for txnotifier 2 years ago
chainreg cc7d5e57eb multi: add nochainbackend option 2 years ago
chanacceptor e15ad026d4 chanacceptor: include commitment type in channel acceptor requests 2 years ago
chanbackup 0b0dd65c93 chanbackup: support backup restore of script enforced leased channels 2 years ago
chanfitness c1705a28da chanfitness/chaneventstore: stop ticker after goroutine 3 years ago
channeldb 9448ca93ea channeldb: fix unit test API usage after graph cache speedups 2 years ago
channelnotifier 11cf4216e4 multi: move all channelstate operations to ChannelStateDB 2 years ago
clock 06433d351e Upgrade to go 1.16 for the left over packages 2 years ago
cluster b2e0485ba7 cluster: configurable session TTL for the leader elector 2 years ago
cmd 11c57040aa lncli: use amount based default routing fee 2 years ago
contractcourt de4332a6a9 server+contractcourt: hand-off BreachCloseInfo to channel arbitrator 2 years ago
contrib a94c990f8e Remove unsupported newaddress type p2pkh 3 years ago
discovery c2fa9ff229 Merge branch 'v0.14.2-beta-6054' into v0.14.2-branch-rc1 2 years ago
docker f99cf4f7cb multi: Remove GO111MODULE env variable in Makefile 2 years ago
docs bd41fe30e4 docs: update release notes 0.14.3 2 years ago
feature 31ae48c59c feature: if a bit is unset, then all other features that dep it should be 2 years ago
funding c2fa9ff229 Merge branch 'v0.14.2-beta-6054' into v0.14.2-branch-rc1 2 years ago
fuzz 8b7c88537c multi: refactor SignDigestCompact into SignMessageCompact 2 years ago
healthcheck 5155ebc405 tor+healthcheck: fix healthcheck for multiple services 2 years ago
htlcswitch 384962c272 htlcswitch: fix duplicate close 2 years ago
input a6e931ed5b multi: fix formatting 2 years ago
invoices 43329e86a6 invoices: fix deadlock in invoice registry 2 years ago
keychain 1541b2ef1b multi: create and list all default internal accounts 2 years ago
kvdb ab79c7bcaa kvdb: add ForAll 2 years ago
labels 2a614cc596 multi: add labels to lnd native transactions 3 years ago
lncfg b2e0485ba7 cluster: configurable session TTL for the leader elector 2 years ago
lnpeer 50186ba834 lnpeer/peer.go: modifying interface comment 3 years ago
lnrpc e50480da22 lnrpc: ignore legacy onion payload as an option for SendToRoute 2 years ago
lntest 2c68e3b6cc multi: fix rebase issues, update release notes 2 years ago
lntypes afd86763ac lntypes: add ZeroHash 5 years ago
lnwallet 2c68e3b6cc multi: fix rebase issues, update release notes 2 years ago
lnwire 2c68e3b6cc multi: fix rebase issues, update release notes 2 years ago
macaroons a619a9bb04 macaroons: add GetCustomCaveatCondition func 2 years ago
make e94ddf7b17 build: bump release+build version to Go 1.17.3 2 years ago
mobile 9ea9caea1a docs: Added instructions on how to build proto definitions for Swift [skip ci] 2 years ago
monitoring 0b4e03f5fc multi: add golang 1.17 compatible build tags 2 years ago
multimutex 5bebda8c5d multimutex: add hash mutex 4 years ago
nat a27ac66eed server: add periodic renewal of port forwarding 5 years ago
netann 1bd5d06eed netann: create testSigBytes for unit test 2 years ago
peer 785b4118f8 lnwire+peer: clamp pong bytes, make ping handler more effcieint 2 years ago
peernotifier 3204e2d74b multi: add shutdown logs in subservers 2 years ago
pool eb1affd5da pool: fix typo 3 years ago
queue 06433d351e Upgrade to go 1.16 for the left over packages 2 years ago
record dd3f3e7ce5 record: fix nil pointer in log string 2 years ago
routing bf9f171d55 routing: fail in-flight attempts cleanly on terminal payment failure 2 years ago
rpcperms 99b1347789 rpcperms: set CustomCaveatCondition on middleware req 2 years ago
scripts 55edd1b260 scripts+GitHub: check submodule version bump 2 years ago
shachain 3d7de2ad39 multi: remove dead code 4 years ago
signal 4bcb32753f lnd+signal: implement systemd notify 2 years ago
subscribe 3aa008ab04 multi: add interface for subscribe client so it can be mocked 3 years ago
sweep b66345c390 sweep: remove all unconfirmed descendant transactions when a sweep conflicts 2 years ago
ticker 06433d351e Upgrade to go 1.16 for the left over packages 2 years ago
tlv ffddb85e9c tlv/bench_test: fix ESatPerKw, pass reference to uint64 3 years ago
tor 5155ebc405 tor+healthcheck: fix healthcheck for multiple services 2 years ago
walletunlocker ceb31f9034 multi: allow watch-only wallet creation 2 years ago
watchtower fdcd726f9a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
zpay32 8b7c88537c multi: refactor SignDigestCompact into SignMessageCompact 2 years ago
.gitignore b42c5e5fad make+scripts: use pre-compiled btcd in itest 3 years ago
.golangci.yml c8df606427 GitHub+lint: reduce linter memory usage 2 years ago
.travis.yml 56d00f40ef script: update CI to bitcoind 22 2 years ago
Dockerfile e94ddf7b17 build: bump release+build version to Go 1.17.3 2 years ago
LICENSE 62778c61cc lnd: update copyright notice 5 years ago
Makefile ea1fec84be makefile: add itest-clean to kill uncleaned processes 2 years ago
README.md 368fa02543 trivial: link from readme to builder's guide 2 years ago
channel_notifier.go 5917486dc9 channel_notifier: keep chan in SCB on local foce close 2 years ago
chanrestore.go 0b0dd65c93 chanbackup: support backup restore of script enforced leased channels 2 years ago
config.go b597690741 multi: add migrate-wallet-to-watch-only flag 2 years ago
config_builder.go bc84684a0c config_builder+rpcwallet: add full net params 2 years ago
dev.Dockerfile e94ddf7b17 build: bump release+build version to Go 1.17.3 2 years ago
doc.go b53899c43c lnd: rename package main->lnd 5 years ago
go.mod 418158ef38 build: bump btcd version to v0.22.3 1 year ago
go.sum 418158ef38 build: bump btcd version to v0.22.3 1 year ago
lnd.go cbd475d0d8 lnd: disable REST proxy HTTP method fallback 2 years ago
log.go 286e3742f6 lnd+lnwallet: add logger for btcwallet+rpcwallet 2 years ago
logo.png fba856068e README: add logo to top portion of page 6 years ago
pilot.go 862f712394 lnd+pilot: use minHTLCIn instead of whole config 2 years ago
rpcserver.go 43d05b0c47 lnrpc: add new locked balance field for WalletBalance 2 years ago
rpcserver_test.go 218fa1e43e Rpcserver: Add GetAllPermissions function for retrieving permissions for external macaroon baking 2 years ago
sample-lnd.conf abe20158cf config: update sample-lnd.conf 2 years ago
server.go de4332a6a9 server+contractcourt: hand-off BreachCloseInfo to channel arbitrator 2 years ago
server_test.go 0b4e03f5fc multi: add golang 1.17 compatible build tags 2 years ago
subrpcserver_config.go 11cf4216e4 multi: move all channelstate operations to ChannelStateDB 2 years ago
tools.go f12f40dfcb mod+tools+Makefile: use go install to fetch dependencies 2 years ago
witness_beacon.go 1a80a1e540 witness_beacon: do not look up invoice preimages 5 years 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:

  • [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