Hi y'all,
The third release candidate for the upcoming 0.15 has been released!
Compared to the prior versions, this version is much more stable as some
kinks in the migration that allows for a 95% reduction in disk space
consumed by channel updates have been worked out. I'd expect at least one
more release candidate to patch a minor RPC issue we've found w/ the new
taproot PSBT signing capabilities.
The release itself can be found here:
https://github.com/lightningnetwork/lnd/releases/tag/v0.15.0-beta.rc3 With the current draft of release notes here:
https://github.com/lightningnetwork/lnd/blob/master/docs/release-notes/release-notes-0.15.0.mdThis release certainly has arrived a bit later that we anticipated, but we
wanted to make sure all the new taproot functionality was a fully featured
as possible, and also wanted to ensure that we addresses the existing
database growth issues (w/ 0.15 it isn't much of any issue anymore). The
release also has nearly 50 contributors which is very exciting as it may be
the highest number of external contributions we've had in a release to date!
This release contains a number of important bug and stability fixes and the
following major features:
* The amount of space needed to track revocation related channel state has
been reduced by 96%! This release doesn't yet reclaim _old_ state
however. This will be implemented via an optional migration scheduled to
be packaged as part of 0.15.1.
* Support for including payment meta data in invoices which can be used to
implement stateless invoices.
* Complete taproot support for the internal wallet, making it one of the
most advanced taproot wallets today. With this release lnd has the
ability to:
* Generate P2TR addresses for receiving (`lncli newaddress p2tr), and
also sending support both via bech32m.
* Use the new PSBT extensions to fund+populate+validate an empty or
complete PSBT, along with signing logic for: normal keyspend paths,
BIP 86 keyspend paths, and also tapscript signing.
* Import schnorr public keys to implement a watch-only P2TR wallet
system.
The aezeeed version has also been bumped to 1, which allows future
wallet software to cut down on the amount of addresses it needs to
search since the mnemonic itself encodes the capabilities of the
wallet/seed. An offline tool will be provided for those that wish to
"upgrade" the aezeed to version 1. Bumping the seed in this manner
allows for any other 3rd party rescanning/import tool to be simplified
as it doesn't need to prompt the user for: legacy, segwit, taproot, etc.
* Support for an experimental musig2 API compliant with the latest BIP
draft. This is marked as experimental as things may still change, but
the set of APIs are complete enough for Lightning Labs to begin
integrating musig2 based multi-party signing into various systems we
operate. Care has been taken to make the API hard to misuse via the way
it manages nonce/session state.
* Neutrino now supports BIP 155, meaning it can connect to Tor v3 hidden
services.
* Neutrino also has a brand new sub-server
(
https://api.lightning.community/#service-neutrinokit) which allows
users to do things like connect/disconnect peers, fetch headers/blocks,
etc. Future iterations will enable functionality such as doing custom
rescans using the filters and also introspecting further into the sync
state.
* A new polling option for bitcoind has been added! This gives users that
don't run bitcoind w/ zmq compiled in another option. A series of new
options have been added that control the transaction+block polling
interval.
* A new `time_pref` option has been added to the payment APIs which allow
a user to control the trade-off between payment execution speed and
total fees spent. A value of -1 means optimize for fees only (lowest
cost route), 0 is default, and 1 attempts to optimize for reliability
(based on the probabilistic model).
The 0.16 release will ideally start to implement some path finding
changes based on some active research on going in this area
(
https://github.com/lightningnetwork/lnd/issues/5988#issuecomment-1131234858).
* The HTLC interoceptor can now be notified of HTLCs that hit the chain,
and also have full control over failure messages.
* All mobile sub-servers are now built by default, which means lnd nodes
running on mobile platforms gain access to things like the new musig2
signing API, and all the existing on-chain monitoring/confirmation APIs.
* A new flag (`--prometheus.perfhistograms=true`) has been added which
allows Prometheus to scrape gRPC related perf/latency information. This
can be used to keep track of performance degradations or unintended RPC
load.
I'm probably missing some things, but check out the full release notes for
the rest of the details!
In terms of future releases, we plan to fast follow with an 0.15.1 release
that includes some items that didn't quite make it into 0.15. From there
0.16 will attempt to return back to the normal quarterly-ish schedule which
will target some additional fundamental database improvements, and also an
early version of private taproot channels amongst other things.
As usual, feel free to reach out to me if you have any questions/concerns
w.r.t updating.
-- Laolu