11 KiB
Release Notes
Security
Taproot
The internal on-chain wallet of lnd
is now able to create and spend from
Taproot (SegWit v1)
addresses. Using
lncli newaddress p2tr
will create a new BIP-0086 keyspend only address and
then watch it on chain. Taproot script spends are also supported through the
signrpc.SignOutputRaw
RPC (/v2/signer/signraw
in REST).
lncli
-
Add auto-generated command-line completions for Fish shell.
-
Add chan_point flag to closechannel command.
-
Add private status to pendingchannels response.
Bug Fixes
-
Fixed an inactive invoice subscription not removed from invoice registry. When an invoice subscription is created and canceled immediately, it could be left uncleaned due to the cancel signal is processed before the creation. It is now properly handled by moving creation before deletion.
-
When the block height+delta specified by a network message is greater than the gossiper's best height, it will be considered as premature and ignored. These premature messages are now saved into a cache and processed once the height has reached.
-
Fixed failure to limit our number of hop hints in private invoices. When a private invoice is created, and the node had > 20 (our hop hint limit) private channels with inbound > invoice amount, hop hint selection would add too many hop hints. When a node had many channels meeting this criteria, it could result in an "invoice too large" error when creating invoices. Hints are now properly limited to our maximum of 20.
-
Added signature length validation when calling
NewSigFromRawSignature
. -
Fixed a bug that would cause lnd to be unable to parse certain PSBT blobs.
-
Use normal TCP resolution, instead of Tor DNS resolution, for addresses using the all-interfaces IP.
Misc
-
An example systemd service file for running lnd alongside a bitcoind service is now provided in
contrib/init/lnd.service
. -
Allow disabling migrations if the database backend passed to
channeldb
was opened in read-only mode. -
Disable compiler optimizations when building
lnd-debug
andlncli-debug
. It helps when stepping through the code with a debugger like Delve. -
A new command
lncli leaseoutput
was added. -
A nightly build of the
lnd
docker image is now created automatically. -
Add default values to walletrpc.ListUnspent RPC call.
-
Chain backend healthchecks disabled for --nochainbackend mode
-
The
tlv
package was refactored into its own Golang submodule. -
The
tor
package was refactored into its own Golang submodule and a new process for changing and tagging submodules was introduced in a series of 3 PRs (#6350, #6355 and #6356). -
Source repository can now be specified for Docker image builds
-
Make etcd leader election session TTL configurable.
-
A new config option,
pending-commit-interval
is added. This value specifies the maximum duration it allows for a remote peer to respond to a locally initiated commitment update. -
macos
andapple
Makefile tasks have been added.The
macos
task usesgomobile
to build anXCFramework
that can be used to embed lnd to macOS apps, similar to how theios
task builds for iOS.The
apple
task usesgomobile
to build anXCFramework
that can be used to embed lnd to both iOS and macOS apps.
RPC Server
-
Add value to the field
remote_balance
inpending_force_closing_channels
underpendingchannels
whereas before was empty(zero). -
The graph's diameter is calculated and added to the
getnetworkinfo
output. -
Extend the HTLC interceptor API to provide more control over failure messages. With this change, it allows encrypted failure messages to be returned to the sender. Additionally it is possible to signal a malformed htlc.
-
Add an always on mode to the HTLC interceptor API. This enables interception applications where every packet must be intercepted.
-
Add destination output information to the transaction structure returned from the RPC
GetTransactions
and when subscribed withSubscribeTransactions
. -
Support for making routes with the legacy onion payload format via
SendToRoute
has been removed.
Database
-
Add ForAll implementation for etcd to speed up graph cache at startup
-
Improve validation of a PSBT packet when handling a request to finalize it.
Documentation
- Improved instructions on how to build lnd for mobile.
- Log force-close related messages on "info" level.
Monitoring
Code Health
Code cleanup, refactor, typo fixes
-
Refactored itest to better manage contexts inside integration tests.
-
Fix itest not picking up local config file or creating directories in home dir of the user.
-
A refactor of
SelectHopHints
allows code external to lnd to call the function, where previously it would require access to lnd's internals. -
rpc-check fails if it finds any changes including new and deleted files.
-
The
golangci-lint
package was updated and new linters were enabled. -
The linting process now runs inside a docker container to fix versioning issues between projects.
-
The
whitespace
linter was enabled to make sure multi-lineif
conditions and function/method declarations are followed by an empty line to improve readability. Note to developers: please make sure you delete the old version ofgolangci-lint
in your$GOPATH/bin
directory.make lint
does not automatically replace it with the new version if the binary already exists! -
The channel-commit-interval is now clamped to a reasonable timeframe of 1h.
Contributors (Alphabetical Order)
- 3nprob
- Andras Banki-Horvath
- Andreas Schjønhaug
- asvdf
- bitromortac
- Bjarne Magnussen
- BTCparadigm
- Carla Kirk-Cohen
- Carsten Otto
- Dan Bolser
- Daniel McNally
- Elle Mouton
- ErikEk
- Eugene Siegel
- Hampus Sjöberg
- henta
- Joost Jager
- Jordi Montes
- LightningHelper
- Liviu
- mateuszmp
- Naveen Srinivasan
- Olaoluwa Osuntokun
- randymcmillan
- Rong Ou
- Thebora Kompanioni
- Torkel Rogstad
- Vsevolod Kaganovych
- Yong Yu