Lightning Network Daemon

Olaoluwa Osuntokun 0342c8b33c build: bump version to v0.13.3-beta.rc1 2 years ago
.github 8491d0da43 multi: enable monitoring build by default 3 years ago
aezeed 5904efe9ed aezeed: export wordlist and properties 2 years ago
amp 2d397b12b1 amp: create amp.ShardTracker 3 years ago
autopilot 14c851c8fc kvdb: move channeldb/kvdb to top level 3 years ago
batch 14c851c8fc kvdb: move channeldb/kvdb to top level 3 years ago
blockcache 275d55c9e6 blockcache: add blockcache package 3 years ago
brontide 02267565fe multi: unify code blocks in READMEs 3 years ago
buffer 5d9514fbe4 buffer+pool: add buffer.Read and pool.ReadBuffer 5 years ago
build 0342c8b33c build: bump version to v0.13.3-beta.rc1 2 years ago
cert 786568fa46 cert: allow cert expiry to be set in config 3 years ago
chainntnfs 14c851c8fc kvdb: move channeldb/kvdb to top level 3 years ago
chainreg ddbd0b672a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
chanacceptor 80bc46e614 lint: fix proto message no-copy linter warnings 3 years ago
chanbackup bb84f0ebc8 multi: store KeyLocator in OpenChannel, use ECDH 3 years ago
chanfitness c1705a28da chanfitness/chaneventstore: stop ticker after goroutine 3 years ago
channeldb ddbd0b672a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
channelnotifier 3223df74e5 channelnotifier+discover+invoices: return error in Stop functions 3 years ago
clock fc87e8358e clock: add go.mod 4 years ago
cluster 14c851c8fc kvdb: move channeldb/kvdb to top level 3 years ago
cmd 6057200c72 cmd/lncli: add new option for easy AMP invoice re-use 2 years ago
contractcourt 614884dcb8 contractcourt: test commitment deadline logic 2 years ago
contrib a94c990f8e Remove unsupported newaddress type p2pkh 3 years ago
discovery 186237ca73 discovery: demote err log to debug from processZombieUpdate 3 years ago
docker 585a78dbc7 Merge pull request #5022 from bjarnemagnussen/fix-docker-ltc 3 years ago
docs 2f68e95013 docs: update release notes for 0.13.3 2 years ago
feature e97da53676 feature: populate SetInvoiceAmp with TlvOpt+PayAddrReq+AmpReq 3 years ago
funding 655778d80d funding+lnwallet: validate ChannelReserve is above DustLimit 2 years ago
fuzz bbe85f3c16 fuzz/zpay32: add Decode/Encode fuzz tests. 3 years ago
healthcheck ad586c6bf1 healthcheck: separate lnd/healthcheck into submodule 3 years ago
htlcswitch 0e3d06a562 multi: introduce config-level DustThreshold for defining threshold 2 years ago
input ddbd0b672a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
invoices 47403c0be4 Merge pull request #5226 from yyforyongyu/small-fix-invoice 3 years ago
keychain a620ce3682 build: update btcd and btcwallet dependencies 3 years ago
kvdb fc139d9bb8 kvdb: add ForEachBucket implementation 3 years ago
labels 2a614cc596 multi: add labels to lnd native transactions 3 years ago
lncfg 4460903399 multi: add signet parameters 3 years ago
lnpeer 50186ba834 lnpeer/peer.go: modifying interface comment 3 years ago
lnrpc 1287328678 Merge pull request #5335 from guggero/abandonchannel-no-dev 2 years ago
lntest 0e3d06a562 multi: introduce config-level DustThreshold for defining threshold 2 years ago
lntypes afd86763ac lntypes: add ZeroHash 5 years ago
lnwallet 1fc413e2f6 lnwallet: introduce GetDustSum method to calculate worst-case dust sum 2 years ago
lnwire 438b03afa4 features: define temporary AMP feature bits 30/31 3 years ago
macaroons 14c851c8fc kvdb: move channeldb/kvdb to top level 3 years ago
make 8491d0da43 multi: enable monitoring build by default 3 years ago
mobile 5a82340a03 Merge pull request #5198 from hsjoberg/sampleconf-tlsdisableautofill 3 years ago
monitoring c3b20e34a7 monitoring: run go fmt 3 years ago
multimutex 5bebda8c5d multimutex: add hash mutex 4 years ago
nat a27ac66eed server: add periodic renewal of port forwarding 5 years ago
netann a259317d72 netann: add test for RequestAuto 3 years ago
peer ffd346e2e1 config: add channel commit batch size parameter 3 years ago
peernotifier 3223df74e5 channelnotifier+discover+invoices: return error in Stop functions 3 years ago
pool eb1affd5da pool: fix typo 3 years ago
queue c7fa5ea863 queue: remove unsued waitgroup 4 years ago
record 82b4f11292 record/amp: use switch from 10 -> 14 for AMP TLV type 3 years ago
routing 525ef594c7 routing: don't return an error from failPayment within handleSendError 2 years ago
rpcperms 9aacc35989 lnrpc: add GetState to stateservice (v1/state) 3 years ago
scripts 591954ff61 scripts: detect whether sha256sum or shasum is available 3 years ago
shachain 3d7de2ad39 multi: remove dead code 4 years ago
signal ada1bc701c signal: handle shutdown properly 3 years ago
subscribe 3aa008ab04 multi: add interface for subscribe client so it can be mocked 3 years ago
sweep ddbd0b672a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
ticker 567c357c61 ticker+queue: run go mod tidy 4 years ago
tlv ffddb85e9c tlv/bench_test: fix ESatPerKw, pass reference to uint64 3 years ago
tor 02267565fe multi: unify code blocks in READMEs 3 years ago
walletunlocker 7ab5906093 Merge pull request #5245 from bhandras/kvdb_module 3 years ago
watchtower ddbd0b672a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
zpay32 044e1e692f zpay32: add distinct hrp to invoice 3 years ago
.gitignore b42c5e5fad make+scripts: use pre-compiled btcd in itest 3 years ago
.golangci.yml 7569cca19b channeldb/migration: copy current lnwire to migration dir 3 years ago
.travis.yml 57f3a2c595 Travis: decrease Windows itest parallelism 3 years ago
Dockerfile af0fc09f62 multi: update build systems and CI/CD to go 1.16 3 years ago
LICENSE 62778c61cc lnd: update copyright notice 5 years ago
Makefile a80a6f0453 Makefile: bump goacc commit 3 years ago
README.md 9b28925da2 README: remove stray [ 3 years ago
breacharbiter.go 7ab5906093 Merge pull request #5245 from bhandras/kvdb_module 3 years ago
breacharbiter_test.go fb99994720 breacharbiter_test: assert publication of adjusted justice tx 3 years ago
channel_notifier.go d8c62c37a8 channel_notifier: update backup on pending chan 4 years ago
chanrestore.go bb84f0ebc8 multi: store KeyLocator in OpenChannel, use ECDH 3 years ago
config.go 0e3d06a562 multi: introduce config-level DustThreshold for defining threshold 2 years ago
dev.Dockerfile af0fc09f62 multi: update build systems and CI/CD to go 1.16 3 years ago
doc.go b53899c43c lnd: rename package main->lnd 5 years ago
go.mod ddbd0b672a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
go.sum ddbd0b672a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
lnd.go 6ca38bc815 lnd+config+sample-lnd.conf: add wallet-unlock-allow-create flag 2 years ago
log.go e62dbca11a cluster: add cluster package skeleton and LeaderElector interface 3 years ago
logo.png fba856068e README: add logo to top portion of page 6 years ago
nursery_store.go 14c851c8fc kvdb: move channeldb/kvdb to top level 3 years ago
nursery_store_test.go 2a358327f4 multi: add reset closure to kvdb.View 3 years ago
pilot.go f91e7cde59 lnwallet: expose optional account filter for several WalletController methods 3 years ago
rpcserver.go ddbd0b672a multi: replace DefaultDustLimit with script-specific DustLimitForSize 2 years ago
sample-lnd.conf 0e3d06a562 multi: introduce config-level DustThreshold for defining threshold 2 years ago
server.go 0e3d06a562 multi: introduce config-level DustThreshold for defining threshold 2 years ago
server_test.go 786568fa46 cert: allow cert expiry to be set in config 3 years ago
subrpcserver_config.go 6a7d3c4b5e lnrpc+rpcserver: thread GenAmpInvoiceFeatures to invoicesrpc 3 years ago
tools.go 364421dced mod+tools: pin down build flag dependent go.sum entry 3 years ago
utxonursery.go 2a358327f4 multi: add reset closure to kvdb.View 3 years ago
utxonursery_test.go 2a358327f4 multi: add reset closure to kvdb.View 3 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