tag:github.com,2008:https://github.com/optout21/rust-lightning/releasesRelease notes from rust-lightning2022-07-26T23:41:43Ztag:github.com,2008:Repository/533377134/v0.0.1102022-07-26T23:41:43Zv0.0.110: 0.0.110 - 2022-07-26<h1>API Updates</h1>
<ul>
<li><code>ChannelManager::send_probe</code> and <code>Score::probe_{failed,successful}</code> have<br>
been added to make probing more explicit, as well as new<br>
<code>Event::Probe{Failed,Successful}</code> events (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1283636593" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1567" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1567/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1567">lightningdevkit#1567</a>).</li>
<li><code>ProbabilisticScoringParameters::banned_nodes</code> has been renamed<br>
<code>manual_node_penalties</code> and changed to take msat penalties (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1292764208" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1592" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1592/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1592">lightningdevkit#1592</a>).</li>
<li>Per-payment tracking of failed paths was added to enable configuration of<br>
<code>ProbabilisticScoringParameters::considered_impossible_penalty_msat</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1296494116" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1600" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1600/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1600">lightningdevkit#1600</a>)</li>
<li><code>ProbabilisticScoringParameters::base_penalty_amount_multiplier_msat</code> was<br>
added to allow a penalty that is only amount-dependent (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1304105518" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1617" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1617/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1617">lightningdevkit#1617</a>).</li>
<li><code>ProbabilisticScoringParameters::amount_penalty_multiplier_msat</code> was renamed<br>
<code>liquidity_penalty_amount_multiplier_msat</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1304105518" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1617" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1617/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1617">lightningdevkit#1617</a>).</li>
<li>A new <code>Event::HTLCHandlingFailed</code> has been added which provides visibility<br>
into failures to forward/claim accepted HTLCs (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1190725512" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1403" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1403/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1403">lightningdevkit#1403</a>).</li>
<li>Support has been added for DNS hostnames in the <code>NetAddress</code> type, see<br>
<a href="https://github.com/lightning/bolts/pull/911" data-hovercard-type="pull_request" data-hovercard-url="/lightning/bolts/pull/911/hovercard">BOLT PR #911</a> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1277953155" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1553" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1553/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1553">lightningdevkit#1553</a>).</li>
<li><code>GossipSync</code> now has <code>rapid</code>, <code>p2p</code>, and <code>none</code> constructors (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1305211867" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1618" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1618/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1618">lightningdevkit#1618</a>).</li>
<li><code>lightning-net-tokio</code> no longer requires types to be in <code>Arc</code>s (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1310461303" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1623" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1623/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1623">lightningdevkit#1623</a>).</li>
<li>The <code>htlc_maximum_msat</code> field is now required in <code>ChannelUpdate</code> gossip<br>
messages. In tests this rejects < 1% of channels (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1261806884" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1519" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1519/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1519">lightningdevkit#1519</a>).</li>
<li><code>ReadOnlyNetworkGraph::{channel,node}</code> have been added to query for<br>
individual channel/node data, primarily for bindings users (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1271456414" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1543" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1543/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1543">lightningdevkit#1543</a>).</li>
<li><code>FeeEstimator</code> implementations are now wrapped internally to ensure values<br>
below 253 sats/kW are never used (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1277396476" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1552" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1552/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1552">lightningdevkit#1552</a>).</li>
<li>Route selection no longer attempts to randomize path selection. This is<br>
unlikely to lead to a material change in the paths selected (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1302652863" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1610" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1610/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1610">lightningdevkit#1610</a>).</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>Fixed a panic when deserializing <code>ChannelDetails</code> objects (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1291840367" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1588" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1588/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1588">lightningdevkit#1588</a>).</li>
<li>When routing, channels are no longer fully saturated before MPP splits are<br>
generated, instead a configuration knob was added as<br>
<code>PaymentParameters::max_channel_saturation_power_of_half</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1299568942" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1605" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1605/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1605">lightningdevkit#1605</a>).</li>
<li>Fixed a panic which occurred in <code>ProbabilisticScorer</code> when wallclock time<br>
goes backwards across a restart (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1298343060" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1603" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1603/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1603">lightningdevkit#1603</a>).</li>
</ul>
<h1>Serialization Compatibility</h1>
<ul>
<li>All new fields are ignored by prior versions of LDK. All new fields are not<br>
present when reading objects serialized by prior versions of LDK.</li>
<li>Channel information written in the <code>NetworkGraph</code> which is missing<br>
<code>htlc_maximum_msat</code> may be dropped on deserialization (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1261806884" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1519" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1519/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1519">lightningdevkit#1519</a>).</li>
<li>Similarly, node information written in the <code>NetworkGraph</code> which contains an<br>
invalid hostname may be dropped on deserialization (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1261806884" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1519" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1519/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1519">lightningdevkit#1519</a>).</li>
</ul>
<p>In total, this release features 79 files changed, 2935 insertions, 1363<br>
deletions in 52 commits from 9 authors, in alphabetical order:</p>
<ul>
<li>Duncan Dean</li>
<li>Elias Rohrer</li>
<li>Jeffrey Czyz</li>
<li>Matt Corallo</li>
<li>Max Fang</li>
<li>Viktor Tigerström</li>
<li>Willem Van Lint</li>
<li>Wilmer Paulino</li>
<li>jurvis</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1092022-07-01T17:38:08Zv0.0.109: 0.0.109 - 2022-07-01<h1>API Updates</h1>
<ul>
<li><code>ChannelManager::update_channel_config</code> has been added to allow the fields<br>
in <code>ChannelConfig</code> to be changed in a given channel after open (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1263971711" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1527" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1527/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1527">lightningdevkit#1527</a>).</li>
<li>If we reconnect to a peer which proves we have a stale channel state, rather<br>
than force-closing we will instead panic to provide an opportunity to switch<br>
to the latest state and continue operating without channel loss (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1282970589" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1564" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1564/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1564">lightningdevkit#1564</a>).</li>
<li>A <code>NodeAlias</code> struct has been added which handles string sanitization for<br>
node aliases via the <code>Display</code> trait (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1271457529" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1544" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1544/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1544">lightningdevkit#1544</a>).</li>
<li><code>ProbabilisticScoringParameters</code> now has a <code>banned_nodes</code> set which we will<br>
never route through during path finding (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1275804623" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1550" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1550/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1550">lightningdevkit#1550</a>).</li>
<li><code>ProbabilisticScoringParameters</code> now offers an <code>anti_probing_penalty_msat</code><br>
option to prefer channels which afford better privacy when routing (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1278550301" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1555" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1555/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1555">lightningdevkit#1555</a>).</li>
<li><code>ProbabilisticScorer</code> now provides access to its estimated liquidity range<br>
for a given channel via <code>estimated_channel_liquidity_range</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1275781923" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1549" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1549/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1549">lightningdevkit#1549</a>).</li>
<li>Options which cannot be changed at runtime have been moved from<br>
<code>ChannelConfig</code> to <code>ChannelHandshakeConfig</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1265377823" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1529" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1529/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1529">lightningdevkit#1529</a>).</li>
<li><code>find_route</code> takes <code>&NetworkGraph</code> instead of `ReadOnlyNetworkGraph (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1289068513" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1583" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1583/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1583">lightningdevkit#1583</a>).</li>
<li><code>ChannelDetails</code> now contains a copy of the current <code>ChannelConfig</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1263971711" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1527" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1527/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1527">lightningdevkit#1527</a>).</li>
<li>The <code>lightning-invoice</code> crate now optionally depends on <code>serde</code>, with<br>
<code>Invoice</code> implementing <code>serde::{Deserialize,Serialize}</code> if enabled (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1274040192" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1548" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1548/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1548">lightningdevkit#1548</a>).</li>
<li>Several fields in <code>UserConfig</code> have been renamed for clarity (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1269899146" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1540" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1540/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1540">lightningdevkit#1540</a>).</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li><code>find_route</code> no longer selects routes with more than<br>
<code>PaymentParameters::max_mpp_path_count</code> paths, and<br>
<code>ChannelManager::send_payment</code> no longer refuses to send along routes with<br>
more than ten paths (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1262961945" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1526" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1526/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1526">lightningdevkit#1526</a>).</li>
<li>Fixed two cases where HTLCs pending at the time a counterparty broadcasts a<br>
revoked commitment transaction are considered resolved prior to their actual<br>
resolution on-chain, possibly passing the update to another channel (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1238037877" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1486" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1486/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1486">lightningdevkit#1486</a>).</li>
<li>HTLCs which are relayed through LDK may now have a total expiry time two<br>
weeks in the future, up from one, reducing forwarding failures (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1266719676" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1532" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1532/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1532">lightningdevkit#1532</a>).</li>
</ul>
<h1>Serialization Compatibility</h1>
<ul>
<li>All new fields are ignored by prior versions of LDK. All new fields are not<br>
present when reading objects serialized by prior versions of LDK.</li>
<li><code>ChannelConfig</code>'s serialization format has changed and is not compatible<br>
with any previous version of LDK. Attempts to read values written by a<br>
previous version of LDK will fail and attempts to read newly written objects<br>
using a previous version of LDK will fail. It is not expected that users are<br>
serializing <code>ChannelConfig</code> using the LDK serialization API, however, if a<br>
backward compatibility wrapper is required, please open an issue.</li>
</ul>
<h1>Security</h1>
<p>0.0.109 fixes a denial-of-service vulnerability which is reachable from<br>
untrusted input in some application deployments.</p>
<ul>
<li>Third parties which are allowed to open channels with an LDK-based node may<br>
fund a channel with a bogus and maliciously-crafted transaction which, when<br>
spent, can cause a panic in the channel's corresponding <code>ChannelMonitor</code>.<br>
Such a channel is never usable as it cannot be funded with a funding<br>
transaction which matches the required output script, allowing the<br>
<code>ChannelMonitor</code> for such channels to be safely purged as a workaround on<br>
previous versions of LDK. Thanks to Eugene Siegel for reporting this issue.</li>
</ul>
<p>In total, this release features 32 files changed, 1948 insertions, 532<br>
deletions in 33 commits from 9 authors, in alphabetical order:</p>
<ul>
<li>Antoine Riard</li>
<li>Daniel Granhão</li>
<li>Elias Rohrer</li>
<li>Jeffrey Czyz</li>
<li>Matt Corallo</li>
<li>Matt Faltyn</li>
<li>NicolaLS</li>
<li>Valentine Wallace</li>
<li>Wilmer Paulino</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1082022-06-10T16:46:33Zv0.0.108<h1>Bug Fixes</h1>
<ul>
<li>Fixed <code>lightning-background-processor</code> build in release mode.</li>
</ul>
<p>In total, this release features 9 files changed, 120 insertions, 74<br>
deletions in 5 commits from 4 authors, in alphabetical order:</p>
<ul>
<li>Elias Rohrer</li>
<li>Matt Corallo</li>
<li>Max Fang</li>
<li>Viktor Tigerström</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1072022-06-08T23:46:01Zv0.0.107: 0.0.107 - 2022-06-08<h1>API Updates</h1>
<ul>
<li>Channels larger than 16777215 sats (Wumbo!) are now supported and can be<br>
enabled for inbound channels using<br>
<code>ChannelHandshakeLimits::max_funding_satoshis</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1205915560" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1425" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1425/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1425">lightningdevkit#1425</a>).</li>
<li>Support for feature <code>option_zeroconf</code>, allowing immediate forwarding of<br>
payments after channel opening. This is configured for outbound channels<br>
using <code>ChannelHandshakeLimits::trust_own_funding_0conf</code> whereas<br>
<code>ChannelManager::accept_inbound_channel_from_trusted_peer_0conf</code> has to be<br>
used for accepting inbound channels (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1190303281" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1401" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1401/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1401">lightningdevkit#1401</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1253121238" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1505" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1505/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1505">lightningdevkit#1505</a>).</li>
<li><code>ChannelManager::claim_funds</code> no longer returns a <code>bool</code> to indicate success.<br>
Instead, an <code>Event::PaymentClaimed</code> is generated if the claim was successful.<br>
Likewise, <code>ChannelManager::fail_htlc_backwards</code> no longer has a return value<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1208912233" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1434" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1434/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1434">lightningdevkit#1434</a>).</li>
<li><code>lightning-rapid-gossip-sync</code> is a new crate for syncing gossip data from a<br>
server, primarily aimed at mobile devices (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1043908226" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1155" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1155/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1155">lightningdevkit#1155</a>).</li>
<li><code>RapidGossipSync</code> can be passed to <code>BackgroundProcessor</code> in order to persist<br>
the <code>NetworkGraph</code> and handle <code>NetworkUpdate</code>s during event handling (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1208906532" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1433" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1433/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1433">lightningdevkit#1433</a>,<br>
<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1260193275" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1517" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1517/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1517">lightningdevkit#1517</a>).</li>
<li><code>NetGraphMsgHandler</code> has been renamed to <code>P2PGossipSync</code>, the <code>network_graph</code><br>
module has been renamed to <code>gossip</code>, and <code>NetworkUpdate::ChannelClosed</code> has<br>
been renamed <code>NetworkUpdate::ChannelFailure</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1046152717" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1159" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1159/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1159">lightningdevkit#1159</a>).</li>
<li>Added a <code>filtered_block_connected</code> method to <code>chain::Listen</code> and a default<br>
implementation of <code>block_connected</code> for those fetching filtered instead of<br>
full blocks (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1216118020" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1453" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1453/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1453">lightningdevkit#1453</a>).</li>
<li>The <code>lightning-block-sync</code> crate's <code>BlockSource</code> trait methods now take<br>
<code>&self</code> instead of <code>&mut self</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1137889224" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1307" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1307/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1307">lightningdevkit#1307</a>).</li>
<li><code>inbound_payment</code> module is now public to allow for creating invoices without<br>
a <code>ChannelManager</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1180108735" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1384" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1384/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1384">lightningdevkit#1384</a>).</li>
<li><code>lightning-block-sync</code>'s <code>init</code> and <code>poll</code> modules support <code>&dyn BlockSource</code><br>
which can be determined at runtime (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1205714318" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1423" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1423/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1423">lightningdevkit#1423</a>).</li>
<li><code>lightning-invoice</code> crate's <code>utils</code> now accept an expiration time (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1205632165" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1422" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1422/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1422">lightningdevkit#1422</a>,<br>
<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1230698065" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1474" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1474/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1474">lightningdevkit#1474</a>).</li>
<li><code>Event::PaymentForwarded</code> includes <code>prev_channel_id</code> and <code>next_channel_id</code><br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1201696458" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1419" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1419/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1419">lightningdevkit#1419</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1230922929" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1475" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1475/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1475">lightningdevkit#1475</a>).</li>
<li><code>chain::Watch::release_pending_monitor_events</code>' return type now associates<br>
<code>MonitorEvent</code>s with funding <code>OutPoints</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1230922929" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1475" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1475/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1475">lightningdevkit#1475</a>).</li>
<li><code>lightning-background-processor</code> crate's <code>Persister</code> trait has been moved to<br>
<code>lightning</code> crate's <code>util::persist</code> module, which now has a general<br>
<code>KVStorePersister</code> trait. Blanket implementations of <code>Persister</code> and<br>
<code>chainmonitor::Persist</code> are given for types implementing <code>KVStorePersister</code>.<br>
<code> lightning-persister</code>'s <code>FilesystemPersister</code> implements <code>KVStorePersister</code><br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1200334210" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1417" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1417/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1417">lightningdevkit#1417</a>).</li>
<li><code>ChannelDetails</code> and <code>ChannelCounterparty</code> include fields for HTLC minimum<br>
and maximum values (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1177417932" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1378" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1378/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1378">lightningdevkit#1378</a>).</li>
<li>Added a <code>max_inbound_htlc_value_in_flight_percent_of_channel</code> field to<br>
<code>ChannelHandshakeConfig</code>, capping the total value of outstanding inbound<br>
HTLCs for a channel (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1211617121" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1444" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1444/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1444">lightningdevkit#1444</a>).</li>
<li><code>ProbabilisticScorer</code> is parameterized by a <code>Logger</code>, which it uses to log<br>
channel liquidity updates or lack thereof (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1190988173" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1405" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1405/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1405">lightningdevkit#1405</a>).</li>
<li><code>ChannelDetails</code> has an <code>outbound_htlc_limit_msat</code> field, which should be<br>
used in routing instead of <code>outbound_capacity_msat</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1209796673" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1435" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1435/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1435">lightningdevkit#1435</a>).</li>
<li><code>ProbabilisticScorer</code>'s channel liquidities can be logged via<br>
<code>debug_log_liquidity_stats</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1219391748" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1460" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1460/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1460">lightningdevkit#1460</a>).</li>
<li><code>BackgroundProcessor</code> now takes an optional <code>WriteableScore</code> which it will<br>
persist using the <code>Persister</code> trait's new <code>persist_scorer</code> method (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1199129401" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1416" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1416/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1416">lightningdevkit#1416</a>).</li>
<li>Upgraded to <code>bitcoin</code> crate version 0.28.1 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1182479289" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1389" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1389/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1389">lightningdevkit#1389</a>).</li>
<li><code>ShutdownScript::new_witness_program</code> now takes a <code>WitnessVersion</code> instead of<br>
a <code>NonZeroU8</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1182479289" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1389" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1389/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1389">lightningdevkit#1389</a>).</li>
<li>Channels will no longer be automatically force closed when the counterparty<br>
is disconnected due to incompatibility (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1206582632" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1429" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1429/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1429">lightningdevkit#1429</a>).</li>
<li><code>ChannelManager</code> methods for funding, accepting, and closing channels now<br>
take a <code>counterparty_node_id</code> parameter, which has also been added as a field<br>
to <code>Event::FundingGenerationReady</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1234579795" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1479" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1479/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1479">lightningdevkit#1479</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1237684021" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1485" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1485/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1485">lightningdevkit#1485</a>).</li>
<li><code>InvoicePayer::new</code> now takes a <code>Retry</code> enum (replacing the <code>RetryAttempts</code><br>
struct), which supports both attempt- and timeout-based retrying (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1201504857" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1418" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1418/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1418">lightningdevkit#1418</a>).</li>
<li><code>Score::channel_penalty_msat</code> takes a <code>ChannelUsage</code> struct, which contains<br>
the capacity as an <code>EffectiveCapacity</code> enum and any potential in-flight HTLC<br>
value, rather than a single <code>u64</code>. Used by <code>ProbabilisticScorer</code> for more<br>
accurate penalties (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1217905436" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1456" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1456/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1456">lightningdevkit#1456</a>).</li>
<li><code>build_route_from_hops</code> is a new function useful for constructing a <code>Route</code><br>
given a specific list of public keys (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1242968646" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1491" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1491/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1491">lightningdevkit#1491</a>).</li>
<li><code>FundingLocked</code> message has been renamed <code>ChannelReady</code>, and related<br>
identifiers have been renamed accordingly (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1253139483" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1506" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1506/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1506">lightningdevkit#1506</a>).</li>
<li><code>core2::io</code> or <code>std::io</code> (depending on feature flags <code>no-std</code> or <code>std</code>) is<br>
exported as a <code>lightning::io</code> module (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1253002587" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1504" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1504/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1504">lightningdevkit#1504</a>).</li>
<li>The deprecated <code>Scorer</code> has been removed in favor or <code>ProbabilisticScorer</code><br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1257129754" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1512" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1512/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1512">lightningdevkit#1512</a>).</li>
</ul>
<h1>Performance Improvements</h1>
<ul>
<li><code>lightning-persister</code> crate's <code>FilesystemPersister</code> is faster by 15x (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1190988110" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1404" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1404/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1404">lightningdevkit#1404</a>).</li>
<li>Log gossip query messages at <code>GOSSIP</code> instead of <code>TRACE</code> to avoid<br>
overwhelming default logging (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1203957524" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1421" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1421/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1421">lightningdevkit#1421</a>).</li>
<li><code>PeerManager</code> supports processing messages from different peers in parallel,<br>
and this is taken advantage of in gossip processing (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="956962631" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1023" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1023/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1023">lightningdevkit#1023</a>).</li>
<li>Greatly reduced per-channel and per-node memory usage due to upgrade of<br>
<code>secp256k1</code> crate to 0.22.1 and <code>bitcoin</code> crate to 0.28.1</li>
<li>Reduced per-peer memory usage in <code>PeerManager</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1230359766" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1472" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1472/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1472">lightningdevkit#1472</a>).</li>
</ul>
<h1>Spec Compliance</h1>
<ul>
<li><code>find_route</code> now assumes variable-length onions by default for nodes where<br>
support for the feature is unknown (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1198721084" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1414" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1414/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1414">lightningdevkit#1414</a>).</li>
<li>A <code>warn</code> message is now sent when receiving a <code>channel_reestablish</code> with an<br>
old commitment transaction number rather than immediately force-closing the<br>
channel (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1207488922" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1430" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1430/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1430">lightningdevkit#1430</a>).</li>
<li>When a <code>channel_update</code> message is included in an onion error's <code>failuremsg</code>,<br>
its message type is now encoded. Reading such messages is also supported<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1224097239" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1465" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1465/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1465">lightningdevkit#1465</a>).</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>Fixed a bug where crashing while persisting a <code>ChannelMonitorUpdate</code> for a<br>
part of a multi-path payment could cause loss of funds due to a partial<br>
payment claim on restart (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1208912233" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1434" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1434/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1434">lightningdevkit#1434</a>).</li>
<li><code>BackgroundProcessor</code> has been fixed to improve serialization reliability on<br>
slow systems which can avoid force-closes (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1210420030" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1436" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1436/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1436">lightningdevkit#1436</a>).</li>
<li><code>gossip_timestamp_filter</code> filters are now honored when sending gossip to<br>
peers (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1216036344" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1452" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1452/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1452">lightningdevkit#1452</a>).</li>
<li>During a reorg, only force-close a channel if its funding transaction is<br>
unconfirmed rather than as it loses confirmations (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1222473329" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1461" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1461/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1461">lightningdevkit#1461</a>).</li>
<li>Fixed a rare panic in <code>lightning-net-tokio</code> when fetching a peer's socket<br>
address after the connection has been closed caused by a race condition<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1213768910" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1449" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1449/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1449">lightningdevkit#1449</a>).</li>
<li><code>find_route</code> will no longer return routes that would cause onion construction<br>
to fail in some cases (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1232125776" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1476" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1476/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1476">lightningdevkit#1476</a>).</li>
<li><code>ProbabilisticScorer</code> uses more precision when approximating <code>log10</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1191055339" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1406" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1406/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1406">lightningdevkit#1406</a>).</li>
</ul>
<h1>Serialization Compatibility</h1>
<ul>
<li>All above new events/fields are ignored by prior clients. All above new<br>
events/fields are not present when reading objects serialized by prior<br>
versions of the library.</li>
<li><code>ChannelManager</code> serialization is no longer compatible with versions prior to<br>
0.0.99 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1190303281" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1401" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1401/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1401">lightningdevkit#1401</a>).</li>
<li>Channels with <code>option_zeroconf</code> feature enabled (not required for 0-conf<br>
channel use) will be unreadable by versions prior to 0.0.107 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1190303281" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1401" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1401/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1401">lightningdevkit#1401</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1253121238" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1505" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1505/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1505">lightningdevkit#1505</a>).</li>
</ul>
<p>In total, this release features 96 files changed, 9304 insertions, 4503<br>
deletions in 153 commits from 18 authors, in alphabetical order:</p>
<ul>
<li>Arik Sosman</li>
<li>Devrandom</li>
<li>Duncan Dean</li>
<li>Elias Rohrer</li>
<li>Jeffrey Czyz</li>
<li>John Cantrell</li>
<li>John Corser</li>
<li>Jurvis Tan</li>
<li>Justin Moon</li>
<li>KaFai Choi</li>
<li>Mateusz Faltyn</li>
<li>Matt Corallo</li>
<li>Valentine Wallace</li>
<li>Viktor Tigerström</li>
<li>Vincenzo Palazzo</li>
<li>atalw</li>
<li>dependabot[bot]</li>
<li>shamardy</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1062022-04-03T16:33:23Zv0.0.106<h1>API Updates</h1>
<ul>
<li>Minimum supported rust version (MSRV) is now 1.41.1 (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1139215387" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1310" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1310/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1310">lightningdevkit#1310</a>).</li>
<li>Lightning feature <code>option_scid_alias</code> is now supported and may be negotiated<br>
when opening a channel with a peer. It can be configured via<br>
<code>ChannelHandshakeConfig::negotiate_scid_privacy</code> and is off by default but<br>
will be on by default in the future (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1163184149" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1351" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1351/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1351">lightningdevkit#1351</a>).</li>
<li><code>OpenChannelRequest</code> now has a <code>channel_type</code> field indicating the features<br>
the channel will operate with and should be used to filter channels with<br>
undesirable features (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1163184149" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1351" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1351/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1351">lightningdevkit#1351</a>). See the Serialization Compatibility section.</li>
<li><code>ChannelManager</code> supports sending and receiving short channel id aliases in<br>
the <code>funding_locked</code> message. These are used when forwarding payments and<br>
constructing invoice route hints for improved privacy. <code>ChannelDetails</code> has a<br>
<code>inbound_scid_alias</code> field and a <code>get_inbound_payment_scid</code> method to support<br>
the latter (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1139367288" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1311" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1311/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1311">lightningdevkit#1311</a>).</li>
<li><code>DefaultRouter</code> and <code>find_route</code> take an additional random seed to improve<br>
privacy by adding a random CLTV expiry offset to each path's final hop. This<br>
helps obscure the intended recipient from adversarial intermediate hops<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1116056199" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1286" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1286/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1286">lightningdevkit#1286</a>). The seed is also used to randomize candidate paths during route<br>
selection (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1165585802" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1359" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1359/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1359">lightningdevkit#1359</a>).</li>
<li>The <code>lightning-block-sync</code> crate's <code>init::synchronize_listeners</code> method<br>
interface has been relaxed to support multithreaded environments (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1162089030" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1349" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1349/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1349">lightningdevkit#1349</a>).</li>
<li><code>ChannelManager::create_inbound_payment_for_hash</code>'s documentation has been<br>
corrected to remove the one-year restriction on <code>invoice_expiry_delta_secs</code>,<br>
which is only applicable to the deprecated <code>create_inbound_payment_legacy</code><br>
and <code>create_inbound_payment_for_hash_legacy</code> methods (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1156068253" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1341" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1341/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1341">lightningdevkit#1341</a>).</li>
<li><code>Features</code> mutator methods now take <code>self</code> by reference instead of by value<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1148560213" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1331" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1331/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1331">lightningdevkit#1331</a>).</li>
<li>The CLTV of the last hop in a path is now included when comparing against<br>
<code>RouteParameters::max_total_cltv_expiry_delta</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1164538763" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1358" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1358/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1358">lightningdevkit#1358</a>).</li>
<li>Invoice creation functions in <code>lightning-invoice</code> crate's <code>utils</code> module<br>
include versions that accept a description hash instead of only a description<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1167614829" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1361" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1361/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1361">lightningdevkit#1361</a>).</li>
<li><code>RoutingMessageHandler::sync_routing_table</code> has been renamed <code>peer_connected</code><br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1172976581" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1368" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1368/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1368">lightningdevkit#1368</a>).</li>
<li><code>MessageSendEvent::SendGossipTimestampFilter</code> has been added to indicate that<br>
a <code>gossip_timestamp_filter</code> should be sent (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1172976581" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1368" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1368/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1368">lightningdevkit#1368</a>).</li>
<li><code>PeerManager</code> takes an optional <code>NetAddress</code> in <code>new_outbound_connection</code> and<br>
<code>new_inbound_connection</code>, which is used to report back the remote address to<br>
the connecting peer in the <code>init</code> message (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1146240055" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1326" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1326/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1326">lightningdevkit#1326</a>).</li>
<li><code>ChannelManager::accept_inbound_channel</code> now takes a <code>user_channel_id</code>, which<br>
is used in a similar manner as in outbound channels. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1178793155" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1381" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1381/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1381">lightningdevkit#1381</a>).</li>
<li><code>BackgroundProcessor</code> now persists <code>NetworkGraph</code> on a timer and upon<br>
shutdown as part of a new <code>Persister</code> trait, which also includes<br>
<code>ChannelManager</code> persistence (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1176214637" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1376" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1376/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1376">lightningdevkit#1376</a>).</li>
<li><code>ProbabilisticScoringParameters</code> now has a <code>base_penalty_msat</code> option, which<br>
default to 500 msats. It is applied at each hop to help avoid longer paths<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1175952489" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1375" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1375/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1375">lightningdevkit#1375</a>).</li>
<li><code>ProbabilisticScoringParameters::liquidity_penalty_multiplier_msat</code>'s default<br>
value is now 40,000 msats instead of 10,000 msats (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1175952489" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1375" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1375/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1375">lightningdevkit#1375</a>).</li>
<li>The <code>lightning</code> crate has a <code>grind_signatures</code> feature used to produce<br>
signatures with low r-values for more predictable transaction weight. This<br>
feature is on by default (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1181197235" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1388" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1388/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1388">lightningdevkit#1388</a>).</li>
<li><code>ProbabilisticScoringParameters</code> now has a <code>amount_penalty_multiplier_msat</code><br>
option, which is used to further penalize large amounts (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1187451731" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1399" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1399/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1399">lightningdevkit#1399</a>).</li>
<li><code>PhantomRouteHints</code>, <code>FixedPenaltyScorer</code>, and <code>ScoringParameters</code> now<br>
implement <code>Clone</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1158741196" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1346" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1346/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1346">lightningdevkit#1346</a>).</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>Fixed a compilation error in <code>ProbabilisticScorer</code> under <code>--feature=no-std</code><br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1159368332" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1347" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1347/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1347">lightningdevkit#1347</a>).</li>
<li>Invoice creation functions in <code>lightning-invoice</code> crate's <code>utils</code> module<br>
filter invoice hints in order to limit the invoice size (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1146222129" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1325" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1325/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1325">lightningdevkit#1325</a>).</li>
<li>Fixed a bug where a <code>funding_locked</code> message was delayed by a block if the<br>
funding transaction was confirmed while offline, depending on the ordering<br>
of <code>Confirm::transactions_confirmed</code> calls when brought back online (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1167711355" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1363" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1363/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1363">lightningdevkit#1363</a>).</li>
<li>Fixed a bug in <code>NetGraphMsgHandler</code> where it didn't continue to receive<br>
gossip messages from peers after initial connection (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1172976581" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1368" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1368/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1368">lightningdevkit#1368</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1178879728" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1382" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1382/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1382">lightningdevkit#1382</a>).</li>
<li><code>ChannelManager::timer_tick_occurred</code> will now timeout a received multi-path<br>
payment (MPP) after three ticks if not received in full instead of waiting<br>
until near the HTLC timeout block(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1163928725" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1353" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1353/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1353">lightningdevkit#1353</a>).</li>
<li>Fixed an issue with <code>find_route</code> causing it to be overly aggressive in using<br>
MPP over channels to the same first hop (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1174105444" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1370" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1370/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1370">lightningdevkit#1370</a>).</li>
<li>Reduced time spent processing <code>channel_update</code> messages by checking<br>
signatures after checking if no newer messages have already been processed<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1178723812" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1380" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1380/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1380">lightningdevkit#1380</a>).</li>
<li>Fixed a few issues in <code>find_route</code> which caused preferring paths with a<br>
higher cost (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1186916102" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1398" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1398/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1398">lightningdevkit#1398</a>).</li>
<li>Fixed an issue in <code>ProbabilisticScorer</code> where a channel with not enough<br>
liquidity could still be used when retrying a failed payment if it was on a<br>
path with an overall lower cost (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1187451731" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1399" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1399/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1399">lightningdevkit#1399</a>).</li>
</ul>
<h1>Serialization Compatibility</h1>
<ul>
<li>Channels open with <code>option_scid_alias</code> negotiated will be incompatible with<br>
prior releases (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1163184149" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1351" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1351/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1351">lightningdevkit#1351</a>). This may occur in the following cases:
<ul>
<li>Outbound channels when <code>ChannelHandshakeConfig::negotiate_scid_privacy</code> is<br>
enabled.</li>
<li>Inbound channels when automatically accepted from an <code>OpenChannel</code> message<br>
with a <code>channel_type</code> that has <code>ChannelTypeFeatures::supports_scid_privacy</code><br>
return true. See <code>UserConfig::accept_inbound_channels</code>.</li>
<li>Inbound channels when manually accepted from an <code>OpenChannelRequest</code> with a<br>
<code>channel_type</code> that has <code>ChannelTypeFeatures::supports_scid_privacy</code> return<br>
true. See <code>UserConfig::manually_accept_inbound_channels</code>.</li>
</ul>
</li>
</ul>
<p>In total, this release features 43 files changed, 4052 insertions, 1274<br>
deletions in 75 commits from 11 authors, in alphabetical order:</p>
<ul>
<li>Devrandom</li>
<li>Duncan Dean</li>
<li>Elias Rohrer</li>
<li>Jeffrey Czyz</li>
<li>Jurvis Tan</li>
<li>Luiz Parreira</li>
<li>Matt Corallo</li>
<li>Omar Shamardy</li>
<li>Viktor Tigerström</li>
<li>dependabot[bot]</li>
<li>psycho-pirate</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1052022-03-01T04:14:58Zv0.0.105<ul>
<li>
<p><code>Phantom node</code> payments are now supported, allowing receipt of a payment on<br>
any one of multiple nodes without any coordination across the nodes being<br>
required. See the new <code>PhantomKeysManager</code>'s docs for more, as well as<br>
requirements on <code>KeysInterface::get_inbound_payment_key_material</code> and<br>
<code>lightning_invoice::utils::create_phantom_invoice</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1068971688" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1199" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1199/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1199">lightningdevkit#1199</a>).</p>
</li>
<li>
<p>In order to support phantom node payments, several <code>KeysInterface</code> methods<br>
now accept a <code>Recipient</code> parameter to select between the local <code>node_id</code> and<br>
a phantom-specific one.</p>
</li>
<li>
<p><code>ProbabilisticScorer</code>, a <code>Score</code> based on learning the current balances of<br>
channels in the network, was added. It attempts to better capture payment<br>
success probability than the existing <code>Scorer</code>, though may underperform on<br>
nodes with low payment volume. We welcome feedback on performance (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1094006303" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1227" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1227/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1227">lightningdevkit#1227</a>).</p>
</li>
<li>
<p><code>Score::channel_penalty_msat</code> now always takes the channel value, instead of<br>
an <code>Option</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1094006303" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1227" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1227/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1227">lightningdevkit#1227</a>).</p>
</li>
<li>
<p><code>UserConfig::manually_accept_inbound_channels</code> was added which, when set,<br>
generates a new <code>Event::OpenChannelRequest</code>, which allows manual acceptance<br>
or rejection of incoming channels on a per-channel basis (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1114482909" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1281" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1281/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1281">lightningdevkit#1281</a>).</p>
</li>
<li>
<p><code>Payee</code> has been renamed to <code>PaymentParameters</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1110261913" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1271" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1271/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1271">lightningdevkit#1271</a>).</p>
</li>
<li>
<p><code>PaymentParameters</code> now has a <code>max_total_cltv_expiry_delta</code> field. This<br>
defaults to 1008 and limits the maximum amount of time an HTLC can be pending<br>
before it will either fail or be claimed (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1099419041" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1234" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1234/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1234">lightningdevkit#1234</a>).</p>
</li>
<li>
<p>The <code>lightning-invoice</code> crate now supports no-std environments. This required<br>
numerous API changes around timestamp handling and std+no-std versions of<br>
several methods that previously assumed knowledge of the time (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1088805603" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1223" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1223/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1223">lightningdevkit#1223</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1097170669" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1230" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1230/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1230">lightningdevkit#1230</a>).</p>
</li>
<li>
<p><code>lightning-invoice</code> now supports parsing invoices with expiry times of more<br>
than one year. This required changing the semantics of <code>ExpiryTime</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1111075797" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1273" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1273/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1273">lightningdevkit#1273</a>).</p>
</li>
<li>
<p>The <code>CounterpartyCommitmentSecrets</code> is now public, allowing external uses of<br>
the <code>BOLT 3</code> secret storage scheme (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1126685200" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1299" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1299/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1299">lightningdevkit#1299</a>).</p>
</li>
<li>
<p>Several <code>Sign</code> methods now receive HTLC preimages as proof of state<br>
transition, see new documentation for more (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1107249904" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1251" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1251/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1251">lightningdevkit#1251</a>).</p>
</li>
<li>
<p><code>KeysInterface::sign_invoice</code> now provides the HRP and other invoice data<br>
separately to make it simpler for external signers to parse (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1110330787" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1272" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1272/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1272">lightningdevkit#1272</a>).</p>
</li>
<li>
<p><code>Sign::sign_channel_announcement</code> now returns both the node's signature and<br>
the per-channel signature. <code>InMemorySigner</code> now requires the node's secret<br>
key in order to implement this (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1058082435" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1179" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1179/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1179">lightningdevkit#1179</a>).</p>
</li>
<li>
<p><code>ChannelManager</code> deserialization will now fail if the <code>KeysInterface</code> used<br>
has a different <code>node_id</code> than the <code>ChannelManager</code> expects (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1106820657" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1250" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1250/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1250">lightningdevkit#1250</a>).</p>
</li>
<li>
<p>A new <code>ErrorAction</code> variant was added to send <code>warning</code> messages (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="950826427" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1013" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1013/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1013">lightningdevkit#1013</a>).</p>
</li>
<li>
<p>Several references to <code>chain::Listen</code> objects in <code>lightning-block-sync</code> no<br>
longer require a mutable reference (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1136007515" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1304" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1304/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1304">lightningdevkit#1304</a>).</p>
</li>
<li>
<p>Fixed a regression introduced in 0.0.104 where <code>ChannelManager</code>'s internal<br>
locks could have an order violation leading to a deadlock (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1100739724" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1238" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1238/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1238">lightningdevkit#1238</a>).</p>
</li>
<li>
<p>Fixed cases where slow code (including user I/O) could cause us to<br>
disconnect peers with ping timeouts in <code>BackgroundProcessor</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1109629722" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1269" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1269/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1269">lightningdevkit#1269</a>).</p>
</li>
<li>
<p>Now persist the <code>ChannelManager</code> prior to <code>BackgroundProcessor</code> stopping,<br>
preventing race conditions where channels are closed on startup even with a<br>
clean shutdown. This requires that users stop network processing and<br>
disconnect peers prior to <code>BackgroundProcessor</code> shutdown (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1107397165" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1253" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1253/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1253">lightningdevkit#1253</a>).</p>
</li>
<li>
<p>Fields in <code>ChannelHandshakeLimits</code> provided via the <code>override_config</code> to<br>
<code>create_channel</code> are now applied instead of the default config (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1121228383" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1292" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1292/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1292">lightningdevkit#1292</a>).</p>
</li>
<li>
<p>Fixed the generation of documentation on docs.rs to include API surfaces<br>
which are hidden behind feature flags (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1133605469" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1303" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1303/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1303">lightningdevkit#1303</a>).</p>
</li>
<li>
<p>Added the <code>channel_type</code> field to <code>accept_channel</code> messages we send, which<br>
may avoid some future compatibility issues with other nodes (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1140608707" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1314" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1314/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1314">lightningdevkit#1314</a>).</p>
</li>
<li>
<p>Fixed a bug where, if a previous LDK run using <code>lightning-persister</code> crashed<br>
while persisting updated data, we may have failed to initialize (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1148632694" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1332" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1332/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1332">lightningdevkit#1332</a>).</p>
</li>
<li>
<p>Fixed a rare bug where having both pending inbound and outbound HTLCs on a<br>
just-opened inbound channel could cause <code>ChannelDetails::balance_msat</code> to<br>
underflow and be reported as large, or cause panics in debug mode (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1108852442" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1268" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1268/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1268">lightningdevkit#1268</a>).</p>
</li>
<li>
<p>Moved more instances of verbose gossip logging from the <code>Trace</code> level to the<br>
<code>Gossip</code> level (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1084181967" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1220" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1220/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1220">lightningdevkit#1220</a>).</p>
</li>
<li>
<p>Delayed <code>announcement_signatures</code> until the channel has six confirmations,<br>
slightly improving propagation of channel announcements (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1058082435" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1179" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1179/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1179">lightningdevkit#1179</a>).</p>
</li>
<li>
<p>Several fixes in script and transaction weight calculations when anchor<br>
outputs are enabled (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1095641580" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1229" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1229/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1229">lightningdevkit#1229</a>).</p>
</li>
<li>
<p>Using <code>ChannelManager</code> data written by versions prior to 0.0.105 will result<br>
in preimages for HTLCs that were pending at startup to be missing in calls<br>
to <code>KeysInterface</code> methods (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1107249904" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1251" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1251/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1251">lightningdevkit#1251</a>).</p>
</li>
<li>
<p>Any phantom invoice payments received on a node that is not upgraded to<br>
0.0.105 will fail with an "unknown channel" error. Further, downgrading to<br>
0.0.104 or before and then upgrading again will invalidate existing phantom<br>
SCIDs which may be included in invoices (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1068971688" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1199" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1199/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1199">lightningdevkit#1199</a>).</p>
</li>
</ul>
<p>0.0.105 fixes two denial-of-service vulnerabilities which may be reachable from<br>
untrusted input in certain application designs.</p>
<ul>
<li>Route calculation spuriously panics when a routing decision is made for a<br>
path where the second-to-last hop is a private channel, included due to a<br>
multi-hop route hint in an invoice.</li>
<li><code>ChannelMonitor::get_claimable_balances</code> spuriously panics in some scenarios<br>
when the LDK application's local commitment transaction is confirmed while<br>
HTLCs are still pending resolution.</li>
</ul>
<p>In total, this release features 109 files changed, 7270 insertions, 2131<br>
deletions in 108 commits from 15 authors, in alphabetical order:</p>
<ul>
<li>Conor Okus</li>
<li>Devrandom</li>
<li>Elias Rohrer</li>
<li>Jeffrey Czyz</li>
<li>Jurvis Tan</li>
<li>Ken Sedgwick</li>
<li>Matt Corallo</li>
<li>Naveen</li>
<li>Tibo-lg</li>
<li>Valentine Wallace</li>
<li>Viktor Tigerström</li>
<li>dependabot[bot]</li>
<li>hackerrdave</li>
<li>naveen</li>
<li>vss96</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1042021-12-17T23:34:13Zv0.0.104<p>API Updates</p>
<ul>
<li>A <code>PaymentFailed</code> event is now provided to indicate a payment has failed<br>
fully. This event is generated either after<br>
<code>ChannelManager::abandon_payment</code> is called for a given payment, or the<br>
payment times out, and there are no further pending HTLCs for the payment.<br>
This event should be used to detect payment failure instead of<br>
<code>PaymentPathFailed::all_paths_failed</code>, unless no payment retries occur via<br>
<code>ChannelManager::retry_payment</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1071338036" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1202" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1202/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1202">lightningdevkit#1202</a>).</li>
<li>Payment secrets are now generated deterministically using material from<br>
the new <code>KeysInterface::get_inbound_payment_key_material</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1057596835" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1177" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1177/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1177">lightningdevkit#1177</a>).</li>
<li>A <code>PaymentPathSuccessful</code> event has been added to ease passing success info<br>
to a scorer, along with a <code>Score::payment_path_successful</code> method to accept<br>
such info (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1057923019" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1178" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1178/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1178">lightningdevkit#1178</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1067980136" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1197" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1197/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1197">lightningdevkit#1197</a>).</li>
<li><code>Score::channel_penalty_msat</code> has additional arguments describing the<br>
channel's capacity and the HTLC amount being sent over the channel (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1051574931" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1166" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1166/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1166">lightningdevkit#1166</a>).</li>
<li>A new log level <code>Gossip</code> has been added, which is used for verbose<br>
information generated during network graph sync. Enabling the<br>
<code>max_level_trace</code> feature or ignoring <code>Gossip</code> log entries reduces log<br>
growth during initial start up from many GiB to several MiB (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1038357561" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1145" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1145/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1145">lightningdevkit#1145</a>).</li>
<li>The <code>allow_wallclock_use</code> feature has been removed in favor of only using<br>
the <code>std</code> and <code>no-std</code> features (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1077250562" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1212" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1212/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1212">lightningdevkit#1212</a>).</li>
<li><code>NetworkGraph</code> can now remove channels that we haven't heard updates for in<br>
two weeks with <code>NetworkGraph::remove_stale_channels{,with_time}</code>. The first<br>
is called automatically if a <code>NetGraphMsgHandler</code> is passed to<br>
<code>BackgroundProcessor::start</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1077250562" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1212" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1212/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1212">lightningdevkit#1212</a>).</li>
<li><code>InvoicePayer::pay_pubkey</code> was added to enable sending "keysend" payments to<br>
supported recipients, using the <code>InvoicePayer</code> to handle retires (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1049258201" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1160" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1160/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1160">lightningdevkit#1160</a>).</li>
<li><code>user_payment_id</code> has been removed from <code>PaymentPurpose</code>, and<br>
<code>ChannelManager::create_inbound_payment{,_for_hash}</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1058863342" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1180" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1180/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1180">lightningdevkit#1180</a>).</li>
<li>Updated documentation for several <code>ChannelManager</code> functions to remove stale<br>
references to panics which no longer occur (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1070900972" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1201" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1201/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1201">lightningdevkit#1201</a>).</li>
<li>The <code>Score</code> and <code>LockableScore</code> objects have moved into the<br>
<code>routing::scoring</code> module instead of being in the <code>routing</code> module (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1051574931" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1166" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1166/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1166">lightningdevkit#1166</a>).</li>
<li>The <code>Time</code> parameter to <code>ScorerWithTime</code> is no longer longer exposed,<br>
instead being fixed based on the <code>std</code>/<code>no-std</code> feature (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1060840173" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1184" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1184/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1184">lightningdevkit#1184</a>).</li>
<li><code>ChannelDetails::balance_msat</code> was added to fetch a channel's balance<br>
without subtracting the reserve values, lining up with on-chain claim amounts<br>
less on-chain fees (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1071438834" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1203" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1203/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1203">lightningdevkit#1203</a>).</li>
<li>An explicit <code>UserConfig::accept_inbound_channels</code> flag is now provided,<br>
removing the need to set <code>min_funding_satoshis</code> to > 21 million BTC (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1056283247" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1173" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1173/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1173">lightningdevkit#1173</a>).</li>
<li>Inbound channels that fail to see the funding transaction confirm within<br>
2016 blocks are automatically force-closed with<br>
<code>ClosureReason::FundingTimedOut</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1000453684" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1083" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1083/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1083">lightningdevkit#1083</a>).</li>
<li>We now accept a channel_reserve value of 0 from counterparties, as it is<br>
insecure for our counterparty but not us (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1049410797" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1163" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1163/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1163">lightningdevkit#1163</a>).</li>
<li><code>NetAddress::OnionV2</code> parsing was removed as version 2 onion services are no<br>
longer supported in modern Tor (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1071599519" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1204" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1204/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1204">lightningdevkit#1204</a>).</li>
<li>Generation and signing of anchor outputs is now supported in the<br>
<code>KeysInterface</code>, though no support for them exists in the channel itself (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1057103978" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1176" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1176/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1176">lightningdevkit#1176</a>)</li>
</ul>
<p>Bug Fixes</p>
<ul>
<li>Fixed a race condition in <code>InvoicePayer</code> where paths may be retried after<br>
the retry count has been exceeded. In this case the<br>
<code>Event::PaymentPathFailed::all_paths_failed</code> field is not a reliable payment<br>
failure indicator. There was no acceptable alternative indicator,<br>
<code>Event::PaymentFailed</code> as been added to provide one (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1071338036" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1202" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1202/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1202">lightningdevkit#1202</a>).</li>
<li>Reduced the blocks-before-timeout we expect of outgoing HTLCs before<br>
refusing to forward. This check was overly strict and resulted in refusing<br>
to forward som HTLCs to a next hop that had a lower security threshold than<br>
us (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1024762206" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1119" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1119/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1119">lightningdevkit#1119</a>).</li>
<li>LDK no longer attempt to update the channel fee for outbound channels when<br>
we cannot afford the new fee. This could have caused force-closure by our<br>
channel counterparty (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="976258624" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1054" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1054/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1054">lightningdevkit#1054</a>).</li>
<li>Fixed several bugs which may have prevented the reliable broadcast of our<br>
own channel announcements and updates (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1052713874" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1169" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1169/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1169">lightningdevkit#1169</a>).</li>
<li>Fixed a rare bug which may have resulted in spurious route finding failures<br>
when using last-hop hints and MPP with large value payments (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1052420539" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1168" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1168/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1168">lightningdevkit#1168</a>).</li>
<li><code>KeysManager::spend_spendable_outputs</code> no longer adds a change output that<br>
is below the dust threshold for non-standard change scripts (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1028622044" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1131" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1131/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1131">lightningdevkit#1131</a>).</li>
<li>Fixed a minor memory leak when attempting to send a payment that fails due<br>
to an error when updating the <code>ChannelMonitor</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1036840986" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1143" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1143/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1143">lightningdevkit#1143</a>).</li>
<li>Fixed a bug where a <code>FeeEstimator</code> that returns values rounded to the next<br>
sat/vbyte may result in force-closures (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1073596294" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1208" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1208/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1208">lightningdevkit#1208</a>).</li>
<li>Handle MPP timeout HTLC error codes, instead of considering the recipient to<br>
have sent an invalid error, removing them from the network graph (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1040120639" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1148" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1148/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1148">lightningdevkit#1148</a>)</li>
</ul>
<p>Serialization Compatibility</p>
<ul>
<li>All above new events/fields are ignored by prior clients. All above new<br>
events/fields are not present when reading objects serialized by prior<br>
versions of the library.</li>
<li>Payment secrets are now generated deterministically. This reduces the memory<br>
footprint for inbound payments, however, newly-generated inbound payments<br>
using <code>ChannelManager::create_inbound_payment{,_for_hash}</code> will not be<br>
receivable using versions prior to 0.0.104.<br>
<code>ChannelManager::create_inbound_payment{,_for_hash}_legacy</code> are provided for<br>
backwards compatibility (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1057596835" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1177" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1177/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1177">lightningdevkit#1177</a>).</li>
<li><code>PaymentPurpose::InvoicePayment::user_payment_id</code> will be 0 when reading<br>
objects written with 0.0.104 when read by 0.0.103 and previous (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1058863342" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1180" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1180/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1180">lightningdevkit#1180</a>).</li>
</ul>
<p>In total, this release features 51 files changed, 5356 insertions, 2238<br>
deletions in 107 commits from 9 authors, in alphabetical order:</p>
<ul>
<li>Antoine Riard</li>
<li>Conor Okus</li>
<li>Devrandom</li>
<li>Duncan Dean</li>
<li>Elias Rohrer</li>
<li>Jeffrey Czyz</li>
<li>Ken Sedgwick</li>
<li>Matt Corallo</li>
<li>Valentine Wallace</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1032021-11-03T03:31:49Zv0.0.103<ul>
<li>
<p>This release is almost entirely focused on a new API in the<br>
<code>lightning-invoice</code> crate - the <code>InvoicePayer</code>. <code>InvoicePayer</code> is a<br>
struct which takes a reference to a <code>ChannelManager</code> and a <code>NetworkGraph</code><br>
and retries payments as paths fail. It limits retries to a configurable<br>
number, but is not serialized to disk and may retry additional times across<br>
a serialization/load. In order to learn about failed payments, it must<br>
receive <code>Event</code>s directly from the <code>ChannelManager</code>, wrapping a<br>
user-provided <code>EventHandler</code> which it provides all unhandled events to<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="977716822" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1059" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1059/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1059">lightningdevkit#1059</a>).</p>
</li>
<li>
<p><code>get_route</code> has been renamed <code>find_route</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="977716822" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1059" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1059/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1059">lightningdevkit#1059</a>) and now takes a <code>Payee</code><br>
struct in replacement of a number of its long list of arguments (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1031480419" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1134" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1134/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1134">lightningdevkit#1134</a>).<br>
<code>Payee</code> is further stored in the <code>Route</code> object returned and provided in the<br>
<code>RouteParameters</code> contained in <code>Event::PaymentPathFailed</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="977716822" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1059" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1059/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1059">lightningdevkit#1059</a>).</p>
</li>
<li>
<p><code>ChannelMonitor</code>s must now be persisted after calls which provide new block<br>
data, prior to <code>MonitorEvent</code>s being passed back to <code>ChannelManager</code> for<br>
processing. If you are using a <code>ChainMonitor</code> this is handled for you.<br>
The <code>Persist</code> API has been updated to <code>Option</code>ally take the<br>
<code>ChannelMonitorUpdate</code> as persistence events that result from chain data no<br>
longer have a corresponding update (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1016591948" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1108" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1108/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1108">lightningdevkit#1108</a>).</p>
</li>
<li>
<p><code>routing::Score</code> now has a <code>payment_path_failed</code> method which it can use to<br>
learn which channels often fail payments. It is automatically called by<br>
<code>InvoicePayer</code> for failed payment paths (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1037605719" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1144" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1144/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1144">lightningdevkit#1144</a>).</p>
</li>
<li>
<p>The default <code>Scorer</code> implementation is now a type alias to a type generic<br>
across different clocks and supports serialization to persist scoring data<br>
across restarts (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1039721182" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1146" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1146/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1146">lightningdevkit#1146</a>).</p>
</li>
<li>
<p><code>Event::PaymentSent</code> now includes the full fee which was spent across all<br>
payment paths which were fulfilled or pending when the payment was fulfilled<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1036837764" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1142" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1142/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1142">lightningdevkit#1142</a>).</p>
</li>
<li>
<p><code>NetGraphMsgHandler</code> now takes a <code>Deref</code> to the <code>NetworkGraph</code>, allowing for<br>
shared references to the graph data to make serialization and references to<br>
the graph data in the <code>InvoicePayer</code>'s <code>Router</code> simpler (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1041565144" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1149" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1149/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1149">lightningdevkit#1149</a>).</p>
</li>
<li>
<p><code>routing::Score::channel_penalty_msat</code> has been updated to provide the<br>
<code>NodeId</code> of both the source and destination nodes of a channel (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1029703710" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1133" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1133/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1133">lightningdevkit#1133</a>).</p>
</li>
<li>
<p>Delay disconnecting peers if we receive messages from them even if it takes<br>
a while to receive a pong from them. Further, avoid sending too many gossip<br>
messages between pings to ensure we should always receive pongs in a timely<br>
manner. Together, these should significantly reduce instances of us failing<br>
to remain connected to a peer during initial gossip sync (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1033949920" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1137" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1137/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1137">lightningdevkit#1137</a>).</p>
</li>
<li>
<p>If a payment is sent, creating an outbound HTLC and sending it to our<br>
counterparty (implying the <code>ChannelMonitor</code> was persisted on disk), but the<br>
<code>ChannelManager</code> was not persisted prior to shutdown/crash, no<br>
<code>Event::PaymentPathFailed</code> event will be generated if the HTLC is eventually<br>
failed on chain (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1014755981" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1104" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1104/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1104">lightningdevkit#1104</a>).</p>
</li>
<li>
<p>All above new Events/fields are ignored by prior clients. All above new<br>
Events/fields are not present when reading objects serialized by prior<br>
versions of the library.</p>
</li>
<li>
<p>Payments for which a <code>Route</code> was generated using a previous version or for<br>
which the payment was originally sent by a previous version of the library<br>
will not be retried by an <code>InvoicePayer</code>.</p>
</li>
</ul>
<p>This release was singularly focused and some contributions by third parties<br>
were delayed.<br>
In total, this release features 38 files changed, 4414 insertions, and 969<br>
deletions in 71 commits from 2 authors, in alphabetical order:</p>
<ul>
<li>Jeffrey Czyz</li>
<li>Matt Corallo</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1022021-10-18T19:25:21Zv0.0.102<p>API Updates</p>
<ul>
<li><code>get_route</code> now takes a <code>Score</code> as an argument. <code>Score</code> is queried during<br>
the route-finding process, returning the absolute amounts which you are<br>
willing to pay to avoid routing over a given channel. As a default, a<br>
<code>Scorer</code> is provided which returns a constant amount, with a suggested<br>
default of 500 msat. This translates to a willingness to pay up to 500 msat<br>
in additional fees per hop in order to avoid additional hops (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1026706891" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1124" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1124/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1124">lightningdevkit#1124</a>).</li>
<li><code>Event::PaymentPathFailed</code> now contains a <code>short_channel_id</code> field which may<br>
be filled in with a channel that can be "blamed" for the payment failure.<br>
Payment retries should likely avoid the given channel for some time (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="998954779" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1077" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1077/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1077">lightningdevkit#1077</a>).</li>
<li><code>PublicKey</code>s in <code>NetworkGraph</code> have been replaced with a <code>NodeId</code> struct<br>
which contains only a simple <code>[u8; 33]</code>, substantially improving<br>
<code>NetworkGraph</code> deserialization performance (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1015933990" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1107" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1107/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1107">lightningdevkit#1107</a>).</li>
<li><code>ChainMonitor</code>'s <code>HashMap</code> of <code>ChannelMonitor</code>s is now private, exposed via<br>
<code>Chainmonitor::get_monitor</code> and <code>ChainMonitor::list_monitors</code> instead<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1021423031" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1112" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1112/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1112">lightningdevkit#1112</a>).</li>
<li>When an outbound channel is closed prior to the broadcasting of its funding<br>
transaction, but after you call<br>
<code>ChannelManager::funding_transaction_generated</code>, a new event type,<br>
<code>Event::DiscardFunding</code>, is generated, informing you the transaction was not<br>
broadcasted and that you can spend the same inputs again elsewhere (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1008390479" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1098" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1098/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1098">lightningdevkit#1098</a>).</li>
<li><code>ChannelManager::create_channel</code> now returns the temporary channel ID which<br>
may later appear in <code>Event::ChannelClosed</code> or <code>ChannelDetails</code> prior to the<br>
channel being funded (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1025723912" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1121" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1121/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1121">lightningdevkit#1121</a>).</li>
<li><code>Event::PaymentSent</code> now contains the payment hash as well as the payment<br>
preimage (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="981091683" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1062" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1062/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1062">lightningdevkit#1062</a>).</li>
<li><code>ReadOnlyNetworkGraph::get_addresses</code> now returns owned <code>NetAddress</code> rather<br>
than references. As a side-effect this method is now exposed in foreign<br>
language bindings (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1023287235" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1115" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1115/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1115">lightningdevkit#1115</a>).</li>
<li>The <code>Persist</code> and <code>ChannelMonitorUpdateErr</code> types have moved to the<br>
<code>lightning::chain::chainmonitor</code> and <code>lightning::chain</code> modules,<br>
respectively (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1021423031" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1112" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1112/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1112">lightningdevkit#1112</a>).</li>
<li><code>ChannelManager::send_payment</code> now returns a <code>PaymentId</code> which identifies a<br>
payment (whether MPP or not) and can be used to retry the full payment or<br>
MPP parts through <code>retry_payment</code> (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1006801094" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1096" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1096/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1096">lightningdevkit#1096</a>). Note that doing so is currently<br>
<em>not</em> crash safe, and you may find yourself sending twice. It is recommended<br>
that you <em>not</em> use the <code>retry_payment</code> API until the next release.</li>
</ul>
<p>Bug Fixes</p>
<ul>
<li>Due to an earlier fix for the Lightning dust inflation vulnerability tracked<br>
in <a title="CVE-2021-41591" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-r6qw-cx64-86rx/hovercard" href="https://github.com/advisories/GHSA-r6qw-cx64-86rx">CVE-2021-41591</a>/<a title="CVE-2021-41592" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-rqmp-32v6-q5qj/hovercard" href="https://github.com/advisories/GHSA-rqmp-32v6-q5qj">CVE-2021-41592</a>/<a title="CVE-2021-41593" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-gjfm-mwrf-wg3p/hovercard" href="https://github.com/advisories/GHSA-gjfm-mwrf-wg3p">CVE-2021-41593</a> in 0.0.100, we required<br>
counterparties to accept a dust limit slightly lower than the dust limit now<br>
required by other implementations. This appeared as, at least, latest lnd<br>
always refusing to accept channels opened by LDK clients (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="987004961" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1065" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1065/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1065">lightningdevkit#1065</a>).</li>
<li>If there are multiple channels available to the same counterparty,<br>
<code>get_route</code> would only consider the channel listed last as available for<br>
sending (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1011357187" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1100" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1100/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1100">lightningdevkit#1100</a>).</li>
<li><code>Persist</code> implementations returning<br>
<code>ChannelMonitorUpdateErr::TemporaryFailure</code> from <code>watch_channel</code> previously<br>
resulted in the <code>ChannelMonitor</code> not being stored at all, resulting in a<br>
panic after monitor updating is complete (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1021423031" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1112" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1112/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1112">lightningdevkit#1112</a>).</li>
<li>If payments are pending awaiting forwarding at startup, an<br>
<code>Event::PendingHTLCsForwardable</code> event will always be provided. This ensures<br>
user code calls <code>ChannelManager::process_pending_htlc_fowards</code> even if it<br>
shut down while awaiting the batching timer during the previous run (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="997456390" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1076" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1076/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1076">lightningdevkit#1076</a>).</li>
<li>If a call to <code>ChannelManager::send_payment</code> failed due to lack of<br>
availability of funds locally, LDK would store the payment as pending<br>
forever, with no ability to retry or fail it, leaking memory (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1016707173" data-permission-text="Title is private" data-url="https://github.com/lightningdevkit/rust-lightning/issues/1109" data-hovercard-type="pull_request" data-hovercard-url="/lightningdevkit/rust-lightning/pull/1109/hovercard" href="https://github.com/lightningdevkit/rust-lightning/pull/1109">lightningdevkit#1109</a>).</li>
</ul>
<p>Serialization Compatibility</p>
<ul>
<li>All above new Events/fields are ignored by prior clients. All above new<br>
Events/fields, except for <code>Event::PaymentSent::payment_hash</code> are not present<br>
when reading objects serialized by prior versions of the library.</li>
</ul>
<p>In total, this release features 32 files changed, 2248 insertions, and 1483<br>
deletions in 51 commits from 7 authors, in alphabetical order:</p>
<ul>
<li>1nF0rmed</li>
<li>Duncan Dean</li>
<li>Elias Rohrer</li>
<li>Galder Zamarreño</li>
<li>Jeffrey Czyz</li>
<li>Matt Corallo</li>
<li>Valentine Wallace</li>
</ul>TheBlueMatttag:github.com,2008:Repository/533377134/v0.0.1012021-09-23T18:46:45Zv0.0.101<p>v0.0.101</p>TheBlueMatt