Lightning Network Daemon

Olaoluwa Osuntokun a7cf1b4ff5 build: bump version to v0.9.1-beta.rc1 4 years ago
.github a3d5a708bb CODEOWNERS: remove top level catch all 4 years ago
aezeed 1e0ed1e52f multi: fix dropped errors 4 years ago
autopilot 6e0cfe579b Merge pull request #3841 from joostjager/check-max-onion-size 4 years ago
brontide 4d4da3c07c brontide: fix goroutine in test 4 years ago
buffer 5d9514fbe4 buffer+pool: add buffer.Read and pool.ReadBuffer 5 years ago
build a7cf1b4ff5 build: bump version to v0.9.1-beta.rc1 4 years ago
cert 2c8a18fe6f cert+test: IsOutdated check for TLS files if IPs or DNS changed 4 years ago
chainntnfs 3aa8972cc7 bitcoindnotify: add missing space in log message in bitcoind.go 4 years ago
chanacceptor 423887d3d8 chanacceptor: adding tests for the RPCAcceptor 4 years ago
chanbackup d4f836ecb3 chanbackup: encode broadcast height in chan ID for unconfirmed channels 4 years ago
chanfitness 384c6aa1f1 chanfitness: save initial online event for channels with online peers 4 years ago
channeldb 666da0d10c lnwallet: restore unsigned acked remote updates 4 years ago
channelnotifier 1e86589bee chanfitness: Add channel event store 4 years ago
clock 7024f36a76 general: adding the Clock interface to aid testing 4 years ago
cmd 51dbdd3b38 multi: rename key_send, key-send and key send to keysend 4 years ago
contractcourt 6152625c53 contractcourt+switch: keep channels with timed-out initiated htlcs. 4 years ago
contrib 1bc011ae5a contrib: add basic bash completion for lncli 7 years ago
discovery 1d8da3123e discovery: check ChainHash in QueryChannelRange messages 4 years ago
docker 1f457ac1a8 docker: enable docker-compose up command for btc and ltc compose files 4 years ago
docs 31736804f1 docker: specify a tag, branch or commit using docker build-arg 4 years ago
feature f9a1acfbe4 feature/required: add ValidateRequired method 4 years ago
htlcswitch e3da653f33 lnwallet/channel: account for HTLC fee when reporting available balance 4 years ago
input 3711597fef input: remove duplicate commit weight constant 4 years ago
invoices b0c6c1c39c invoices: fix htlc timer deadlock 4 years ago
keychain 194a9dea81 multi: support sync freelist option within btcwallet 4 years ago
lncfg b3b355659b lncfg+lncli: replace WithDialer->WitchContextDialer 4 years ago
lnpeer 16318c5a41 multi: merge local+global features from remote peer 4 years ago
lnrpc 51dbdd3b38 multi: rename key_send, key-send and key send to keysend 4 years ago
lntest 51dbdd3b38 multi: rename key_send, key-send and key send to keysend 4 years ago
lntypes afd86763ac lntypes: add ZeroHash 5 years ago
lnwallet 15099045fc lnwallet/channel: add TODO 4 years ago
lnwire 17200afc57 lnwire: explicitly handle empty list when encoding short chan IDs 4 years ago
macaroons 1018df991f macaroons: add encKeyMtx to prevent race condition 4 years ago
make dd13a3c0d8 Makefile: make unit tess non-verbose 4 years ago
mobile 2b6575463b mobile: bump falafel dep to 0.7 4 years ago
monitoring 3d7de2ad39 multi: remove dead code 4 years ago
multimutex 0df3ff4994 multimutex: add new multimutex package 6 years ago
nat a27ac66eed server: add periodic renewal of port forwarding 5 years ago
netann 3d7de2ad39 multi: remove dead code 4 years ago
peernotifier 4ceceda757 peernotifier: Add peer notifier package for peer online/offline events 4 years ago
pool 17b2140cb5 multi: fix spelling mistakes 5 years ago
queue ff3063daea queue: fixing doc after cherry pick 4 years ago
record 51dbdd3b38 multi: rename key_send, key-send and key send to keysend 4 years ago
routing e9b7e80848 routing: remove path finding shortcut 4 years ago
scripts 44fa28b27b build: bump travis bitcoind version to 0.19.0.1 4 years ago
shachain 3d7de2ad39 multi: remove dead code 4 years ago
signal 6c6bbdd365 signal: initialize interceptor explictly 4 years ago
subscribe b58dbb2d70 multi: fix canceled spelling 4 years ago
sweep e01600fdb8 sweep: add wallet inputs to reach dust limit 4 years ago
ticker 567c357c61 ticker+queue: run go mod tidy 4 years ago
tlv e8fd05e8e3 tlv+record+routing: add payload size calculation 4 years ago
tor b1fc008433 Tor option to override target ip address 4 years ago
walletunlocker 194a9dea81 multi: support sync freelist option within btcwallet 4 years ago
watchtower 2510ec00f5 watchtower/wtwire/init: use feature.ValidateRequired 4 years ago
zpay32 b9b66419ff zpay32/invoice: remove unknown required fbit check from decode 4 years ago
.gitignore 187bd29d2d gitignore: add mobile/build 4 years ago
.golangci.yml 2fb7172725 lnwire: Add upfront shutdown messages and feature bit 4 years ago
.travis.yml d7af7934b8 travis: staged travis builds 4 years ago
Dockerfile 31736804f1 docker: specify a tag, branch or commit using docker build-arg 4 years ago
LICENSE 62778c61cc lnd: update copyright notice 5 years ago
Makefile d7af7934b8 travis: staged travis builds 4 years ago
README.md c660e16229 README: update dev slack link 4 years ago
breacharbiter.go 777ed104a3 chainfee: create new chainfee package extracting fees from lnwallet 4 years ago
breacharbiter_test.go 5e3718a1b5 lnwallet: use channel type to derive keys 4 years ago
chainparams.go 6fd5ef88b6 add litecoin regtest configuration to lnd 5 years ago
chainregistry.go 7ecbe22531 Merge pull request #3814 from joostjager/sweeper-add-utxo 4 years ago
chancloser.go 94d3eb60a4 multi: Use user provided close address for cooperative closes 4 years ago
chancloser_test.go f86d63144c multi: Set and check upfront shutdown address on close 4 years ago
channel_notifier.go b53899c43c lnd: rename package main->lnd 5 years ago
chanrestore.go fb683f74a4 chanbackup: set funding broadcast height on restore 4 years ago
config.go d7f6a39704 lnd+cert: recreate TLS files if IPs or DNS changed 4 years ago
doc.go b53899c43c lnd: rename package main->lnd 5 years ago
fundingmanager.go 91bd56dbd1 funding+rpc: expand specified chan point shim into a canned assembler 4 years ago
fundingmanager_test.go ddb98fcc41 multi: distinguish between htlc in and out constraints 4 years ago
go.mod d0d542c477 build: update to latest btcwallet version with rescan addr fix 4 years ago
go.sum d0d542c477 build: update to latest btcwallet version with rescan addr fix 4 years ago
lnd.go 1fa21e6bcd lnd: reload cert data after renewal 4 years ago
log.go 9f1720dea8 build: prevent loggers from overwriting each other. 4 years ago
logo.png fba856068e README: add logo to top portion of page 6 years ago
mock.go 7a64a7d3a4 lnwallet: delegate all channel funding logic to the new chanfunding package 4 years ago
nursery_store.go b53899c43c lnd: rename package main->lnd 5 years ago
nursery_store_test.go b53899c43c lnd: rename package main->lnd 5 years ago
peer.go 0f9023256e peer: use feature.ValidateRequired, cleanup error msgs 4 years ago
peer_test.go 94d3eb60a4 multi: Use user provided close address for cooperative closes 4 years ago
pilot.go 61e114f201 autopilot: take channel min htlc from config 4 years ago
rpcserver.go 8fb33dc5bf rpcserver: instruct REST marshaler to emit default values 4 years ago
sample-lnd.conf b6ea7d5f6c config: Make bools in sample-lnd.conf consistent 4 years ago
server.go 6152625c53 contractcourt+switch: keep channels with timed-out initiated htlcs. 4 years ago
server_test.go 2bef62b467 lnd: remove global var access from genCertPair 4 years ago
subrpcserver_config.go 338175534e Merge pull request #3812 from guggero/sign-custom 4 years ago
test_utils.go 6152625c53 contractcourt+switch: keep channels with timed-out initiated htlcs. 4 years ago
utxonursery.go 38adfd7ecc sweep: create sweep parameters struct 4 years ago
utxonursery_test.go 38adfd7ecc sweep: create sweep parameters struct 4 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 talks, articles, and example applications can be found at: dev.lightning.community.

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.freenode.net
  • channel #lnd
  • webchat

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