lnd/docs/release-notes/release-notes-0.14.0.md
Oliver Gugger f60a1ba0ce
Merge pull request #5699 from guggero/lncli-deletepayment
lncli: add deletepayments command
2021-09-27 13:41:41 +02:00

18 KiB

Release Notes

Networking & Tor

A new flag has been added to enable a hybrid tor connectivity mode, where tor is only used for onion address connections, and clearnet for everything else. This new behavior can be added using the tor.skip-proxy-for-clearnet-targets flag.

LN Peer-to-Peer Netowrk

Bitcoin Blockheaders in Ping Messages

In this release, we implement a long discussed mechanism to use the Lightning Network as a redundant block header source. By sending our latest block header with each ping message, we give peers another source (outside of the Bitcoin P2P network) they can use to spot check their chain state. Peers can also use this information to detect if they've been eclipsed from the traditional Bitcoin P2P network itself.

As is, we only send this data in Ping messages (which are periodically sent), in the future we could also move to send them as the partial payload for our pong messages, and also randomize the payload size requested as well.

The ListPeers RPC call will now also include a hex encoded version of the last ping message the peer has sent to us.

Backend Enhancements & Optimizations

Full remote database support

lnd now stores all its data in the same remote/external database such as etcd instead of only the channel state and wallet data. This makes lnd fully stateless and therefore makes switching over to a new leader instance almost instantaneous. Read the guide on leader election for more information.

Postgres database support

This release adds support for Postgres as a database backend to lnd. Postgres has several advantages over the default bbolt backend:

  • Better handling of large data sets.
  • On-the-fly database compaction (auto vacuum).
  • Database replication.
  • Inspect data while lnd is running (bbolt opens the database exclusively).
  • Usage of industry-standard tools to manage the stored data, get performance metrics, etc.

Furthermore, the SQL platform opens up possibilities to improve lnd's performance in the future. Bbolt's single-writer model is a severe performance bottleneck, whereas Postgres offers a variety of locking models. Additionally, structured tables reduce the need for custom serialization/deserialization code in lnd, saving developer time and limiting the potential for bugs.

Instructions for enabling Postgres can be found in docs/postgres.md.

Protocol Extensions

Explicit Channel Negotiation

[A new protocol extension has been added known as explicit channel negotiation] (https://github.com/lightningnetwork/lnd/pull/5669). This allows a channel initiator to signal their desired channel type to use with the remote peer. If the remote peer supports said channel type and agrees, the previous implicit negotiation based on the shared set of feature bits is bypassed, and the proposed channel type is used.

RPC Server

Batched channel funding

Multiple channels can now be opened in a single transaction in a safer and more straightforward way by using the BatchOpenChannel RPC or the command line version of that RPC called lncli batchopenchannel. More information can be found in the PSBT documentation.

Wallet

  • It is now possible to fund a psbt without specifying any outputs. This option is useful for CPFP bumping of unconfirmed outputs or general utxo consolidation.

  • The internal wallet can now also be created or restored by using an extended master root key (xprv) instead of an aezeed only. This allows wallet integrators to use existing seed mechanism that might already be in place. It is still not supported to use the same seed/root key on multiple lnd instances simultaneously though.

  • Publish transaction is now reachable through lncli.

  • Prior to this release, when running on simnet or regtest, lnd would skip the check on wallet synchronization during its startup. In doing so, the integration test can bypass the rule set by bitcoind, which considers the node is out of sync when the last block is older than 2 hours(more discussion). This synchronization check is put back now as we want to make the integration test more robust in catching real world situations. This also means it might take longer to start a lnd node when running in simnet or regtest, something developers need to watch out from this release.

Security

Admin macaroon permissions

The default file permissions of admin.macaroon were changed from 0600 to 0640. This makes it easier to allow other users to manage LND. This is safe on common Unix systems because they always create a new group for each user.

If you use a strange system or changed group membership of the group running LND you may want to check your system to see if it introduces additional risk for you.

Safety

Build System

Documentation

Misc

Code Health

Code cleanup, refactor, typo fixes

Database

Performance improvements

  • Update MC store in blocks to make payment throughput better when using etcd.

  • The lnwire package now uses a write buffer pool when encoding/decoding messages. Such that most of the heap escapes are fixed, resulting in less memory being used when running lnd.

  • [lnd will now no longer (in a steady state) need to open a new database transaction each time a private key needs to be derived for signing or ECDH operations]https://github.com/lightningnetwork/lnd/pull/5629). This results in a massive performance improvement across several routine operations at the

  • [When decrypting incoming encrypted brontide messages on the wire, we'll now properly re-use the buffer that was allocated for the ciphertext to store the plaintext]https://github.com/lightningnetwork/lnd/pull/5622). When combined with the buffer pool, this ensures that we no longer need to allocate a new buffer each time we decrypt an incoming message, as we recycle these buffers in the peer.

Log system

Bug Fixes

Documentation

The code contribution guidelines have been updated to mention the new requirements surrounding updating the release notes for each new change.

Contributors (Alphabetical Order)

  • Alyssa Hertig
  • Andras Banki-Horvath
  • de6df1re
  • ErikEk
  • Eugene Siegel
  • Harsha Goli
  • Martin Habovstiak
  • Naveen Srinivasan
  • Oliver Gugger
  • Wilmer Paulino
  • xanoni
  • Yong Yu
  • Zero-1729