|
| 1 | +# 0.0.114 - Mar 3, 2023 - "Faster Async BOLT12 Retries" |
| 2 | + |
| 3 | +## API Updates |
| 4 | + * `InvoicePayer` has been removed and its features moved directly into |
| 5 | + `ChannelManager`. As such it now requires a simplified `Router` and supports |
| 6 | + `send_payment_with_retry` (and friends). `ChannelManager::retry_payment` was |
| 7 | + removed in favor of the automated retries. Invoice payment utilities in |
| 8 | + `lightning-invoice` now call the new code (#1812, #1916, #1929, #2007, etc). |
| 9 | + * `Sign`/`BaseSign` has been renamed `ChannelSigner`, with `EcdsaChannelSigner` |
| 10 | + split out in anticipation of future schnorr/taproot support (#1967). |
| 11 | + * The catch-all `KeysInterface` was split into `EntropySource`, `NodeSigner`, |
| 12 | + and `SignerProvider`. `KeysManager` implements all three (#1910, #1930). |
| 13 | + * `KeysInterface::get_node_secret` is now `KeysManager::get_node_secret_key` |
| 14 | + and is no longer required for external signers (#1951, #2070). |
| 15 | + * A `lightning-transaction-sync` crate has been added which implements keeping |
| 16 | + LDK in sync with the chain via an esplora server (#1870). Note that it can |
| 17 | + only be used on nodes that *never* ran a previous version of LDK. |
| 18 | + * `Score` is updated in `BackgroundProcessor` instead of via `Router` (#1996). |
| 19 | + * `ChainAccess::get_utxo` (now `UtxoAccess`) can now be resolved async (#1980). |
| 20 | + * BOLT12 `Offer`, `InvoiceRequest`, `Invoice` and `Refund` structs as well as |
| 21 | + associated builders have been added. Such invoices cannot yet be paid due to |
| 22 | + missing support for blinded path payments (#1927, #1908, #1926). |
| 23 | + * A `lightning-custom-message` crate has been added to make combining multiple |
| 24 | + custom messages into one enum/handler easier (#1832). |
| 25 | + * `Event::PaymentPathFailure` is now generated for failure to send an HTLC |
| 26 | + over the first hop on our local channel (#2014, #2043). |
| 27 | + * `lightning-net-tokio` no longer requires an `Arc` on `PeerManager` (#1968). |
| 28 | + * `ChannelManager::list_recent_payments` was added (#1873). |
| 29 | + * `lightning-background-processor` `std` is now optional in async mode (#1962). |
| 30 | + * `create_phantom_invoice` can now be used in `no-std` (#1985). |
| 31 | + * The required final CLTV delta on inbound payments is now configurable (#1878) |
| 32 | + * bitcoind RPC error code and message are now surfaced in `block-sync` (#2057). |
| 33 | + * Get `historical_estimated_channel_liquidity_probabilities` was added (#1961). |
| 34 | + * `ChannelManager::fail_htlc_backwards_with_reason` was added (#1948). |
| 35 | + * Macros which implement serialization using TLVs or straight writing of struct |
| 36 | + fields are now public (#1823, #1976, #1977). |
| 37 | + |
| 38 | +## Backwards Compatibility |
| 39 | + * Any inbound payments with a custom final CLTV delta will be rejected by LDK |
| 40 | + if you downgrade prior to receipt (#1878). |
| 41 | + * `Event::PaymentPathFailed::network_update` will always be `None` if an |
| 42 | + 0.0.114-generated event is read by a prior version of LDK (#2043). |
| 43 | + * `Event::PaymentPathFailed::all_paths_removed` will always be false if an |
| 44 | + 0.0.114-generated event is read by a prior version of LDK. Users who rely on |
| 45 | + it to determine payment retries should migrate to `Event::PaymentFailed`, in |
| 46 | + a separate release prior to upgrading to LDK 0.0.114 if downgrading is |
| 47 | + supported (#2043). |
| 48 | + |
| 49 | +## Performance Improvements |
| 50 | + * Channel data is now stored per-peer and channel updates across multiple |
| 51 | + peers can be operated on simultaneously (#1507). |
| 52 | + * Routefinding is roughly 1.5x faster (#1799). |
| 53 | + * Deserializing a `NetworkGraph` is roughly 6x faster (#2016). |
| 54 | + * Memory usage for a `NetworkGraph` has been reduced substantially (#2040). |
| 55 | + * `KeysInterface::get_secure_random_bytes` is roughly 200x faster (#1974). |
| 56 | + |
| 57 | +## Bug Fixes |
| 58 | + * Fixed a bug where a delay in processing a `PaymentSent` event longer than the |
| 59 | + time taken to persist a `ChannelMonitor` update, when occurring immediately |
| 60 | + prior to a crash, may result in the `PaymentSent` event being lost (#2048). |
| 61 | + * Fixed spurious rejections of rapid gossip sync data when the graph has been |
| 62 | + updated by other means between gossip syncs (#2046). |
| 63 | + * Fixed a panic in `KeysManager` when the high bit of `starting_time_nanos` |
| 64 | + is set (#1935). |
| 65 | + * Resolved an issue where the `ChannelManager::get_persistable_update_future` |
| 66 | + future would fail to wake until a second notification occurs (#2064). |
| 67 | + * Resolved a memory leak when using `ChannelManager::send_probe` (#2037). |
| 68 | + * Fixed a deadlock on some platforms at least when using async `ChannelMonitor` |
| 69 | + updating (#2006). |
| 70 | + * Removed debug-only assertions which were reachable in threaded code (#1964). |
| 71 | + * In some cases when payment sending fails on our local channel retries no |
| 72 | + longer take the same path and thus never succeed (#2014). |
| 73 | + * Retries for spontaneous payments have been fixed (#2002). |
| 74 | + * Return an `Err` if `lightning-persister` fails to read the directory listing |
| 75 | + rather than panicing (#1943). |
| 76 | + * `peer_disconnected` will now never be called without `peer_connected` (#2035) |
| 77 | + |
| 78 | +## Security |
| 79 | +0.0.114 fixes several denial-of-service vulnerabilities which are reachable from |
| 80 | +untrusted input from channel counterparties or in deployments accepting inbound |
| 81 | +connections or channels. It also fixes a denial-of-service vulnerability in rare |
| 82 | +cases in the route finding logic. |
| 83 | + * The number of pending un-funded channels as well as peers without funded |
| 84 | + channels is now limited to avoid denial of service (#1988). |
| 85 | + * A second `channel_ready` message received immediately after the first could |
| 86 | + lead to a spurious panic (#2071). This issue was introduced with 0conf |
| 87 | + support in LDK 0.0.107. |
| 88 | + * A division-by-zero issue was fixed in the `ProbabilisticScorer` if the amount |
| 89 | + being sent (including previous-hop fees) is equal to a channel's capacity |
| 90 | + while walking the graph (#2072). The division-by-zero was introduced with |
| 91 | + historical data tracking in LDK 0.0.112. |
| 92 | + |
| 93 | +In total, this release features 130 files changed, 21457 insertions, 10113 |
| 94 | +deletions in 343 commits from 18 authors, in alphabetical order: |
| 95 | + * Alec Chen |
| 96 | + * Allan Douglas R. de Oliveira |
| 97 | + * Andrei |
| 98 | + * Arik Sosman |
| 99 | + * Daniel Granhão |
| 100 | + * Duncan Dean |
| 101 | + * Elias Rohrer |
| 102 | + * Jeffrey Czyz |
| 103 | + * John Cantrell |
| 104 | + * Kurtsley |
| 105 | + * Matt Corallo |
| 106 | + * Max Fang |
| 107 | + * Omer Yacine |
| 108 | + * Valentine Wallace |
| 109 | + * Viktor Tigerström |
| 110 | + * Wilmer Paulino |
| 111 | + * benthecarman |
| 112 | + * jurvis |
| 113 | + |
| 114 | + |
1 | 115 | # 0.0.113 - Dec 16, 2022 - "Big Movement Intercepted"
|
2 | 116 |
|
3 | 117 | ## API Updates
|
|
0 commit comments