Skip to content

lnd v0.1.1-alpha

Pre-release
Pre-release
Compare
Choose a tag to compare
@Roasbeef Roasbeef released this 18 Jan 02:27
· 17043 commits to master since this release

This release marks the first minor point release after the initial release of lnd v0.1-alpha.

This release contains a number of bug fixes reported by testers exercising the prior release on testnet which were reported on IRC (#lnd on freenode), and also encountered via various interactions with the current proto Lightning Network developing on test. Some RPC's have had their responses augmented with additional data, but no new breaking change have been introduced in this release. Thanks to everyone that has been experimenting with lnd so far! Your feedback has been very valuable.

Notable Changes

Partial Channel Advertisement

Before this release, there was an implicit assumption in the daemon that both directed edges of a channel would always be advertised within the network. This assumption is false as whether or not to advertise the directed edge of the channel they control is a matter of node policy. This assumption led to a series of bugs when only one half of a ChannelUpdateAnnouncement was propagated through the network.

This release now properly supports partial channel advertisement by properly handling the non-existence of a directed of a channel with the ChannelGraph, ChannelRouter, and rpcSever.

Minimum Channel Size

Currently within the daemon, due to hardcoded fees in certain areas, the minimum channel size is 6000 SAT. Before this release creation of a channel funded with less than 6000 SAT would be allowed, but then the node would find that they were unable to close the channel due to the attempted creation of a negative valued output.

Full dynamic fee calculation and usage is planned for lnd, but until then, we now enforce a soft-limit on the minimum channel size that the daemon will created. To reiterate, this a temporary change and will be lifted in a future release.

Full Docker Configuration for Testnet

With this release, we now include a full docker configuration set up that will make it much easier to set up lnd. Within the new README for the docker package, we now outline two workflows for using the new configuration.

The first workflow walks the user through setting up a test Lightning Network cluster on their local machine using simnet. This set up can be useful to debug new features one is attempting to add to lnd or just to experiment with the capabilities of the daemon on a private network constrained to your local machine. Think of it sort of as a lightning-network-in-a-box.

The second workflow targets Bitcoin's current testnet and cleanly packages up both lnd and btcd allowing users to deploy both and join the network with just a few docker related commands. This container set up has been fashioned such that one doesn't even need Go or any other dependancies installed on their local machine before booting up lnd. The docker configuration will handle all the ncessary set up within the created containers.

RPC Interface Modifications:

Two new RPC commands have been added to lnd.

The first is the debuglevel command. This command lets uses modify the verbosity level of lnd's logs via the command line interface, or directly using gRPC. The RPC can either target a caorse grained, daemon wide logging level:

lncli debuglevel --level=debug

Or instead target a set of specific sub-systems with a more fine-grained level-spec target:

lncli debuglevel --level=PEER=trace

The second new RPC packaged as a part of this release is the decodepayreq command. This command allows users to decode an encoded payment request in order to obtain the exact conditions of the encoded payment request.

Example usage:

▶ lncli decodepayreq --pay_req=yep3c3bqqe43f5ombfca89t4r5rmenhjr4me5n5ind1t3fbj4tmn3jpyi4peh53jaoy7em4xoaxfcg7o7ircwcfb3dwz9najwfuhe5mbyyyyyyyyyyb6tg9yuk1y
{
    "destination": "021b96642e723592ee0b095983fe3a26c8b40b8926968d8b7510e51c9429d4562c",
    "payment_hash": "a5a0ae9a8e6f29c401d42f4f861e561bb0ed48ca30a1c8e97f8b09a167c46d61",
    "num_satoshis": 1000
}%

The final RPC interface modification concerts the sendpayment RPC command. The RPC command now returns the full route the payment took within the network to arrive at the target destination. This slight change gives users a greater degree of visibility into the network, detailing the fees and total time-lock required for the route.

Example usage:

github.com/lightningnetwork/lnd  master ✗                                                                                                                                                                      4d ◒
▶ lncli sendpayment --pay_req=yep3c3bqqe43f5ombfca89t4r5rmenhjr4me5n5ind1t3fbj4tmn3jpyi4peh53jaoy7em4xoaxfcg7o7ircwcfb3dwz9najwfuhe5mbyyyyyyyyyyb6tg9yuk1y
{
    "payment_route": {
        "total_time_lock": 2,
        "total_amt": 1000,
        "hops": [
            {
                "chan_id": 1191986053231738880,
                "chan_capacity": 100000000,
                "amt_to_forward": 1000
            },
            {
                "chan_id": 1190997592276926465,
                "chan_capacity": 100000000,
                "amt_to_forward": 1000
            }
        ]
    }
}%

0.1.1-alpha Change Log

Docs

  • 1e8a801 -- docs: update INSTALL.md with new btcd commit hash, correct instructions

Database

  • 5c41167 -- channeldb: return correct error when unable to find node
  • 7a36fb4 -- channeldb: fix assumption that both channel edges will always be advertised
  • 0c7fcb1 -- routing: fix nil pointer panic when node has no outgoing channels
  • 7312565 -- routing: allow full syncing graph state with partially advertised edges
  • e7631c9 -- rpcserver: ensure graph RPC's work with partially advertised channels

Wire Protocol

  • d884efe -- lnwire+lnd: Make Logging Messages Great Again
  • f82d957 -- lnwire+peer: introduce new error for unknown message type for forward compat

RPC

  • 6a67d48 -- lnrpc: add CloseChannel to README description of RPC calls
  • d79530e -- lnrpc: add encoded payment requests to the ListInvoices response
  • 0bfdcde -- rpcserver: include encoded payment requesting ListInvoices response
  • 9b4ac77 -- rpcserver: allow channels to be opened using --node_id
  • 6beaa7f -- lnrpc: add DebugLevel command
  • 012480b -- rpcsever: implement DebugLevel command
  • ee96052 -- cmd/lncli: add parsing+dispatch for the debuglevel command
  • 765d9fd -- lnrpc: return route taken in SendPayment response
  • 7d6d818 -- rpcserver: return full path payments go over in SendPayment
  • fb523ff -- rpcserver: add a min channel size for funding requests
  • 440cf6f -- rpcserver: properly limit min channel size
  • faae0b3 -- lnrpc: add new RPC to decode payment requests
  • 9662887 -- rpcserver+cmd/lncli: implement DecodePayReq

Lightning Payments

  • 99c1ef6 -- lnd: add additional logging statement on payment recv

Typos

  • 9588861 -- multi: minor fixes for README's
  • #99 51d53ea -- test: fix typos
  • #101 40c7bac -- multi: fix a variety of typos throughout the repo

ChainNotifier

  • cc4617c -- chainntnfs: break out of loop once txIndex is found

On-Chain Channel Events

  • 8990de4 -- breacharbiter: ensure failure to retrieve channels triggers start-up error
  • 1cbdf64 -- utxonursery: ensure we don't attempt to create negative value'd outputs

Configuration

  • d7a050b -- config: remove deprecated configuration parameters

README

  • #100 a13ac90 -- multi: add link to LICENSE in README license badges
  • #99 299217a -- README: reformat and add IRC badge

Docker

  • #99 a421069 -- docker: add send payment alice->bob workflow for newcomers
  • a070d41 -- docker: add example output to commands in workflow
  • be66e03 -- docker: general improvements
  • 67b300f -- docker: make blockchain persistant
  • 0948bc3 -- docker: add BITCOIN_NETWORK param
  • 0325b0c -- docker: add 'Connect to faucet lightning node' section in readme
  • 49df1b0 -- docker: make 'lnd' dockerfile download project from github rather than mount it localy

Build

  • e057684 -- travis: update build to go1.7.4
  • ff74d83 -- build: add release script
  • c40cb49 -- build: update glide.lock to latest commit hashes
  • 6405b1c -- glide: pin sphinx package dependency at the commit level

Integration Tests

  • dc28052 -- test: fix logging messages for funding push test
  • 5c6d196 -- test: reject non-standard transactions in integration tests

Wallet

  • c451258 -- lnwallet: properly detect initiator cooperative close in closeObserver
  • ae72475 -- lnwallet: create channel close summary when commitment broadcast detected
  • 55f89be -- lnwallet+lnd: ensure curve parameters are set to avoid panics
  • e60f40b -- lnwallet: fix bug with funding channels with 50/50 balances

Channel Funding

  • eb1509a -- funding: properly display channel funding point in handleFundingOpen

Contributors (alphabetical order):

Thanks to everyone who contributed towards this release!

  • AndrewSamokhvalov
  • Christopher Jämthagen
  • Olaoluwa Osuntokun
  • Trevin Hofmann