README: reformat and add IRC badge

This commit is contained in:
Andrey Samokhvalov 2017-01-12 03:12:53 +03:00 committed by Olaoluwa Osuntokun
parent a421069dd8
commit 299217aecb

125
README.md

@ -1,84 +1,86 @@
# `lnd` - the Lightning Network Daemon ## Lightning Network Daemon
[![Build Status](http://img.shields.io/travis/lightningnetwork/lnd.svg)] [![Build Status](http://img.shields.io/travis/lightningnetwork/lnd.svg)]
(https://travis-ci.org/lightningnetwork/lnd) (https://travis-ci.org/lightningnetwork/lnd)
    
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)] [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)]
(https://github.com/lightningnetwork/lnd/blob/master/LICENSE) (https://github.com/lightningnetwork/lnd/blob/master/LICENSE)
    
[![Irc](https://img.shields.io/badge/chat-on%20freenode-brightgreen.svg)]
(https://webchat.freenode.net/?channels=lnd)
    
[![Godoc](https://godoc.org/github.com/lightningnetwork/lnd?status.svg)]
(https://godoc.org/github.com/lightningnetwork/lnd)
The Lightning Network Daemon (`lnd`) - is a complete implementation of a
`lnd` is a complete implementation of a node on the [Lightning [Lightning Network](http://lightning.network) node and currently
Network](lightning.network). `lnd` is currently deployed on the Bitcoin Test deployed on `testnet4` - the Bitcoin Test Network. It utilizes an
Network (testnet4) and utilizes an upcoming upgrade to Bitcoin: Segregated upcoming upgrade to Bitcoin: Segregated Witness (`segwit`). The
Witness. The project's codebase uses the project's codebase uses the [btcsuite](https://github.com/btcsuite/) set
[btcsuite](https://github.com/btcsuite/) set of Bitcoin libraries, and is of Bitcoin libraries, and is currently dependant on [btcd](https://github.com/btcsuite/btcd).
currently dependant on [btcd](https://github.com/btcsuite/btcd). In the current state `lnd` is capable of:
* creating channels
The Lightning Network Daemon (`lnd`) is capable of: creating channels, closing * closing channels
channels, completely managing all channel states (including the exceptional * completely managing all channel states (including the exceptional ones!)
ones!), maintaining a fully authenticated+validated channel graph, performing * maintaining a fully authenticated+validated channel graph
path finding within the network, passively forwarding incoming payments, and * performing path finding within the network, passively forwarding
sending outgoing [onion-encrypted incoming payments
payments](https://github.com/lightningnetwork/lightning-onion) through the * sending outgoing [onion-encrypted payments](https://github.com/lightningnetwork/lightning-onion)
network. through the network
## Lightning Network Specification Compliance ## Lightning Network Specification Compliance
`lnd` doesn't yet _fully_ conform to the [Lightning Network specification `lnd` doesn't yet _fully_ conform to the [Lightning Network specification
(BOLT's)](https://github.com/lightningnetwork/lightning-rfc). BOLT stands for: (BOLT's)](https://github.com/lightningnetwork/lightning-rfc). BOLT stands
Basic of Lightning Technologies. The specifications are currently being drafted for: Basic of Lightning Technologies. The specifications are currently being drafted
by several groups of implementers based around the world including the by several groups of implementers based around the world including the
developers of `lnd`. The set of specification documents as well as our developers of `lnd`. The set of specification documents as well as our
implementation of the specification are still a work-in-progress. With that implementation of the specification are still a work-in-progress. With that
said, `lnd` the current status of `lnd`'s BOLT compliance is: said, `lnd` the current status of `lnd`'s BOLT compliance is:
- [ ] BOLT 1: Base Protocol - [ ] BOLT 1: Base Protocol
* `lnd` currently utilizes a distinct wire format which was created before * `lnd` currently utilizes a distinct wire format which was created
the emgergence of the current draft of BOLT specifications. We don't before the emgergence of the current draft of BOLT specifications.
have an `init` message, but we do have analogues to all the other We don't have an `init` message, but we do have analogues to all
defined message types. the other defined message types.
- [ ] BOLT 2: Peer Protocol for Channel Management - [ ] BOLT 2: Peer Protocol for Channel Management
* `lnd` implements all the functionality defined within the document, * `lnd` implements all the functionality defined within the
however we currently use a different set of wire messages. Additionally, document, however we currently use a different set of wire messages.
`lnd` uses a distinct commitment update state-machine and doesn't yet Additionally,`lnd` uses a distinct commitment update state-machine
support dynamically updating commitment fees. and doesn't yet support dynamically updating commitment fees.
- [ ] BOLT 3: Bitcoin Transaction and Script Formats - [ ] BOLT 3: Bitcoin Transaction and Script Formats
* `lnd` currently uses a commitment design from a prior iteration of the * `lnd` currently uses a commitment design from a prior iteration
protocol. Revocation secret generation is handled by `elkrem` and our of the protocol. Revocation secret generation is handled by `elkrem`
scripts are slightly different. and our scripts are slightly different.
- [X] BOLT 4: Onion Routing Protocol - [X] BOLT 4: Onion Routing Protocol
- [X] BOLT 5: Recommendations for On-chain Transaction Handling - [X] BOLT 5: Recommendations for On-chain Transaction Handling
- [X] BOLT 7: P2P Node and Channel Discovery - [X] BOLT 7: P2P Node and Channel Discovery
- [X] BOLT 8: Encrypted and Authenticated Transport - [X] BOLT 8: Encrypted and Authenticated Transport
## Installation ## Installation
In order to build form source, the following build dependencies are
* In order to build form source, the following build dependencies are required: required:
* **Go 1.5 or 1.6**
* **Go:** Installation instructions can be found [here](http://golang.org/doc/install).
Installation instructions can be found here: http://golang.org/doc/install.
It is recommended to add `$GOPATH/bin` to your `PATH` at this point. It is recommended to add `$GOPATH/bin` to your `PATH` at this point.
**Note:** If you are building with Go 1.5, then you'll need to enable the **Note:** If you are building with `Go 1.5`, then you'll need to
vendor experiment by setting the `GO15VENDOREXPERIMENT` environment enable the vendor experiment by setting the `GO15VENDOREXPERIMENT`
variable to `1`. If you're using Go 1.6 or later, then it is safe to skip environment variable to `1`. If you're using `Go 1.6` or later, then
this step. it is safe to skip this step.
* **Glide** * **Glide:** This project uses `Glide` to manage dependencies as well
as to provide *reproducible builds*. To install `Glide`, execute the
This project uses `Glide` to manage dependencies as well as to provide *reproducible builds*. following command (assumes you already have Go properly installed):
To install `Glide`, execute the following command (assumes you already have Go properly installed): ```
$ go get -u github.com/Masterminds/glide
`$ go get -u github.com/Masterminds/glide` ```
* **btcd** * **btcd:** This project currently requires `btcd` with segwit support,
which is not yet merged into the master branch. Instead,
This project currently requires `btcd` with segwit support, which is not
yet merged into the master branch. Instead,
[roasbeef](https://github.com/roasbeef/btcd) maintains a fork with his [roasbeef](https://github.com/roasbeef/btcd) maintains a fork with his
segwit implementation applied. To install, please see [the installation segwit implementation applied. To install, please see
instructions](docs/INSTALL.md). [the installation instructions](docs/INSTALL.md).
With the preliminary steps completed, to install `lnd`, `lncli`, and all With the preliminary steps completed, to install `lnd`, `lncli`, and all
related dependencies run the following commands: related dependencies run the following commands:
``` ```
$ git clone https://github.com/lightningnetwork/lnd $GOPATH/src/github.com/lightningnetwork/lnd $ git clone https://github.com/lightningnetwork/lnd $GOPATH/src/github.com/lightningnetwork/lnd
$ cd $GOPATH/src/github.com/lightningnetwork/lnd $ cd $GOPATH/src/github.com/lightningnetwork/lnd
@ -86,8 +88,8 @@ $ glide install
$ go install . ./cmd/... $ go install . ./cmd/...
``` ```
## Updating ### Updating
To update your version of `lnd` to the latest version run the following To update your version of `lnd` to the latest version run the following
commands: commands:
``` ```
$ cd $GOPATH/src/github.com/lightningnetwork/lnd $ cd $GOPATH/src/github.com/lightningnetwork/lnd
@ -95,10 +97,17 @@ $ git pull && glide install
$ go install . ./cmd/... $ go install . ./cmd/...
``` ```
### Tests
To check that `lnd` was installed properly run the following command:
```
go install; go test -v -p 1 $(go list ./... | grep -v '/vendor/')
```
## IRC ## IRC
* irc.freenode.net * irc.freenode.net
* channel #lnd * channel #lnd
* [webchat](https://webchat.freenode.net/?channels=lnd) * [webchat](https://webchat.freenode.net/?channels=lnd)
## License ## Further reading
`lnd` is licensed under the [MIT license](https://github.com/lightningnetwork/lnd/blob/master/LICENSE). * [Step-by-step send payment guide with docker](https://github.com/lightningnetwork/lnd/tree/master/docker)
* [Contribution guide](https://github.com/lightningnetwork/lnd/blob/master/docs/code_contribution_guidelines.md)