use crypto::digest::Digest;
use crypto::hkdf::{hkdf_extract,hkdf_expand};
-use crypto::sha2::Sha256;
use ln::msgs;
use ln::msgs::{HandleError, MsgEncodable};
use ln::chan_utils::{TxCreationKeys,HTLCOutputInCommitment};
use ln::chan_utils;
use chain::chaininterface::{FeeEstimator,ConfirmationTarget};
-use util::transaction_utils;
-
-use rand::{thread_rng,Rng};
+use util::{transaction_utils,rng};
+use util::sha2::Sha256;
use std::default::Default;
use std::cmp;
channel_monitor: ChannelMonitor,
}
-const OUR_MAX_HTLCS: u16 = 1; //TODO
+const OUR_MAX_HTLCS: u16 = 5; //TODO
const CONF_TARGET: u32 = 12; //TODO: Should be much higher
/// Confirmation count threshold at which we close a channel. Ideally we'd keep the channel around
/// on ice until the funding transaction gets more confirmations, but the LN protocol doesn't
panic!("funding value > 2^24");
}
- let mut rng = thread_rng();
let feerate = fee_estimator.get_est_sat_per_vbyte(ConfirmationTarget::Normal);
let background_feerate = fee_estimator.get_est_sat_per_vbyte(ConfirmationTarget::Background);
let mut key_seed = [0u8; 32];
- rng.fill_bytes(&mut key_seed);
+ rng::fill_bytes(&mut key_seed);
let chan_keys = match ChannelKeys::new_from_seed(&key_seed) {
Ok(key) => key,
Err(_) => panic!("RNG is busted!")
Channel {
user_id: user_id,
- channel_id: Uint256([rng.gen(), rng.gen(), rng.gen(), rng.gen()]),
+ channel_id: rng::rand_uint256(),
channel_state: ChannelState::OurInitSent as u32,
channel_outbound: true,
secp_ctx: secp_ctx,
let background_feerate = fee_estimator.get_est_sat_per_vbyte(ConfirmationTarget::Background);
- let mut rng = thread_rng();
let mut key_seed = [0u8; 32];
- rng.fill_bytes(&mut key_seed);
+ rng::fill_bytes(&mut key_seed);
let chan_keys = match ChannelKeys::new_from_seed(&key_seed) {
Ok(key) => key,
Err(_) => panic!("RNG is busted!")
let mut htlc_id = 0;
let mut htlc_amount_msat = 0;
+ //TODO: swap_remove since we dont need to maintain ordering here
self.pending_htlcs.retain(|ref htlc| {
if !htlc.outbound && htlc.payment_hash == payment_hash {
if htlc_id != 0 {
let mut htlc_id = 0;
let mut htlc_amount_msat = 0;
+ //TODO: swap_remove since we dont need to maintain ordering here
self.pending_htlcs.retain(|ref htlc| {
if !htlc.outbound && htlc.payment_hash == *payment_hash {
if htlc_id != 0 {
if self.channel_outbound {
return Err(HandleError{err: "Non-funding remote tried to update channel fee", msg: None});
}
- Channel::check_remote_fee(fee_estimator, msg.feerate_per_kw).unwrap();
+ Channel::check_remote_fee(fee_estimator, msg.feerate_per_kw)?;
self.feerate_per_kw = msg.feerate_per_kw as u64;
Ok(())
}