Change return value of `claim_funds` to ignore duplicate claims
[rust-lightning] / CHANGELOG.md
1 # 0.0.100 - WIP
2
3 ## Serialization Compatibility
4  * HTLCs which were in the process of being claimed on-chain when a pre-0.0.100
5    `ChannelMonitor` was serialized may generate `PaymentForwarded` events with
6    spurious `fee_earned_msat` values. This only applies to payments which were
7    unresolved at the time of the upgrade.
8  * 0.0.100 clients with pending PaymentForwarded events at serialization-time
9    will generate serialized `ChannelManager` objects which 0.0.99 and earlier
10    clients cannot read. The likelihood of this can be reduced by ensuring you
11    process all pending events immediately before serialization (as is done by
12    the `lightning-background-processor` crate).
13
14
15 # 0.0.99 - 2021-07-09
16
17 ## API Updates
18
19  * `lightning_block_sync::poll::Validate` is now public, allowing you to
20    implement the `lightning_block_sync::poll::Poll` trait without
21    `lightning_block_sync::poll::ChainPoller` (#956).
22  * `lightning::ln::peer_handler::PeerManager` no longer requires that no calls
23    are made to referencing the same `SocketDescriptor` after
24    `disconnect_socket` returns. This makes the API significantly less
25    deadlock-prone and simplifies `SocketDescriptor` implementations
26    significantly. The relevant changes have been made to `lightning_net_tokio`
27    and `PeerManager` documentation has been substantially rewritten (#957).
28  * `lightning::util::message_signing`'s `sign` and `verify` methods now take
29    secret and public keys by reference instead of value (#974).
30  * Substantially more information is now exposed about channels in
31    `ChannelDetails`. See documentation for more info (#984 and #988).
32  * The latest best block seen is now exposed in
33    `ChannelManager::current_best_block` and
34    `ChannelMonitor::current_best_block` (#984).
35  * Feerates charged when forwarding payments over channels is now set in
36    `ChannelConfig::fee_base_msat` when the channel is opened. For existing
37    channels, the value is set to the value provided in
38    `ChannelManagerReadArgs::default_config::channel_options` the first time the
39    `ChannelManager` is loaded in 0.0.99 (#975).
40  * We now reject HTLCs which are received to be forwarded over private channels
41    unless `UserConfig::accept_forwards_to_priv_channels` is set. Note that
42    `UserConfig` is never serialized and must be provided via
43    `ChannelManagerReadArgs::default_config` at each start (#975).
44
45 ## Bug Fixes
46
47  * We now forward gossip messages to peers instead of only relaying
48    locally-generated gossip or sending gossip messages during initial sync
49    (#948).
50  * Correctly send `channel_update` messages to direct peers on private channels
51    (#949). Without this, a private node connected to an LDK node over a private
52    channel cannot receive funds as it does not know which fees the LDK node
53    will charge.
54  * `lightning::ln::channelmanager::ChannelManager` no longer expects to be
55    persisted spuriously after we receive a `channel_update` message about any
56    channel in the routing gossip (#972).
57  * Asynchronous `ChannelMonitor` updates (using the
58    `ChannelMonitorUpdateErr::TemporaryFailure` return variant) no longer cause
59    spurious HTLC forwarding failures (#954).
60  * Transaction provided via `ChannelMonitor::transactions_confirmed`
61    after `ChannelMonitor::best_block_updated` was called for a much later
62    block now trigger all relevant actions as of the later block. Previously
63    some transaction broadcasts or other responses required an additional
64    block be provided via `ChannelMonitor::best_block_updated` (#970).
65  * We no longer panic in rare cases when an invoice contained last-hop route
66    hints which were unusable (#958).
67
68 ## Node Compatibility
69
70  * We now accept spurious `funding_locked` messages sent prior to
71    `channel_reestablish` messages after reconnect. This is a
72    [known, long-standing bug in lnd](https://github.com/lightningnetwork/lnd/issues/4006)
73    (#966).
74  * We now set the `first_blocknum` and `number_of_blocks` fields in
75    `reply_channel_range` messages to values which c-lightning versions prior to
76    0.10 accepted. This avoids spurious force-closes from such nodes (#961).
77
78 ## Serialization Compatibility
79
80  * Due to a bug discovered in 0.0.98, if a `ChannelManager` is serialized on
81    version 0.0.98 while an `Event::PaymentSent` is pending processing, the
82    `ChannelManager` will fail to deserialize both on version 0.0.98 and later
83    versions. If you have such a `ChannelManager` available, a simple patch will
84    allow it to deserialize. Please file an issue if you need assistance (#973).
85
86 # 0.0.98 - 2021-06-11
87
88 0.0.98 should be considered a release candidate to the first alpha release of
89 Rust-Lightning and the broader LDK. It represents several years of work
90 designing and fine-tuning a flexible API for integrating lightning into any
91 application. LDK should make it easy to build a lightning node or client which
92 meets specific requirements that other lightning node software cannot. As
93 lightning continues to evolve, and new use-cases for lightning develop, the API
94 of LDK will continue to change and expand. However, starting with version 0.1,
95 objects serialized with prior versions will be readable with the latest LDK.
96 While Rust-Lightning is approaching the 0.1 milestone, language bindings
97 components of LDK available at https://github.com/lightningdevkit are still of
98 varying quality. Some are also approaching an 0.1 release, while others are
99 still much more experimental. Please note that, at 0.0.98, using Rust-Lightning
100 on mainnet is *strongly* discouraged.