Lightning Network Daemon ⚡️
Branch: master
Clone or download
#1 Compare This branch is 2502 commits behind lightningnetwork:master.
Roasbeef Merge pull request lightningnetwork#1138 from halseth/integration-tes…
…t-remove-block-flake

Integration tests: remove racy block generation
Latest commit 09c9979 Apr 28, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github github: add GitHub issue template Mar 28, 2018
aezeed aezeed: expose BirthdayTime conversion from offset Apr 26, 2018
autopilot multi: fix a-vs-an typos Apr 18, 2018
brontide multi: fix a-vs-an typos Apr 18, 2018
chainntnfs chainntnfs/bitcoindnotify: fix possible panic with lack of txindex Apr 18, 2018
channeldb channeldb: add method for fetching channels waiting for closing tx Apr 25, 2018
cmd/lncli cmd/lncli/commands: ask for recovery window after restore seed Apr 26, 2018
contractcourt contractcourt/chain_watcher: don't delete syncDispatch clients on Can… Apr 25, 2018
contrib contrib: add basic bash completion for lncli Jan 30, 2017
discovery multi: fix typos in comments Apr 18, 2018
docker docker: replace bash shells with last command Apr 6, 2018
docs docs/grpc: correct javascript macaroon example Apr 25, 2018
htlcswitch htlcswitch: use FetchAllOpenChannels Apr 25, 2018
keychain keychain/interface_test: init test wallet w/o recovery window Apr 26, 2018
lnrpc lnrpc: add RecoveryWindow to InitWalletRequest Apr 26, 2018
lntest lntest/node: add ability to unlock/init HarnessNode Apr 26, 2018
lnwallet lnwallet/interfaace_test: init neutrino with chain params Apr 26, 2018
lnwire multi: fix typos in comments Apr 18, 2018
macaroons macaroons: don't zero mem if never unlocked Mar 18, 2018
make make/testing_flags: adds testing flags for targeting Mar 31, 2018
multimutex multimutex: add new multimutex package Jan 24, 2018
routing routing: update TestSendPaymentErrorPathPruning due to recent Unknown… Apr 24, 2018
shachain multi: fix typos in comments Apr 18, 2018
torsvc torsvc: add support for stream isolation Feb 9, 2018
walletunlocker walletunlocker/service_test: check recovery window is threaded Apr 26, 2018
zpay32 zpay32: modify an invoice's `r` field to allow multiple routes Apr 20, 2018
.gitignore [.gitignore] Ignore *.iml files from IntelliJ Apr 10, 2018
.travis.yml travis: update to use `make travis` Mar 31, 2018
Gopkg.lock dep: update btcwallet w/ wallet recovery Apr 26, 2018
Gopkg.toml dep: update btcwallet w/ wallet recovery Apr 26, 2018
LICENSE LICENSE: update year to 2018 Apr 6, 2018
Makefile makefile: update install directive to just use go install Mar 31, 2018
README.md README: update Slack invite link Apr 13, 2018
breacharbiter.go breacharbiter: rename UnilateralClose -> RemoteUnilateralClose Apr 25, 2018
breacharbiter_test.go breacharbiter_test: use RemoteUnilateralCloseSummary and LocalForceCl… Apr 25, 2018
chainparams.go chainparams: create isTestnet function Mar 24, 2018
chainregistry.go chainregistry: initialize wallet w/ recovery window Apr 26, 2018
chancloser.go multi: fix typos in comments Apr 18, 2018
config.go lnd+cmd/lncli: allow users to disable logging sub-systems all together Apr 17, 2018
doc.go add some daemon related skeleton files Dec 26, 2015
fundingmanager.go fundingmanager: fixes range-goroutine scoping bug Apr 9, 2018
fundingmanager_test.go fundingmanager test: test that MinHtlc is preserved during flow Apr 6, 2018
invoiceregistry.go htlcswitch: face race condition in unit tests by returning invoice Nov 12, 2017
lnd.go lnd: threads recovery window param from walletunlocker Apr 26, 2018
lnd_test.go lnd_test: remove racy block generation Apr 27, 2018
log.go config: make log rotation configurable Apr 6, 2018
logo.png README: add logo to top portion of page Sep 29, 2017
mock.go multi test: make mock adhere to api change Apr 3, 2018
nodesigner.go rpc: modify SignMessage+VerifyMessage to bind msg to LN context Apr 26, 2018
nursery_store.go multi: fix a-vs-an typos Apr 18, 2018
nursery_store_test.go test: update nursery_store_test.go due to recent chain genesis renaming Mar 15, 2018
peer.go peer: don't load channels that have had commitment broadcasted Apr 25, 2018
peer_test.go peer test: remove var casting Feb 26, 2018
pilot.go multi: fix typos in comments Apr 18, 2018
release.sh build: add release script Jan 13, 2017
rpcserver.go rpc: modify SignMessage+VerifyMessage to bind msg to LN context Apr 26, 2018
sample-lnd.conf config: make log rotation configurable Apr 6, 2018
server.go server: change PeerNotFound to PeerNotConnected Apr 18, 2018
server_test.go server test: add !rpctest build flag Apr 13, 2018
signal.go multi: comprehensive typo fixes across all packages Feb 7, 2018
test_utils.go multi: set initiator funding txn Mar 11, 2018
utxonursery.go multi: fix typos in comments Apr 18, 2018
utxonursery_test.go multi: update packages due to recent SignDescriptor and WalletControl… Mar 6, 2018
version.go lnd+lncli: bump version to 0.4.1 Apr 3, 2018
witness_beacon.go multi: comprehensive typo fixes across all packages Feb 7, 2018

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 and currently deployed on testnet3 - the Bitcoin Test Network. 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: Basic of Lightning Technologies. 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:

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

IRC

  • irc.freenode.net
  • channel #lnd
  • webchat

Further reading