Commit graph

343 commits

Author SHA1 Message Date
Matt Corallo
084ef28708 Stop using rng in peer_channel_encryptor to generate ephemeral keys
This removes the bulk of our reliance on the rand crate in non-test
envs, paving a way towards a syscall-less rust-lightning and WASM.
Since this is a breaking change for full_stack_target (and several
fuzz targets), go ahead and make other changes to make things more
distinct.
2019-07-23 14:29:56 -04:00
Matt Corallo
1650992ec2 Update commitment tx to match actual tx (dunno when it broke) 2019-07-23 14:29:56 -04:00
Matt Corallo
d9043b51bb Remove dangling link in fuzz/ 2019-07-23 14:29:56 -04:00
Antoine Riard
0052b2c5c3 Provide peer local_features to handle_open_channel/accept_channel
Peer may send us a shutdown_scriptpubkey in open_channel or
accept_channel messages. Before to enforce this policy on channel
closing, we want to be sure that our peer has opt-in to it.

Extend LocalFeatures new method visibilty from crate to public
for fuzz tests
2019-07-22 13:13:01 -04:00
Matt Corallo
8470e60415
Merge pull request #336 from ariard/2019-04-in-flight-txn-tracking-clean
2019 04 in flight txn tracking clean
2019-07-19 18:02:25 -04:00
Matt Corallo
3d55d71fda Add balance and is_live fields to ChannelDetails 2019-07-18 18:02:31 -04:00
Antoine Riard
a2b6a76e59 Delay failure of non-dust HTLC-outputs until solving timeout tx matures
Fix tests broken by introduced change
2019-07-17 15:26:33 -04:00
Antoine Riard
587af43eca Implement block_disconnect for pruning of waiting-conf HTLC updates
Modify ChainListener API by adding height field to block_disconnect
2019-07-17 15:26:33 -04:00
Matt Corallo
882f7307c8 Bump rust-bitcoin dep to 0.18 2019-06-01 07:40:21 -04:00
Matt Corallo
06eddc3465
Merge pull request #320 from TheBlueMatt/2019-03-chan-send-rewrite
Rewrite Channel resend tracking to make it much more reliable
2019-04-22 17:32:24 -04:00
Matt Corallo
2811b07ede
Merge pull request #334 from ariard/2019-04-fee-estimation-monitor
Add Fee Estimation in ChannelMonitor
2019-04-21 19:44:58 -04:00
Antoine Riard
50b6acb696 Add FeeEstimator in ChannelMonitor 2019-04-16 18:50:09 -04:00
Sebastian Geisler
80aa4f20a9 Make channel open confs configurable (and change from 12 to 6)
This fixes compatibility with c-lightning etc as they won't accept
a minimum_depth of 12.
2019-04-10 12:03:10 -04:00
Matt Corallo
c2a3fc74dc Fix crash in chanmon_fail_consistency due to fuzz hash collisions 2019-03-25 17:03:53 -04:00
Tamas Blummer
02b541607b migration to rust-bitcoin 0.17
typedef Sha256dHash with bitcoin_hashes::sha256d::Hash
SecretKey -> PrivateKey.key
assume compressed public keys
2019-03-07 18:50:02 +01:00
Antoine Riard
6031017351 Clarify a bit full_stack_target test_no_existing_test_breakage 2019-02-27 20:54:52 -05:00
Matt Corallo
74588b2519 Send back the actual received amount, not expected on HTLC fails
This resolves an incorrect implementation of the spec and fixes a
major privacy leak.

Fixes GH #289.
2019-01-24 16:55:01 -05:00
Matt Corallo
49d63302c3 Add a fuzz target to test monitor update failure handling
Sadly this requires reducing the honggfuzz iterations to fit within
Travis' runtime limits.
2019-01-24 13:17:00 -05:00
Matt Corallo
aa9a848f79 Take the logger from test_utils into fuzz::test_utils 2019-01-24 13:16:59 -05:00
Yuko Roodt
4d77e9d752 Added tests to check the bolt 2 specs for Sending Node Channel 2019-01-23 14:54:10 -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
7fd294db3d
Merge pull request #285 from TheBlueMatt/2019-01-fuzz-cleanups
Trivial cleanups in full_stack_target/fuzztarget
2019-01-16 10:11:32 -05:00
Matt Corallo
90ce97198c Simplify and expand logging in is_resolving_htlc_output
This clarifies all the conditions we can hit and also ensures they
are all logged in a clear and consistent manner.
2019-01-08 23:03:07 -05:00
Matt Corallo
5801d19a69 Switch to bitcoin_hashes Hash160 in full_stack_target 2019-01-08 14:04:06 -05:00
Matt Corallo
d8dcb1a9d3 Add doc to full_stack_target 2019-01-08 14:04:06 -05:00
Matt Corallo
cdf9b4f8ba Add option to use libfuzzer sys in full_stack_target
Note that there doesn't appear to be a way to conditionally set
 #[no_main] so that has to happen manually at compile-time.
2019-01-08 14:04:06 -05:00
Matt Corallo
044edd6e86 Fail HTLCs backwards asynchronously 2018-12-21 15:17:42 -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
8e07259326 Use bitcoin_hashes' Ripemd160/Hash160 from rust-crypto+rust-bitcoin
Note that this requires rewriting full_stack_target tests, which
sucks, but it does let the fuzzer hit more stuff since the real
ripemd160 isn't ever actually called anymore.
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
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
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
Matt Corallo
4f9b0fbd3f Avoid writing to stdout during fuzz tests 2018-12-03 13:58:50 -05:00
Matt Corallo
7e94d3a617 Remove unused import in full_stack_target 2018-12-03 13:30:38 -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
3a066ccbf2 Ensure fuzz release builds use codegen-units=1 and LTO 2018-11-18 16:17:06 -05:00
Steven Roose
7ff7561f2d Update to rust-bitcoin v0.15 2018-11-14 11:43:54 +00:00
Matt Corallo
38584e3efe Avoid double-panic in full_stack_target to assist debugging 2018-11-02 10:54:25 -04:00
Schalk van Heerden
a0be4d1758 Added config interface to allow users to specify channel limits 2018-10-31 15:45:30 -04:00
Matt Corallo
9189d0e61d Require at least 1k sat for outbound channels and meet BTC's dust 2018-10-31 15:45:30 -04:00
Matt Corallo
46f573b787 [full_stack_target] don't allow double-confirming txn 2018-10-29 17:16:29 -04:00
Matt Corallo
64bd2eaa7f Give ManyChannelMonitor a logger and trace add_update events 2018-10-29 14:26:05 -04:00
Matt Corallo
56513f2927 Track last_block_hash in ChannelMonitor and expose it on deser
Also make block_connected take a &mut self to ensure serialized
state will always be self-consistent.
2018-10-27 09:42:04 -04:00
Matt Corallo
47fe673c57 Give ChannelMonitor a logger via new ReadableArgs trait 2018-10-27 09:42:04 -04:00
Matt Corallo
4342114345 Send RAA/CS messages out-of-band to ensure ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
c962a27156 Send funding_signed messages out-of-band to ensure ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
608d517f92 Send AcceptChannel responses out-of-band to ensure ordered delivery 2018-10-27 09:42:04 -04:00
Matt Corallo
e397cb9960 Split Event, move MessageSendEvent push() inside channel_state lock 2018-10-27 09:42:04 -04:00