v0.0.106
API Updates
- Minimum supported rust version (MSRV) is now 1.41.1 (#1310).
- Lightning feature
option_scid_aliasis now supported and may be negotiated
when opening a channel with a peer. It can be configured via
ChannelHandshakeConfig::negotiate_scid_privacyand is off by default but
will be on by default in the future (#1351). OpenChannelRequestnow has achannel_typefield indicating the features
the channel will operate with and should be used to filter channels with
undesirable features (#1351). See the Serialization Compatibility section.ChannelManagersupports sending and receiving short channel id aliases in
thefunding_lockedmessage. These are used when forwarding payments and
constructing invoice route hints for improved privacy.ChannelDetailshas a
inbound_scid_aliasfield and aget_inbound_payment_scidmethod to support
the latter (#1311).DefaultRouterandfind_routetake an additional random seed to improve
privacy by adding a random CLTV expiry offset to each path's final hop. This
helps obscure the intended recipient from adversarial intermediate hops
(#1286). The seed is also used to randomize candidate paths during route
selection (#1359).- The
lightning-block-synccrate'sinit::synchronize_listenersmethod
interface has been relaxed to support multithreaded environments (#1349). ChannelManager::create_inbound_payment_for_hash's documentation has been
corrected to remove the one-year restriction oninvoice_expiry_delta_secs,
which is only applicable to the deprecatedcreate_inbound_payment_legacy
andcreate_inbound_payment_for_hash_legacymethods (#1341).Featuresmutator methods now takeselfby reference instead of by value
(#1331).- The CLTV of the last hop in a path is now included when comparing against
RouteParameters::max_total_cltv_expiry_delta(#1358). - Invoice creation functions in
lightning-invoicecrate'sutilsmodule
include versions that accept a description hash instead of only a description
(#1361). RoutingMessageHandler::sync_routing_tablehas been renamedpeer_connected
(#1368).MessageSendEvent::SendGossipTimestampFilterhas been added to indicate that
agossip_timestamp_filtershould be sent (#1368).PeerManagertakes an optionalNetAddressinnew_outbound_connectionand
new_inbound_connection, which is used to report back the remote address to
the connecting peer in theinitmessage (#1326).ChannelManager::accept_inbound_channelnow takes auser_channel_id, which
is used in a similar manner as in outbound channels. (#1381).BackgroundProcessornow persistsNetworkGraphon a timer and upon
shutdown as part of a newPersistertrait, which also includes
ChannelManagerpersistence (#1376).ProbabilisticScoringParametersnow has abase_penalty_msatoption, which
default to 500 msats. It is applied at each hop to help avoid longer paths
(#1375).ProbabilisticScoringParameters::liquidity_penalty_multiplier_msat's default
value is now 40,000 msats instead of 10,000 msats (#1375).- The
lightningcrate has agrind_signaturesfeature used to produce
signatures with low r-values for more predictable transaction weight. This
feature is on by default (#1388). ProbabilisticScoringParametersnow has aamount_penalty_multiplier_msat
option, which is used to further penalize large amounts (#1399).PhantomRouteHints,FixedPenaltyScorer, andScoringParametersnow
implementClone(#1346).
Bug Fixes
- Fixed a compilation error in
ProbabilisticScorerunder--feature=no-std
(#1347). - Invoice creation functions in
lightning-invoicecrate'sutilsmodule
filter invoice hints in order to limit the invoice size (#1325). - Fixed a bug where a
funding_lockedmessage was delayed by a block if the
funding transaction was confirmed while offline, depending on the ordering
ofConfirm::transactions_confirmedcalls when brought back online (#1363). - Fixed a bug in
NetGraphMsgHandlerwhere it didn't continue to receive
gossip messages from peers after initial connection (#1368, #1382). ChannelManager::timer_tick_occurredwill now timeout a received multi-path
payment (MPP) after three ticks if not received in full instead of waiting
until near the HTLC timeout block(#1353).- Fixed an issue with
find_routecausing it to be overly aggressive in using
MPP over channels to the same first hop (#1370). - Reduced time spent processing
channel_updatemessages by checking
signatures after checking if no newer messages have already been processed
(#1380). - Fixed a few issues in
find_routewhich caused preferring paths with a
higher cost (#1398). - Fixed an issue in
ProbabilisticScorerwhere a channel with not enough
liquidity could still be used when retrying a failed payment if it was on a
path with an overall lower cost (#1399).
Serialization Compatibility
- Channels open with
option_scid_aliasnegotiated will be incompatible with
prior releases (#1351). This may occur in the following cases:- Outbound channels when
ChannelHandshakeConfig::negotiate_scid_privacyis
enabled. - Inbound channels when automatically accepted from an
OpenChannelmessage
with achannel_typethat hasChannelTypeFeatures::supports_scid_privacy
return true. SeeUserConfig::accept_inbound_channels. - Inbound channels when manually accepted from an
OpenChannelRequestwith a
channel_typethat hasChannelTypeFeatures::supports_scid_privacyreturn
true. SeeUserConfig::manually_accept_inbound_channels.
- Outbound channels when
In total, this release features 43 files changed, 4052 insertions, 1274
deletions in 75 commits from 11 authors, in alphabetical order:
- Devrandom
- Duncan Dean
- Elias Rohrer
- Jeffrey Czyz
- Jurvis Tan
- Luiz Parreira
- Matt Corallo
- Omar Shamardy
- Viktor Tigerström
- dependabot[bot]
- psycho-pirate