|
| 1 | +# 0.0.124 - Sep 3, 2024 - "Papercutting Feature Requests" |
| 2 | + |
| 3 | +## API Updates |
| 4 | + * `rust-bitcoin` has been updated to 0.32. The new `bitcoin-io` crate is now |
| 5 | + used for all IO traits, irrespective of the features set on LDK crates. |
| 6 | + LDK crates no longer automatically force features on dependent crates where |
| 7 | + possible, allowing different `std`/`no-std` settings between LDK and |
| 8 | + rust-bitcoin crates (e.g. to disable `std` on LDK to ensure system time is |
| 9 | + not accessed while using `bitcoin-io`'s `std` feature). (#3063, #3239, #3249). |
| 10 | + * A new `lightning_types` crate was added which contains various top-level |
| 11 | + types. Using types from `lightning::ln::features` or |
| 12 | + `Payment{Hash,Preimage,Secret}` from `lightning::ln` or |
| 13 | + `lightning::ln::types` is now deprecated. The new crate is re-exported as |
| 14 | + `lightning::types` (#3234, #3253). |
| 15 | + * `lightning` now depends on `lightning-invoice`, rather than the other way |
| 16 | + around. The `lightning_invoice::payment` module has moved to |
| 17 | + `lightning::ln::bolt11_payment` and `lightning_invoice::utils` to |
| 18 | + `lightning::ln::invoice_utils` (#3234). |
| 19 | + * Event handlers may now return errors, causing most events to be replayed |
| 20 | + immediately without blocking the background processor. See documentation on |
| 21 | + individual `Event`s for more information on replay (#2995). |
| 22 | + * `ChannelDetails::balance_msat` is deprecated in favor of |
| 23 | + `ChainMonitor::get_claimable_balances` and the `Balance`, which now contains |
| 24 | + substantially more details and more accurately calculates a node-wide |
| 25 | + balance when `Balance::claimable_amount_satoshis` are summed (#3212, #3247). |
| 26 | + * `ConfirmationTarget` has two new variants - a `MaximumFeeEstimate` which can |
| 27 | + help to avoid spurious force-closes by ensuring we always accept feerates up |
| 28 | + to this value from peers as sane and a `UrgentOnChainSweep`, replacing |
| 29 | + `OnChainSweep` and only being used when the on-chain sweep is urgent (#3268). |
| 30 | + * All `ChannelMonitor`s are no longer persisted after each block connection, |
| 31 | + instead spreading them out over a handful of blocks to reduce load spikes. |
| 32 | + Note that this will increase the incidence of `ChannelMonitor`s that have |
| 33 | + different best blocks on startup, requiring some additional chain replay |
| 34 | + (but only on some `ChannelMonitor`s) on startup for `Listen` users (#2966). |
| 35 | + * A new format for Rapid Gossip Sync data is now supported which contains |
| 36 | + additional node metadata and is more extensible (#3098). |
| 37 | + * `ChannelManager::send_payment_with_route` is now deprecated in favor of the |
| 38 | + much easier to use `Channelmanager::send_payment`. Those who wish to manually |
| 39 | + select the route such payments go over should do so by matching the |
| 40 | + `payment_id` passed to `send_payment` in `Router::find_route_with_id` (#3224) |
| 41 | + * `lightning-transaction-sync` now takes most `Confirm`s as a generic `Deref`. |
| 42 | + You may need an explicit `as &(dyn Confirm)` to update existing code (#3101). |
| 43 | + * HTLCs will now be forwarded over any channel with a peer, rather than only |
| 44 | + the specific channel requested by the payment sender (#3127). |
| 45 | + * `Event::PaymentFailed` is now used in place of `Event::InvoiceRequestFailed`, |
| 46 | + holding an `Option` for the payment hash, which will be `None` when no |
| 47 | + invoice has been received (#3192). |
| 48 | + * `ChannelManager` now supports intercepting and manually paying |
| 49 | + `Bolt12Invoice`s, see `UserConfig::manually_handle_bolt12_invoices` (#3078). |
| 50 | + * `logger::Record`s now contain a `PaymentHash` (#2930). |
| 51 | + * `ChainMonitor` no longer uses an opaque `MonitorUpdateId`, opting to reuse |
| 52 | + the `ChannelMonitorUpdate::update_id` instead. Note that you no longer have |
| 53 | + to call `ChainMonitor::channel_monitor_updated` for |
| 54 | + `ChannelMonitorUpdateStatus::InProgress` updates to a monitor that were |
| 55 | + started without a `ChannelMonitorUpdate` (#2957). |
| 56 | + * `NodeAnnouncementInfo` is now an enum holding either a gossip message or |
| 57 | + the important fields, reducing the memory usage of `NetworkGraph` (#3072). |
| 58 | + * Onion message handlers now include a message context, which allows for |
| 59 | + blinded path authentication (#3085, #3202). |
| 60 | + * `ChannelManager` now supports funding with only a txid and output index, see |
| 61 | + `ChannelManager::unsafe_manual_funding_transaction_generated` (#3024). |
| 62 | + * BOLT 12 invoice requests now go out over, and accept responses over, multiple |
| 63 | + paths (#3087). |
| 64 | + * `OnionMessenger` now supports intercepting and re-forwarding onion messages |
| 65 | + for peers that are offline at the time of receipt when constructed with |
| 66 | + `new_with_offline_peer_interception` (#2973). |
| 67 | + * Onion message handling trait methods now generally take a `Responder` which |
| 68 | + can be used to create a `ResponseInstruction` to better control how responses |
| 69 | + are sent. The `ResponseInstruction` can also be converted to |
| 70 | + `MessageSendInstructions` which can be passed to `OnionMessenger`'s |
| 71 | + `send_onion_message` to respond asynchronously (#2907, #2996, #3263). |
| 72 | + * `OnionMessenger::process_pending_events_async` was added (#3060). |
| 73 | + * Blinded paths used for BOLT 12 `Offer`/`Refund`s are now compact when they |
| 74 | + expire relatively soon, making them somewhat smaller (#3011, #3080). |
| 75 | + * `ChannelManager::force_close_*` now take a err msg to send to peers (#2889). |
| 76 | + * `ChannelDetails::is_public` has been renamed to `is_announced` and |
| 77 | + `ChannelHandshakeConfig::announced_channel` to `announce_for_forwarding` to |
| 78 | + address various misconceptions about the purpose of announcement (#3257). |
| 79 | + * `BlindedPath`s are now split into `BlindedMessagePath`s and |
| 80 | + `BlindedPaymentPath`s and `advance_path_by_one` added to each (#3182). |
| 81 | + * `BlindedPaymentPath` now includes the `BlindedPayInfo` (#3245). |
| 82 | + * BOLT 12 `Offer`/`Refund` builders no longer require a description, instead |
| 83 | + allowing it to be set on the builder itself (#3018). |
| 84 | + * The `{Inbound,Outbound}HTLCState{,Details}` and `ChannelDetails` structs have |
| 85 | + moved to the `ln::channel_state` module (#3089). |
| 86 | + * `Event::OpenChannelRequest` now contains `params` and `is_announced` (#3019). |
| 87 | + * Peers are no longer disconnected when we force-close a channel (#3088). |
| 88 | + * BOLT12 `Offer` and `Refund` now implement `Readable` (#2965). |
| 89 | + * `RecipientOnionFields` is now included in `Event::PaymentClaimed` (#3084). |
| 90 | + * `ClosureReason::HolderForceClosed::broadcasted_latest_txn` was added (#3107). |
| 91 | + * `EcdsaChannelSigner` no longer needs to be `Writeable` and the supertrait |
| 92 | + `WriteableEcdsaChannelSigner` has been removed (#3059). |
| 93 | + * `CustomMessageHandler::peer_{,dis}connected` were added (#3105). |
| 94 | + * `lightning_invoice::Description::as_inner()` was added (#3203). |
| 95 | + * Splice-related wire messages have been updated to the latest spec (#3129). |
| 96 | + |
| 97 | +## Bug Fixes |
| 98 | + * `channel_update` messages are no longer extracted from failed payments and |
| 99 | + applied to the network graph via `Event::PaymentPathFailed`, preventing a |
| 100 | + node along the path from identifying the sender of a payment (#3083). |
| 101 | + * In order to prevent senders from identifying the recipient of a BOLT 12 offer |
| 102 | + that included a blinded path, cryptographic information from blinded paths |
| 103 | + are now included in the invoice request verification (#3085, #3139, #3242). |
| 104 | + * Routes are now length-limited based on the actual onion contents rather than |
| 105 | + a fixed value. This ensures no routes are generated that are unpayable when |
| 106 | + sending HTLCs with custom TLVs, blinded paths, or metadata (#3026, #3156). |
| 107 | + * Unannounced LDK nodes (or ones without a network graph) will now include |
| 108 | + unannounced peers as introduction points in blinded paths. This addresses |
| 109 | + issues where test networks were not usable for BOLT 12 due to failures to |
| 110 | + find paths over private channels to LDK nodes. It will also enable creating |
| 111 | + BOLT 12 offers for nodes with no local network graph (#3132). |
| 112 | + * If a channel partner fails to update the feerate on a channel for some time |
| 113 | + and prevailing network feerates increase, LDK will now force-close |
| 114 | + automatically to avoid being unable to claim our funds on-chain. In order to |
| 115 | + reduce false-positives, it does so by comparing the channel's fee against the |
| 116 | + minimum `ConfirmationTarget::MinAllowed{,Non}AnchorChannelRemoteFee` we've |
| 117 | + seen over the past day (and do not force-close if we haven't been running for |
| 118 | + a full day, #3037). |
| 119 | + * `MonitorUpdatingPersister` did not read `ChannelMonitorUpdate`s when |
| 120 | + archiving a `ChannelMonitor`, causing the archived `ChannelMonitor` to be |
| 121 | + missing some updates. Those updates were not removed from the `KVStore` and |
| 122 | + monitors being archived should have no pending updates as they were persisted |
| 123 | + on each new block for some time before archiving (#3276). |
| 124 | + * `CoinSelection`s selected for commitment transactions which did not contain a |
| 125 | + change output no longer result in broadcasting a non-standard transaction nor |
| 126 | + in under-paying the target feerate (#3285). Note that such a transaction |
| 127 | + would fail to propagate and LDK would have continued to bump the fee until a |
| 128 | + different `CoinSelection` is used which did contain a change output. |
| 129 | + * `invoice_error`s from BOLT 12 recipients now fail payments (#3085, #3192). |
| 130 | + * Fixed a bug which may lead to a missing `Event::ChannelClosed` and missing |
| 131 | + `Error` messages for peers when a bogus funding transaction is provided for a |
| 132 | + batch channel open (#3029). |
| 133 | + * Fixed an overflow in `RawBolt11Invoice::amount_pico_btc()` reachable via |
| 134 | + `Bolt11Invoice::amount_milli_satoshis()`, resulting in a debug panic or bogus |
| 135 | + value for invoices with invalid values (#3032). |
| 136 | + * In incredibly rare circumstances, when using the beta asynchronous |
| 137 | + persistence, it is possible that the preimage for an MPP claim could fail to |
| 138 | + be persisted in the `ChannelMonitor` for one or more MPP parts, resulting in |
| 139 | + only some of the payment's value being claimed (#3120). |
| 140 | + * A rare race was fixed which could lead to `ChannelMonitorUpdate`s appearing |
| 141 | + after a full `ChannelMonitor` persistence that already contained the same |
| 142 | + update. This could have caused a panic on startup for users of the |
| 143 | + `MonitorUpdatingPersister` in rare cases after a crash (#3196). |
| 144 | + * Background Processor is now woken from `ChainMonitor` when new blocks appear, |
| 145 | + reducing the worst-case latency to see an `Event::SpendableOutputs` (#3033). |
| 146 | + * `OnionMessenger::get_update_future` was added, allowing it to wake the |
| 147 | + background processor to ensure `Event`s are processed quickly (#3194). |
| 148 | + * `CoinSelection`s overpaying the target feerate by more than 1% no longer |
| 149 | + leads to a debug assertion (#3285). |
| 150 | + |
| 151 | +## Backwards Compatibility |
| 152 | + * BOLT 12 `Offer`s created in prior versions are still valid but are at risk of |
| 153 | + deanonymization attacks allowing identification of the recipient node (#3139) |
| 154 | + * BOLT 12 outbound payments in state `RecentPaymentDetails::AwaitingInvoice` |
| 155 | + will eventually time out after upgrade to 0.0.124 as any received invoice |
| 156 | + will be considered invalid (#3139). |
| 157 | + * BOLT 12 `Refund`s created in prior version with non-empty `Refund::paths` are |
| 158 | + considered invalid by `ChannelManager`. Any attempts to claim them will be |
| 159 | + ignored. `Refund`s without blinded paths are unaffected (#3139). |
| 160 | + * The format written by `impl_writeable_tlv_based_enum[_upgradable]` for tuple |
| 161 | + variants has changed, only impacting LDK-external use of the macros (#3160). |
| 162 | + * An `Event::PaymentFailed` without a payment hash will deserialize to a |
| 163 | + payment hash of all-0s when downgrading (#3192). |
| 164 | + * `Event::PaymentFailed` reasons may be mapped to similar reasons that were |
| 165 | + available in previous versions on downgrade (#3192). |
| 166 | + |
| 167 | +## Performance Improvements |
| 168 | + * Route-finding is 11-23% faster (#3103, #3104, #2803, #3188, on an Intel Xeon |
| 169 | + Silver 4116 (Skylake)). |
| 170 | + * `lightning-block-sync` now much better avoids lock contention during parallel |
| 171 | + requests for block data, speeding up gossip sync from multiple peers (#3197). |
| 172 | + |
| 173 | +## Node Compatibility |
| 174 | + * 0.0.123 contained a workaround for CLN v24.02 requiring the `gossip_queries` |
| 175 | + feature for all peers. Since an updated CLN has now shipped which does not |
| 176 | + require this, the workaround has been reverted (#3172). |
| 177 | + * LDK now supports BOLT 12 Offers without an explicit signing public key, |
| 178 | + allowing it to pay more compact offers generated by other nodes (#3017). |
| 179 | + * LDK now supports BOLT 12 Offers without descriptions when no amount is |
| 180 | + present (#3018). |
| 181 | + * A bug was fixed which might have led to LDK spuriously rejecting |
| 182 | + `channel_update`s that use as-yet-undefined flag bits (#3144). |
| 183 | + |
| 184 | +In total, this release features 312 files changed, 29853 insertions, 15480 |
| 185 | +deletions in 549 commits since 0.0.123 from 26 authors, in alphabetical order: |
| 186 | + |
| 187 | + * Alec Chen |
| 188 | + * Arik Sosman |
| 189 | + * Duncan Dean |
| 190 | + * Elias Rohrer |
| 191 | + * Filip Gospodinov |
| 192 | + * G8XSU |
| 193 | + * Gursharan Singh |
| 194 | + * Harshit Verma |
| 195 | + * Jeffrey Czyz |
| 196 | + * Jiri Jakes |
| 197 | + * John Cantrell |
| 198 | + * Lalitmohansharma1 |
| 199 | + * Matt Corallo |
| 200 | + * Matthew Rheaume |
| 201 | + * Max Fang |
| 202 | + * Mirebella |
| 203 | + * Tobin C. Harding |
| 204 | + * Valentine Wallace |
| 205 | + * Vincenzo Palazzo |
| 206 | + * Willem Van Lint |
| 207 | + * benthecarman |
| 208 | + * cooltexture |
| 209 | + * esraa |
| 210 | + * jbesraa |
| 211 | + * optout |
| 212 | + * shaavan |
| 213 | + |
| 214 | + |
1 | 215 | # 0.0.123 - May 08, 2024 - "BOLT12 Dust Sweeping"
|
2 | 216 |
|
3 | 217 | ## API Updates
|
|
0 commit comments