0.5.0 - Apr. 29, 2025
Besides numerous API improvements and bugfixes this fifth minor release notably adds support for sourcing chain and fee rate data from an Electrum backend, requesting channels via the bLIP-51 / LSPS1 protocol, as well as experimental support for operating as a bLIP-52 / LSPS2 service.
Feature and API updates
- The
PaymentSuccessful
event now exposes apayment_preimage
field (#392). - The node now emits
PaymentForwarded
events for forwarded payments (#404). - The ability to send custom TLVs as part of spontaneous payments has been added (#411).
- The ability to override the used fee rates for on-chain sending has been added (#434).
- The ability to set a description hash when creating a BOLT11 invoice has been added (#438).
- The ability to export pathfinding scores has been added (#458).
- The ability to request inbound channels from an LSP via the bLIP-51 / LSPS1 protocol has been added (#418).
- The
ChannelDetails
returned byNode::list_channels
now exposes fields for the channel's SCIDs (#444). - Lightning peer-to-peer gossip data is now being verified when syncing from a Bitcoin Core RPC backend (#428).
- The logging sub-system was reworked to allow logging to backends using the Rust
log
facade, as well as via a custom logger trait (#407, #450, #454). - On-chain transactions are now added to the internal payment store and exposed via
Node::list_payments
(#432). - Inbound announced channels are now rejected if not all requirements for operating as a forwarding node (set listening addresses and node alias) have been met (#467).
- Initial support for operating as an bLIP-52 / LSPS2 service has been added (#420).
- Note: bLIP-52 / LSPS2 support is considered 'alpha'/'experimental' and should not yet be used in production.
- The
Builder::set_entropy_seed_bytes
method now takes an array rather than aVec
(#493). - The builder will now return a
NetworkMismatch
error in case of network switching (#485). - The
Bolt11Jit
payment variant now exposes a field telling how much fee the LSP withheld (#497). - The ability to disable syncing Lightning and on-chain wallets in the background has been added. If it is disabled, the user is responsible for running
Node::sync_wallets
manually (#508). - The ability to configure the node's announcement addresses independently from the listening addresses has been added (#484).
- The ability to choose whether to honor the Anchor reserves when calling
send_all_to_address
has been added (#345). - The ability to sync the node via an Electrum backend has been added (#486).
Bug Fixes and Improvements
- When syncing from Bitcoin Core RPC, syncing mempool entries has been made more efficient (#410, #465).
- We now ensure the our configured fallback rates are used when the configured chain source would return huge bogus values during fee estimation (#430).
- We now re-enabled trying to bump Anchor channel transactions for trusted counterparties in the
ContentiousClaimable
case to reduce the risk of losing funds in certain edge cases (#461). - An issue that would potentially have us panic on retrying the chain listening initialization when syncing from Bitcoin Core RPC has been fixed (#471).
- The
Node::remove_payment
now also removes the respective entry from the in-memory state, not only from the persisted payment store (#514).
Compatibility Notes
- The filesystem logger was simplified and its default path changed to
ldk_node.log
in the configured storage directory (#394). - The BDK dependency has been bumped to
bdk_wallet
v1.0 (#426). - The LDK dependency has been bumped to
lightning
v0.1 (#426). - The
rusqlite
dependency has been bumped to v0.31 (#403). - The minimum supported Rust version (MSRV) has been bumped to v1.75 (#429).
In total, this release features 53 files changed, 6147 insertions, 1193 deletions, in 191 commits from 14 authors in alphabetical order:
- alexanderwiederin
- Andrei
- Artur Gontijo
- Ayla Greystone
- Elias Rohrer
- elnosh
- Enigbe Ochekliye
- Evan Feenstra
- G8XSU
- Joost Jager
- maan2003
- moisesPompilio
- Rob N
- Vincenzo Palazzo
Please note the attached LDKNodeFFI.xcframework
archive is intended to be used via SwiftPM.