v0.0.105
API Updates
Phantom node
payments are now supported, allowing receipt of a payment on
any one of multiple nodes without any coordination across the nodes being
required. See the newPhantomKeysManager
's docs for more, as well as
requirements onKeysInterface::get_inbound_payment_key_material
and
lightning_invoice::utils::create_phantom_invoice
(#1199).- In order to support phantom node payments, several
KeysInterface
methods
now accept aRecipient
parameter to select between the localnode_id
and
a phantom-specific one. ProbabilisticScorer
, aScore
based on learning the current balances of
channels in the network, was added. It attempts to better capture payment
success probability than the existingScorer
, though may underperform on
nodes with low payment volume. We welcome feedback on performance (#1227).Score::channel_penalty_msat
now always takes the channel value, instead of
anOption
(#1227).UserConfig::manually_accept_inbound_channels
was added which, when set,
generates a newEvent::OpenChannelRequest
, which allows manual acceptance
or rejection of incoming channels on a per-channel basis (#1281).Payee
has been renamed toPaymentParameters
(#1271).PaymentParameters
now has amax_total_cltv_expiry_delta
field. This
defaults to 1008 and limits the maximum amount of time an HTLC can be pending
before it will either fail or be claimed (#1234).- The
lightning-invoice
crate now supports no-std environments. This required
numerous API changes around timestamp handling and std+no-std versions of
several methods that previously assumed knowledge of the time (#1223, #1230). lightning-invoice
now supports parsing invoices with expiry times of more
than one year. This required changing the semantics ofExpiryTime
(#1273).- The
CounterpartyCommitmentSecrets
is now public, allowing external uses of
theBOLT 3
secret storage scheme (#1299). - Several
Sign
methods now receive HTLC preimages as proof of state
transition, see new documentation for more (#1251). KeysInterface::sign_invoice
now provides the HRP and other invoice data
separately to make it simpler for external signers to parse (#1272).Sign::sign_channel_announcement
now returns both the node's signature and
the per-channel signature.InMemorySigner
now requires the node's secret
key in order to implement this (#1179).ChannelManager
deserialization will now fail if theKeysInterface
used
has a differentnode_id
than theChannelManager
expects (#1250).- A new
ErrorAction
variant was added to sendwarning
messages (#1013). - Several references to
chain::Listen
objects inlightning-block-sync
no
longer require a mutable reference (#1304).
Bug Fixes
- Fixed a regression introduced in 0.0.104 where
ChannelManager
's internal
locks could have an order violation leading to a deadlock (#1238). - Fixed cases where slow code (including user I/O) could cause us to
disconnect peers with ping timeouts inBackgroundProcessor
(#1269). - Now persist the
ChannelManager
prior toBackgroundProcessor
stopping,
preventing race conditions where channels are closed on startup even with a
clean shutdown. This requires that users stop network processing and
disconnect peers prior toBackgroundProcessor
shutdown (#1253). - Fields in
ChannelHandshakeLimits
provided via theoverride_config
to
create_channel
are now applied instead of the default config (#1292). - Fixed the generation of documentation on docs.rs to include API surfaces
which are hidden behind feature flags (#1303). - Added the
channel_type
field toaccept_channel
messages we send, which
may avoid some future compatibility issues with other nodes (#1314). - Fixed a bug where, if a previous LDK run using
lightning-persister
crashed
while persisting updated data, we may have failed to initialize (#1332). - Fixed a rare bug where having both pending inbound and outbound HTLCs on a
just-opened inbound channel could causeChannelDetails::balance_msat
to
underflow and be reported as large, or cause panics in debug mode (#1268). - Moved more instances of verbose gossip logging from the
Trace
level to the
Gossip
level (#1220). - Delayed
announcement_signatures
until the channel has six confirmations,
slightly improving propagation of channel announcements (#1179). - Several fixes in script and transaction weight calculations when anchor
outputs are enabled (#1229).
Serialization Compatibility
- Using
ChannelManager
data written by versions prior to 0.0.105 will result
in preimages for HTLCs that were pending at startup to be missing in calls
toKeysInterface
methods (#1251). - Any phantom invoice payments received on a node that is not upgraded to
0.0.105 will fail with an "unknown channel" error. Further, downgrading to
0.0.104 or before and then upgrading again will invalidate existing phantom
SCIDs which may be included in invoices (#1199).
Security
0.0.105 fixes two denial-of-service vulnerabilities which may be reachable from
untrusted input in certain application designs.
- Route calculation spuriously panics when a routing decision is made for a
path where the second-to-last hop is a private channel, included due to a
multi-hop route hint in an invoice. ChannelMonitor::get_claimable_balances
spuriously panics in some scenarios
when the LDK application's local commitment transaction is confirmed while
HTLCs are still pending resolution.
In total, this release features 109 files changed, 7270 insertions, 2131
deletions in 108 commits from 15 authors, in alphabetical order:
- Conor Okus
- Devrandom
- Elias Rohrer
- Jeffrey Czyz
- Jurvis Tan
- Ken Sedgwick
- Matt Corallo
- Naveen
- Tibo-lg
- Valentine Wallace
- Viktor Tigerström
- dependabot[bot]
- hackerrdave
- naveen
- vss96