Announcing lnd v0.7-beta!

Neutrino
The first half of 2019 has been an exciting time for Lightning and for Bitcoin, and in those first six months, we at Lightning Labs are excited to have released Lightning Loop, lnd v0.6-beta, our desktop Lightning App for Linux, OSX and Windows, our mobile Lightning App for Android and iOS, as well as Loop In! To begin the second half of 2019, today we’re announcing the release of lnd v0.7-beta. lnd v0.7-beta includes many improvements, most notably Watchtowers, more accurate payment tracking, more on-chain fee control, and more efficient routing. A few of the highlights are outlined below, but you can read the full release notes for further details.

Watchtowers


The most apparent new addition to lnd v0.7-beta is support for “watchtowers.” Watchtowers are an important security upgrade for the Lightning Network because they provide a means to prevent theft of funds from nodes that have gone offline for extended periods of time. A watchtower service observes the blockchain in order to ensure that any node that attempts to dishonestly take money from a channel counterparty using a type of invalid transaction (known as a “breach”) is blocked from doing so. The watchtower protocol is designed with privacy in mind so that information about channels and transactions are only decrypted in the (generally rare) case of a breach attempt.

lnd v0.7-beta provides for running lnd in “altruist” watchtower mode, in which an operator can provide watchtower services without requiring payment. Additional development is ongoing for “reward” watchtowers, which are paid for their services. For those who would like to operate their own watchtower, see the release notes for instructions. If you’d like to learn more, you can listen to Stephan Livera Podcast episode #83 with Conner Fromknecht, our Head of Cryptographic Engineering, for helpful background on watchtowers.

Payment Management and Tracking


Another major area of improvement in lnd v0.7-beta is in the area of payment management and tracking. In order to make the lifecycle of Lightning Payments more explicit to developers, we’ve added a new set of RPCs to be used for sending and tracking payments in the network. These two new RPCs are part of the “router sub-server,” with the main benefit being the ability to track the current status of a given payment directly. There are many reasons why a Lightning node (particularly a mobile node) might shut down in the midst of processing a payment, and a number of additions to lnd were made to reflect the accurate state of payments upon node restart. The TrackPayment RPC call can be used to check if a payment was initiated before the last restart, or to show details about the ultimate success or failure of past payments. This information is particularly useful for services that use lnd’s “hodl invoice” functionality, including Lightning Loop In. With these services, payments can stay in intermediate states for longer periods of time, so proper tracking of payment states in case of shutdown is even more important.

Routing


As always, we’re continuing to make payment routing faster and more reliable. “Mission Control” is the lnd subsystem responsible for pathfinding, and in lnd v0.7-beta, Mission Control has been updated to use a probability-based system that allows an lnd node to learn and improve pathfinding performance over time. This system also provides important groundwork for future routing improvements.

Some additional routing-related changes in lnd v0.7-beta improve error messaging, increase control, and provide more detailed information about payments in progress. Finally, some changes to invoice settling were made in preparation for atomic multi-path payments.

Chain fee management


Reducing costs for Lightning users is always important, and in lnd v0.7-beta a number of changes were made to minimize on-chain transaction costs. Most obviously, there are many use cases in which fees for Lightning-related operations can be significantly lowered for users or services that are able to wait longer for transaction confirmation. In part to support these cases, lnd v0.7-beta includes support for Replace-By-Fee (RBF) and Child-Pays-For-Parent (CPFP) transactions. This support allows transactions such as channel openings or closings to be initially broadcast with low fees that can be set to escalate over time according to the requirements of the particular use case. The external interface will evolve over time, but for now a basic bumpfee CLI command can be used to manually increase the fee for a transaction.

In addition to RBF and CPFP support, lnd v0.7-beta also provides support for batching transactions together, which can significantly lower fees, especially for those users or services that perform large amounts of on-chain transaction activity.

Finally, lnd will now wait longer for channels to open in case the channel initiator would prefer to wait longer and pay lower fees.

Performance


We’re continuing to optimize the speed of the initial blockchain synchronization for lnd full nodes and light clients, and for lnd v0.7-beta, two changes were made to support this. As a result, the time to bring up a new full node-backed lnd node has been reduced from over half an hour to minutes or seconds depending on your full node version. In addition to blockchain synchronization, Lightning nodes also synchronize the network channel graph, and two additional changes were made to improve performance there as well.

With the release of the mainnet Android and iOS Lightning App, support for light clients has become increasingly important, so lnd v0.7-beta also includes additional testing with Neutrino clients as well as improved reliability with Neutrino.

Developer improvements


Some lnd v0.7-beta improvements that are particularly relevant to developers include some RPC calls that now provide more complete information about transactions, invoices, nodes, and channels. For convenience, two changes for managing RPC certificates were added. Improved infrastructure for node monitoring was added, and Litecoin testing support was improved as well.

Bug fixes


Numerous smaller fixes were implemented in lnd v0.7-beta including an update for changes made in bitcoind 0.18. One protocol-level bug fix was made for a corner case involving “overlapping” HTLCs, and there were also bug fixes involving fee computation, the command-line interface, and channel backups on Windows.

Summary


Thanks again to everyone in the Lightning community who has contributed engineering or testing time to the release of lnd v0.7-beta as well as our App and Loop releases in Q1 and Q2 of 2019. The coming quarters promise even more growth of the network and the broader community, and we’re excited for what’s in store. Please continue to stay in touch with us on the #lnd IRC channel, Slack, and Github!