@@ -28,6 +28,7 @@ use ln::router::{Route,RouteHop};
28
28
use ln:: msgs;
29
29
use ln:: msgs:: { ChannelMessageHandler , HandleError , RAACommitmentOrder } ;
30
30
use chain:: keysinterface:: ChannelKeys ;
31
+ use chain:: keysinterface:: KeysInterface ;
31
32
use util:: { byte_utils, events, internal_traits, rng} ;
32
33
use util:: sha2:: Sha256 ;
33
34
use util:: ser:: { Readable , Writeable } ;
@@ -292,6 +293,8 @@ pub struct ChannelManager {
292
293
293
294
pending_events : Mutex < Vec < events:: Event > > ,
294
295
296
+ keys_manager : Arc < KeysInterface > ,
297
+
295
298
logger : Arc < Logger > ,
296
299
}
297
300
@@ -364,7 +367,7 @@ impl ChannelManager {
364
367
/// Non-proportional fees are fixed according to our risk using the provided fee estimator.
365
368
///
366
369
/// panics if channel_value_satoshis is >= `MAX_FUNDING_SATOSHIS`!
367
- pub fn new ( our_network_key : SecretKey , fee_proportional_millionths : u32 , announce_channels_publicly : bool , network : Network , feeest : Arc < FeeEstimator > , monitor : Arc < ManyChannelMonitor > , chain_monitor : Arc < ChainWatchInterface > , tx_broadcaster : Arc < BroadcasterInterface > , logger : Arc < Logger > ) -> Result < Arc < ChannelManager > , secp256k1:: Error > {
370
+ pub fn new ( fee_proportional_millionths : u32 , announce_channels_publicly : bool , network : Network , feeest : Arc < FeeEstimator > , monitor : Arc < ManyChannelMonitor > , chain_monitor : Arc < ChainWatchInterface > , tx_broadcaster : Arc < BroadcasterInterface > , logger : Arc < Logger > , keys_manager : Arc < KeysInterface > ) -> Result < Arc < ChannelManager > , secp256k1:: Error > {
368
371
let secp_ctx = Secp256k1 :: new ( ) ;
369
372
370
373
let res = Arc :: new ( ChannelManager {
@@ -386,10 +389,12 @@ impl ChannelManager {
386
389
forward_htlcs : HashMap :: new ( ) ,
387
390
claimable_htlcs : HashMap :: new ( ) ,
388
391
} ) ,
389
- our_network_key,
392
+ our_network_key : keys_manager . get_node_secret ( ) ,
390
393
391
394
pending_events : Mutex :: new ( Vec :: new ( ) ) ,
392
395
396
+ keys_manager,
397
+
393
398
logger,
394
399
} ) ;
395
400
let weak_res = Arc :: downgrade ( & res) ;
@@ -421,11 +426,10 @@ impl ChannelManager {
421
426
commitment_seed : [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
422
427
}
423
428
} else {
424
- let mut key_seed = [ 0u8 ; 32 ] ;
425
- rng:: fill_bytes ( & mut key_seed) ;
426
- match ChannelKeys :: new_from_seed ( & key_seed) {
427
- Ok ( key) => key,
428
- Err ( _) => panic ! ( "RNG is busted!" )
429
+ if let Some ( keys) = self . keys_manager . get_channel_keys ( ) {
430
+ keys
431
+ } else {
432
+ panic ! ( "KeysManager is busted!" ) ;
429
433
}
430
434
} ;
431
435
@@ -1680,11 +1684,10 @@ impl ChannelManager {
1680
1684
commitment_seed : [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
1681
1685
}
1682
1686
} else {
1683
- let mut key_seed = [ 0u8 ; 32 ] ;
1684
- rng:: fill_bytes ( & mut key_seed) ;
1685
- match ChannelKeys :: new_from_seed ( & key_seed) {
1686
- Ok ( key) => key,
1687
- Err ( _) => panic ! ( "RNG is busted!" )
1687
+ if let Some ( keys) = self . keys_manager . get_channel_keys ( ) {
1688
+ keys
1689
+ } else {
1690
+ panic ! ( "KeysManager is busted!" ) ;
1688
1691
}
1689
1692
} ;
1690
1693
@@ -2678,6 +2681,8 @@ mod tests {
2678
2681
use chain:: chaininterface;
2679
2682
use chain:: transaction:: OutPoint ;
2680
2683
use chain:: chaininterface:: ChainListener ;
2684
+ use chain:: keysinterface:: KeysInterface ;
2685
+ use chain:: keysinterface;
2681
2686
use ln:: channelmanager:: { ChannelManager , OnionKeys } ;
2682
2687
use ln:: channelmonitor:: { ChannelMonitorUpdateErr , CLTV_CLAIM_BUFFER , HTLC_FAIL_TIMEOUT_BLOCKS } ;
2683
2688
use ln:: router:: { Route , RouteHop , Router } ;
@@ -3450,14 +3455,12 @@ mod tests {
3450
3455
let feeest = Arc :: new ( test_utils:: TestFeeEstimator { sat_per_kw : 253 } ) ;
3451
3456
let chain_monitor = Arc :: new ( chaininterface:: ChainWatchInterfaceUtil :: new ( Network :: Testnet , Arc :: clone ( & logger) ) ) ;
3452
3457
let tx_broadcaster = Arc :: new ( test_utils:: TestBroadcaster { txn_broadcasted : Mutex :: new ( Vec :: new ( ) ) } ) ;
3458
+ let mut seed = [ 0 ; 32 ] ;
3459
+ rng. fill_bytes ( & mut seed) ;
3460
+ let keys_manager = Arc :: new ( keysinterface:: KeysManager :: new ( & seed, Network :: Testnet , Arc :: clone ( & logger) ) . unwrap ( ) ) ;
3453
3461
let chan_monitor = Arc :: new ( test_utils:: TestChannelMonitor :: new ( chain_monitor. clone ( ) , tx_broadcaster. clone ( ) ) ) ;
3454
- let node_id = {
3455
- let mut key_slice = [ 0 ; 32 ] ;
3456
- rng. fill_bytes ( & mut key_slice) ;
3457
- SecretKey :: from_slice ( & secp_ctx, & key_slice) . unwrap ( )
3458
- } ;
3459
- let node = ChannelManager :: new ( node_id. clone ( ) , 0 , true , Network :: Testnet , feeest. clone ( ) , chan_monitor. clone ( ) , chain_monitor. clone ( ) , tx_broadcaster. clone ( ) , Arc :: clone ( & logger) ) . unwrap ( ) ;
3460
- let router = Router :: new ( PublicKey :: from_secret_key ( & secp_ctx, & node_id) , chain_monitor. clone ( ) , Arc :: clone ( & logger) ) ;
3462
+ let node = ChannelManager :: new ( 0 , true , Network :: Testnet , feeest. clone ( ) , chan_monitor. clone ( ) , chain_monitor. clone ( ) , tx_broadcaster. clone ( ) , Arc :: clone ( & logger) , keys_manager. clone ( ) ) . unwrap ( ) ;
3463
+ let router = Router :: new ( PublicKey :: from_secret_key ( & secp_ctx, & keys_manager. get_node_secret ( ) ) , chain_monitor. clone ( ) , Arc :: clone ( & logger) ) ;
3461
3464
nodes. push ( Node { chain_monitor, tx_broadcaster, chan_monitor, node, router,
3462
3465
network_payment_count : payment_count. clone ( ) ,
3463
3466
network_chan_count : chan_count. clone ( ) ,
0 commit comments