Make rand a dev-dep by having the user randomize HTLC forward delay 2019-07-no-rand
authorMatt Corallo <git@bluematt.me>
Fri, 19 Jul 2019 02:21:00 +0000 (22:21 -0400)
committerMatt Corallo <git@bluematt.me>
Tue, 23 Jul 2019 18:29:56 +0000 (14:29 -0400)
This removes the last calls to rand outside of test and moves the
dep to a dev-dependency, dropping our fuzz rng wrapper in the
process.

37 files changed:
Cargo.toml
fuzz/fuzz_targets/chanmon_deser_target.rs
fuzz/fuzz_targets/chanmon_fail_consistency.rs
fuzz/fuzz_targets/full_stack_target.rs
fuzz/fuzz_targets/msg_targets/msg_accept_channel_target.rs
fuzz/fuzz_targets/msg_targets/msg_announcement_signatures_target.rs
fuzz/fuzz_targets/msg_targets/msg_channel_announcement_target.rs
fuzz/fuzz_targets/msg_targets/msg_channel_reestablish_target.rs
fuzz/fuzz_targets/msg_targets/msg_channel_update_target.rs
fuzz/fuzz_targets/msg_targets/msg_closing_signed_target.rs
fuzz/fuzz_targets/msg_targets/msg_commitment_signed_target.rs
fuzz/fuzz_targets/msg_targets/msg_decoded_onion_error_packet_target.rs
fuzz/fuzz_targets/msg_targets/msg_error_message_target.rs
fuzz/fuzz_targets/msg_targets/msg_funding_created_target.rs
fuzz/fuzz_targets/msg_targets/msg_funding_locked_target.rs
fuzz/fuzz_targets/msg_targets/msg_funding_signed_target.rs
fuzz/fuzz_targets/msg_targets/msg_init_target.rs
fuzz/fuzz_targets/msg_targets/msg_node_announcement_target.rs
fuzz/fuzz_targets/msg_targets/msg_onion_hop_data_target.rs
fuzz/fuzz_targets/msg_targets/msg_open_channel_target.rs
fuzz/fuzz_targets/msg_targets/msg_ping_target.rs
fuzz/fuzz_targets/msg_targets/msg_pong_target.rs
fuzz/fuzz_targets/msg_targets/msg_revoke_and_ack_target.rs
fuzz/fuzz_targets/msg_targets/msg_shutdown_target.rs
fuzz/fuzz_targets/msg_targets/msg_target_template.txt
fuzz/fuzz_targets/msg_targets/msg_update_add_htlc_target.rs
fuzz/fuzz_targets/msg_targets/msg_update_fail_htlc_target.rs
fuzz/fuzz_targets/msg_targets/msg_update_fail_malformed_htlc_target.rs
fuzz/fuzz_targets/msg_targets/msg_update_fee_target.rs
fuzz/fuzz_targets/msg_targets/msg_update_fulfill_htlc_target.rs
fuzz/fuzz_targets/peer_crypt_target.rs
fuzz/fuzz_targets/router_target.rs
src/lib.rs
src/ln/channelmanager.rs
src/util/events.rs
src/util/mod.rs
src/util/rng.rs [deleted file]

index 63251c618cdb69352283a847bf68b2acaaee3ca3..c0e7083d12a29b2bfc4507192a1d1edfdfe41bb0 100644 (file)
@@ -24,7 +24,6 @@ max_level_debug = []
 [dependencies]
 bitcoin = "0.18"
 bitcoin_hashes = "0.3"
-rand = "0.4"
 secp256k1 = "0.12"
 
 [dev-dependencies.bitcoin]
@@ -33,6 +32,7 @@ features = ["bitcoinconsensus"]
 
 [dev-dependencies]
 hex = "0.3"
+rand = "0.4"
 
 [profile.dev]
 opt-level = 1
index 4a1044478ded987a5ab10218fc6a8a9243ae3bd0..f741832580173d3f1529be676c223491e1b46fb2 100644 (file)
@@ -8,7 +8,6 @@ extern crate lightning;
 use bitcoin_hashes::sha256d::Hash as Sha256dHash;
 
 use lightning::ln::channelmonitor;
-use lightning::util::reset_rng_state;
 use lightning::util::ser::{ReadableArgs, Writer};
 
 mod utils;
@@ -30,7 +29,6 @@ impl Writer for VecWriter {
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        let logger = Arc::new(test_logger::TestLogger::new("".to_owned()));
        if let Ok((latest_block_hash, monitor)) = <(Sha256dHash, channelmonitor::ChannelMonitor)>::read(&mut Cursor::new(data), logger.clone()) {
                let mut w = VecWriter(Vec::new());
index bebedda5e591731dbd025c8d00c62e0047e2d3c2..032b6b81bb34f25f74cf9993783a52c98dafade3 100644 (file)
@@ -37,7 +37,7 @@ use lightning::ln::channelmonitor::{ChannelMonitorUpdateErr, HTLCUpdate};
 use lightning::ln::channelmanager::{ChannelManager, PaymentHash, PaymentPreimage};
 use lightning::ln::router::{Route, RouteHop};
 use lightning::ln::msgs::{CommitmentUpdate, ChannelMessageHandler, ErrorAction, HandleError, UpdateAddHTLC, LocalFeatures};
-use lightning::util::{reset_rng_state, events};
+use lightning::util::events;
 use lightning::util::logger::Logger;
 use lightning::util::config::UserConfig;
 use lightning::util::events::{EventsProvider, MessageSendEventsProvider};
@@ -136,8 +136,6 @@ impl KeysInterface for KeyProvider {
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
-
        let fee_est = Arc::new(FuzzEstimator{});
        let broadcast = Arc::new(TestBroadcaster{});
 
index 8e0977978ff65c5136ffb53c989f33fc1f9295ee..acd757882b9825a77e2685ff74dae19608fead07 100644 (file)
@@ -34,7 +34,6 @@ use lightning::ln::channelmanager::{ChannelManager, PaymentHash, PaymentPreimage
 use lightning::ln::peer_handler::{MessageHandler,PeerManager,SocketDescriptor};
 use lightning::ln::router::Router;
 use lightning::util::events::{EventsProvider,Event};
-use lightning::util::reset_rng_state;
 use lightning::util::logger::Logger;
 use lightning::util::config::UserConfig;
 
@@ -292,8 +291,6 @@ impl KeysInterface for KeyProvider {
 
 #[inline]
 pub fn do_test(data: &[u8], logger: &Arc<Logger>) {
-       reset_rng_state();
-
        let input = Arc::new(InputData {
                data: data.to_vec(),
                read_pos: AtomicUsize::new(0),
index bd058b1ed867ad20872d5e355bd32f6078026ef9..0f18d023293f6a5e313f93872181a8aea08f2da4 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::AcceptChannel, data);
 }
 
index 233a4a77a5a828e3f96d62752c7d0e555eb44c08..226028ea034dee3a46acabd2c42020a930ec8674 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::AnnouncementSignatures, data);
 }
 
index fbaca76dba0feb7c002e1e9a06d03e60752c27b2..0bdc10e85880d73e0c915cf69fd509d53fbb3cb5 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg_exact!(msgs::ChannelAnnouncement, data);
 }
 
index debd89466cdb5d5d05a6c676b39e2f391e34b0bd..4af593759e6c4611cede4a5830e23ea9c85dd1c4 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::ChannelReestablish, data);
 }
 
index 4f38e2f4861311a19fa915d3241d5ccb86862a9c..724dca412d5c0435a85839346022b6e2e4b81e0f 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg_exact!(msgs::ChannelUpdate, data);
 }
 
index 7d63131e7e39dfc402773fc7885210ce2c463335..faeeae3eb9870bb0165cb8795c83407e462101d1 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::ClosingSigned, data);
 }
 
index 93e72bd75ce7d49b536f7be83bd60f4561e44406..97c4b3088765de6985461cdce03745142a264c58 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::CommitmentSigned, data);
 }
 
index 4b97b17efd59bb606531619b69a7cd2b12986062..9b190b086bde0289144de026d0b7a0983ad373c9 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::DecodedOnionErrorPacket, data);
 }
 
index 5ccbd26468017a644c3388e6712ff60c7eef5e7f..d749dc91fa9c3029e2d4f0c773312a9809b6d4ce 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg_hole!(msgs::ErrorMessage, data, 32, 2);
 }
 
index 57713196ced38bf5f6cf0f5644435798a73d833d..45b257bb0239c0ff60d7019681ce0a5669621cc9 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::FundingCreated, data);
 }
 
index b1ad5b3a089c73e911b31cc8bcd9e5fb8dec225d..cd1e897419cd182dbfbc68655f795c0e79d9d727 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::FundingLocked, data);
 }
 
index a3b33dc643565f46b8996bf4038da754fe88fde7..5992d69024872786dae4e1556a00bf9ddc342218 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::FundingSigned, data);
 }
 
index f7eb0671fb43b28788643fc72457627d2de0a9fb..cdca84821c97c2db081238a154385735655ea352 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::Init, data);
 }
 
index a847d0dad67a6a13b7667fe03fbda203b16f86a8..f0a7a4c0dc2ae6c8a7732b329963389093035667 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg_exact!(msgs::NodeAnnouncement, data);
 }
 
index 5588429185fa599f4376f8ea30fe19d5ee43beda..058c050c5be4b0e2aa6e45df2eb2ea259f27c116 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg_hole!(msgs::OnionHopData, data, 1+8+8+4, 12);
 }
 
index 36f6519a4dd05e4128d5b62d16a0e126771e8b92..aa13e96dd4f91c487d36d22af632186c33f9f40b 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::OpenChannel, data);
 }
 
index c470e1bbf4626d9235b7e1a15c2b527dcf583821..d2ea913354ec5458def0a91274e0a4a3560cb991 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg_simple!(msgs::Ping, data);
 }
 
index ef1e4ada8f3568ee55d18483aee7fc2be2fcfd41..18120e2d182500a7020d72c3a5726865d1fba1e6 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg_simple!(msgs::Pong, data);
 }
 
index 1e38a5d045a60140bb3e61b1c2485f8103afb81b..d82268d93c3ae1fa6627db12f73fe95a8930a5c3 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::RevokeAndACK, data);
 }
 
index d64efcc9f176df15e80593d2f681be1cf9b7807a..34d4d2003f6b6e14912df53d3355aa5e36d03160 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::Shutdown, data);
 }
 
index 50e43373899bd17cc558a2c5a16b6942baa9b76d..2704bcdff9cfbbc1852322216a22c87fb836364b 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        TEST_MSG!(msgs::MSG_TARGET, dataEXTRA_ARGS);
 }
 
index 45bc9d1b9832d4f92bfb317795afad97366b1fa5..e64a5c29ff98af1f99d55bcbfd113bab8485aecf 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg_hole!(msgs::UpdateAddHTLC, data, 85, 33);
 }
 
index 8432a57daadd69fa65bcbc380803c72b1c2c2b6b..fedce568e55138fd92ce7ffda176a21eda970ef5 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::UpdateFailHTLC, data);
 }
 
index ad129e00243d7a6da2049d78b829d858df85f465..377378fcc476f3cfe20bae7e79cfdfb36e085bac 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::UpdateFailMalformedHTLC, data);
 }
 
index f345711cd8a6f901108140646893d7db0597cfc2..56b9ac4241771e314ad871e0f9e2280ddf0ad584 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::UpdateFee, data);
 }
 
index 380b02a47068d5095a9c3185f78bf2df34d9ea13..f0c936d1e330e5a89d8c0dca5e0395a04e2d7aa2 100644 (file)
@@ -4,14 +4,12 @@
 extern crate lightning;
 
 use lightning::ln::msgs;
-use lightning::util::reset_rng_state;
 
 mod utils;
 use utils::VecWriter;
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
        test_msg!(msgs::UpdateFulfillHTLC, data);
 }
 
index a4ddbf5e4a0194b4cafc55c228604c35aaa99f21..0b82303f83b34eb81bad6d5f43f43ebde0452c68 100644 (file)
@@ -2,7 +2,6 @@ extern crate lightning;
 extern crate secp256k1;
 
 use lightning::ln::peer_channel_encryptor::PeerChannelEncryptor;
-use lightning::util::reset_rng_state;
 
 use secp256k1::key::{PublicKey,SecretKey};
 
@@ -14,8 +13,6 @@ fn slice_to_be16(v: &[u8]) -> u16 {
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
-
        let mut read_pos = 0;
        macro_rules! get_slice {
                ($len: expr) => {
index 2dcad55a1aaf84bec173a24956de94d34110f3f8..25bf38274abe93b474a1f27b590d5262ca9209e7 100644 (file)
@@ -11,7 +11,6 @@ use lightning::ln::channelmanager::ChannelDetails;
 use lightning::ln::msgs;
 use lightning::ln::msgs::{RoutingMessageHandler};
 use lightning::ln::router::{Router, RouteHint};
-use lightning::util::reset_rng_state;
 use lightning::util::logger::Logger;
 use lightning::util::ser::Readable;
 
@@ -96,8 +95,6 @@ impl ChainWatchInterface for DummyChainWatcher {
 
 #[inline]
 pub fn do_test(data: &[u8]) {
-       reset_rng_state();
-
        let input = Arc::new(InputData {
                data: data.to_vec(),
                read_pos: AtomicUsize::new(0),
index 52ec664023621954d162ba8f603a7cc4a21491cd..aae543e073838e605c6996241aea2b05f22e123d 100644 (file)
@@ -13,8 +13,8 @@
 
 extern crate bitcoin;
 extern crate bitcoin_hashes;
-extern crate rand;
 extern crate secp256k1;
+#[cfg(test)] extern crate rand;
 #[cfg(test)] extern crate hex;
 
 #[macro_use]
index 14491f1aa75c45a4139a5f18f0b3ff0f29316255..d48dcea4269f7186117b08a5fca04dbf08437c91 100644 (file)
@@ -36,7 +36,7 @@ use ln::onion_utils;
 use ln::msgs::{ChannelMessageHandler, DecodeError, HandleError};
 use chain::keysinterface::KeysInterface;
 use util::config::UserConfig;
-use util::{byte_utils, events, rng};
+use util::{byte_utils, events};
 use util::ser::{Readable, ReadableArgs, Writeable, Writer};
 use util::chacha20::ChaCha20;
 use util::logger::Logger;
@@ -214,11 +214,11 @@ impl MsgHandleErrInternal {
        }
 }
 
-/// We hold back HTLCs we intend to relay for a random interval in the range (this, 5*this). This
-/// provides some limited amount of privacy. Ideally this would range from somewhere like 1 second
-/// to 30 seconds, but people expect lightning to be, you know, kinda fast, sadly. We could
-/// probably increase this significantly.
-const MIN_HTLC_RELAY_HOLDING_CELL_MILLIS: u32 = 50;
+/// We hold back HTLCs we intend to relay for a random interval greater than this (see
+/// Event::PendingHTLCsForwardable for the API guidelines indicating how long should be waited).
+/// This provides some limited amount of privacy. Ideally this would range from somewhere like one
+/// second to 30 seconds, but people expect lightning to be, you know, kinda fast, sadly.
+const MIN_HTLC_RELAY_HOLDING_CELL_MILLIS: u64 = 100;
 
 pub(super) enum HTLCForwardInfo {
        AddHTLC {
@@ -1486,7 +1486,7 @@ impl ChannelManager {
 
                                let mut forward_event = None;
                                if channel_state_lock.forward_htlcs.is_empty() {
-                                       forward_event = Some(Duration::from_millis(((rng::rand_f32() * 4.0 + 1.0) * MIN_HTLC_RELAY_HOLDING_CELL_MILLIS as f32) as u64));
+                                       forward_event = Some(Duration::from_millis(MIN_HTLC_RELAY_HOLDING_CELL_MILLIS));
                                }
                                match channel_state_lock.forward_htlcs.entry(short_channel_id) {
                                        hash_map::Entry::Occupied(mut entry) => {
@@ -2095,7 +2095,7 @@ impl ChannelManager {
                        if !pending_forwards.is_empty() {
                                let mut channel_state = self.channel_state.lock().unwrap();
                                if channel_state.forward_htlcs.is_empty() {
-                                       forward_event = Some(Duration::from_millis(((rng::rand_f32() * 4.0 + 1.0) * MIN_HTLC_RELAY_HOLDING_CELL_MILLIS as f32) as u64));
+                                       forward_event = Some(Duration::from_millis(MIN_HTLC_RELAY_HOLDING_CELL_MILLIS))
                                }
                                for (forward_info, prev_htlc_id) in pending_forwards.drain(..) {
                                        match channel_state.forward_htlcs.entry(forward_info.short_channel_id) {
index e4bed8f2e35494be576688f1119b6538d183de09..96a5b48a76d26877cf58545528fb99f4c3e3b91b 100644 (file)
@@ -92,7 +92,10 @@ pub enum Event {
        /// Used to indicate that ChannelManager::process_pending_htlc_forwards should be called at a
        /// time in the future.
        PendingHTLCsForwardable {
-               /// The amount of time that should be waited prior to calling process_pending_htlc_forwards
+               /// The minimum amount of time that should be waited prior to calling
+               /// process_pending_htlc_forwards. To increase the effort required to correlate payments,
+               /// you should wait a random amount of time in roughly the range (now + time_forwardable,
+               /// now + 5*time_forwardable).
                time_forwardable: Duration,
        },
        /// Used to indicate that an output was generated on-chain which you should know how to spend.
index e4170590d1003045deb0cd2567ff70e71aa461a9..1a48507df58984414b9800ca94125cf702481ad5 100644 (file)
@@ -10,7 +10,6 @@ pub(crate) mod chacha20;
 pub(crate) mod poly1305;
 pub(crate) mod chacha20poly1305rfc;
 pub(crate) mod internal_traits;
-pub(crate) mod rng;
 pub(crate) mod transaction_utils;
 
 #[macro_use]
@@ -22,9 +21,6 @@ pub(crate) mod macro_logger;
 pub mod logger;
 pub mod config;
 
-#[cfg(feature = "fuzztarget")]
-pub use self::rng::{reset_rng_state, fill_bytes};
-
 #[cfg(test)]
 pub(crate) mod test_utils;
 
diff --git a/src/util/rng.rs b/src/util/rng.rs
deleted file mode 100644 (file)
index 63fbc99..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#[cfg(not(feature = "fuzztarget"))]
-mod real_rng {
-       use rand::{thread_rng,Rng};
-
-       pub fn fill_bytes(data: &mut [u8]) {
-               let mut rng = thread_rng();
-               rng.fill_bytes(data);
-       }
-
-       pub fn rand_f32() -> f32 {
-               let mut rng = thread_rng();
-               rng.next_f32()
-       }
-}
-#[cfg(not(feature = "fuzztarget"))]
-pub use self::real_rng::*;
-
-#[cfg(feature = "fuzztarget")]
-mod fuzzy_rng {
-       use util::byte_utils;
-
-       static mut RNG_ITER: u64 = 0;
-
-       pub fn fill_bytes(data: &mut [u8]) {
-               let rng = unsafe { RNG_ITER += 1; RNG_ITER -1 };
-               for i in 0..data.len() / 8 {
-                       data[i*8..(i+1)*8].copy_from_slice(&byte_utils::be64_to_array(rng));
-               }
-               let rem = data.len() % 8;
-               let off = data.len() - rem;
-               data[off..].copy_from_slice(&byte_utils::be64_to_array(rng)[0..rem]);
-       }
-
-       pub fn rand_f32() -> f32 {
-               let rng = unsafe { RNG_ITER += 1; RNG_ITER - 1 };
-               f64::from_bits(rng) as f32
-       }
-
-       pub fn reset_rng_state() {
-               unsafe { RNG_ITER = 0; }
-       }
-}
-#[cfg(feature = "fuzztarget")]
-pub use self::fuzzy_rng::*;