Commit graph

2050 commits

Author SHA1 Message Date
Matt Corallo
153b048332
Merge pull request #1951 from wpaulino/remove-get-node-secret 2023-01-19 03:49:15 +00:00
Arik
d66c70eed4
Merge pull request #1964 from TheBlueMatt/2023-01-no-debug-panics
Use test/_test_utils to enable single-threaded debug assertions
2023-01-18 17:41:54 -08:00
Wilmer Paulino
acd2ae606d
Remove NodeSigner::get_node_secret
Secrets should not be exposed in-memory at the interface level as it
would be impossible the implement it against a hardware security
module/secure element.
2023-01-18 17:23:25 -08:00
Wilmer Paulino
9133beaf75
Use NodeSigner::ecdh to compute SharedSecrets 2023-01-18 17:23:23 -08:00
Wilmer Paulino
19c4468bfc
Sign gossip messages with NodeSigner 2023-01-18 17:23:22 -08:00
Wilmer Paulino
db0d6ecdbb
Add NodeSigner::sign_gossip_message
Adds signing capability to NodeSigner for all gossip messages that
require a node signature.
2023-01-18 17:23:15 -08:00
Matt Corallo
50d12600b4
Merge pull request #1860 from wpaulino/open-channel-anchors-support
Support opening anchor channels and test end-to-end unilateral close
2023-01-19 01:00:44 +00:00
Wilmer Paulino
aee9952ea3
Remove unused NodeSigner implementations in tests
These implementations have every method panic, so assuming that the test
suite passes, these implementations are never used.
2023-01-18 16:57:52 -08:00
Wilmer Paulino
660165ce67
Add test yielding anchor-related events 2023-01-18 14:46:16 -08:00
Wilmer Paulino
d9dd21b086
Add mine_transactions test util 2023-01-18 14:46:15 -08:00
Wilmer Paulino
8dda117fb7
Support negotiating anchors throughout channel open 2023-01-18 14:46:13 -08:00
Matt Corallo
7a9bea1bdd Use test/_test_utils to enable single-threaded debug assertions
We have a number of debug assertions which are expected to never
fire when running in a single thread. This is just fine in tests,
and gives us good coverage of our lockorder requirements, but is
not-irregularly surprising to users, who may run with their own
debug assertions in test environments.

Instead, we gate these checks by the `cfg(test)` setting as well as
the `_test_utils` feature, ensuring they run in our own tests, but
not downstream tests.
2023-01-17 23:47:45 +00:00
Matt Corallo
31b0a13158
Merge pull request #1957 from TheBlueMatt/2022-01-mon-ref-lockorder
Pass MonitorUpdates by ref and tweak manager lockorder
2023-01-17 23:09:05 +00:00
Wilmer Paulino
31a59629c4
Define option_anchors_zero_fee_htlc_tx feature bit 2023-01-17 15:03:54 -08:00
Matt Corallo
01fe9badc0
Merge pull request #1955 from TheBlueMatt/2023-01-1950-message-text
Fix link text in `reply_short_channel_ids_end`
2023-01-17 17:49:29 +00:00
Matt Corallo
437fa4f807
Merge pull request #1959 from danielgranhao/stop-passing-init-features-in-msg-handlers
Stop passing `InitFeatures` in msg handlers
2023-01-17 01:26:31 +00:00
Daniel Granhão
bcf174034a
Stop passing InitFeatures in msg handlers 2023-01-16 21:18:53 +00:00
Matt Corallo
bae81bafca Swap per_peer_state lock order 2023-01-15 23:53:21 +00:00
Matt Corallo
7e23afe1dc Pass monitor updates by reference, not owned
In the next commit(s) we'll start holding `ChannelMonitorUpdate`s
that are being persisted in `Channel`s until they're done
persisting. In order to do that, switch to applying the updates by
reference instead of value.
2023-01-15 23:53:21 +00:00
Matt Corallo
f9bafa6d0e Use ChannelUnavailable for a peer disconnecting not MisuseError
This fixes a crash in the `full_stack_target` fuzz test (found by
Chaincode's generous fuzzing infrastructure!) but ultimately is a
better error code - a peer disconnecting before we can fund a
channel isn't a "misuse error" its an unavailable channel.
2023-01-15 23:38:24 +00:00
Matt Corallo
11524884cb Do not rely on auto-deref'ing when aaccessing a Hash{Map,Set}
In newer versions of `hashbrown` this code would be broken. While
we aren't updating `hashbrown` any time soon (as it requires an
MSRV bump), it is useful to swap for a newer `hashbrown` when
fuzzing, which this makes easier.
2023-01-15 23:32:08 +00:00
Matt Corallo
8ecd71777c Fix link text in reply_short_channel_ids_end 2023-01-15 07:03:55 +00:00
Matt Corallo
ce6bcf68a1
Merge pull request #1950 from tnull/2023-01-fix-doc-warnings-and-nits
Fix doc warnings and doc cleanup in `msgs.rs`/`ser.rs`
2023-01-15 07:03:14 +00:00
Wilmer Paulino
abf4e79dcd
Use UserConfig to determine advertised InitFeatures by ChannelManager
This is purely a refactor that does not change the InitFeatures
advertised by a ChannelManager. This allows users to configure which
features should be advertised based on the values of `UserConfig`. While
there aren't any existing features currently leveraging this behavior,
it will be used by the upcoming anchors_zero_fee_htlc_tx feature.

The UserConfig dependency on provided_init_features caused most
callsites of the main test methods responsible for opening channels to
be updated. This commit foregos that completely by no longer requiring
the InitFeatures of each side to be provided to these methods. The
methods already require a reference to each node's ChannelManager to
open the channel, so we use that same reference to obtain their
InitFeatures. A way to override such features was required for some
tests, so a new `override_init_features` config option now exists on
the test harness.
2023-01-13 23:54:51 -08:00
Matt Corallo
ac6e0b3fed
Merge pull request #1930 from arik-so/2022-12-remove-keysinterface
Remove KeysInterface
2023-01-14 04:59:27 +00:00
Elias Rohrer
defa2f6811
Fix misc. warnings from --document-private-items 2023-01-13 18:26:09 -06:00
Elias Rohrer
7eac897746
Fix doc warnings and cleanup in msgs.rs 2023-01-13 18:03:24 -06:00
Arik Sosman
49c1f30c8c
Decouple lifetimes for trait implementations that used to comprise KeysInterface. 2023-01-12 16:10:44 -08:00
Arik Sosman
72183bd932
Split up generic parameters that used to comprise KeysInterface. 2023-01-12 16:10:35 -08:00
Arik Sosman
5824e226ca
Remove KeysInterface trait. 2023-01-12 09:18:08 -08:00
Matt Corallo
e8b91a478b
Merge pull request #1823 from mariocynicys/expose-tlv-macros2
Expose `impl_writeable_tlv_based` macro
2023-01-11 21:02:25 +00:00
Viktor Tigerström
23fdcca9a4 Remove the ChannelManager::channel_state 2023-01-09 23:50:41 +01:00
Viktor Tigerström
cb952f651f Expect pending_msg_events to be in random peer order in tests 2023-01-09 23:50:41 +01:00
Viktor Tigerström
6cb985390d Store pending_msg_events per peer 2023-01-09 23:50:41 +01:00
Viktor Tigerström
228fbc2f32 Use correct node in test_invalid_upfront_shutdown_script 2023-01-09 23:50:41 +01:00
Viktor Tigerström
1b70a1e973 Avoid unnecessary looping over all peers' channels 2023-01-09 23:50:41 +01:00
Viktor Tigerström
e2c5cb5b8c Update id_to_peer docs with consistency guarantees info 2023-01-09 23:50:41 +01:00
Viktor Tigerström
9e7c02cd12 Remove one tab level when accessing a peer_state 2023-01-09 23:50:41 +01:00
Viktor Tigerström
c42323c857 Remove unnecessary channel counterparty checks 2023-01-09 23:50:41 +01:00
Viktor Tigerström
5578d79bfa Add handle unkown peer test 2023-01-09 23:50:41 +01:00
Viktor Tigerström
8c175f5238 Add duplicate temporary_channel_id for 2 peers test 2023-01-09 23:50:41 +01:00
Viktor Tigerström
0eb74ec007 Unify failure to query Channel error messages 2023-01-09 23:50:41 +01:00
Viktor Tigerström
ff9840ea35 Avoid unnecessary immediate retake per_peer_state lock 2023-01-09 23:50:41 +01:00
Viktor Tigerström
b8ca7c9256 Remove unnecessary per_peer_state branch
After `channels` are now stored in the `per_peer_state`, some logic can
be simplified and extra accessing of the `per_peer_state` can be
removed.
2023-01-09 23:50:41 +01:00
Viktor Tigerström
1ab25a086a Store channels per peer 2023-01-09 23:50:41 +01:00
Omer Yacine
3a33693b1e
Expose impl_writeable_tlv_based macro
Every exported macro needed to have all the macros used inside it:
1- to be exported as well.
2- be called from the `$crate` namespace so it works in other crates.

Some structs in `lightning::util::ser` needed to be made public as they were used inside the exported macros.

Use the macros like this:
```Rust
lightning::impl_writeable_tlv_based!(...)
```
2023-01-09 21:16:30 +02:00
Matt Corallo
7165d6d48f Fix panic on receiving channel_ready after 1st commitment update
`cur_counterparty_commitment_transaction_number` starts at
`INITIAL_COMMITMENT_NUMBER`, gets decremented once when the initial
`channel_ready` message is received, and gets decremented a second
time when the first `revoke_and_ack` is received, revoking the
first counterparty commitment point.

At this point, `counterparty_prev_commitment_point` points to the
non-revoked second commitment point.

If we then process a second `channel_ready`, we check the
`cur_counterparty_commitment_transaction_number` number, see that
if is `INITIAL_COMMITMENT_NUMBER - 2` (i.e. not `- 1`) and assume
that the *second* commitment number has been revoked (by
`expect`ing `CounterpartyCommitmentSecrets::get_secret` with
`INITIAL_COMMITMENT_NUMBER - 1`). This `expect` panic's.

As the second commitment point has not yet been revoked, we should
fetch it from `counterparty_prev_commitment_point`, which we do
here, adding a test which failed on the previous code as well.

Found by the `full_stack_target` fuzzer.
2023-01-08 02:02:47 +00:00
Viktor Tigerström
48f9c72eb6 Add ChannelManager::PeerState::latest_features docs 2023-01-07 00:52:29 +01:00
Viktor Tigerström
ce5cc73b4d Add counterparty_node to test macros 2023-01-07 00:52:29 +01:00
valentinewallace
d8a20eda5f
Merge pull request #1927 from jkczyz/2022-12-invoice-rework
Pre-work for BOLT 12 invoices
2023-01-06 11:07:17 -05:00