v0.0.107
0.0.107
API Updates
- Channels larger than 16777215 sats (Wumbo!) are now supported and can be
enabled for inbound channels using
ChannelHandshakeLimits::max_funding_satoshis
(#1425). - Support for feature
option_zeroconf
, allowing immediate forwarding of
payments after channel opening. This is configured for outbound channels
usingChannelHandshakeLimits::trust_own_funding_0conf
whereas
ChannelManager::accept_inbound_channel_from_trusted_peer_0conf
has to be
used for accepting inbound channels (#1401, #1505). ChannelManager::claim_funds
no longer returns abool
to indicate success.
Instead, anEvent::PaymentClaimed
is generated if the claim was successful.
Likewise,ChannelManager::fail_htlc_backwards
no longer has a return value
(#1434).lightning-rapid-gossip-sync
is a new crate for syncing gossip data from a
server, primarily aimed at mobile devices (#1155).RapidGossipSync
can be passed toBackgroundProcessor
in order to persist
theNetworkGraph
and handleNetworkUpdate
s during event handling (#1433,
#1517).NetGraphMsgHandler
has been renamed toP2PGossipSync
, thenetwork_graph
module has been renamed togossip
, andNetworkUpdate::ChannelClosed
has
been renamedNetworkUpdate::ChannelFailure
(#1159).- Added a
filtered_block_connected
method tochain::Listen
and a default
implementation ofblock_connected
for those fetching filtered instead of
full blocks (#1453). - The
lightning-block-sync
crate'sBlockSource
trait methods now take
&self
instead of&mut self
(#1307). inbound_payment
module is now public to allow for creating invoices without
aChannelManager
(#1384).lightning-block-sync
'sinit
andpoll
modules support&dyn BlockSource
which can be determined at runtime (#1423).lightning-invoice
crate'sutils
now accept an expiration time (#1422,
#1474).Event::PaymentForwarded
includesprev_channel_id
andnext_channel_id
(#1419, #1475).chain::Watch::release_pending_monitor_events
' return type now associates
MonitorEvent
s with fundingOutPoints
(#1475).lightning-background-processor
crate'sPersister
trait has been moved to
lightning
crate'sutil::persist
module, which now has a general
KVStorePersister
trait. Blanket implementations ofPersister
and
chainmonitor::Persist
are given for types implementingKVStorePersister
.
lightning-persister
'sFilesystemPersister
implementsKVStorePersister
(#1417).ChannelDetails
andChannelCounterparty
include fields for HTLC minimum
and maximum values (#1378).- Added a
max_inbound_htlc_value_in_flight_percent_of_channel
field to
ChannelHandshakeConfig
, capping the total value of outstanding inbound
HTLCs for a channel (#1444). ProbabilisticScorer
is parameterized by aLogger
, which it uses to log
channel liquidity updates or lack thereof (#1405).ChannelDetails
has anoutbound_htlc_limit_msat
field, which should be
used in routing instead ofoutbound_capacity_msat
(#1435).ProbabilisticScorer
's channel liquidities can be logged via
debug_log_liquidity_stats
(#1460).BackgroundProcessor
now takes an optionalWriteableScore
which it will
persist using thePersister
trait's newpersist_scorer
method (#1416).- Upgraded to
bitcoin
crate version 0.28.1 (#1389). ShutdownScript::new_witness_program
now takes aWitnessVersion
instead of
aNonZeroU8
(#1389).- Channels will no longer be automatically force closed when the counterparty
is disconnected due to incompatibility (#1429). ChannelManager
methods for funding, accepting, and closing channels now
take acounterparty_node_id
parameter, which has also been added as a field
toEvent::FundingGenerationReady
(#1479, #1485).InvoicePayer::new
now takes aRetry
enum (replacing theRetryAttempts
struct), which supports both attempt- and timeout-based retrying (#1418).Score::channel_penalty_msat
takes aChannelUsage
struct, which contains
the capacity as anEffectiveCapacity
enum and any potential in-flight HTLC
value, rather than a singleu64
. Used byProbabilisticScorer
for more
accurate penalties (#1456).build_route_from_hops
is a new function useful for constructing aRoute
given a specific list of public keys (#1491).FundingLocked
message has been renamedChannelReady
, and related
identifiers have been renamed accordingly (#1506).core2::io
orstd::io
(depending on feature flagsno-std
orstd
) is
exported as alightning::io
module (#1504).- The deprecated
Scorer
has been removed in favor orProbabilisticScorer
(#1512).
Performance Improvements
lightning-persister
crate'sFilesystemPersister
is faster by 15x (#1404).- Log gossip query messages at
GOSSIP
instead ofTRACE
to avoid
overwhelming default logging (#1421). PeerManager
supports processing messages from different peers in parallel,
and this is taken advantage of in gossip processing (#1023).- Greatly reduced per-channel and per-node memory usage due to upgrade of
secp256k1
crate to 0.22.1 andbitcoin
crate to 0.28.1 - Reduced per-peer memory usage in
PeerManager
(#1472).
Spec Compliance
find_route
now assumes variable-length onions by default for nodes where
support for the feature is unknown (#1414).- A
warn
message is now sent when receiving achannel_reestablish
with an
old commitment transaction number rather than immediately force-closing the
channel (#1430). - When a
channel_update
message is included in an onion error'sfailuremsg
,
its message type is now encoded. Reading such messages is also supported
(#1465).
Bug Fixes
- Fixed a bug where crashing while persisting a
ChannelMonitorUpdate
for a
part of a multi-path payment could cause loss of funds due to a partial
payment claim on restart (#1434). BackgroundProcessor
has been fixed to improve serialization reliability on
slow systems which can avoid force-closes (#1436).gossip_timestamp_filter
filters are now honored when sending gossip to
peers (#1452).- During a reorg, only force-close a channel if its funding transaction is
unconfirmed rather than as it loses confirmations (#1461). - Fixed a rare panic in
lightning-net-tokio
when fetching a peer's socket
address after the connection has been closed caused by a race condition
(#1449). find_route
will no longer return routes that would cause onion construction
to fail in some cases (#1476).ProbabilisticScorer
uses more precision when approximatinglog10
(#1406).
Serialization Compatibility
- All above new events/fields are ignored by prior clients. All above new
events/fields are not present when reading objects serialized by prior
versions of the library. ChannelManager
serialization is no longer compatible with versions prior to
0.0.99 (#1401).- Channels with
option_zeroconf
feature enabled (not required for 0-conf
channel use) will be unreadable by versions prior to 0.0.107 (#1401, #1505).
In total, this release features 96 files changed, 9304 insertions, 4503
deletions in 153 commits from 18 authors, in alphabetical order:
- Arik Sosman
- Devrandom
- Duncan Dean
- Elias Rohrer
- Jeffrey Czyz
- John Cantrell
- John Corser
- Jurvis Tan
- Justin Moon
- KaFai Choi
- Mateusz Faltyn
- Matt Corallo
- Valentine Wallace
- Viktor Tigerström
- Vincenzo Palazzo
- atalw
- dependabot[bot]
- shamardy