mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-03-13 14:52:21 +01:00
Add an 0.0.124 CHANGELOG entry
This commit is contained in:
parent
187a2cb45e
commit
f52148f4c2
7 changed files with 214 additions and 45 deletions
214
CHANGELOG.md
214
CHANGELOG.md
|
@ -1,3 +1,217 @@
|
|||
# 0.0.124 - Sep 3, 2024 - "Papercutting Feature Requests"
|
||||
|
||||
## API Updates
|
||||
* `rust-bitcoin` has been updated to 0.32. The new `bitcoin-io` crate is now
|
||||
used for all IO traits, irrespective of the features set on LDK crates.
|
||||
LDK crates no longer automatically force features on dependent crates where
|
||||
possible, allowing different `std`/`no-std` settings between LDK and
|
||||
rust-bitcoin crates (e.g. to disable `std` on LDK to ensure system time is
|
||||
not accessed while using `bitcoin-io`'s `std` feature). (#3063, #3239, #3249).
|
||||
* A new `lightning_types` crate was added which contains various top-level
|
||||
types. Using types from `lightning::ln::features` or
|
||||
`Payment{Hash,Preimage,Secret}` from `lightning::ln` or
|
||||
`lightning::ln::types` is now deprecated. The new crate is re-exported as
|
||||
`lightning::types` (#3234, #3253).
|
||||
* `lightning` now depends on `lightning-invoice`, rather than the other way
|
||||
around. The `lightning_invoice::payment` module has moved to
|
||||
`lightning::ln::bolt11_payment` and `lightning_invoice::utils` to
|
||||
`lightning::ln::invoice_utils` (#3234).
|
||||
* Event handlers may now return errors, causing most events to be replayed
|
||||
immediately without blocking the background processor. See documentation on
|
||||
individual `Event`s for more information on replay (#2995).
|
||||
* `ChannelDetails::balance_msat` is deprecated in favor of
|
||||
`ChainMonitor::get_claimable_balances` and the `Balance`, which now contains
|
||||
substantially more details and more accurately calculates a node-wide
|
||||
balance when `Balance::claimable_amount_satoshis` are summed (#3212, #3247).
|
||||
* `ConfirmationTarget` has two new variants - a `MaximumFeeEstimate` which can
|
||||
help to avoid spurious force-closes by ensuring we always accept feerates up
|
||||
to this value from peers as sane and a `UrgentOnChainSweep`, replacing
|
||||
`OnChainSweep` and only being used when the on-chain sweep is urgent (#3268).
|
||||
* All `ChannelMonitor`s are no longer persisted after each block connection,
|
||||
instead spreading them out over a handful of blocks to reduce load spikes.
|
||||
Note that this will increase the incidence of `ChannelMonitor`s that have
|
||||
different best blocks on startup, requiring some additional chain replay
|
||||
(but only on some `ChannelMonitor`s) on startup for `Listen` users (#2966).
|
||||
* A new format for Rapid Gossip Sync data is now supported which contains
|
||||
additional node metadata and is more extensible (#3098).
|
||||
* `ChannelManager::send_payment_with_route` is now deprecated in favor of the
|
||||
much easier to use `Channelmanager::send_payment`. Those who wish to manually
|
||||
select the route such payments go over should do so by matching the
|
||||
`payment_id` passed to `send_payment` in `Router::find_route_with_id` (#3224)
|
||||
* `lightning-transaction-sync` now takes most `Confirm`s as a generic `Deref`.
|
||||
You may need an explicit `as &(dyn Confirm)` to update existing code (#3101).
|
||||
* HTLCs will now be forwarded over any channel with a peer, rather than only
|
||||
the specific channel requested by the payment sender (#3127).
|
||||
* `Event::PaymentFailed` is now used in place of `Event::InvoiceRequestFailed`,
|
||||
holding an `Option` for the payment hash, which will be `None` when no
|
||||
invoice has been received (#3192).
|
||||
* `ChannelManager` now supports intercepting and manually paying
|
||||
`Bolt12Invoice`s, see `UserConfig::manually_handle_bolt12_invoices` (#3078).
|
||||
* `logger::Record`s now contain a `PaymentHash` (#2930).
|
||||
* `ChainMonitor` no longer uses an opaque `MonitorUpdateId`, opting to reuse
|
||||
the `ChannelMonitorUpdate::update_id` instead. Note that you no longer have
|
||||
to call `ChainMonitor::channel_monitor_updated` for
|
||||
`ChannelMonitorUpdateStatus::InProgress` updates to a monitor that were
|
||||
started without a `ChannelMonitorUpdate` (#2957).
|
||||
* `NodeAnnouncementInfo` is now an enum holding either a gossip message or
|
||||
the important fields, reducing the memory usage of `NetworkGraph` (#3072).
|
||||
* Onion message handlers now include a message context, which allows for
|
||||
blinded path authentication (#3085, #3202).
|
||||
* `ChannelManager` now supports funding with only a txid and output index, see
|
||||
`ChannelManager::unsafe_manual_funding_transaction_generated` (#3024).
|
||||
* BOLT 12 invoice requests now go out over, and accept responses over, multiple
|
||||
paths (#3087).
|
||||
* `OnionMessenger` now supports intercepting and re-forwarding onion messages
|
||||
for peers that are offline at the time of receipt when constructed with
|
||||
`new_with_offline_peer_interception` (#2973).
|
||||
* Onion message handling trait methods now generally take a `Responder` which
|
||||
can be used to create a `ResponseInstruction` to better control how responses
|
||||
are sent. The `ResponseInstruction` can also be converted to
|
||||
`MessageSendInstructions` which can be passed to `OnionMessenger`'s
|
||||
`send_onion_message` to respond asynchronously (#2907, #2996, #3263).
|
||||
* `OnionMessenger::process_pending_events_async` was added (#3060).
|
||||
* Blinded paths used for BOLT 12 `Offer`/`Refund`s are now compact when they
|
||||
expire relatively soon, making them somewhat smaller (#3011, #3080).
|
||||
* `ChannelManager::force_close_*` now take a err msg to send to peers (#2889).
|
||||
* `ChannelDetails::is_public` has been renamed to `is_announced` and
|
||||
`ChannelHandshakeConfig::announced_channel` to `announce_for_forwarding` to
|
||||
address various misconceptions about the purpose of announcement (#3257).
|
||||
* `BlindedPath`s are now split into `BlindedMessagePath`s and
|
||||
`BlindedPaymentPath`s and `advance_path_by_one` added to each (#3182).
|
||||
* `BlindedPaymentPath` now includes the `BlindedPayInfo` (#3245).
|
||||
* BOLT 12 `Offer`/`Refund` builders no longer require a description, instead
|
||||
allowing it to be set on the builder itself (#3018).
|
||||
* The `{Inbound,Outbound}HTLCState{,Details}` and `ChannelDetails` structs have
|
||||
moved to the `ln::channel_state` module (#3089).
|
||||
* `Event::OpenChannelRequest` now contains `params` and `is_announced` (#3019).
|
||||
* Peers are no longer disconnected when we force-close a channel (#3088).
|
||||
* BOLT12 `Offer` and `Refund` now implement `Readable` (#2965).
|
||||
* `RecipientOnionFields` is now included in `Event::PaymentClaimed` (#3084).
|
||||
* `ClosureReason::HolderForceClosed::broadcasted_latest_txn` was added (#3107).
|
||||
* `EcdsaChannelSigner` no longer needs to be `Writeable` and the supertrait
|
||||
`WriteableEcdsaChannelSigner` has been removed (#3059).
|
||||
* `CustomMessageHandler::peer_{,dis}connected` were added (#3105).
|
||||
* `lightning_invoice::Description::as_inner()` was added (#3203).
|
||||
* Splice-related wire messages have been updated to the latest spec (#3129).
|
||||
|
||||
## Bug Fixes
|
||||
* `channel_update` messages are no longer extracted from failed payments and
|
||||
applied to the network graph via `Event::PaymentPathFailed`, preventing a
|
||||
node along the path from identifying the sender of a payment (#3083).
|
||||
* In order to prevent senders from identifying the recipient of a BOLT 12 offer
|
||||
that included a blinded path, cryptographic information from blinded paths
|
||||
are now included in the invoice request verification (#3085, #3139, #3242).
|
||||
* Routes are now length-limited based on the actual onion contents rather than
|
||||
a fixed value. This ensures no routes are generated that are unpayable when
|
||||
sending HTLCs with custom TLVs, blinded paths, or metadata (#3026, #3156).
|
||||
* Unannounced LDK nodes (or ones without a network graph) will now include
|
||||
unannounced peers as introduction points in blinded paths. This addresses
|
||||
issues where test networks were not usable for BOLT 12 due to failures to
|
||||
find paths over private channels to LDK nodes. It will also enable creating
|
||||
BOLT 12 offers for nodes with no local network graph (#3132).
|
||||
* If a channel partner fails to update the feerate on a channel for some time
|
||||
and prevailing network feerates increase, LDK will now force-close
|
||||
automatically to avoid being unable to claim our funds on-chain. In order to
|
||||
reduce false-positives, it does so by comparing the channel's fee against the
|
||||
minimum `ConfirmationTarget::MinAllowed{,Non}AnchorChannelRemoteFee` we've
|
||||
seen over the past day (and do not force-close if we haven't been running for
|
||||
a full day, #3037).
|
||||
* `MonitorUpdatingPersister` did not read `ChannelMonitorUpdate`s when
|
||||
archiving a `ChannelMonitor`, causing the archived `ChannelMonitor` to be
|
||||
missing some updates. Those updates were not removed from the `KVStore` and
|
||||
monitors being archived should have no pending updates as they were persisted
|
||||
on each new block for some time before archiving (#3276).
|
||||
* `CoinSelection`s selected for commitment transactions which did not contain a
|
||||
change output no longer result in broadcasting a non-standard transaction nor
|
||||
in under-paying the target feerate (#3285). Note that such a transaction
|
||||
would fail to propagate and LDK would have continued to bump the fee until a
|
||||
different `CoinSelection` is used which did contain a change output.
|
||||
* `invoice_error`s from BOLT 12 recipients now fail payments (#3085, #3192).
|
||||
* Fixed a bug which may lead to a missing `Event::ChannelClosed` and missing
|
||||
`Error` messages for peers when a bogus funding transaction is provided for a
|
||||
batch channel open (#3029).
|
||||
* Fixed an overflow in `RawBolt11Invoice::amount_pico_btc()` reachable via
|
||||
`Bolt11Invoice::amount_milli_satoshis()`, resulting in a debug panic or bogus
|
||||
value for invoices with invalid values (#3032).
|
||||
* In incredibly rare circumstances, when using the beta asynchronous
|
||||
persistence, it is possible that the preimage for an MPP claim could fail to
|
||||
be persisted in the `ChannelMonitor` for one or more MPP parts, resulting in
|
||||
only some of the payment's value being claimed (#3120).
|
||||
* A rare race was fixed which could lead to `ChannelMonitorUpdate`s appearing
|
||||
after a full `ChannelMonitor` persistence that already contained the same
|
||||
update. This could have caused a panic on startup for users of the
|
||||
`MonitorUpdatingPersister` in rare cases after a crash (#3196).
|
||||
* Background Processor is now woken from `ChainMonitor` when new blocks appear,
|
||||
reducing the worst-case latency to see an `Event::SpendableOutputs` (#3033).
|
||||
* `OnionMessenger::get_update_future` was added, allowing it to wake the
|
||||
background processor to ensure `Event`s are processed quickly (#3194).
|
||||
* `CoinSelection`s overpaying the target feerate by more than 1% no longer
|
||||
leads to a debug assertion (#3285).
|
||||
|
||||
## Backwards Compatibility
|
||||
* BOLT 12 `Offer`s created in prior versions are still valid but are at risk of
|
||||
deanonymization attacks allowing identification of the recipient node (#3139)
|
||||
* BOLT 12 outbound payments in state `RecentPaymentDetails::AwaitingInvoice`
|
||||
will eventually time out after upgrade to 0.0.124 as any received invoice
|
||||
will be considered invalid (#3139).
|
||||
* BOLT 12 `Refund`s created in prior version with non-empty `Refund::paths` are
|
||||
considered invalid by `ChannelManager`. Any attempts to claim them will be
|
||||
ignored. `Refund`s without blinded paths are unaffected (#3139).
|
||||
* The format written by `impl_writeable_tlv_based_enum[_upgradable]` for tuple
|
||||
variants has changed, only impacting LDK-external use of the macros (#3160).
|
||||
* An `Event::PaymentFailed` without a payment hash will deserialize to a
|
||||
payment hash of all-0s when downgrading (#3192).
|
||||
* `Event::PaymentFailed` reasons may be mapped to similar reasons that were
|
||||
available in previous versions on downgrade (#3192).
|
||||
|
||||
## Performance Improvements
|
||||
* Route-finding is 11-23% faster (#3103, #3104, #2803, #3188, on an Intel Xeon
|
||||
Silver 4116 (Skylake)).
|
||||
* `lightning-block-sync` now much better avoids lock contention during parallel
|
||||
requests for block data, speeding up gossip sync from multiple peers (#3197).
|
||||
|
||||
## Node Compatibility
|
||||
* 0.0.123 contained a workaround for CLN v24.02 requiring the `gossip_queries`
|
||||
feature for all peers. Since an updated CLN has now shipped which does not
|
||||
require this, the workaround has been reverted (#3172).
|
||||
* LDK now supports BOLT 12 Offers without an explicit signing public key,
|
||||
allowing it to pay more compact offers generated by other nodes (#3017).
|
||||
* LDK now supports BOLT 12 Offers without descriptions when no amount is
|
||||
present (#3018).
|
||||
* A bug was fixed which might have led to LDK spuriously rejecting
|
||||
`channel_update`s that use as-yet-undefined flag bits (#3144).
|
||||
|
||||
In total, this release features 312 files changed, 29853 insertions, 15480
|
||||
deletions in 549 commits since 0.0.123 from 26 authors, in alphabetical order:
|
||||
|
||||
* Alec Chen
|
||||
* Arik Sosman
|
||||
* Duncan Dean
|
||||
* Elias Rohrer
|
||||
* Filip Gospodinov
|
||||
* G8XSU
|
||||
* Gursharan Singh
|
||||
* Harshit Verma
|
||||
* Jeffrey Czyz
|
||||
* Jiri Jakes
|
||||
* John Cantrell
|
||||
* Lalitmohansharma1
|
||||
* Matt Corallo
|
||||
* Matthew Rheaume
|
||||
* Max Fang
|
||||
* Mirebella
|
||||
* Tobin C. Harding
|
||||
* Valentine Wallace
|
||||
* Vincenzo Palazzo
|
||||
* Willem Van Lint
|
||||
* benthecarman
|
||||
* cooltexture
|
||||
* esraa
|
||||
* jbesraa
|
||||
* optout
|
||||
* shaavan
|
||||
|
||||
|
||||
# 0.0.123 - May 08, 2024 - "BOLT12 Dust Sweeping"
|
||||
|
||||
## API Updates
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
## Backwards Compatibility
|
||||
* BOLT12 `Offers` created in prior versions are still valid but are at risk of
|
||||
de-anonymization attacks.
|
||||
* BOLT12 outbound payments in state `RecentPaymentDetails::AwaitingInvoice` are
|
||||
considered invalid by `ChannelManager`. Any invoices received through the
|
||||
corresponding `InvoiceRequest` reply path will be ignored.
|
||||
* BOLT12 `Refund`s created in prior versions with non-empty `Refund::paths` are
|
||||
considered invalid by `ChannelManager`. Any invoices sent through those
|
||||
blinded paths will be ignored. `Refund`'s without blinded paths are
|
||||
unaffected.
|
|
@ -1,4 +0,0 @@
|
|||
## Backwards Compatibility
|
||||
* `impl_writeable_tlv_based_enum[_upgradable]`'s writing of tuple variants has
|
||||
changed format. Users of this macro who are reading/writing tuple variants
|
||||
will need to perform a format-change to update their serialized data (#3160).
|
|
@ -1,18 +0,0 @@
|
|||
## API Updates
|
||||
* `Event::PaymentFailed` now uses an `Option` for its payment hash, which will
|
||||
be `None` if the invoice hasn't been received yet for a BOLT12 payment
|
||||
(#3192).
|
||||
* `Event::PaymentFailed` is now generated instead `Event::InvoiceRequestFailed`,
|
||||
which has been removed. When deserialized the latter will be converted to the
|
||||
former with `None` for the payment hash (#3192).
|
||||
|
||||
## Backwards Compatibility
|
||||
* Any `Event::PaymentFailed` generated without a payment hash will deserialize
|
||||
with `PaymentHash([0; 32])` when downgrading. This can be treated like an
|
||||
`Event::InvoiceRequestFailed` (#3192).
|
||||
* An `Event::PaymentFailed` generated with one of the following
|
||||
`PaymentFailureReason`s will deserialize with the corresponding reason after
|
||||
downgrading to a version prior to 0.0.124:
|
||||
- `UnknownRequiredFeatures` to `RecipientRejected`,
|
||||
- `InvoiceRequestExpired` to `RetriesExhausted`, and
|
||||
- `InvoiceRequestRejected` to `RecipientRejected` (#3192).
|
|
@ -1 +0,0 @@
|
|||
* The `AvailableBalances::balance_msat` field has been deprecated in favor of `ChainMonitor::get_claimable_balances`. `AvailableBalances::balance_msat` will be removed in an upcoming release (#3247).
|
|
@ -1,5 +0,0 @@
|
|||
## Bug Fixes
|
||||
|
||||
* LDK previously would fail to forward an intermediate blinded payment
|
||||
if the blinded hop features were absent, potentially breaking
|
||||
interoperability.
|
|
@ -1,7 +0,0 @@
|
|||
## Bug fixes
|
||||
|
||||
* LDK previously serialized `PaymentRelay::fee_base_msat` as a u32 when it
|
||||
should have been serialized as a tu32. Similarly, we were serializing
|
||||
`PaymentConstraints::htlc_minimum_msat` as a u64 when we should have been
|
||||
serializing it as tu64. This caused lack of interoperability when using other
|
||||
implementations as forwarding nodes along blinded payment paths.
|
Loading…
Add table
Reference in a new issue