Commit graph

586 commits

Author SHA1 Message Date
Matt Corallo
c906f28432
Merge pull request #461 from ariard/2020-remove-duplicata
Remove some duplicata of broadcast txn from ChannelMonitor
2020-02-12 17:38:21 +00:00
Antoine Riard
494219e388 Remove duplicata of broadcast txn from ChannelMonitor
Previously, if new ouputs were found to be watched as part
of channel operations, the block was rescan which triggers
again parser and generation of transactions already issued.

This commit first modifies the test framework without
altering further ChannelMonitor.

ChannelMonitor refactoring is introduced in a latter commit.
2020-02-12 00:37:19 -05:00
Matt Corallo
bec0a260e8 Define a BLOCK_SIZE constant for chacha20 2020-02-11 16:27:38 -05:00
Matt Corallo
c326061108 Add macros for building TLV (de)serializers.
There's quite a bit of machinery included here, but it neatly
avoids any dynamic allocation during TLV deserialization, and the
calling side looks nice and simple. The macro-generated code is
pretty nice, though has some redundant if statements (I haven't
checked if they get optimized out yet, but I can't imagine they
don't).
2020-02-11 13:48:56 -05:00
Matt Corallo
85c8410f89 Expose VecWriter outside of util::ser since peer_handler uses it 2020-02-11 13:48:56 -05:00
Matt Corallo
66c4ed2d68 Add new streams and serialization wrappers for TLV types.
This adds a number of new stream adapters to track and/or calculate
the number of bytes read/written to an underlying stream, as well
as wrappers for the two (?!) variable-length integer types that TLV
introduces.
2020-02-11 13:48:56 -05:00
Matt Corallo
f990aacccb Add a ChaChaReader adapter to read an encrypted stream & use it
This prepares for variable-length per-hop-data by wrapping the full
hop_data field in a decrypting stream, with a few minor
optimizations and redundant allocations to boot.
2020-02-11 13:48:56 -05:00
Jeffrey Czyz
d3fb619020 Move initial_routing_sync decision to the Router
PeerManager determines whether the initial_routing_sync feature bit
should be set when sending Init messages to peers. Move this to the
Router as it is better able to determine if a full sync is needed.
2020-02-10 11:13:41 -08:00
Devrandom
c20e930b31 Add ChannelKeys to ChannelMonitor 2020-02-04 16:24:11 -08:00
Matt Corallo
af4738b778
Merge pull request #460 from lightning-signer/channel-value
Channel value to ChannelKeys constructor
2020-01-25 21:17:12 +00:00
Matt Corallo
30a12759f1
Merge pull request #458 from TheBlueMatt/2020-01-spendable-docs
Clean up documentation around spendable outputs significantly.
2020-01-25 20:50:10 +00:00
Matt Corallo
6c9180f972 Clean up documentation around spendable outputs significantly.
* Fixed a number of grammar issues
 * Clarified the docs for users who are intimately farmiliar with
   arbitrary lines of text copied from the BOLTs
 * Added a bit more text so that things are easier to read and less
   disjoint.
 * Clarified exactly how the witness stack should look since I had
   to go dig for it.
2020-01-25 15:11:12 -05:00
Valentine Wallace
4833d1acf9 Update ChannelManager's ChannelMonitor Arc to be a Deref
Additional changes:
* Update fuzz crate to match ChannelManager's new API
* Update lightning-net-tokio library to match ChannelManager's new ChannelMonitor Deref API
* Update tests to match ChannelManager's new ChannelMonitor Deref API
2020-01-25 14:39:52 -05:00
Devrandom
db398438ab Remove unnecessary sign_closing_transaction arg 2020-01-23 19:06:57 -08:00
Devrandom
d14ece4ac0 channel value to ChannelKeys constructor 2020-01-23 19:06:57 -08:00
Matt Corallo
d2ba7caf47 Pass peer's Init message through to ChannelManager 2020-01-19 22:47:08 -05:00
Matt Corallo
f263b3793f
Merge pull request #451 from lightning-signer/txkeys
Provide remote channel public keys to signer
2020-01-20 03:46:00 +00:00
Devrandom
42d7738234 Provide remote channel public keys to signer 2020-01-19 20:40:49 -05:00
Matt Corallo
0b5b2828f9
Merge pull request #447 from ariard/2020-01-fix-weight-computation
Bound incoming HTLC witnessScript to min/max limits
2020-01-17 22:32:29 +00:00
Antoine Riard
fbc7885a97 Bound incoming HTLC witnessScript to min/max limits
Fix a crash where previously we weren't able to detect any accepted
HTLC if its witness-encoded cltv expiry was different from expected
ACCEPTED_HTLC_SCRIPT_WEIGHT. This should work for any cltv expiry
included between 0 and 16777216 on mainnet, testnet and regtest.
2020-01-17 16:39:31 -05:00
Matt Corallo
1a870fe8aa Fix crash when a claim tx has some non-witness inputs.
The logger which decides what to refer to an on-chain claim tx was
assuming that all inputs would have a witness. While this was fine
for the one-input case, it broke the fuzzer which was connecting a
consensus-invalid transaction. Further, in the case we have multiple
inputs, some may not have a witness, which we shouldn't crash on.

This fixes 9df0250dbb.
2020-01-17 16:26:48 -05:00
Devrandom
6200302dc7 construct funding redeem script in signer 2020-01-16 13:18:23 -08:00
Matt Corallo
cd5a11fe0d Move features into a separate module out of msgs. 2020-01-13 13:53:20 -05:00
Matt Corallo
31cc243e6f Implement Flat Features
This merges local and global features into one struct, which is
parameterized by where it appers. The parameterization restricts
which queries can be made and which features can be set, in line
with the latest BOLT 9.

Closes #427.
2020-01-12 18:15:25 -05:00
Antoine Riard
933ae34703 Drop Result for ChannelMessageHandler methods
Simplify interfaces between ChannelMessageHandler and PeerManager,
by switching all ChannelMessageHandler errors to HandleError sent
internally instead of being return. With further refactors in Router
and PeerChannelEncryptor, errors management on the PeerManager-side
won't be splitted between try_potential_handleerror and HandleError
processing.

Inside ChannelManager, we now log MsgHandleErrInternal and send
ErrorAction to PeerManager.

On a high-level, it should allow client using API to be more flexible
by polling events instead of waiting function call returns.

We also update handle_error macro to take channel_state_lock from
caller which should avoid some deadlock potential for some edges
cases.

Filter out IgnoreError in handle_error macro, update test in
consequence.
2020-01-05 20:50:07 -05:00
Antoine Riard
29ace598de Add assert_log method to TestLogger to harden test
Extend mock Node with logger.
2020-01-05 17:23:32 -05:00
Matt Corallo
4ebe64fafd Use external key signer to generate closing transaction signatures 2019-12-13 16:16:33 -05:00
Matt Corallo
b1ed0ee033 Sign channel_announcements via a new ChannelKeys API 2019-12-12 14:36:41 -05:00
Matt Corallo
262666ad7f Make commitment transaction signing a part of ChannelKeys.
This adds a new fn to ChannelKeys which is called when we generte
a new remote commitment transaction for signing. While it may be
theoretically possible to unwind state updates by disconnecting and
reconnecting as well as making appropriate state machine changes,
the effort required to get it correct likely outweighs the UX cost
of "preflighting" the requests to hardwre wallets.
2019-12-11 17:29:42 -05:00
Matt Corallo
f2a2fd0d48 Make ChannelKeys an API and template Channel with it.
Instead of having in-memory access to the list of private keys
associated with a channel, we should have a generic API which
allows us to request signing, allowing the user to store private
keys any way they like.

The first step is the (rather mechanical) process of templating
the entire tree of ChannelManager -> Channel impls by the
key-providing type. In a later commit we should expose only public
keys where possible.
2019-12-11 17:29:42 -05:00
Steven Roose
cd31cdb6b1 Document the default values of configs 2019-12-09 15:56:51 -05:00
Steven Roose
3f3dc6c067 Change the new() functions for config to Default::default() 2019-12-09 15:56:51 -05:00
Matt Corallo
fd1d5fd62c Randomize initial onion packet data.
This avoids at least the trivial hop count discovery attack, though
other obvious ones remain and are slightly harder to avoid.

See https://github.com/lightningnetwork/lightning-rfc/pull/697
2019-12-01 19:22:44 -05:00
Antoine Riard
9df0250dbb Add log for every tx broadcast
Added macro log_tx in macro_logger.rs
2019-11-25 16:55:14 -05:00
RJ Rybarczyk
5305223495 Merge branch 'master' of github.com:rust-bitcoin/rust-lightning into use-workspaces 2019-11-18 19:44:55 +00:00
RJ Rybarczyk
88fef649b1 Use workspaces to separate crates 2019-11-15 02:44:30 +00:00