]>
git.bitcoin.ninja Git - rust-lightning/log
Matt Corallo [Fri, 14 Sep 2018 03:54:15 +0000 (23:54 -0400)]
Ignore HTLC txn we dont know how to claim instead of unwrap()ing
This fixes a crash introduced in
3e149b1fb6624eef99b055bde772842f36
and introduces a test which will tickle the bug.
Matt Corallo [Fri, 14 Sep 2018 00:18:21 +0000 (20:18 -0400)]
Merge pull request #177 from TheBlueMatt/2018-09-163-cleanups
Optimize some ChannelMonitor stuff after #163
Matt Corallo [Thu, 13 Sep 2018 17:51:23 +0000 (13:51 -0400)]
Clean up and clarify tx broadcast checks in channelmonitor tests
This effecitlvey reverts the refactors in
383bd90a481bc146b3a3b1d8 ,
however keeps the actully new test code.
It also writes documentation for the super confusing tx test func
and makes it a bit less permissive.
Matt Corallo [Thu, 13 Sep 2018 15:35:23 +0000 (11:35 -0400)]
There can only be one input in matched txn in ChannelMonitor
This lets us simplify a few tidbits of loop.
Matt Corallo [Thu, 13 Sep 2018 15:34:26 +0000 (11:34 -0400)]
Optimize check_spend_remote HTLC a tad by avoiding indirections
Instead of hopping a pointer, we're only ever going to return one
Transaction at max, so skip the Vec. Also avoid
re-pubkey-converting the revocation key.
Matt Corallo [Thu, 13 Sep 2018 17:53:47 +0000 (13:53 -0400)]
Merge pull request #163 from ariard/claim_revoked_htlc_tx
Implement claiming of revoked HTLC transactions by ChannelMonitor
Matt Corallo [Thu, 13 Sep 2018 17:11:51 +0000 (13:11 -0400)]
Merge pull request #175 from TheBlueMatt/2018-09-173-whitespace-err
raise APIError from send_payment (#173 without whitespace nit)
Yuntai Kyong [Wed, 12 Sep 2018 20:23:12 +0000 (05:23 +0900)]
raise APIError from send_payment
add APIError::RouteError
Matt Corallo [Thu, 13 Sep 2018 14:31:06 +0000 (10:31 -0400)]
Merge pull request #174 from yuntai/201809-funding_created_sig
verify incoming sig first to fail earlier
Yuntai Kyong [Thu, 13 Sep 2018 13:31:51 +0000 (22:31 +0900)]
verify incoming sig first and fail earlier
Antoine Riard [Tue, 11 Sep 2018 01:44:50 +0000 (01:44 +0000)]
Add test of claiming HTLC-Timeout outputs based on a revoked commitment
tx
Antoine Riard [Tue, 11 Sep 2018 01:40:53 +0000 (01:40 +0000)]
Implement claiming of revoked HTLC transactions by ChannelMonitor
Refactor check_spend_remote_transaction in part to check_spend_remote_htlc to
avoid lock mess in block_connected. We need
remote_commitment_txn_on_chain to match remote HTLC tx
Antoine Riard [Tue, 11 Sep 2018 01:37:31 +0000 (01:37 +0000)]
Implement set_their_delayed_payment_base_key in ChannelMonitor
Needed to build redeemscript on HTLC-Success/HTLC-Timeout tx from
remote revoked commitment tx
Matt Corallo [Wed, 12 Sep 2018 19:53:14 +0000 (15:53 -0400)]
Merge pull request #171 from TheBlueMatt/2018-09-ser-fixes
Correct MAX_BUF_SIZE in serialization
Matt Corallo [Wed, 12 Sep 2018 17:21:13 +0000 (13:21 -0400)]
Correct MAX_BUF_SIZE in serialization
I think this might have been my fault due to faulty review
feedback, but fuzzer caught trivial crash here where you try to
send a ping message larger than 16KB (but smaller than the
max-length 64KB) and you crash as message serialization is unwrap()
Matt Corallo [Wed, 12 Sep 2018 17:20:20 +0000 (13:20 -0400)]
Fix some double-indentation in util/ser
Matt Corallo [Wed, 12 Sep 2018 17:07:13 +0000 (13:07 -0400)]
Merge pull request #167 from TheBlueMatt/2018-09-dup-htlc
Allow duplicate-payment_hash HTLCs for HTLC forwards
Matt Corallo [Wed, 12 Sep 2018 15:22:06 +0000 (11:22 -0400)]
Merge pull request #170 from TheBlueMatt/2018-09-119-rebased
#119 squashed
Matt Corallo [Tue, 11 Sep 2018 19:04:41 +0000 (15:04 -0400)]
Add simple test for duplicate-payment_hash HTLC tracking
Matt Corallo [Sun, 9 Sep 2018 01:02:42 +0000 (21:02 -0400)]
Avoid cross-test statics in ChannelManager network tests
Matt Corallo [Tue, 11 Sep 2018 18:20:40 +0000 (14:20 -0400)]
Allow duplicate-payment_hash HTLCs for HTLC forwards
This is required by BOLT 2 to ensure that no attacker can simply
relay every public node a duplicate-payment_hash HTLC for each HTLC
it receives to deduce where an HTLC came from.
Note that this makes the claim logic much less incentive-compatible
as we will not claim all available HTLCs with the same payment_hash
even if we know the preimage! This is OK because, most likely, any
attackers trying to map the network will use small-value payments
and, hopefully, we will move away from constant hashes across an
entire payment at some point in the near future.
This further simplifies the payment transition state a bit, so
hopefully at least we got some readability out of all of this
Yuntai Kyong [Wed, 12 Sep 2018 10:00:10 +0000 (19:00 +0900)]
Migrate fuzz router/channel target to Readable
and be more specific about DecodeError::InvalidValue
Yuntai Kyong [Mon, 10 Sep 2018 07:13:26 +0000 (16:13 +0900)]
migrate peer_handler to use Writeable
added inplace byte_utils
Yuntai Kyong [Sat, 1 Sep 2018 07:21:39 +0000 (16:21 +0900)]
Add fuzz targets for Writeable messages/migrate fuzz test
Yuntai Kyong [Sat, 1 Sep 2018 07:20:26 +0000 (16:20 +0900)]
Implement Writeable for messages
Yuntai Kyong [Sat, 1 Sep 2018 07:18:56 +0000 (16:18 +0900)]
Implement Writer/Reader
with additional variants in DecodeError
Matt Corallo [Sun, 9 Sep 2018 16:53:57 +0000 (12:53 -0400)]
Split HTLC tracking into separate Inbound/Outbound types
This isnt as simplifying as I'd hoped, but still increases
compile-time checking, which is nice, and removes one of two
panic!()s.
Matt Corallo [Tue, 11 Sep 2018 19:01:35 +0000 (15:01 -0400)]
Merge pull request #165 from TheBlueMatt/2018-09-pre-disconnect-misc
Further minor misc changes from reconnect work
Matt Corallo [Sat, 8 Sep 2018 19:59:18 +0000 (15:59 -0400)]
panic on invalid calls to Channel::send_commitment instead of Err
Matt Corallo [Sat, 8 Sep 2018 19:53:05 +0000 (15:53 -0400)]
Do not allow sending HTLCs when the first hop is disconnected
Matt Corallo [Thu, 6 Sep 2018 23:12:32 +0000 (19:12 -0400)]
Sync get_update_fail_htlc, get_update_fulfill_htlc state err result
Both get_update_fail_htlc and get_update_fulfill_htlc should never
be called before any HTLC could have been accepted (ie
pre-ChannelFunded) nor should they ever be called
post-ShutdownComplete as the Channel object should be destroyed at
that point. Previously get_update_fulfill_htlc would panic, but
get_update_fail_htlc would return an Err. For now make them both
panic but we can revisit this if we want to have fewer panics in
the future.
Matt Corallo [Thu, 6 Sep 2018 21:23:09 +0000 (17:23 -0400)]
Add force_close_channel call command to full_stack_target
Matt Corallo [Sun, 9 Sep 2018 15:35:42 +0000 (11:35 -0400)]
Merge pull request #164 from TheBlueMatt/2018-09-channel-connection-cleanups
Minor cleanups
Matt Corallo [Sat, 8 Sep 2018 18:43:15 +0000 (14:43 -0400)]
Disallow duplicate Init messages from peers
Matt Corallo [Sat, 8 Sep 2018 17:57:20 +0000 (13:57 -0400)]
Fix PeerManager::get_peer_node_ids to filter according to docs
Matt Corallo [Sat, 8 Sep 2018 17:56:45 +0000 (13:56 -0400)]
Disconnect duplicate node_id connections after Noise handshake
Matt Corallo [Sat, 8 Sep 2018 14:32:39 +0000 (10:32 -0400)]
Update add_update_monitor docs to indicate registration req.
It wasn't entirely clear from the existing docs that it is the
responsibility of the implementor of ManyChannelMonitor to
register the relevant outpoint.
Matt Corallo [Thu, 6 Sep 2018 21:13:41 +0000 (17:13 -0400)]
Document Channel::get_funding_redeemscript precondition
Matt Corallo [Sat, 8 Sep 2018 14:29:29 +0000 (10:29 -0400)]
Merge pull request #159 from ariard/channel_monitor
Add registration of commitment tx's outputs from check_spend_remote_transaction
Antoine Riard [Fri, 7 Sep 2018 01:40:41 +0000 (01:40 +0000)]
Add registration of commitment tx's outputs from
check_spend_remote_transaction
Fixup more descriptive var names by Matt Corallo <git@bluematt.me>
Matt Corallo [Fri, 7 Sep 2018 15:56:41 +0000 (11:56 -0400)]
Refactor/dont re-enter block_conencted on duplicate watch calls
Previously we'd hit an infinite loop if a block_connected call
always resulted in the same ChainWatchInterface registrations.
While we're at it, we also split ChainWatchUtil in two to make
things a bit more flexible for users, though not sure if that
actually matters, and make the matching more aggressive in testing,
even if we pick the more performant option at runtime.
Matt Corallo [Fri, 7 Sep 2018 15:12:22 +0000 (11:12 -0400)]
Narrow ChainWatchInterface::install_watch_script
Matt Corallo [Fri, 7 Sep 2018 23:43:08 +0000 (19:43 -0400)]
Merge pull request #162 from ariard/channel_manager_refactor_all
Channel manager refactor all (following & end)
Antoine Riard [Fri, 7 Sep 2018 21:59:45 +0000 (21:59 +0000)]
Refactor handle_update_fee to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 21:57:06 +0000 (21:57 +0000)]
Refactor handle_revoke_and_ack to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 21:51:58 +0000 (21:51 +0000)]
Refactor handle_commitment_signed to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 21:46:47 +0000 (21:46 +0000)]
Refactor handle_update_fail_malformed_htlc to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 21:42:07 +0000 (21:42 +0000)]
Refactor handle_update_fail_htlc to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 21:36:55 +0000 (21:36 +0000)]
Refactor handle_update_fulfill_htlc to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 21:30:00 +0000 (21:30 +0000)]
Refactor handle_update_add_htlc to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 21:17:28 +0000 (21:17 +0000)]
Refactor handle_closing_signed to wrapper error handling function
Matt Corallo [Fri, 7 Sep 2018 14:19:28 +0000 (10:19 -0400)]
Merge pull request #160 from ariard/channel_manager_refactor_all
Channel manager refactor all
Matt Corallo [Fri, 7 Sep 2018 14:14:58 +0000 (10:14 -0400)]
Merge pull request #156 from TheBlueMatt/2018-09-funding_created_action
Ensure funding_created always returns Some(_) HandleError::action
Antoine Riard [Fri, 7 Sep 2018 03:10:10 +0000 (03:10 +0000)]
Refactor handle_shutdown to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 02:58:01 +0000 (02:58 +0000)]
Refactor handle_funding_locked to wrapper error handling function
Antoine Riard [Fri, 7 Sep 2018 02:45:07 +0000 (02:45 +0000)]
Refactor handle_funding_signed to wrapper error handling function
Matt Corallo [Thu, 6 Sep 2018 16:39:19 +0000 (12:39 -0400)]
Remove unused import in router_target
Matt Corallo [Thu, 6 Sep 2018 15:31:33 +0000 (11:31 -0400)]
Ensure funding_created always returns Some(_) HandleError::action
Matt Corallo [Thu, 6 Sep 2018 15:12:10 +0000 (11:12 -0400)]
Merge pull request #154 from ariard/funding_created_refactor
Refactor handle_funding_created to wrapper error handling function
Antoine Riard [Thu, 6 Sep 2018 00:58:00 +0000 (00:58 +0000)]
Refactor handle_funding_created to wrapper error handling function
Matt Corallo [Thu, 6 Sep 2018 14:50:16 +0000 (10:50 -0400)]
Merge pull request #155 from SWvheerden/patch-1
patch to change temp_channel from deserialise to copy
SW van Heerden [Thu, 6 Sep 2018 13:34:33 +0000 (15:34 +0200)]
change temp_channel from deserialise to copy
Matt Corallo [Thu, 6 Sep 2018 14:45:41 +0000 (10:45 -0400)]
Merge pull request #151 from ariard/channel_manager_refactor
Refactor handle_accept_channel to wrapper error handling function
Antoine Riard [Wed, 5 Sep 2018 23:45:38 +0000 (23:45 +0000)]
Refactor handle_accept_channel to wrapper error handling function
Matt Corallo [Thu, 6 Sep 2018 13:51:34 +0000 (09:51 -0400)]
Merge pull request #152 from TheBlueMatt/2018-09-chan-cleanups
Channel cleanups
Matt Corallo [Thu, 6 Sep 2018 00:19:09 +0000 (20:19 -0400)]
Add further clarification TODO in finish_force_close_channel
Matt Corallo [Wed, 5 Sep 2018 18:47:43 +0000 (14:47 -0400)]
Drop HTLCState::LocalRemovedAwaitingCommitment
This was redundant and was included because the HTLC still needed
to be monitored, but that happens in ChannelMonitor, so there is no
need for it in Channel itself.
Matt Corallo [Wed, 5 Sep 2018 18:08:38 +0000 (14:08 -0400)]
Document+check commitment_signed generation success on send_htlc
Because we don't have an HTLCState for
update_add_htlc-generated-but-not-yet-commitment_signed to simplify
the mess of HTLCState match arms, any time a Channel::send_htlc
call returns Ok(Some(_)) we MUST call commitment_signed and it MUST
return success (or close the channel). We mention this in the docs
and panic if its not met in ChannelManager (which lets the fuzz
tester check this).
Matt Corallo [Wed, 5 Sep 2018 18:08:13 +0000 (14:08 -0400)]
Always return an Error Message in invalid sig/key errors in Channel
Matt Corallo [Wed, 5 Sep 2018 22:34:10 +0000 (18:34 -0400)]
Merge pull request #150 from TheBlueMatt/2018-09-bolt7-compliance
Finish up #129 BOLT 7 compliance
Matt Corallo [Wed, 5 Sep 2018 22:33:55 +0000 (18:33 -0400)]
Merge pull request #147 from TheBlueMatt/2018-09-channelmanager-err-macro
Refactor ChannelManager handle functions into a Channel-closing macro
Matt Corallo [Wed, 5 Sep 2018 02:39:04 +0000 (22:39 -0400)]
Handle partial-response UTXO impls or reorgs in chan_announcements
Mostly to add a big comment noting why we aren't "spec-compliant"
Matt Corallo [Wed, 5 Sep 2018 02:25:51 +0000 (22:25 -0400)]
Util-func channel removal (fixing a bug in HTLC failure updates)
Matt Corallo [Wed, 5 Sep 2018 02:24:46 +0000 (22:24 -0400)]
Reject rumors of channels that are from one node back to itself
Matt Corallo [Wed, 5 Sep 2018 00:07:29 +0000 (20:07 -0400)]
Move announcement_signatures handling into new force-close macro
Because we've separated out channel closure from ErrorMessage
returning we can return error messages in a few additional cases,
like if the peer sent us a message for a channel they didn't own.
Matt Corallo [Wed, 5 Sep 2018 00:02:33 +0000 (20:02 -0400)]
Fill out IgnoreError actions in get_channel_announcement
They are all just "its too early/late to get an announcement"
errors so simply ignoring them and not sending an announce is fine
Matt Corallo [Wed, 5 Sep 2018 00:00:47 +0000 (20:00 -0400)]
Simplify secp_call! macro in ChannelManager
Matt Corallo [Wed, 5 Sep 2018 00:10:32 +0000 (20:10 -0400)]
Ensure Channel::new_from_req always returns an ErrorMessage on Err
Matt Corallo [Tue, 4 Sep 2018 23:28:06 +0000 (19:28 -0400)]
Dont return an Err from Channel::get_accept_channel that can't fail
Antoine Riard [Wed, 5 Sep 2018 00:17:45 +0000 (20:17 -0400)]
Refactor handle_open_channel to wrapper error handling function
Original version is from Antoine Riard <ariard@student.42.fr>,
the error type and some return type fixes are from
Matt Corallo <git@bluematt.me>
Matt Corallo [Wed, 5 Sep 2018 00:16:06 +0000 (20:16 -0400)]
Add ChannelManager-specific HandleError type and macro to use it
Original macro is from Antoine Riard <ariard@student.42.fr>,
the error type and additional mappings are from
Matt Corallo <git@bluematt.me>
Matt Corallo [Mon, 3 Sep 2018 22:10:51 +0000 (18:10 -0400)]
Merge pull request #145 from TheBlueMatt/2018-09-134-rebased
#134 rebased
Matt Corallo [Mon, 3 Sep 2018 21:44:57 +0000 (17:44 -0400)]
Merge pull request #143 from TheBlueMatt/2018-08-announcement_sigs_erroraction
Ensure handle_announcement_signatures always has a ErrorAction
Matt Corallo [Mon, 3 Sep 2018 21:38:38 +0000 (17:38 -0400)]
Provide better get_chain_utxo return coverage in router_target
Matt Corallo [Mon, 3 Sep 2018 21:38:25 +0000 (17:38 -0400)]
Ensure we aren't duplicatively reading things in router_target
Antoine Riard [Fri, 31 Aug 2018 17:06:30 +0000 (17:06 +0000)]
Add DummyChainWatcher in route_target
Antoine Riard [Thu, 30 Aug 2018 01:42:11 +0000 (01:42 +0000)]
Add test_invalid_channel_announcemnt + test utilities
Fix typo
Matt Corallo [Thu, 30 Aug 2018 19:00:56 +0000 (15:00 -0400)]
Check script_pubkey against expected channel_announcement
Antoine Riard [Thu, 30 Aug 2018 01:40:18 +0000 (01:40 +0000)]
Implement get_chain_utxo and ChainError in
ChainWatchInterface to Router check on channel_announcement
Needed for BOLT 7
Antoine Riard [Thu, 30 Aug 2018 01:37:37 +0000 (01:37 +0000)]
Add ChainWatchInterface in Router
Matt Corallo [Mon, 3 Sep 2018 20:51:32 +0000 (16:51 -0400)]
Merge pull request #144 from yuntai/onion_call_back_simple
Remove code fragments with no effect
Yuntai Kyong [Sun, 2 Sep 2018 12:45:44 +0000 (21:45 +0900)]
Remove code fragments with no effect
Matt Corallo [Fri, 31 Aug 2018 20:46:55 +0000 (16:46 -0400)]
Check for misuse of funding_transaction_generated and panic
Matt Corallo [Thu, 30 Aug 2018 20:49:51 +0000 (16:49 -0400)]
Ensure handle_announcement_signatures always has a ErrorAction
Matt Corallo [Thu, 30 Aug 2018 20:48:53 +0000 (16:48 -0400)]
Add ErrorAction in secp Error -> HandleError conv in ChannelManager
Matt Corallo [Thu, 30 Aug 2018 20:02:38 +0000 (16:02 -0400)]
Merge pull request #139 from TheBlueMatt/2018-08-fuzz-fixes-7
Fix crash that #127 intended to fix but did not completely fix
Matt Corallo [Thu, 30 Aug 2018 19:10:23 +0000 (15:10 -0400)]
Remove unused feeest field in ChannelManager tests
Matt Corallo [Thu, 30 Aug 2018 16:35:52 +0000 (12:35 -0400)]
Fix crash that #127 intended to fix but did not completely fix
Introduced in #124, and found by fuzzer
Matt Corallo [Wed, 29 Aug 2018 22:43:19 +0000 (18:43 -0400)]
Merge pull request #136 from TheBlueMatt/2018-08-excess-signed-data-bolt-7
Correctly verify and forward excess data post-signature in signed announcement messages
Matt Corallo [Wed, 29 Aug 2018 21:53:11 +0000 (17:53 -0400)]
Also fwd channel_update and node_announcement immediately
Not really sure why the API was different for channel_announcement,
but this brings everything in sync.