]> git.bitcoin.ninja Git - rust-lightning/log
rust-lightning
2 years agoMerge pull request #1587 from TheBlueMatt/2022-07-109-bindings
Matt Corallo [Fri, 1 Jul 2022 20:35:02 +0000 (13:35 -0700)]
Merge pull request #1587 from TheBlueMatt/2022-07-109-bindings

[0.0.109-bindings] Port Bindings-Specific Changes to 109

2 years agoTag `KVStore` `(C-not exported)` as `Writeable` isn't mapped 2022-07-109-bindings
Matt Corallo [Sun, 26 Jun 2022 18:14:30 +0000 (18:14 +0000)]
Tag `KVStore` `(C-not exported)` as `Writeable` isn't mapped

Currently `Writeable` is mapped manually, making it impossible to
automatically map a trait method that is parameterized by
`Writeable` (as is true for the `write` method on `KVStore`).

Ultimately we'll want to move to automatically mapping `Writeable`
like any other trait (only manually mapping the std `Write` and
`Read` traits), so this is only a candidate for the bindings branch,
not upstream. That may take a few releases, however.

2 years agoConcretize `WriteableScore` into `MultiThreadedLockableScore`
Matt Corallo [Sun, 26 Jun 2022 01:44:21 +0000 (01:44 +0000)]
Concretize `WriteableScore` into `MultiThreadedLockableScore`

In general the bindings don't handle blanket implementations well -
they generate concrete implementations for everything and don't
bother building up enough context to be aware of the blanket
implementation to avoid duplicating it while still allowing users
to access struct(s) as all implemented traits.

Thus, implementing `WriteableScore` for all `LockableScore`s that
also implement `Writeable` is particularly impractical to map in
bindings.

Further, because `Score` already requires `Writeable`, having a
separate `WriteableScore` doesn't really make any sense.

Here we simply remove `WriteableScore` (in `c_bindings` mode)
entirely and push users through `MultiThreadedLockableScore` in the
higher-level traits that require `Score`.

2 years agoRestrict ChannelInfo::as_directed_from visibility
Jeffrey Czyz [Tue, 29 Mar 2022 15:20:39 +0000 (10:20 -0500)]
Restrict ChannelInfo::as_directed_from visibility

Bindings can't handle references in return types, so reduce the
visibility to pub(crate).

2 years agoSimplify type aliasing somewhat around times
Matt Corallo [Tue, 1 Mar 2022 03:47:28 +0000 (03:47 +0000)]
Simplify type aliasing somewhat around times

.. as the current C bindings generator isn't capable of handling
type aliases in generics in type alias definition currently.

2 years agoMake `as_directed_to` non-public
Matt Corallo [Tue, 1 Mar 2022 03:46:52 +0000 (03:46 +0000)]
Make `as_directed_to` non-public

...as the bindings generation does not currently have the ability
to map a reference to a `NodeId` inside a tuple.

2 years ago(Bindings Only) Concretize LockableScore as MultiThreadedLockableScore
Matt Corallo [Fri, 17 Dec 2021 22:32:24 +0000 (22:32 +0000)]
(Bindings Only) Concretize LockableScore as MultiThreadedLockableScore

We don't really care about more than this in bindings - calling
into a custom `Score` is likely too slow to be practical anyway,
so this is also a performance improvement.

Works around https://github.com/rust-lang/rust/issues/90448

2 years agoMerge pull request #1582 from TheBlueMatt/2022-06-0.0.109 v0.0.109
Matt Corallo [Fri, 1 Jul 2022 17:37:17 +0000 (10:37 -0700)]
Merge pull request #1582 from TheBlueMatt/2022-06-0.0.109

Cut 0.0.109

2 years agoBump crate versions to 0.0.109/invoice 0.17
Matt Corallo [Tue, 28 Jun 2022 20:14:59 +0000 (20:14 +0000)]
Bump crate versions to 0.0.109/invoice 0.17

2 years agoUpdate contributor list for 0.0.107 to be consistent with 0.0.109
Matt Corallo [Thu, 30 Jun 2022 22:46:06 +0000 (22:46 +0000)]
Update contributor list for 0.0.107 to be consistent with 0.0.109

2 years agoAdd 0.0.109 CHANGELOG entry.
Matt Corallo [Tue, 28 Jun 2022 20:13:15 +0000 (20:13 +0000)]
Add 0.0.109 CHANGELOG entry.

2 years agoMerge pull request #1585 from TheBlueMatt/2022-06-copy_from_slice-sucks
Matt Corallo [Fri, 1 Jul 2022 16:05:02 +0000 (09:05 -0700)]
Merge pull request #1585 from TheBlueMatt/2022-06-copy_from_slice-sucks

Fix spurious panic on bogus funding txn that confirm and are spent

2 years agoFix spurious panic on bogus funding txn that confirm and are spent 2022-06-copy_from_slice-sucks
Matt Corallo [Tue, 14 Jun 2022 10:54:39 +0000 (10:54 +0000)]
Fix spurious panic on bogus funding txn that confirm and are spent

In c02b6a3807488e1943d79792c5ac0ee52530b971 we moved the
`payment_preimage` copy from inside the macro which only runs if we
are spending an output we know is an HTLC output to doing it for
any script that matches our expected length. This can panic if an
inbound channel is created with a bogus funding transaction that
has a witness program of the HTLC-Success/-Offered length but which
does not have a second-to-last witness element which is 32 bytes.

Luckily this panic is relatively simple for downstream users to
work around - if an invalid-length-copy panic occurs, simply remove
the ChannelMonitor from the bogus channel on startup and run
without it. Because the channel must be funded by a bogus script in
order to reach this panic, the channel will already have closed by
the time the funding transaction is spent, and there can be no
local funds in such a channel, so removing the `ChannelMonitor`
wholesale is completely safe.

In order to test this we have to disable an in-line assertion that
checks that our transactions match expected scripts which we do by
checking for the specific bogus script that we now use in
`test_invalid_funding_tx`.

Thanks to Eugene Siegel for reporting this issue.

2 years agoMerge pull request #1583 from TheBlueMatt/2022-06-no-ro-graph
Matt Corallo [Wed, 29 Jun 2022 19:57:51 +0000 (12:57 -0700)]
Merge pull request #1583 from TheBlueMatt/2022-06-no-ro-graph

Have `find_route` take a `NetworkGraph` instead of a `ReadOnly` one

2 years agoHave `find_route` take a `NetworkGraph` instead of a `ReadOnly` one 2022-06-no-ro-graph
Matt Corallo [Wed, 29 Jun 2022 17:41:30 +0000 (17:41 +0000)]
Have `find_route` take a `NetworkGraph` instead of a `ReadOnly` one

Because downstream languages are often garbage-collected, having
the user directly allocate a `ReadOnlyNetworkGraph` and pass a
reference to it to `find_route` often results in holding a read
lock long in excess of the `find_route` call. Worse, some languages
(like JavaScript) tend to only garbage collect when other code is
not running, possibly leading to deadlocks.

2 years agoMerge pull request #1564 from TheBlueMatt/2022-06-panic-on-behind
Matt Corallo [Mon, 27 Jun 2022 16:34:26 +0000 (09:34 -0700)]
Merge pull request #1564 from TheBlueMatt/2022-06-panic-on-behind

Panic if we're running with outdated state instead of force-closing

2 years agoMerge pull request #1555 from tnull/2022-06-prefer-small-htlc-max
valentinewallace [Mon, 27 Jun 2022 15:37:05 +0000 (11:37 -0400)]
Merge pull request #1555 from tnull/2022-06-prefer-small-htlc-max

Add anti-probing penalty to `ProbabilisticScorer`

2 years agoAdd anti-probing penalty to `ProbabilisticScorer`
Elias Rohrer [Fri, 24 Jun 2022 16:33:15 +0000 (18:33 +0200)]
Add anti-probing penalty to `ProbabilisticScorer`

Currently, channel balances may be rather easily discovered through
probing. This however poses a privacy risk, since the analysis of
balance changes over adjacent channels could in the worst case empower an adversary to
mount an end-to-end deanonymization attack, i.e., track who payed whom.

The penalty added here is applied so we prefer nodes with a smaller `htlc_maximum_msat`, which makes
balance discovery attacks harder to execute. As this improves privacy network-wide, we
treat such nodes preferentially and hence create an incentive to restrict
`htlc_maximum_msat`.

2 years agoPanic if we're running with outdated state instead of force-closing 2022-06-panic-on-behind
Matt Corallo [Thu, 23 Jun 2022 21:25:17 +0000 (21:25 +0000)]
Panic if we're running with outdated state instead of force-closing

When we receive a `channel_reestablish` with a `data_loss_protect`
that proves we're running with a stale state, instead of
force-closing the channel, we immediately panic. This lines up with
our refusal to run if we find a `ChannelMonitor` which is stale
compared to our `ChannelManager` during `ChannelManager`
deserialization. Ultimately both are an indication of the same
thing - that the API requirements on `chain::Watch` were violated.

In the "running with outdated state but ChannelMonitor(s) and
ChannelManager lined up" case specifically its likely we're running
off of an old backup, in which case connecting to peers with
channels still live is explicitly dangerous. That said, because
this could be an operator error that is correctable, panicing
instead of force-closing may allow for normal operation again in
the future (cc #1207).

In any case, we provide instructions in the panic message for how
to force-close channels prior to peer connection, as well as a note
on how to broadcast the latest state if users are willing to take
the risk.

Note that this is still somewhat unsafe until we resolve #1563.

2 years agoAdd ChannelManager methods to force close without broadcasting
Matt Corallo [Thu, 23 Jun 2022 20:25:58 +0000 (20:25 +0000)]
Add ChannelManager methods to force close without broadcasting

If a user restores from a backup that they know is stale, they'd
like to force-close all of their channels (or at least the ones
they know are stale) *without* broadcasting the latest state,
asking their peers to do so instead. This simply adds methods to do
so, renaming the existing `force_close_channel` and
`force_close_all_channels` methods to disambiguate further.

2 years agoMerge pull request #1550 from tnull/2022-06-scorer-banlist
Matt Corallo [Fri, 24 Jun 2022 15:39:12 +0000 (08:39 -0700)]
Merge pull request #1550 from tnull/2022-06-scorer-banlist

Allow nodes to be avoided during pathfinding

2 years agoAllow nodes to be avoided during pathfinding
Elias Rohrer [Sat, 18 Jun 2022 14:24:37 +0000 (16:24 +0200)]
Allow nodes to be avoided during pathfinding

Users may want to - for whatever reasons - prevent payments to be routed
over certain nodes. This change therefore allows to add `NodeId`s to a
list of banned nodes, which then will be avoided during path finding.

2 years agoMerge pull request #1518 from valentinewallace/2022-06-OMs-prefactor
Matt Corallo [Tue, 21 Jun 2022 23:13:37 +0000 (16:13 -0700)]
Merge pull request #1518 from valentinewallace/2022-06-OMs-prefactor

Onion messages v1 pre-refactor

2 years agoEnable simultaneous deserialization+decryption of a ChaChaPoly stream
Valentine Wallace [Tue, 14 Jun 2022 20:28:45 +0000 (16:28 -0400)]
Enable simultaneous deserialization+decryption of a ChaChaPoly stream

In the upcoming onion messages PR, this will allow us to avoid decrypting onion
message encrypted data in an intermediate Vec before decoding it. Instead we
decrypt and decode it at the same time using this new ChaChaPolyReadAdapter object.

In doing so, we need to adapt the decode_tlv_stream macro such that it will
decode a LengthReadableArgs, which is a new trait as well. This trait is
necessary because ChaChaPoly needs to know the total length ahead of time to
separate out the tag at the end.

2 years agoMerge pull request #1556 from danielgranhao/2022-06-improve-docs
valentinewallace [Tue, 21 Jun 2022 19:59:31 +0000 (15:59 -0400)]
Merge pull request #1556 from danielgranhao/2022-06-improve-docs

Clarify description of get_node_secret() method

2 years agochacha20poly1305: enable simultaneous writing+encryption
Valentine Wallace [Tue, 14 Jun 2022 20:13:34 +0000 (16:13 -0400)]
chacha20poly1305: enable simultaneous writing+encryption

In the upcoming onion messages PR, this will allow us to avoid encoding onion
message encrypted data into an intermediate Vec before encrypting it.  Instead
we encode and encrypt at the same time using this new ChaChaPolyWriteAdapter object.

2 years agoMerge pull request #1486 from TheBlueMatt/2022-05-revoked-txn-edge-cases
Matt Corallo [Tue, 21 Jun 2022 18:47:15 +0000 (11:47 -0700)]
Merge pull request #1486 from TheBlueMatt/2022-05-revoked-txn-edge-cases

Fix two edge cases in handling of counterparty revoked commitment txn

2 years agoChange description of get_node_secret()
Daniel Granhão [Tue, 21 Jun 2022 16:38:57 +0000 (17:38 +0100)]
Change description of get_node_secret()

2 years agoMerge pull request #1548 from NicolaLS/serde-module
Matt Corallo [Tue, 21 Jun 2022 16:20:38 +0000 (09:20 -0700)]
Merge pull request #1548 from NicolaLS/serde-module

add feature for Invoice ser/de

2 years agoDon't fail HTLCs in revoked commitment txn until we spend them 2022-05-revoked-txn-edge-cases
Matt Corallo [Sat, 30 Apr 2022 20:30:00 +0000 (20:30 +0000)]
Don't fail HTLCs in revoked commitment txn until we spend them

When we see a counterparty revoked commitment transaction on-chain
we shouldn't immediately queue up HTLCs present in it for
resolution until we have spent the HTLC outputs in some kind of
claim transaction.

In order to do so, we first have to change the
`fail_unbroadcast_htlcs!()` call to provide it with the HTLCs which
are present in the (revoked) commitment transaction which was
broadcast. However, this is not sufficient - because all of those
HTLCs had their `HTLCSource` removed when the commitment
transaction was revoked, we also have to update
`fail_unbroadcast_htlcs` to check the payment hash and amount when
the `HTLCSource` is `None`.

Somewhat surprisingly, several tests actually explicitly tested for
the old behavior, which required amending to pass with the new
changes.

Finally, this adds a debug assertion when writing `ChannelMonitor`s
to ensure `HTLCSource`s do not leak.

2 years agoMerge pull request #1527 from wpaulino/update-htlc-relay-policy
Matt Corallo [Tue, 21 Jun 2022 16:02:29 +0000 (09:02 -0700)]
Merge pull request #1527 from wpaulino/update-htlc-relay-policy

Expose API to update a channel's ChannelConfig

2 years agoUse new Channel::update_config method to update base fee in test
Wilmer Paulino [Wed, 15 Jun 2022 23:34:30 +0000 (16:34 -0700)]
Use new Channel::update_config method to update base fee in test

2 years agoAllow forwarding HTLCs that were constructed for previous config
Wilmer Paulino [Wed, 15 Jun 2022 23:33:23 +0000 (16:33 -0700)]
Allow forwarding HTLCs that were constructed for previous config

This is mostly motivated by the fact that payments may happen while the
latest `ChannelUpdate` indicating our new `ChannelConfig` is still
propagating throughout the network. By temporarily allowing the previous
config, we can help reduce payment failures across the network.

2 years agoTrack previous ChannelConfig and expire after enough ticks
Wilmer Paulino [Thu, 16 Jun 2022 23:24:42 +0000 (16:24 -0700)]
Track previous ChannelConfig and expire after enough ticks

We do this to prevent payment failures while the `ChannelUpdate` for the
new `ChannelConfig` still propagates throughout the network. In a follow
up commit, we'll honor forwarding HTLCs that were constructed based on
either the previous or current `ChannelConfig`.

To handle expiration (when we should stop allowing the previous config),
we rely on the ChannelManager's `timer_tick_occurred` method. After
enough ticks, the previous config is cleared from memory, and only the
current config applies moving forward.

2 years agoExpose API to update a channel's ChannelConfig
Wilmer Paulino [Tue, 14 Jun 2022 23:41:32 +0000 (16:41 -0700)]
Expose API to update a channel's ChannelConfig

A new `update_channel_config` method is exposed on the `ChannelManger`
to update the `ChannelConfig` for a set of channels atomically. New
`ChannelUpdate` events are generated for each eligible channel.

Note that as currently implemented, a buggy and/or
auto-policy-management client could spam the network with updates as
there is no rate-limiting in place. This could already be done with
`broadcast_node_announcement`, though users are less inclined to update
that as frequently as its data is mostly static.

2 years agoExpose ChannelConfig within ChannelDetails
Wilmer Paulino [Tue, 14 Jun 2022 23:40:12 +0000 (16:40 -0700)]
Expose ChannelConfig within ChannelDetails

As we prepare to expose an API to update a channel's ChannelConfig,
we'll also want to expose this struct to consumers such that they have
insights into the current ChannelConfig applied for each channel.

2 years agoadd optional dependency on serde to implement serialize/deserialize for invoice
NicolaLS [Thu, 16 Jun 2022 11:52:49 +0000 (13:52 +0200)]
add optional dependency on serde to implement serialize/deserialize for invoice

2 years agoMerge pull request #1549 from tnull/2022-06-scorer-query-interface
Jeffrey Czyz [Sat, 18 Jun 2022 17:59:27 +0000 (12:59 -0500)]
Merge pull request #1549 from tnull/2022-06-scorer-query-interface

Provide simple interface to query estimated min/max liquidity

2 years agoProvide simple interface to query est. liquidity
Elias Rohrer [Sat, 18 Jun 2022 12:40:36 +0000 (14:40 +0200)]
Provide simple interface to query est. liquidity

2 years agoonion_utils: add next_hop_packet_pubkey method
Valentine Wallace [Fri, 27 May 2022 00:36:32 +0000 (17:36 -0700)]
onion_utils: add next_hop_packet_pubkey method

To get the next hop's packet's pubkey. This will be used to DRY onion message
forwarding in the upcoming Onion Messages PR #1503

2 years agoMerge pull request #1532 from ariard/2022-06-scaleup-far-away
Matt Corallo [Fri, 17 Jun 2022 00:27:27 +0000 (17:27 -0700)]
Merge pull request #1532 from ariard/2022-06-scaleup-far-away

Scale up CLTV_FAR_FAR_AWAY to 2 weeks of blocks

2 years agoScale up CLTV_FAR_FAR_AWAY to 2 weeks of blocks
Antoine Riard [Thu, 9 Jun 2022 21:53:37 +0000 (17:53 -0400)]
Scale up CLTV_FAR_FAR_AWAY to 2 weeks of blocks

2 years agoMerge pull request #1544 from jkczyz/2022-06-node-alias
Matt Corallo [Thu, 16 Jun 2022 13:34:08 +0000 (06:34 -0700)]
Merge pull request #1544 from jkczyz/2022-06-node-alias

Define `NodeAlias` struct and `Display` impl

2 years agoMerge pull request #1531 from ariard/2022-06-fee-sniping
Matt Corallo [Thu, 16 Jun 2022 13:12:29 +0000 (06:12 -0700)]
Merge pull request #1531 from ariard/2022-06-fee-sniping

Funding_tx: add anti-fee sniping recommendation and check if final

2 years agoDefine NodeAlias struct and Display impl
Jeffrey Czyz [Thu, 9 Jun 2022 20:17:01 +0000 (15:17 -0500)]
Define NodeAlias struct and Display impl

Provide a wrapper struct for 32-byte node aliases, which implements
Display for printing. Support the UTF-8 character encoding, but replace
control characters and terminate at the first null character. Fall back
to ASCII if the byte sequence is an invalid encoding.

2 years agoCorrect handling of reorg'd-out revoked counterparty transactions
Matt Corallo [Tue, 17 May 2022 00:12:20 +0000 (00:12 +0000)]
Correct handling of reorg'd-out revoked counterparty transactions

Previously, while processing a confirmed revoked counterparty
commitment transaction, we'd populate `OnchainEvent`s for live
HTLCs with a `txid` source of the txid of the latest counterparty
commitment transactions, not the confirmed revoked one. This meant
that, if the user is using `transaction_unconfirmed` to notify us
of reorg information, we'd end up not removing the entry if the
revoked commitment transaction was reorg'd out. This would
ultimately cause us to spuriously resolve the HTLC(s) as the chain
advanced, even though we were doing so based on a now-reorged-out
transaction.

Luckily the fix is simple - set the correct txid in the
`OnchainEventEntry`. We also take this opportunity to update
logging in a few places with the txid of the transaction causing an
event.

2 years agoMerge pull request #1541 from jkczyz/2022-06-nit-follow-ups
Matt Corallo [Wed, 15 Jun 2022 09:52:35 +0000 (02:52 -0700)]
Merge pull request #1541 from jkczyz/2022-06-nit-follow-ups

2 years agoRecommend funding_tx to apply anti-fee sniping
Antoine Riard [Thu, 9 Jun 2022 21:40:42 +0000 (17:40 -0400)]
Recommend funding_tx to apply anti-fee sniping

2 years agoCheck if funding transaction is final for propagation
Antoine Riard [Thu, 9 Jun 2022 21:31:04 +0000 (17:31 -0400)]
Check if funding transaction is final for propagation

If the funding transaction is timelocked beyond the next block of
our best known chain tip, return an APIError instead of silently
failing at broadcast attempt.

2 years agoMerge pull request #1540 from wpaulino/rename-config-fields
Matt Corallo [Tue, 14 Jun 2022 11:57:02 +0000 (04:57 -0700)]
Merge pull request #1540 from wpaulino/rename-config-fields

2 years agoRemove unnecessary identifiers from match pattern
Jeffrey Czyz [Mon, 13 Jun 2022 23:25:15 +0000 (18:25 -0500)]
Remove unnecessary identifiers from match pattern

2 years agoReplace Arc with reference in some tests
Jeffrey Czyz [Mon, 13 Jun 2022 22:25:10 +0000 (17:25 -0500)]
Replace Arc with reference in some tests

2 years agoFix grammar in BackgroundProcessor::start docs
Jeffrey Czyz [Mon, 13 Jun 2022 23:18:19 +0000 (18:18 -0500)]
Fix grammar in BackgroundProcessor::start docs

2 years agoRename UserConfig and LegacyChannelConfig fields
Wilmer Paulino [Mon, 13 Jun 2022 19:53:56 +0000 (12:53 -0700)]
Rename UserConfig and LegacyChannelConfig fields

The current names aren't very clear to what each field represents, this
commit aims to improve that.

2 years agoMerge pull request #1526 from tnull/2022-06-fix-minimal-value-contrib
Matt Corallo [Mon, 13 Jun 2022 17:50:19 +0000 (10:50 -0700)]
Merge pull request #1526 from tnull/2022-06-fix-minimal-value-contrib

Fix per-path minimal value contribution during route finding

2 years agoAdd failure test cases for `max_mpp_path_count`.
Elias Rohrer [Thu, 9 Jun 2022 12:59:44 +0000 (14:59 +0200)]
Add failure test cases for `max_mpp_path_count`.

2 years agoFix min. contrib. depending on `max_mpp_path_count`
Elias Rohrer [Tue, 7 Jun 2022 08:21:45 +0000 (10:21 +0200)]
Fix min. contrib. depending on `max_mpp_path_count`

2 years agoMerge pull request #1514 from mattfaltyn/issue438
Matt Corallo [Mon, 13 Jun 2022 11:19:02 +0000 (04:19 -0700)]
Merge pull request #1514 from mattfaltyn/issue438

2 years agoMerge pull request #1529 from wpaulino/move-channel-config-static-fields
Matt Corallo [Mon, 13 Jun 2022 11:04:23 +0000 (04:04 -0700)]
Merge pull request #1529 from wpaulino/move-channel-config-static-fields

Move ChannelConfig static fields to ChannelHandshakeConfig

2 years agoDocument better optional features
Matt [Sun, 12 Jun 2022 18:31:53 +0000 (11:31 -0700)]
Document better optional features

2 years agoMerge pull request #1535 from TheBlueMatt/2022-06-108-ugh v0.0.108
Matt Corallo [Fri, 10 Jun 2022 16:44:11 +0000 (09:44 -0700)]
Merge pull request #1535 from TheBlueMatt/2022-06-108-ugh

Cut 0.0.108

2 years agoUpdate crate versions to 0.0.108/invoice 0.16 2022-06-108-ugh
Matt Corallo [Fri, 10 Jun 2022 10:41:51 +0000 (10:41 +0000)]
Update crate versions to 0.0.108/invoice 0.16

2 years agoUpdate CHANGELOG for 0.0.108
Matt Corallo [Fri, 10 Jun 2022 10:42:15 +0000 (10:42 +0000)]
Update CHANGELOG for 0.0.108

2 years agoMerge pull request #1534 from tnull/2022-06-check-release-build
Matt Corallo [Fri, 10 Jun 2022 14:51:41 +0000 (07:51 -0700)]
Merge pull request #1534 from tnull/2022-06-check-release-build

Check release build in CI

2 years agoCheck release build profile in CI
Elias Rohrer [Fri, 10 Jun 2022 08:45:57 +0000 (10:45 +0200)]
Check release build profile in CI

So far, CI did not check the code in the `release` build profile, which
could result in some things not getting caught. To fix this, we now
implement a new CI job that runs checks in the `release` profile.

Switch to stable toolchain.

2 years agoMerge pull request #1533 from lexe-tech/fix-release
Matt Corallo [Fri, 10 Jun 2022 10:34:09 +0000 (03:34 -0700)]
Merge pull request #1533 from lexe-tech/fix-release

Fix `lightning-background-processor` release build

2 years agoFix lightning-background-processor release build
Max Fang [Fri, 10 Jun 2022 05:58:26 +0000 (22:58 -0700)]
Fix lightning-background-processor release build

2 years agoIntroduce LegacyChannelConfig to remain backwards compatible
Wilmer Paulino [Thu, 9 Jun 2022 21:01:56 +0000 (14:01 -0700)]
Introduce LegacyChannelConfig to remain backwards compatible

ChannelConfig now has its static fields removed. We introduce a new
LegacyChannelConfig struct that maintains the serialization as
previously defined by ChannelConfig to remain backwards compatible with
clients running 0.0.107 and earlier.

2 years agoMove commit_upfront_shutdown_pubkey to ChannelHandshakeConfig
Wilmer Paulino [Wed, 8 Jun 2022 22:40:58 +0000 (15:40 -0700)]
Move commit_upfront_shutdown_pubkey to ChannelHandshakeConfig

As like the previous commit, `commit_upfront_shutdown_pubkey` is another
static field that cannot change after the initial channel handshake. We
therefore move it out from its existing place in `ChannelConfig`.

2 years agoMove announced_channel to ChannelHandshakeConfig
Wilmer Paulino [Thu, 9 Jun 2022 23:11:15 +0000 (16:11 -0700)]
Move announced_channel to ChannelHandshakeConfig

In the near future, we plan to allow users to update their
`ChannelConfig` after the initial channel handshake. In order to reuse
the same struct and expose it to users, we opt to move out all static
fields that cannot be updated after the initial channel handshake.

2 years agoMerge pull request #1496 from TheBlueMatt/2022-05-macro-function-bonus
Arik Sosman [Thu, 9 Jun 2022 16:10:27 +0000 (12:10 -0400)]
Merge pull request #1496 from TheBlueMatt/2022-05-macro-function-bonus

Make `expect_payment_failed_conditions` a function

2 years agoMake `expect_payment_failed_conditions` a function 2022-05-macro-function-bonus
Matt Corallo [Fri, 20 May 2022 02:56:59 +0000 (02:56 +0000)]
Make `expect_payment_failed_conditions` a function

This reduces macro generated code in tests a good bit, and moves us
one step further away from using macros everywhere when we don't
need to.

2 years agoMerge pull request #1513 from TheBlueMatt/2022-06-fix-fuzz-nonbug
valentinewallace [Thu, 9 Jun 2022 01:32:22 +0000 (18:32 -0700)]
Merge pull request #1513 from TheBlueMatt/2022-06-fix-fuzz-nonbug

Do not panic on early tx broadcasts in fuzzing

2 years agoMerge pull request #1524 from ViktorTigerstrom/2022-06-update-fail-holding-cell-htlcs...
Matt Corallo [Thu, 9 Jun 2022 00:12:20 +0000 (17:12 -0700)]
Merge pull request #1524 from ViktorTigerstrom/2022-06-update-fail-holding-cell-htlcs-args

Pass `counterparty_node_id` to `fail_holding_cell_htlcs`

2 years agoMerge pull request #1525 from jkczyz/2022-05-release-0.0.107 v0.0.107
Matt Corallo [Wed, 8 Jun 2022 23:44:03 +0000 (16:44 -0700)]
Merge pull request #1525 from jkczyz/2022-05-release-0.0.107

Cut 0.0.107

2 years agoBump crate versions to 0.0.107/invoice 0.15
Jeffrey Czyz [Mon, 6 Jun 2022 18:49:29 +0000 (13:49 -0500)]
Bump crate versions to 0.0.107/invoice 0.15

2 years agoUpdate CHANGELOG for 0.0.107
Jeffrey Czyz [Mon, 30 May 2022 18:30:49 +0000 (11:30 -0700)]
Update CHANGELOG for 0.0.107

2 years agoPass `peer_node_id` to `fail_holding_cell_htlcs`
Viktor Tigerström [Mon, 6 Jun 2022 18:38:28 +0000 (20:38 +0200)]
Pass `peer_node_id` to `fail_holding_cell_htlcs`

2 years agoAdd lightning-rapid-gossip-sync to README
Jeffrey Czyz [Wed, 8 Jun 2022 04:50:07 +0000 (23:50 -0500)]
Add lightning-rapid-gossip-sync to README

2 years agoMerge pull request #1517 from jkczyz/2022-06-gossip-sync-enum
Matt Corallo [Tue, 7 Jun 2022 10:17:29 +0000 (03:17 -0700)]
Merge pull request #1517 from jkczyz/2022-06-gossip-sync-enum

Support only one `GossipSync` in `BackgroundProcessor`

2 years agoSupport only one GossipSync in BackgroundProcessor
Jeffrey Czyz [Thu, 2 Jun 2022 21:48:32 +0000 (14:48 -0700)]
Support only one GossipSync in BackgroundProcessor

BackgroundProcessor can take an optional P2PGossipSync and an optional
RapidGossipSync, but doing so may be easy to misuse. Each has a
reference to a NetworkGraph, which could be different between the two,
but only one is actually used.

Instead, allow passing one object wrapped in a GossipSync enum. Also,
fix a bug where the NetworkGraph is not persisted on shutdown if only a
RapidGossipSync is given.

2 years agoImplement EventHandler for NetworkGraph
Jeffrey Czyz [Fri, 3 Jun 2022 05:59:14 +0000 (22:59 -0700)]
Implement EventHandler for NetworkGraph

Instead of implementing EventHandler for P2PGossipSync, implement it on
NetworkGraph. This allows RapidGossipSync to handle events, too, by
delegating to its NetworkGraph.

2 years agoParameterize NetworkGraph with Logger
Jeffrey Czyz [Sat, 4 Jun 2022 04:35:37 +0000 (21:35 -0700)]
Parameterize NetworkGraph with Logger

P2PGossipSync logs before delegating to NetworkGraph in its
EventHandler. In order to share this handling with RapidGossipSync,
NetworkGraph needs to take a logger so that it can implement
EventHandler instead.

2 years agoMerge pull request #1501 from tnull/2022-05-mention-compat-level
Matt Corallo [Sat, 4 Jun 2022 00:14:01 +0000 (17:14 -0700)]
Merge pull request #1501 from tnull/2022-05-mention-compat-level

Mention backwards compatibility in CONTRIBUTING.

2 years agoMove Secp256k1 context to NetworkGraph
Jeffrey Czyz [Fri, 3 Jun 2022 04:37:59 +0000 (21:37 -0700)]
Move Secp256k1 context to NetworkGraph

P2PGossipSync has a Secp256k1 context field, which it only uses to pass
to NetworkGraph methods. Move the field to NetworkGraph so other callers
don't need to pass in a Secp256k1 context.

2 years agoMerge pull request #1159 from jkczyz/2021-11-network-gossip
Matt Corallo [Thu, 2 Jun 2022 23:53:32 +0000 (16:53 -0700)]
Merge pull request #1159 from jkczyz/2021-11-network-gossip

Rename network-related types

2 years agoMove network_graph.rs to gossip.rs
Jeffrey Czyz [Thu, 2 Jun 2022 19:53:34 +0000 (12:53 -0700)]
Move network_graph.rs to gossip.rs

The routing::network_graph module contains a few structs related to p2p
gossip. So renaming the module to 'gossip' seems more appropriate.

2 years agoRename NetGraphMsgHandler to P2PGossipSync
Jeffrey Czyz [Wed, 1 Jun 2022 17:28:34 +0000 (10:28 -0700)]
Rename NetGraphMsgHandler to P2PGossipSync

NetGraphMsgHandler implements RoutingMessageHandler to handle gossip
messages defined in BOLT 7 and maintains a view of the network by
updating NetworkGraph. Rename it to P2PGossipSync, which better
describes its purpose, and to contrast with RapidGossipSync.

2 years agoRename ChannelClosed to ChannelFailure
Jeffrey Czyz [Fri, 5 Nov 2021 17:55:25 +0000 (12:55 -0500)]
Rename ChannelClosed to ChannelFailure

A NetworkUpdate indicating ChannelClosed actually corresponds to a
channel failure as described in BOLT 4:

0x2000 (NODE): node failure (otherwise channel)

Rename the enum variant to ChannelFailure and rename NetworkGraph
methods close_channel_from_update and fail_node to channel_failed and
node_failed, respectively.

2 years agoUpdate missed references to get_route in docs
Jeffrey Czyz [Thu, 4 Nov 2021 14:57:53 +0000 (09:57 -0500)]
Update missed references to get_route in docs

2 years agoFix build warnings
Jeffrey Czyz [Wed, 1 Jun 2022 21:50:40 +0000 (14:50 -0700)]
Fix build warnings

2 years agoMerge pull request #1505 from tnull/2022-05-support-0conf-channeltype
valentinewallace [Thu, 2 Jun 2022 20:02:25 +0000 (13:02 -0700)]
Merge pull request #1505 from tnull/2022-05-support-0conf-channeltype

Support `ZeroConf` channel type.

2 years agoMerge pull request #1433 from arik-so/2022-04-rapid-sync-bg-processor
Jeffrey Czyz [Thu, 2 Jun 2022 19:10:00 +0000 (14:10 -0500)]
Merge pull request #1433 from arik-so/2022-04-rapid-sync-bg-processor

Allow indication to BackgroundProcessor that graph sync is pending

2 years agoCreate separate timer for scorer persistence in background processor
Arik Sosman [Wed, 1 Jun 2022 23:25:30 +0000 (16:25 -0700)]
Create separate timer for scorer persistence in background processor

2 years agoIndicate ongoing rapid sync to background processor.
Arik Sosman [Wed, 1 Jun 2022 22:26:07 +0000 (15:26 -0700)]
Indicate ongoing rapid sync to background processor.

Create a wrapper struct for rapid gossip sync that can be passed to
BackgroundProcessor's start method, allowing it to only start pruning
the network graph upon rapid gossip sync's completion.

2 years agoDo not panic on early tx broadcasts in fuzzing 2022-06-fix-fuzz-nonbug
Matt Corallo [Thu, 2 Jun 2022 03:37:16 +0000 (03:37 +0000)]
Do not panic on early tx broadcasts in fuzzing

If the user broadcasts a funding transaction before the
counterparty provides a `funding_signed` we will panic in
`check_get_channel_ready`. This is expected - the user did
something which may lead to loss of funds, and we *really* need to
let them know.

However, the fuzzer can do this and we shouldn't treat it as a bug,
its a totally expected panic. Thus, we disable the panic in fuzz.

Thanks to Chaincode for providing fuzzing resources which managed
to hit this panic.

2 years agoImplement `ZeroConf` feature.
Elias Rohrer [Thu, 2 Jun 2022 00:05:17 +0000 (17:05 -0700)]
Implement `ZeroConf` feature.

2 years agoMerge pull request #1512 from tnull/2022-05-remove-deprecated-scorer
Jeffrey Czyz [Wed, 1 Jun 2022 23:29:15 +0000 (18:29 -0500)]
Merge pull request #1512 from tnull/2022-05-remove-deprecated-scorer

Remove previously deprecated `Scorer`

2 years agoMerge pull request #1509 from shamardy/main
Matt Corallo [Wed, 1 Jun 2022 22:54:46 +0000 (15:54 -0700)]
Merge pull request #1509 from shamardy/main

Update regex to 1.5.6

2 years agoRemove previously deprecated `Scorer`
Elias Rohrer [Fri, 27 May 2022 01:20:05 +0000 (18:20 -0700)]
Remove previously deprecated `Scorer`