Commit graph

303 commits

Author SHA1 Message Date
Matt Corallo
8678bda576 Ensure Message always unwraps in fuzztarget
Hashes cant be all-0s, so we can normally unwrap, but fuzztarget
can generate all-0 hashes, so we have to handle it and swap for
something else.
2019-01-22 13:49:15 -05:00
Matt Corallo
12d25576c1 Upgrade to secp256k1 v12, bitcoin v16, and crates bitcoin_hashes 2019-01-22 13:49:15 -05:00
Matt Corallo
36954fde6e Log errors forwarding/failing HTLCs 2018-12-22 07:03:17 -05:00
Matt Corallo
044edd6e86 Fail HTLCs backwards asynchronously 2018-12-21 15:17:42 -05:00
Matt Corallo
c220a5c5cf Add an enum option to pending forwards to fail backwards 2018-12-20 22:56:32 -05:00
Matt Corallo
e5c1716f5c Refactor HTLCForwardInfo into an enum in prep for delayed-fail 2018-12-20 22:56:32 -05:00
Matt Corallo
04ff26efa9 Move process_onion_failure into onion_utils 2018-12-20 22:56:32 -05:00
Matt Corallo
2053edbe53 Move ChannelManager network tests into their own module 2018-12-20 14:32:02 -05:00
Matt Corallo
dcaa53d560 Move onion encryption/decryption/etc into an onion_utils module 2018-12-19 20:36:34 -05:00
Matt Corallo
6cf8158519 Drop channel_held_info which was only for the channel fuzz target 2018-12-19 20:36:34 -05:00
Matt Corallo
7ea39a13b2 Use bitcoin_hashes' fixed_time_eq, removing the rust-crypto dep 2018-12-19 20:02:36 -05:00
Matt Corallo
202c0aedcb Drop rust-crypto trait usage 2018-12-19 20:02:36 -05:00
Matt Corallo
09c7f2f641 Steal rust-crypto's ChaCha20 implementation wholesale 2018-12-19 20:02:36 -05:00
Matt Corallo
f1e400f142 Switch Sha256 to using bitcoin_hashes and our own HKDF 2018-12-19 17:13:25 -05:00
Matt Corallo
caeff85368 Update incorrect_payment_amount generation/handling for BOLT uptd
ie dont generate them as they're a really obvious privacy leak.
Luckily we were already handling them the same aside from log
printing so don't have to touch anything there. I was lazy in
updating tests but it only effects log printing, so whatever.
2018-12-17 22:57:47 -05:00
Yuntai Kyong
3f4ab940d4 Add tests for process_onion_failure return value sanity 2018-12-17 22:55:45 -05:00
Matt Corallo
8783a748bb Add test_util for overriding session privs for onion crypt 2018-12-17 22:55:45 -05:00
Matt Corallo
38702358d1 Add some additional channel-creation-broadcast-msg sanity checks 2018-12-17 22:55:45 -05:00
Matt Corallo
b7e76c5c40 Always return malformed for BADONION errors
Also be willing to forward something with a pubkey that we know is
complete garbage, but upstream will just fail that with BADONION
when they get it.

I think this is kinda intended by the spec, but it definitely needs
to be clarified.
2018-12-17 22:55:45 -05:00
Matt Corallo
7cfb09c797 Add TODO noting confusion over |20 (channel_disabled) definition 2018-12-17 22:55:45 -05:00
Yuntai Kyong
4839ef7b83 Include flags when sending channel_disabled onion errors 2018-12-17 22:55:45 -05:00
Yuntai Kyong
7a8bec750d Rewrite most of process_onion_failure 2018-12-17 22:55:45 -05:00
Yuntai Kyong
096892cefe Swap an if let for a match and add some TODO 2018-12-17 22:55:45 -05:00
Antoine Riard
b1712eb38e Replace some unknown_next_peer by permanent_channel_failure 2018-12-17 20:47:19 -05:00
Matt Corallo
d0dfaf8abc Add constant for HTLC failure anti-reorg delay 2018-12-14 17:01:12 -05:00
Matt Corallo
150e9f0f8c Include the node id in ChannelManager test logs 2018-12-14 17:01:12 -05:00
Matt Corallo
f5ccd4b4ef Add additional log traces in channelmonitor/manager 2018-12-14 17:01:12 -05:00
Antoine Riard
7a483e597c Typify payment_hash and payment_preimage
Fix variable name as payment_hash instead of txid for index
of remote_hash_commitment_number in ChannelMonitor reader
2018-12-14 17:00:50 -05:00
Matt Corallo
cdbd2ef5a2 Add bigger test for failing HTLCs claimed through revocation 2018-12-14 17:00:22 -05:00
Antoine Riard
0e9ac1144b Add test for failing/fulfilling HTLCs from on-chain actions
Including detection of timeout claims, fulfill claims, and
failing all current HTLCs in case of revoked-commitment broadcast.
2018-12-14 17:00:22 -05:00
Antoine Riard
b1e313f26d Add const ACCEPTED_HTLC_SCRIPT_WEIGHT and OFFERED_HTLC_SCRIPT_WEIGHT to
ease readability

Conditionnal compilation for weight of second one to handle test special
cltv values
2018-12-14 17:00:22 -05:00
Matt Corallo
badda94022 Generate PaymentFailed events for outbound payments we fail 2018-12-14 17:00:22 -05:00
Matt Corallo
221bfa6bd4 Move monitor-generated HTLC event handling to manager event-getters
This is somewhat awkward, but prevents a slew of duplicate events.
Really this should probably be more explicit, but would be easy to
move that along with a slew of block_connected-event-processing
refactors, see-also GH #80.

This affects full_stack_target only on accident cause the demo test
didn't continue onwards with another block connection.
2018-12-14 17:00:22 -05:00
Antoine Riard
7499a4bf9b Detect onchain timeout of a HTLC in ChannelManager block_connected
Pass failure backward
2018-12-13 11:53:44 -05:00
Antoine Riard
96d17ee737 Add is_resolving_output in ChannelMonitor
Called in ChannelMonitor block_connected, returning
HTLCUpdate upstream via ManyChannelMonitor to
link htlcs between monitors. Used by ChannelManager to
fulfill/fail htlcs backwards accordingly

If spurrious HTLCUpdate are generated due to block re-scan
and htlc are already LocalRemoved, discard them in
channel get_update_*_htlc
2018-12-13 11:53:44 -05:00
Antoine Riard
160d63dba0 Track HTLCSource in ChannelMonitor
Insert it in current_local_signed_tx, prev_local_signed_tx,
remote_claimable_outpoints. For so get it provided by
Channel calls to provide_latest_{local,remote}_tx
2018-12-13 11:12:07 -05:00
Antoine Riard
664ae42257 Track outputs fron local commitment tx
Aims to detect onchain resolution of channel

Modify in consequence test_txn_broadcast to still pass
channel_monitor_network_test

Modify some tests due to block re-scan caused by
detections extensions
2018-12-11 16:47:02 -05:00
Matt Corallo
302f1314e5
Merge pull request #266 from TheBlueMatt/2018-12-closing_signed-3-leg-commitment
Remove check which makes us sometimes never send closing_signed
2018-12-11 16:40:22 -05:00
Matt Corallo
aa0a37cc4b Add test for monitor update failure on CS/RAA/CR handling 2018-12-11 13:17:45 -05:00
Matt Corallo
787644d795 Handle monitor update failures in msg-recv functions
This adds a few TODOs around further message rebroadcasting which
needs to be implemented as well as some loss of tracking of HTLCs
on permanent channel failure which needs to get transferred over to
the appropriate in-memory ChannelMonitor.
2018-12-11 13:17:45 -05:00
Matt Corallo
788dd738a8 Swap handle_monitor_update_fail for a macro ala try_chan_entry
This resolves an API bug where send_payment may return a
MonitorUpdateFailed Err both when the payment will not be sent and
when the HTLC will be retried automatically when monitor updating
is restored. This makes it impossible for a client to know when
they should retry a payment and when they should not.
2018-12-11 13:10:02 -05:00
Matt Corallo
a2df43d525 Remove check which makes us sometimes never send closing_signed
This is the case pointed out by nayuta-gondo at
https://github.com/lightningnetwork/lightning-rfc/issues/499#issuecomment-438623208
though this doesn't actually solve the issue of ensuring we have a
consistent fee view when we start shutdown processing. There isn't
a clear solution to that however without adding additional state
tracking in Channel.

This also removes an associated test that tests for the correct
behavior (but didn't consider the bug) as we no longer behave
correctly. This should be fine as we'll be removing all the
update_fee garbage with option_simplified_commitment anyway.
2018-12-03 17:04:19 -05:00
Matt Corallo
23c2cef5f4 Fix channel_reestablish generation/handling around next_remote. 2018-12-02 17:26:16 -05:00
Matt Corallo
26a7192689
Merge pull request #260 from yuntai/201811-sessionkey
Add a method to get session secret for onion packet to KeysInterface
2018-11-26 22:09:42 -05:00
Yuntai Kyong
7e59e1e392 Add a method to get session secret for onion packet to KeysInterface 2018-11-27 10:44:51 +09:00
Matt Corallo
5e9e199279
Merge pull request #258 from TheBlueMatt/2018-11-close-locked
Simplify + document the ChannelManager Err flow, fix close-outside-lock race, finish ChannelError conversion
2018-11-26 10:56:18 -05:00
Matt Corallo
6969fc997b
Merge pull request #259 from TheBlueMatt/2018-11-256-redux
Add test_claim_on_remote_revoked_sizeable_push_msat
2018-11-23 15:21:35 -05:00
Antoine Riard
ab9a98ff5d Add test_claim_on_remote_revoked_sizeable_push_msat 2018-11-23 14:38:02 -05:00
Antoine Riard
546bd37c19 Refactor check spendable outputs macros into one
In consequence, harden spendable outputs tests

Fix vocabulary abuse
2018-11-23 14:38:02 -05:00
Matt Corallo
466d0f61cf Simplify + document the ChannelManager Err flow a bit
This removes all the channel-closure stuff from handle_error!() and
MsgHandleErrInternal, making all the Err handling consistent by
closing the channel before releasing the channel_state lock and
then calling handle_error!() outside of the lock.
2018-11-22 23:57:54 -05:00