Commit graph

116 commits

Author SHA1 Message Date
Yuntai Kyong
0fece38b19 Add various checking when handling open and accept
Add `derive_minimum_depth()` and `derive_maximum_minimum_depth()` and hide
CONF_TARGET constant behind these functions.

Replace `DisconnectPeer` error with `HandleError` with `ErrorAction::SendErrorMessage`
2018-08-17 13:18:28 -04:00
Yuntai Kyong
ada2154b40 Add push_msat to new outbound API
Also add APIMisuseError to be thrown to the API client
2018-08-17 13:18:28 -04:00
Matt Corallo
0f965d319f Fix bug in early-HTLC-fulfill handling
Caught by fuzzer. See new comments for more
2018-08-16 22:31:14 -04:00
Antoine Riard
0029f04fce Logging interface
Implement error, warn, info, debug and trace macros, internally calling
an instance of Logger, and passing it to every main structures
Build-time or client-side filtering.
Issue #54
2018-08-17 00:01:15 +00:00
Matt Corallo
a6161210e2 Fix panic on reorg through the funding_locked-generating block
We had a TODO to handle "lost confirmation" in block_connected,
which we recently did in block_disconnected (calling force_shutdown
in case we get too many blocks disconnected) but didn't handle the
case where we had a simple reorg through the block that resulted in
us generating a funding_locked.
2018-08-02 22:26:44 -04:00
Matt Corallo
2470812077 Fix types in Channel::funding_tx_confirmed_in
This should have no effect in a real system but was causing the
full_stack_target fuzz test to fail due to a block with a null hash
being disconnected.
2018-08-02 22:26:44 -04:00
Matt Corallo
cfc3fe3148 Fix panic!() in block_connected on unfunded channels (fixes #42)
The new full_stack_target fuzzing stuff was able to find this bug,
which gives me a bit of hope for full_stack_target's utility.
2018-08-02 22:26:44 -04:00
Matt Corallo
b17211ffe4 Fix non-HTLC-inclusion balance calculation (mark II) 2018-07-30 18:29:03 -04:00
Matt Corallo
7e255b5cf5 Handle invalid funding tx in channelmanager 2018-07-29 13:30:04 -04:00
Matt Corallo
1051e53ecc Stop adding remote's payment_preimages to our channel monitor 2018-07-29 13:30:04 -04:00
Matt Corallo
d5e316f5a0 Remove some excess mut's 1.22 complains about 2018-07-29 13:30:04 -04:00
Matt Corallo
c7c8a123ba Add pending-HTLC-failure to and unify force_shutdown() handling
This patch got a bit bigger than I'd intended, but primarily this
unifies force_shutdown() handling so all the callsites at least
look similar. It also fails backwards any HTLCs which were
completely pending (ie hadn't been committed to) and ensures we
broadcast our local commitment transaction. It also adds a
force_close_channel method to ChannelManager to expose
force-closure.
2018-07-29 02:23:02 -04:00
Matt Corallo
9aed28fbf0 Fix force_shutdown() bug where we lose knowledge of a preimage
In case we are in AwaitingRemoteRevoke and we go to claim an HTLC
(at which point we've already given up the money to the next hop in
the payment) we just write it to holding_cell_htlc_updates.
However, we should be ensuring we *also* write it to our
channel_monitor as we need to make sure we can still claim it after
a force_shutdown() or otherwise after hitting the chain.
2018-07-28 18:34:01 -04:00
Savil Srivastava
ca6b44b8cc replace use of bitcoin::utils::misc::hex_bytes with hex::decode
as requested in #84 discussion
https://github.com/rust-bitcoin/rust-lightning/pull/84#discussion_r205508845
2018-07-27 18:19:00 -07:00
Matt Corallo
da014797b0 Properly calculate Channel::announce_publicly
For some reason we were only setting "announce_publicly" when
Channel::new_from_req had announce_publicly set to true and the
open_channel message had the relevant flag set. However, this
resulted in us rejecting peers for sending unsolicited
announcement_signatures messages, despite them having indicated,
and us having accepted, their announce-bit-set open_channel.
2018-07-26 15:11:36 -04:00
Matt Corallo
b8b7cb238d Convert fee API to per_kw instead of per_vb
This (a) cuts down a bit on some conversions, reducing chances for
bugsand (b) provides greater accuracy for clients.
2018-07-24 20:34:56 -04:00
Matt Corallo
d61abf6c04 Fix HTLC exclusion balance calculation criteria 2018-07-24 15:11:38 -04:00
Antoine Riard
20fa9d331d Add DisconnectPeer events
Add test for DisconnectPeer event
Update DisconnectPeer with optional ErrorMessage
Manage error for funding_transaction_generated
Add disconnect_socket to SocketDescriptor trait
2018-07-23 14:31:44 -04:00
Matt Corallo
e93c9fbeaf Migrate all Uint256s used for channel_ids to [u8; 32] 2018-07-22 18:55:20 -04:00
Matt Corallo
896f5b8d91 Fix failure sending FundingLocked for non-announced channels 2018-07-22 17:11:20 -04:00
Matt Corallo
4afb0d85fa
Merge pull request #53 from savil/rename-error-msg-to-action
[HandleError] rename msg field to action
2018-07-19 23:30:28 -04:00
Matt Corallo
de523c4ca3
Merge pull request #47 from ariard/block_disconnected_close_chan
Implement channel closing for block_disconnected on ChainListener + test
2018-07-19 23:05:22 -04:00
Savil Srivastava
fd141bbed2 [Error] rename msg field to action
this was a TODO and also briefly discussed in https://github.com/rust-bitcoin/rust-lightning/pull/43#pullrequestreview-135649551

I'm not fully sure how to remove the `Option`, and make it completely required. Would love suggestions. So, have omitted that for now. Plus, better to make smaller, incremental changes.

Test Plan:
`cargo build`
`cargo test`
2018-07-19 20:01:55 -07:00
Antoine Riard
1b8544fd5d Implement channel closing for block_disconnected on ChainListener + test 2018-07-20 02:37:05 +00:00
Matt Corallo
68e6beab7c Expose the script_pubkey being monitored in chain watch (fixes #44) 2018-07-19 22:22:14 -04:00
Matt Corallo
b02176c86b Fix various spec bugs, can now open channels with real nodes!
* commitment transaction number, as used in locktime/sequence
   fields is actually different from commitment transaction number,
   as used for revocation state. This is confusing and never stated
   in the spec, so we have to do the conversion.
 * max_htlc_value_in_flight is never constrained in the spec, but
   we were requiring it be <= channel size. Instead just clamp the
   values the peer sends us when storing.
 * channel_id calculation was incorrect, we now do some crazy
   conversion hops, which we shouldn't, but will need to change our
   types to fix.
 * Our channel_reserve_satoshis value was too low, just change the
   constant and leave the TODO to figure out what it really should
   be for now.
2018-07-19 17:25:47 -04:00
Jean Pierre Dudey
6707db6eae Add MAX_FUNDING_SATOSHIS constant.
This constants defines the maximum value of `open_channel.funding_satoshis`,
currently it's defined to be 2^24 according to the BOLT #2 specification.
Also a test was added to check that the constant is never over 2,1x10^15
(maximum satoshis in bitcoin) if modified.

Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2018-06-30 11:13:18 -04:00
Matt Corallo
5fa80d022a
Merge pull request #37 from TheBlueMatt/master
Fix additional 1.22 rustc warning
2018-06-29 18:26:41 -04:00
Matt Corallo
5918df8490
Merge pull request #36 from TheBlueMatt/2018-08-33-cleanups
Cleanups after #33, plus one unrelated bugfix spotted in #33 review
2018-06-29 18:26:25 -04:00
Matt Corallo
1228663b3e Fix additional 1.22 rustc warning 2018-06-29 17:44:55 -04:00
Matt Corallo
56842c2bea Cleanups after #33, plus one unrelated bugfix spotted in #33 review 2018-06-29 17:23:50 -04:00
Matt Corallo
b65aa86ea0
Merge pull request #33 from jeandudey/funding_txo
Use the `TxOutRef` type for the `ChannelMonitor`'s funding_txo field.
2018-06-29 17:23:34 -04:00
Jean Pierre Dudey
d0e9137bc5 Add the OutPoint type for the ChannelMonitor's funding_txo field.
This structure replaces the (Sha256dHash, u16) tuple that was being used
for the funding output.

Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
2018-06-29 12:12:17 -04:00
Antoine Riard
ef166420b0 Add pruning of preimages no longer needed + tests 2018-06-28 23:19:24 +00:00
Matt Corallo
22342134ef Some with_capacity's 2018-04-26 19:45:36 -04:00
Matt Corallo
a20eef17c9 Fix local route update broadcasts, annouce channel closures 2018-04-24 20:42:24 -04:00
Matt Corallo
2d8afeccdb Rewrite channelmonitor framework and implement a bunch of it 2018-04-24 20:42:24 -04:00
Matt Corallo
8e2974fc2a HTLC Failure message handling 2018-04-24 11:55:08 -04:00
Matt Corallo
53d1518566 Move ChannelKeys creation into channelmanager 2018-04-17 12:43:12 -04:00
Matt Corallo
4d75d4c099 Minor cleanups 2018-04-16 20:35:21 -04:00
Matt Corallo
f5ca346011 Fix commitment transaction number/per_commitment_point tracking 2018-04-16 20:35:21 -04:00
Matt Corallo
374ea1f05e Completely rewrite channel HTLC tracking and processing
It obviously was nonsensical prior, though its now way more
complicated...there's refactoring work to be done here, but it
should at least kinda sorta work now.
2018-04-16 20:35:21 -04:00
Matt Corallo
021b3643cc Hand payment preimages into channel monitors when claimed 2018-04-16 20:35:03 -04:00
Matt Corallo
644119201d Remove useless htlc_redeemscript argument 2018-04-02 18:31:23 -04:00
Matt Corallo
e79e61f595 Clean up channel error handling a ton 2018-04-02 18:31:23 -04:00
Matt Corallo
b21048a1ce Check funding txout format when transaction is confirmed in channel 2018-04-02 18:07:03 -04:00
Matt Corallo
8e79c05a20 Add support for initiating channel closure to Channel{,Manager} 2018-04-02 18:07:03 -04:00
Matt Corallo
c528ff3650 Handle incoming shutdown messages 2018-04-02 18:07:02 -04:00
Matt Corallo
890e3cb165 Update for new rust-bitcoin API, avoid some duplicate hashing 2018-04-02 18:06:59 -04:00
Matt Corallo
7bb290fe3a Stop allowing new commitments without updates/revoke 2018-03-25 17:02:28 -04:00