8.8 KiB
Release Notes
DB
-
Split channeldb
UpdateInvoiceimplementation logic in different update types.
Watchtowers
-
Let the task pipeline only carry wtdb.BackupIDs instead of the entire retribution struct. This reduces the amount of data that needs to be held in memory.
-
Replay pending and un-acked updates onto the main task pipeline if a tower is being removed
-
Add defaults to the wtclient and watchtower config structs and use these to populate the defaults of the main LND config struct so that the defaults appear in the
lnd --helpcommand output. -
The deprecated "wtclient.private-tower-uris" option has also been removed. This field was deprecated in v0.8.0-beta.
Misc
-
Ensure that both the byte and string form of a TXID is populated in the lnrpc.Outpoint message.
-
Fix Benchmark Test (BenchmarkReadMessage/Channel_Ready) in the lnwire package
-
HTLC serialization updated to allow storing extra data transmitted in TLVs.
RPC
-
SendOutputs now adheres to the anchor channel reserve requirement.
-
Enforce provided fee rate is no less than the relay or minimum mempool fee when calling
OpenChannel,CloseChannel,SendCoins, andSendMany. -
The UpdateNodeAnnouncement API can no longer be used to set/unset protocol features that are defined by LND.
-
Neutrinorpc getblockhash has been deprecated. Endpoint has been moved to the chainrpc sub-server.
Custom node announcement feature bits can also be specified in config using the
devbuild tag and--protocol.custom-nodeann,--protocol.custom-initand--protocol.custom-invoiceflags to set feature bits for various feature "sets", as defined in BOLT 9. -
OpenChannelnow accepts an optionalmemoargument for specifying a helpful note-to-self containing arbitrary useful information about the channel. -
PendingOpenChannelnow has the fieldfunding_expiry_blocksthat indicates the number of blocks until the funding transaction is considered expired. -
gRPC keepalive parameters can now be set in the configuration. The
lndconfiguration settingsgrpc.server-ping-timeandgrpc.server-ping-timeoutconfigure how oftenlndpings its clients and how long a pong response is allowed to take. The default values for there settings are improved over the gRPC protocol internal default values, so most users won't need to change those. Thegrpc.client-ping-min-waitsetting defines how often a client is allowed to pinglndto check for connection healthiness. Thelnddefault value of 5 seconds is much lower than the previously used protocol internal value, which means clients can now check connection health more often. For this to be activated on the client side, gRPC clients are encouraged to set the keepalive setting on their end as well (using thegrpc.keepalive_time_msoption in JavaScript or Python, or the equivalent setting in the gRPC library they are using, might be an environment variable or a different syntax depending on the programming language used) when creating long open streams over a network topology that might silently fail connections. A value ofgrpc.keepalive_time_ms=5100is recommended on the client side (adding 100ms to account for slightly different clock speeds). -
Fixed a bug where we didn't check for correct networks when submitting onchain transactions.
-
Fix non-deterministic behaviour in RPC calls for custom accounts. In theory, it should be only one custom account with a given name. However, due to a lack of check, users could have created custom accounts with various key scopes. The non-deterministic behaviours linked to this case are fixed, and users can no longer create two custom accounts with the same name.
Misc
-
Generate default macaroons independently on wallet unlock or create.
-
Restore support for
PKCS8-encoded cert private keys. -
Add
--unusedtolncli newaddrcommand.
Code Health
Testing
-
Started running fuzz tests in CI.
-
Derandomized the BOLT 8 fuzz tests.
-
Improved invoice fuzz tests.
-
Added fuzz tests for signature parsing and conversion.
-
Added a fuzz test for watchtower address iterators.
-
Simplify fuzz tests using the
requirepackage.
lncli
-
Added ability to use ENV variables to override
lncliglobal flags. Flags will have preference over ENVs. -
The
lncli sendcoinscommand now asks for manual confirmation when invoked on the command line. This can be skipped by adding the--force(or-f) flag, similar to howlncli payinvoiceworks. To not break any existing scripts the confirmation is also skipped ifstdoutis not a terminal/tty (e.g. when capturing the output in a shell script variable or piping the output to another program).
Bug Fix
-
Make sure payment stream returns all the events by subscribing it before sending.
-
Fixed a memory leak found in mempool management handled by
btcwallet. -
Updated bbolt to v1.3.7 in order to address mmap issues affecting certain older iPhone devices.
-
Stop rejecting payments that overpay or over-timelock the final hop
-
Fix an issue where IPv6 couldn't be dialed when using Tor, even when
tor.skip-proxy-for-clearnet-targets=truewas set.
Tooling and documentation
-
Add support for custom
RPCHOSTandRPCCRTPATHto thelndDocker image main script (/start-lnd.sh). -
Fix bug in
scripts/verify-install.shthat caused the release binary signature verification script to not properly import signing keys when being run with new version ofgpg(which is the case in the latest Docker image).
Contributors (Alphabetical Order)
- Aljaz Ceru
- BhhagBoseDK
- Carla Kirk-Cohen
- Daniel McNally
- Elle Mouton
- Erik Arvstedt
- ErikEk
- gabbyprecious
- Guillermo Caracuel
- Hampus Sjöberg
- hieblmi
- Jordi Montes
- Keagan McClelland
- Konstantin Nick
- Lele Calo
- Matt Morehouse
- Maxwell Sayles
- Michael Street
- MG-ng
- Oliver Gugger
- Pierre Beugnet
- Satarupa Deb
- Shaurya Arora
- Torkel Rogstad
- Yong Yu
- ziggie1984
- zx9r