Lightning Network Daemon

Olaoluwa Osuntokun e883304279 build: bump version to v0.10.1-beta.rc1 4 years ago
.github 59875b6ec4 github: add proto formatting to pull request template 4 years ago
aezeed 466294ed4c aezeed: use fast scrypt options in itest 4 years ago
autopilot 919710467e autopilot: tidying up source code to fit to 80 cols 4 years ago
brontide 4be1a4d0ec multi: fix typos 4 years ago
buffer 5d9514fbe4 buffer+pool: add buffer.Read and pool.ReadBuffer 5 years ago
build e883304279 build: bump version to v0.10.1-beta.rc1 4 years ago
cert 8920e20cf7 cert: define ExtendedKeyUsage as required by macOS 10.15 4 years ago
chainntnfs e52982fd0b Ensure chain notifier is started before accessed. 4 years ago
chanacceptor 423887d3d8 chanacceptor: adding tests for the RPCAcceptor 4 years ago
chanbackup 823a9cc2c2 chanbackup: add SCB support for new anchor commitments 4 years ago
chanfitness 384c6aa1f1 chanfitness: save initial online event for channels with online peers 4 years ago
channeldb 4b7e8669ac channeldb/db: adds optional dry-run abort for migrations 4 years ago
channelnotifier f5237589ea channelnotifier: new ActiveLinkEvent for link startup notification 4 years ago
clock 7024f36a76 general: adding the Clock interface to aid testing 4 years ago
cmd 5e83ed9d89 routing+routerrpc: add multiple outgoing channel restriction 4 years ago
contractcourt e52982fd0b Ensure chain notifier is started before accessed. 4 years ago
contrib 1bc011ae5a contrib: add basic bash completion for lncli 7 years ago
discovery e52982fd0b Ensure chain notifier is started before accessed. 4 years ago
docker ffa7bed7f0 build+routerrpc+lncli: remove routerrpc conditional compilation 4 years ago
docs fb17e9b863 docs: add PSBT publish warning 4 years ago
feature 21126ab0f3 multi: optionally enable and signal anchor support 4 years ago
fuzz 2c0fdbadde Merge pull request #3969 from Crypt-iQ/wt_fuzz_0108 4 years ago
htlcswitch e52982fd0b Ensure chain notifier is started before accessed. 4 years ago
input c1b9b272cd input/size: assert witness size constants 4 years ago
invoices 70fc9c1901 invoices: elminitate sleep from expiry watcher tests 4 years ago
keychain 29ece5fe24 keychain: use fast scrypt options for unit tests 4 years ago
lncfg 43323f98fa lntest/itest: add itest for SCB file restore for anchor commitments 4 years ago
lnpeer ec784db511 multi: remove returned error from WipeChannel 4 years ago
lnrpc e52982fd0b Ensure chain notifier is started before accessed. 4 years ago
lntest 3289b31b09 lntest/test: add htlc events test to multi-hop error propagation 4 years ago
lntypes afd86763ac lntypes: add ZeroHash 5 years ago
lnwallet adbbde6f31 build: update to latest btcd and btcwallet versions 4 years ago
lnwire 0f94b8dc62 multi: return input.Signature from SignOutputRaw 4 years ago
macaroons 847d27f8a6 macaroons: use fast scrypt options in itest and unit tests 4 years ago
make ce00f52ca2 make: add new release flags 4 years ago
mobile ffa7bed7f0 build+routerrpc+lncli: remove routerrpc conditional compilation 4 years ago
monitoring 3d7de2ad39 multi: remove dead code 4 years ago
multimutex 5bebda8c5d multimutex: add hash mutex 4 years ago
nat a27ac66eed server: add periodic renewal of port forwarding 5 years ago
netann 0f94b8dc62 multi: return input.Signature from SignOutputRaw 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 f907fbcadc queue: detect close of incoming channel 4 years ago
record de88a4b174 record: add AMP record and encode/decode methods 4 years ago
routing 5e83ed9d89 routing+routerrpc: add multiple outgoing channel restriction 4 years ago
scripts 4b8d0d913a build: bump travis bitcoind version to v0.19.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 e52982fd0b Ensure chain notifier is started before accessed. 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 4cb518c174 Merge pull request #4056 from wpaulino/tor-onion-store 4 years ago
walletunlocker 3f45fb3781 walletunlocker: use fast scrypt options for unit tests 4 years ago
watchtower 0c13b29a0e wtmock: prevent race conditions by not using ClientSession pointers 4 years ago
zpay32 b9b66419ff zpay32/invoice: remove unknown required fbit check from decode 4 years ago
.gitignore 55241b8e16 gitignore: add coverage.txt 4 years ago
.golangci.yml 0b49783650 Merge pull request #4124 from halseth/travis-lint-concurrency 4 years ago
.travis.yml 4384319b4a travis: use make command for windows build 4 years ago
Dockerfile ffa7bed7f0 build+routerrpc+lncli: remove routerrpc conditional compilation 4 years ago
LICENSE 62778c61cc lnd: update copyright notice 5 years ago
Makefile 317ccb2cc9 make+build: call release script from makefile 4 years ago
README.md 5ba630f02b Merge pull request #3963 from guggero/safety-doc 4 years ago
breacharbiter.go 071c7cbe78 lnd: convert to use new kvdb abstraction 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 c039aee059 chainregistry: increase zmq connection timeout with bitcoind backend 4 years ago
chancloser.go f2b6e2af04 input: pass input.Signature to multisig spend 4 years ago
chancloser_test.go f86d63144c multi: Set and check upfront shutdown address on close 4 years ago
channel_notifier.go d8c62c37a8 channel_notifier: update backup on pending chan 4 years ago
chanrestore.go 823a9cc2c2 chanbackup: add SCB support for new anchor commitments 4 years ago
config.go 412d7f5c38 config: adds cli configurable --migration-dry-run 4 years ago
doc.go b53899c43c lnd: rename package main->lnd 5 years ago
fundingmanager.go f48c4cae37 fundingmanager: check remote peer upfront shutdown support before reservation 4 years ago
fundingmanager_test.go e52982fd0b Ensure chain notifier is started before accessed. 4 years ago
go.mod adbbde6f31 build: update to latest btcd and btcwallet versions 4 years ago
go.sum adbbde6f31 build: update to latest btcd and btcwallet versions 4 years ago
lnd.go 412d7f5c38 config: adds cli configurable --migration-dry-run 4 years ago
log.go badbc5a491 rpc: use existing rpc logger for wtclientrpc 4 years ago
logo.png fba856068e README: add logo to top portion of page 6 years ago
mock.go e52982fd0b Ensure chain notifier is started before accessed. 4 years ago
nursery_store.go a4e39906b1 build: silence new linter errors, tidy modules 4 years ago
nursery_store_test.go b53899c43c lnd: rename package main->lnd 5 years ago
peer.go ec1b8d874d htlcswitch/link: add pending commit ticker for stall detection 4 years ago
peer_test.go 0f94b8dc62 multi: return input.Signature from SignOutputRaw 4 years ago
pilot.go c9c667bbf2 pilot: log whether autopilot is active at startup 4 years ago
rpcserver.go badbc5a491 rpc: use existing rpc logger for wtclientrpc 4 years ago
sample-lnd.conf 97da7b3444 multi: support config bitcoind fee estimate mode 4 years ago
server.go 37dca27a3d htlcswitch: thread clock from switch to mailbox 4 years ago
server_test.go 2bef62b467 lnd: remove global var access from genCertPair 4 years ago
subrpcserver_config.go badbc5a491 rpc: use existing rpc logger for wtclientrpc 4 years ago
test_utils.go fce472e820 Merge pull request #3876 from breez/allow-timeouted-initiated-htlc 4 years ago
utxonursery.go 92af2342da lnwallet+nursery+input: set sequence=1 for direct HTLC spends 4 years ago
utxonursery_test.go 92af2342da lnwallet+nursery+input: set sequence=1 for direct HTLC spends 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

Safety

When operating a mainnet lnd node, please refer to our operational safety guildelines. 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