A highly modular Bitcoin Lightning library written in Rust. It's rust-lightning, not Rusty's Lightning!
ChannelManager::send_payment
now takes an explicit PaymentId
which is a
loose idempotency token. See send_payment
docs for more (#1761, #1826).ChannelManager::get_intercept_scid
are now
intercepted and can be forwarded manually over any channel (#1835, #1893).Confirm::get_relevant_txids
now returns a BlockHash
, expanding the set
of cases where transaction_unconfirmed
must be called, see docs (#1796).ChannelManager::abandon_payment
when you no longer wish to retry (#1761).ChannelManager::abandon_payment
docs were updated to note that the payment
may return to pending after a restart if no persistence occurs (#1907).Event::PaymentReceived
has been renamed Event::PaymentClaimable
(#1891).Event
handling is now optionally async for Rust users (#1787).user_channel_id
is now a u128
and random for inbound channels (#1790).ChannelReady
event is generated whenever a channel becomes ready to
be used, i.e., after both sides sent the channel_ready
message (#1743).NetworkGraph
now prunes channels where either node is offline for 2 weeks
and refuses to accept re-announcements of pruned channels (#1735).CustomOnionMessageHandler
rather than via
MaybeReadableArgs
(#1809).create_invoice_from_channelmanager_and_duration_since_epoch_with_payment_hash
Sign
ers are now by default re-derived using KeysInterface
's new
derive_channel_signer
rather than read_chan_signer
(#1867).Confirm::transactions_confirmed
is now idempotent (#1861).ChannelManager::compute_inflight_htlcs
has been added to fetch in-flight
HTLCs for scoring. Note that InvoicePayer
does this for you (#1830).PaymentClaimable::via_channel_id
(#1856).node_id
(phantom or regular) to payment events (#1766).confirmations
to ChannelDetails
(#1856).BlindedRoute
has been renamed BlindedPath
(#1918).ChainMonitor::list_pending_monitor_updates
was added (#1834).lightning-background-processor
future
feature were
fixed, including requirements doc corrections (#1843, #1845, #1851).rapid-gossip-sync
no longer errors if an update is applied duplicatively
or in rare cases when the graph is updated from payment failures (#1833).ChannelReady
events will be generated for previously existing channels,
including those which become ready after upgrading to 0.0.113 (#1743).UserConfig::accept_intercept_htlcs
is set, downgrades to LDK versions
prior to 0.0.113 are not supported (#1835).PaymentClaimable::user_channel_id
of 0 (#1856)PaymentId
(#1761).In total, this release features 76 files changed, 11639 insertions, 6067 deletions in 210 commits from 18 authors, in alphabetical order:
Result<(), ChannelMonitorUpdateErr>
return values have been replaced with
a ChannelMonitorUpdateStatus
trinary enum. This better denotes that
ChannelMonitorUpdateStatus::InProgress
is not an error, but asynchronous
persistence of a monitor update. Note that asynchronous persistence still
has some edge cases and is not yet recommended for production (#1106).ChannelMonitor
persistence failure no longer automatically broadcasts the
latest commitment transaction. See the
ChannelMonitorUpdateStatus::PermanentFailure
docs for more info (#1106).*Features::known
has been replaced with individual
*MessageHandler::provided_*_features
methods (#1707).OnionMessenger
now takes a CustomOnionMessageHandler
implementation,
allowing you to send and receive custom onion messages (#1748).ProbabilisticScorer
now tracks the historical distribution of liquidity
estimates for channels. See new historical_*
parameters in
ProbabilisticScoringParameters
for more details (#1625).lightning-block-sync
's BlockSource
trait now supports BIP 157/158
filtering clients by returning only header data for some blocks (#1706).lightning-invoice
's Router
trait now accepts an InFlightHtlcs
to
ensure we do not over-use a remote channel's funds during routing (#1694).
Note that this was previously backported to 0.0.111 for bindings users.NetworkGraph::remove_stale_channels
has been renamed
NetworkGraph::remove_stale_channels_and_tracking
as NetworkGraph
now
refuses to re-add nodes and channels that were recently removed (#1649).lightning-rapid-gossip-sync
crate now supports no-std
(#1708).ProbabilisticScoringParameters::liquidity_offset_half_life
has
been increased to six hours from one (#1754).Eq
implementations were added (#1763).lightning-background-processor
now builds without error with the futures
feature (#1744).ChannelManager::get_persistable_update_future
's returned Future
has been
corrected to not fail to be awoken in some cases (#1758).ChannelMonitor
persistence is now
safe (#1678).Err
s (#1764).In total, this release features 134 files changed, 6598 insertions, 4370 deletions in 109 commits from 13 authors, in alphabetical order:
OnionMessenger
struct when passed as the OnionMessageHandler
to a
PeerManager
. Pre-encoded onion messages can also be sent and received
(#1503, #1650, #1652, #1688).lightning-background-processor
has
a new process_events_async
method which takes the place of a
BackgroundProcessor
for those using Rust's async (#1657).ChannelManager::get_persistable_update_future
has been added to block on
a ChannelManager needing re-persistence in a Rust async environment (#1657).Filter::register_output
return value has been removed, as it was
very difficult to correctly implement (i.e., without blocking). Users
previously using it should instead pass dependent transactions in via
additional chain::Confirm::transactions_confirmed
calls (#1663).ChannelHandshakeConfig::their_channel_reserve_proportional_millionths
has
been added to allow configuring counterparty reserve values (#1619).KeysInterface::ecdh
has been added as an ECDH oracle (#1503, #1658).rust-bitcoin
dependency has been updated 0.29 (#1658).bitcoin_hashes
dependency has been updated 0.11 (#1677).ChannelManager::broadcast_node_announcement
has been moved to
PeerManager
(#1699).channel_
and node_announcement
s are now rebroadcast automatically to all
new peers which connect (#1699).{Init,Node}Features
sent to peers/broadcasted are now fetched via the
various *MessageHandler
traits, rather than hard-coded (#1701, #1688).Event::PaymentPathFailed::rejected_by_dest
has been renamed
payment_failed_permanently
(#1702).Invoice
now derives the std Hash
trait (#1575).{Signed,}RawInvoice::hash
have been renamed signable_hash
(#1714).chain::AccessError
now derives the std Debug
trait (#1709).ReadOnlyNetworkGraph::list_{channels,nodes}
have been added largely for
users of downstream bindings (#1651).ChannelMonitor::get_counterparty_node_id
is now available (#1635).chain::Access
was incorrect
~half of the time, causing spurious gossip rejection (#1666).get_claimable_balance
output via a new Balance::CounterpartyRevokedOutputClaimable
(#1495).get_claimable_balance
via a Balance::MaybePreimageClaimableHTLC
(#1673).Event::ProbeFailed
rather than a PaymentPathFailed
(#1704).Event::HTLCHandlingFailed
s are no longer lost on restart (#1700).!PaymentPathFailed::payment_failed_permanently
(#1702).current_time
argument to PeerManager
constructors must be set to
a UNIX timestamp for upgraded nodes; new nodes may use a counter (#1699).Balance::CounterpartyRevokedOutputClaimable
will never be generated for
channels that were observed to go on-chain with LDK versions prior to
0.0.111 (#1495).ChannelMonitor::get_counterparty_node_id
will return None
for all
channels opened on a version of LDK prior to 0.0.110 (#1635).their_channel_reserve_proportional_millionths
to any value other
than the default will cause LDK versions prior to 0.0.104 to be unable to
read the serialized ChannelManager
(#1619).0.0.111 fixes a denial-of-service vulnerability which is reachable from untrusted input in deployments accepting 0conf channels, or via a race-condition in deployments creating outbound 0conf channels.
In total, this release features 84 files changed, 6306 insertions, 1960 deletions in 121 commits from 11 authors, in alphabetical order:
ChannelManager::send_probe
and Score::probe_{failed,successful}
have
been added to make probing more explicit, as well as new
Event::Probe{Failed,Successful}
events (#1567).ProbabilisticScoringParameters::banned_nodes
has been renamed
manual_node_penalties
and changed to take msat penalties (#1592).ProbabilisticScoringParameters::considered_impossible_penalty_msat
(#1600)ProbabilisticScoringParameters::base_penalty_amount_multiplier_msat
was
added to allow a penalty that is only amount-dependent (#1617).ProbabilisticScoringParameters::amount_penalty_multiplier_msat
was renamed
liquidity_penalty_amount_multiplier_msat
(#1617).Event::HTLCHandlingFailed
has been added which provides visibility
into failures to forward/claim accepted HTLCs (#1403).NetAddress
type, see
BOLT PR #911 (#1553).GossipSync
now has rapid
, p2p
, and none
constructors (#1618).lightning-net-tokio
no longer requires types to be in Arc
s (#1623).htlc_maximum_msat
field is now required in ChannelUpdate
gossip
messages. In tests this rejects < 1% of channels (#1519).ReadOnlyNetworkGraph::{channel,node}
have been added to query for
individual channel/node data, primarily for bindings users (#1543).FeeEstimator
implementations are now wrapped internally to ensure values
below 253 sats/kW are never used (#1552).ChannelDetails
objects (#1588).PaymentParameters::max_channel_saturation_power_of_half
(#1605).ProbabilisticScorer
when wallclock time
goes backwards across a restart (#1603).NetworkGraph
which is missing
htlc_maximum_msat
may be dropped on deserialization (#1519).NetworkGraph
which contains an
invalid hostname may be dropped on deserialization (#1519).In total, this release features 79 files changed, 2935 insertions, 1363 deletions in 52 commits from 9 authors, in alphabetical order:
ChannelManager::update_channel_config
has been added to allow the fields
in ChannelConfig
to be changed in a given channel after open (#1527).NodeAlias
struct has been added which handles string sanitization for
node aliases via the Display
trait (#1544).ProbabilisticScoringParameters
now has a banned_nodes
set which we will
never route through during path finding (#1550).ProbabilisticScoringParameters
now offers an anti_probing_penalty_msat
option to prefer channels which afford better privacy when routing (#1555).ProbabilisticScorer
now provides access to its estimated liquidity range
for a given channel via estimated_channel_liquidity_range
(#1549).ChannelManager::force_close_channel
has been renamed
force_close_broadcasting_latest_txn
and
force_close_without_broadcasting_txn
has been added (#1564).ChannelConfig
to ChannelHandshakeConfig
(#1529).find_route
takes &NetworkGraph
instead of `ReadOnlyNetworkGraph (#1583).ChannelDetails
now contains a copy of the current ChannelConfig
(#1527).lightning-invoice
crate now optionally depends on serde
, with
Invoice
implementing serde::{Deserialize,Serialize}
if enabled (#1548).UserConfig
have been renamed for clarity (#1540).find_route
no longer selects routes with more than
PaymentParameters::max_mpp_path_count
paths, and
ChannelManager::send_payment
no longer refuses to send along routes with
more than ten paths (#1526).ChannelConfig
's serialization format has changed and is not compatible
with any previous version of LDK. Attempts to read values written by a
previous version of LDK will fail and attempts to read newly written objects
using a previous version of LDK will fail. It is not expected that users are
serializing ChannelConfig
using the LDK serialization API, however, if a
backward compatibility wrapper is required, please open an issue.0.0.109 fixes a denial-of-service vulnerability which is reachable from untrusted input in some application deployments.
ChannelMonitor
.
Such a channel is never usable as it cannot be funded with a funding
transaction which matches the required output script, allowing the
ChannelMonitor
for such channels to be safely purged as a workaround on
previous versions of LDK. Thanks to Eugene Siegel for reporting this issue.In total, this release features 32 files changed, 1948 insertions, 532 deletions in 33 commits from 9 authors, in alphabetical order:
ChannelHandshakeLimits::max_funding_satoshis
(#1425).option_zeroconf
, allowing immediate forwarding of
payments after channel opening. This is configured for outbound channels
using ChannelHandshakeLimits::trust_own_funding_0conf
whereas
ChannelManager::accept_inbound_channel_from_trusted_peer_0conf
has to be
used for accepting inbound channels (#1401, #1505).ChannelManager::claim_funds
no longer returns a bool
to indicate success.
Instead, an Event::PaymentClaimed
is generated if the claim was successful.
Likewise, ChannelManager::fail_htlc_backwards
no longer has a return value
(#1434).lightning-rapid-gossip-sync
is a new crate for syncing gossip data from a
server, primarily aimed at mobile devices (#1155).RapidGossipSync
can be passed to BackgroundProcessor
in order to persist
the NetworkGraph
and handle NetworkUpdate
s during event handling (#1433,
#1517).NetGraphMsgHandler
has been renamed to P2PGossipSync
, the network_graph
module has been renamed to gossip
, and NetworkUpdate::ChannelClosed
has
been renamed NetworkUpdate::ChannelFailure
(#1159).filtered_block_connected
method to chain::Listen
and a default
implementation of block_connected
for those fetching filtered instead of
full blocks (#1453).lightning-block-sync
crate's BlockSource
trait methods now take
&self
instead of &mut self
(#1307).inbound_payment
module is now public to allow for creating invoices without
a ChannelManager
(#1384).lightning-block-sync
's init
and poll
modules support &dyn BlockSource
which can be determined at runtime (#1423).lightning-invoice
crate's utils
now accept an expiration time (#1422,
#1474).Event::PaymentForwarded
includes prev_channel_id
and next_channel_id
(#1419, #1475).chain::Watch::release_pending_monitor_events
' return type now associates
MonitorEvent
s with funding OutPoints
(#1475).lightning-background-processor
crate's Persister
trait has been moved to
lightning
crate's util::persist
module, which now has a general
KVStorePersister
trait. Blanket implementations of Persister
and
chainmonitor::Persist
are given for types implementing KVStorePersister
.
lightning-persister
's FilesystemPersister
implements KVStorePersister
(#1417).ChannelDetails
and ChannelCounterparty
include fields for HTLC minimum
and maximum values (#1378).max_inbound_htlc_value_in_flight_percent_of_channel
field to
ChannelHandshakeConfig
, capping the total value of outstanding inbound
HTLCs for a channel (#1444).ProbabilisticScorer
is parameterized by a Logger
, which it uses to log
channel liquidity updates or lack thereof (#1405).ChannelDetails
has an outbound_htlc_limit_msat
field, which should be
used in routing instead of outbound_capacity_msat
(#1435).ProbabilisticScorer
's channel liquidities can be logged via
debug_log_liquidity_stats
(#1460).BackgroundProcessor
now takes an optional WriteableScore
which it will
persist using the Persister
trait's new persist_scorer
method (#1416).bitcoin
crate version 0.28.1 (#1389).ShutdownScript::new_witness_program
now takes a WitnessVersion
instead of
a NonZeroU8
(#1389).ChannelManager
methods for funding, accepting, and closing channels now
take a counterparty_node_id
parameter, which has also been added as a field
to Event::FundingGenerationReady
(#1479, #1485).InvoicePayer::new
now takes a Retry
enum (replacing the RetryAttempts
struct), which supports both attempt- and timeout-based retrying (#1418).Score::channel_penalty_msat
takes a ChannelUsage
struct, which contains
the capacity as an EffectiveCapacity
enum and any potential in-flight HTLC
value, rather than a single u64
. Used by ProbabilisticScorer
for more
accurate penalties (#1456).build_route_from_hops
is a new function useful for constructing a Route
given a specific list of public keys (#1491).FundingLocked
message has been renamed ChannelReady
, and related
identifiers have been renamed accordingly (#1506).core2::io
or std::io
(depending on feature flags no-std
or std
) is
exported as a lightning::io
module (#1504).Scorer
has been removed in favor or ProbabilisticScorer
(#1512).lightning-persister
crate's FilesystemPersister
is faster by 15x (#1404).GOSSIP
instead of TRACE
to avoid
overwhelming default logging (#1421).PeerManager
supports processing messages from different peers in parallel,
and this is taken advantage of in gossip processing (#1023).secp256k1
crate to 0.22.1 and bitcoin
crate to 0.28.1PeerManager
(#1472).find_route
now assumes variable-length onions by default for nodes where
support for the feature is unknown (#1414).warn
message is now sent when receiving a channel_reestablish
with an
old commitment transaction number rather than immediately force-closing the
channel (#1430).channel_update
message is included in an onion error's failuremsg
,
its message type is now encoded. Reading such messages is also supported
(#1465).ChannelMonitorUpdate
for a
part of a multi-path payment could cause loss of funds due to a partial
payment claim on restart (#1434).BackgroundProcessor
has been fixed to improve serialization reliability on
slow systems which can avoid force-closes (#1436).gossip_timestamp_filter
filters are now honored when sending gossip to
peers (#1452).lightning-net-tokio
when fetching a peer's socket
address after the connection has been closed caused by a race condition
(#1449).find_route
will no longer return routes that would cause onion construction
to fail in some cases (#1476).ProbabilisticScorer
uses more precision when approximating log10
(#1406).ChannelManager
serialization is no longer compatible with versions prior to
0.0.99 (#1401).option_zeroconf
feature enabled (not required for 0-conf
channel use) will be unreadable by versions prior to 0.0.107 (#1401, #1505).In total, this release features 96 files changed, 9304 insertions, 4503 deletions in 153 commits from 18 authors, in alphabetical order:
option_scid_alias
is now supported and may be negotiated
when opening a channel with a peer. It can be configured via
ChannelHandshakeConfig::negotiate_scid_privacy
and is off by default but
will be on by default in the future (#1351).OpenChannelRequest
now has a channel_type
field indicating the features
the channel will operate with and should be used to filter channels with
undesirable features (#1351). See the Serialization Compatibility section.ChannelManager
supports sending and receiving short channel id aliases in
the funding_locked
message. These are used when forwarding payments and
constructing invoice route hints for improved privacy. ChannelDetails
has a
inbound_scid_alias
field and a get_inbound_payment_scid
method to support
the latter (#1311).DefaultRouter
and find_route
take 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).lightning-block-sync
crate's init::synchronize_listeners
method
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 on invoice_expiry_delta_secs
,
which is only applicable to the deprecated create_inbound_payment_legacy
and create_inbound_payment_for_hash_legacy
methods (#1341).Features
mutator methods now take self
by reference instead of by value
(#1331).RouteParameters::max_total_cltv_expiry_delta
(#1358).lightning-invoice
crate's utils
module
include versions that accept a description hash instead of only a description
(#1361).RoutingMessageHandler::sync_routing_table
has been renamed peer_connected
(#1368).MessageSendEvent::SendGossipTimestampFilter
has been added to indicate that
a gossip_timestamp_filter
should be sent (#1368).PeerManager
takes an optional NetAddress
in new_outbound_connection
and
new_inbound_connection
, which is used to report back the remote address to
the connecting peer in the init
message (#1326).ChannelManager::accept_inbound_channel
now takes a user_channel_id
, which
is used in a similar manner as in outbound channels. (#1381).BackgroundProcessor
now persists NetworkGraph
on a timer and upon
shutdown as part of a new Persister
trait, which also includes
ChannelManager
persistence (#1376).ProbabilisticScoringParameters
now has a base_penalty_msat
option, 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).lightning
crate has a grind_signatures
feature used to produce
signatures with low r-values for more predictable transaction weight. This
feature is on by default (#1388).ProbabilisticScoringParameters
now has a amount_penalty_multiplier_msat
option, which is used to further penalize large amounts (#1399).PhantomRouteHints
, FixedPenaltyScorer
, and ScoringParameters
now
implement Clone
(#1346).ProbabilisticScorer
under --feature=no-std
(#1347).lightning-invoice
crate's utils
module
filter invoice hints in order to limit the invoice size (#1325).funding_locked
message was delayed by a block if the
funding transaction was confirmed while offline, depending on the ordering
of Confirm::transactions_confirmed
calls when brought back online (#1363).NetGraphMsgHandler
where it didn't continue to receive
gossip messages from peers after initial connection (#1368, #1382).ChannelManager::timer_tick_occurred
will 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).find_route
causing it to be overly aggressive in using
MPP over channels to the same first hop (#1370).channel_update
messages by checking
signatures after checking if no newer messages have already been processed
(#1380).find_route
which caused preferring paths with a
higher cost (#1398).ProbabilisticScorer
where 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).option_scid_alias
negotiated will be incompatible with
prior releases (#1351). This may occur in the following cases:
ChannelHandshakeConfig::negotiate_scid_privacy
is
enabled.OpenChannel
message
with a channel_type
that has ChannelTypeFeatures::supports_scid_privacy
return true. See UserConfig::accept_inbound_channels
.OpenChannelRequest
with a
channel_type
that has ChannelTypeFeatures::supports_scid_privacy
return
true. See UserConfig::manually_accept_inbound_channels
.In total, this release features 43 files changed, 4052 insertions, 1274 deletions in 75 commits from 11 authors, in alphabetical order:
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 new PhantomKeysManager
's docs for more, as well as
requirements on KeysInterface::get_inbound_payment_key_material
and
lightning_invoice::utils::create_phantom_invoice
(#1199).KeysInterface
methods
now accept a Recipient
parameter to select between the local node_id
and
a phantom-specific one.ProbabilisticScorer
, a Score
based on learning the current balances of
channels in the network, was added. It attempts to better capture payment
success probability than the existing Scorer
, 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
an Option
(#1227).UserConfig::manually_accept_inbound_channels
was added which, when set,
generates a new Event::OpenChannelRequest
, which allows manual acceptance
or rejection of incoming channels on a per-channel basis (#1281).Payee
has been renamed to PaymentParameters
(#1271).PaymentParameters
now has a max_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).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 of ExpiryTime
(#1273).CounterpartyCommitmentSecrets
is now public, allowing external uses of
the BOLT 3
secret storage scheme (#1299).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 the KeysInterface
used
has a different node_id
than the ChannelManager
expects (#1250).ErrorAction
variant was added to send warning
messages (#1013).chain::Listen
objects in lightning-block-sync
no
longer require a mutable reference (#1304).ChannelManager
's internal
locks could have an order violation leading to a deadlock (#1238).BackgroundProcessor
(#1269).ChannelManager
prior to BackgroundProcessor
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 to BackgroundProcessor
shutdown (#1253).ChannelHandshakeLimits
provided via the override_config
to
create_channel
are now applied instead of the default config (#1292).channel_type
field to accept_channel
messages we send, which
may avoid some future compatibility issues with other nodes (#1314).lightning-persister
crashed
while persisting updated data, we may have failed to initialize (#1332).ChannelDetails::balance_msat
to
underflow and be reported as large, or cause panics in debug mode (#1268).Trace
level to the
Gossip
level (#1220).announcement_signatures
until the channel has six confirmations,
slightly improving propagation of channel announcements (#1179).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
to KeysInterface
methods (#1251).0.0.105 fixes two denial-of-service vulnerabilities which may be reachable from untrusted input in certain application designs.
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:
PaymentFailed
event is now provided to indicate a payment has failed
fully. This event is generated either after
ChannelManager::abandon_payment
is called for a given payment, or the
payment times out, and there are no further pending HTLCs for the payment.
This event should be used to detect payment failure instead of
PaymentPathFailed::all_paths_failed
, unless no payment retries occur via
ChannelManager::retry_payment
(#1202).KeysInterface::get_inbound_payment_key_material
(#1177).PaymentPathSuccessful
event has been added to ease passing success info
to a scorer, along with a Score::payment_path_successful
method to accept
such info (#1178, #1197).Score::channel_penalty_msat
has additional arguments describing the
channel's capacity and the HTLC amount being sent over the channel (#1166).Gossip
has been added, which is used for verbose
information generated during network graph sync. Enabling the
max_level_trace
feature or ignoring Gossip
log entries reduces log
growth during initial start up from many GiB to several MiB (#1145).allow_wallclock_use
feature has been removed in favor of only using
the std
and no-std
features (#1212).NetworkGraph
can now remove channels that we haven't heard updates for in
two weeks with NetworkGraph::remove_stale_channels{,with_time}
. The first
is called automatically if a NetGraphMsgHandler
is passed to
BackgroundProcessor::start
(#1212).InvoicePayer::pay_pubkey
was added to enable sending "keysend" payments to
supported recipients, using the InvoicePayer
to handle retires (#1160).user_payment_id
has been removed from PaymentPurpose
, and
ChannelManager::create_inbound_payment{,_for_hash}
(#1180).ChannelManager
functions to remove stale
references to panics which no longer occur (#1201).Score
and LockableScore
objects have moved into the
routing::scoring
module instead of being in the routing
module (#1166).Time
parameter to ScorerWithTime
is no longer longer exposed,
instead being fixed based on the std
/no-std
feature (#1184).ChannelDetails::balance_msat
was added to fetch a channel's balance
without subtracting the reserve values, lining up with on-chain claim amounts
less on-chain fees (#1203).UserConfig::accept_inbound_channels
flag is now provided,
removing the need to set min_funding_satoshis
to > 21 million BTC (#1173).ClosureReason::FundingTimedOut
(#1083).NetAddress::OnionV2
parsing was removed as version 2 onion services are no
longer supported in modern Tor (#1204).KeysInterface
, though no support for them exists in the channel itself (#1176)InvoicePayer
where paths may be retried after
the retry count has been exceeded. In this case the
Event::PaymentPathFailed::all_paths_failed
field is not a reliable payment
failure indicator. There was no acceptable alternative indicator,
Event::PaymentFailed
as been added to provide one (#1202).KeysManager::spend_spendable_outputs
no longer adds a change output that
is below the dust threshold for non-standard change scripts (#1131).ChannelMonitor
(#1143).FeeEstimator
that returns values rounded to the next
sat/vbyte may result in force-closures (#1208).ChannelManager::create_inbound_payment{,_for_hash}
will not be
receivable using versions prior to 0.0.104.
ChannelManager::create_inbound_payment{,_for_hash}_legacy
are provided for
backwards compatibility (#1177).PaymentPurpose::InvoicePayment::user_payment_id
will be 0 when reading
objects written with 0.0.104 when read by 0.0.103 and previous (#1180).In total, this release features 51 files changed, 5356 insertions, 2238 deletions in 107 commits from 9 authors, in alphabetical order: