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).
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).
47 * We now forward gossip messages to peers instead of only relaying
48 locally-generated gossip or sending gossip messages during initial sync
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
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).
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)
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).
78 ## Serialization Compatibility
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).
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.