@@ -34,6 +34,8 @@ use lightning::routing::scoring::ProbabilisticScoringFeeParameters;
34
34
use lightning:: sign:: { EntropySource , InMemorySigner , KeysManager } ;
35
35
use lightning:: types:: payment:: { PaymentHash , PaymentPreimage , PaymentSecret } ;
36
36
use lightning:: util:: config:: UserConfig ;
37
+ use lightning:: util:: hash_tables:: hash_map:: Entry ;
38
+ use lightning:: util:: hash_tables:: HashMap ;
37
39
use lightning:: util:: persist:: {
38
40
self , KVStore , MonitorUpdatingPersister , OUTPUT_SWEEPER_PERSISTENCE_KEY ,
39
41
OUTPUT_SWEEPER_PERSISTENCE_PRIMARY_NAMESPACE , OUTPUT_SWEEPER_PERSISTENCE_SECONDARY_NAMESPACE ,
@@ -49,8 +51,7 @@ use lightning_block_sync::UnboundedCache;
49
51
use lightning_net_tokio:: SocketDescriptor ;
50
52
use lightning_persister:: fs_store:: FilesystemStore ;
51
53
use rand:: { thread_rng, Rng } ;
52
- use std:: collections:: hash_map:: Entry ;
53
- use std:: collections:: HashMap ;
54
+ use std:: collections:: HashMap as StdHashMap ;
54
55
use std:: convert:: TryInto ;
55
56
use std:: fmt;
56
57
use std:: fs;
@@ -158,7 +159,7 @@ pub(crate) type PeerManager = SimpleArcPeerManager<
158
159
ChainMonitor ,
159
160
BitcoindClient ,
160
161
BitcoindClient ,
161
- GossipVerifier ,
162
+ Arc < GossipVerifier > ,
162
163
FilesystemLogger ,
163
164
> ;
164
165
@@ -219,7 +220,7 @@ async fn handle_ldk_events(
219
220
)
220
221
. expect ( "Lightning funding tx should always be to a SegWit output" )
221
222
. to_address ( ) ;
222
- let mut outputs = vec ! [ HashMap :: with_capacity ( 1 ) ] ;
223
+ let mut outputs = vec ! [ StdHashMap :: new ( ) ] ;
223
224
outputs[ 0 ] . insert ( addr, channel_value_satoshis as f64 / 100_000_000.0 ) ;
224
225
let raw_tx = bitcoind_client. create_raw_transaction ( outputs) . await ;
225
226
@@ -246,17 +247,7 @@ async fn handle_ldk_events(
246
247
Event :: FundingTxBroadcastSafe { .. } => {
247
248
// We don't use the manual broadcasting feature, so this event should never be seen.
248
249
} ,
249
- Event :: PaymentClaimable {
250
- payment_hash,
251
- purpose,
252
- amount_msat,
253
- receiver_node_id : _,
254
- via_channel_id : _,
255
- via_user_channel_id : _,
256
- claim_deadline : _,
257
- onion_fields : _,
258
- counterparty_skimmed_fee_msat : _,
259
- } => {
250
+ Event :: PaymentClaimable { payment_hash, purpose, amount_msat, .. } => {
260
251
println ! (
261
252
"\n EVENT: received payment from payment hash {} of {} millisatoshis" ,
262
253
payment_hash, amount_msat,
@@ -402,9 +393,7 @@ async fn handle_ldk_events(
402
393
total_fee_earned_msat,
403
394
claim_from_onchain_tx,
404
395
outbound_amount_forwarded_msat,
405
- skimmed_fee_msat : _,
406
- prev_user_channel_id : _,
407
- next_user_channel_id : _,
396
+ ..
408
397
} => {
409
398
let read_only_network_graph = network_graph. read_only ( ) ;
410
399
let nodes = read_only_network_graph. nodes ( ) ;
@@ -497,14 +486,7 @@ async fn handle_ldk_events(
497
486
print ! ( "> " ) ;
498
487
std:: io:: stdout ( ) . flush ( ) . unwrap ( ) ;
499
488
} ,
500
- Event :: ChannelClosed {
501
- channel_id,
502
- reason,
503
- user_channel_id : _,
504
- counterparty_node_id,
505
- channel_capacity_sats : _,
506
- channel_funding_txo : _,
507
- } => {
489
+ Event :: ChannelClosed { channel_id, reason, counterparty_node_id, .. } => {
508
490
println ! (
509
491
"\n EVENT: Channel {} with counterparty {} closed due to: {:?}" ,
510
492
channel_id,
@@ -688,7 +670,7 @@ async fn start_ldk() {
688
670
Arc :: clone ( & logger) ,
689
671
) ) ) ;
690
672
691
- // Step 10: Create Router
673
+ // Step 10: Create Routers
692
674
let scoring_fee_params = ProbabilisticScoringFeeParameters :: default ( ) ;
693
675
let router = Arc :: new ( DefaultRouter :: new (
694
676
network_graph. clone ( ) ,
@@ -698,6 +680,9 @@ async fn start_ldk() {
698
680
scoring_fee_params,
699
681
) ) ;
700
682
683
+ let message_router =
684
+ Arc :: new ( DefaultMessageRouter :: new ( Arc :: clone ( & network_graph) , Arc :: clone ( & keys_manager) ) ) ;
685
+
701
686
// Step 11: Initialize the ChannelManager
702
687
let mut user_config = UserConfig :: default ( ) ;
703
688
user_config. channel_handshake_limits . force_announced_channel_preference = false ;
@@ -706,9 +691,9 @@ async fn start_ldk() {
706
691
let mut restarting_node = true ;
707
692
let ( channel_manager_blockhash, channel_manager) = {
708
693
if let Ok ( f) = fs:: File :: open ( format ! ( "{}/manager" , ldk_data_dir. clone( ) ) ) {
709
- let mut channel_monitor_mut_references = Vec :: new ( ) ;
710
- for ( _, channel_monitor) in channelmonitors. iter_mut ( ) {
711
- channel_monitor_mut_references . push ( channel_monitor) ;
694
+ let mut channel_monitor_references = Vec :: new ( ) ;
695
+ for ( _, channel_monitor) in channelmonitors. iter ( ) {
696
+ channel_monitor_references . push ( channel_monitor) ;
712
697
}
713
698
let read_args = ChannelManagerReadArgs :: new (
714
699
keys_manager. clone ( ) ,
@@ -718,9 +703,10 @@ async fn start_ldk() {
718
703
chain_monitor. clone ( ) ,
719
704
broadcaster. clone ( ) ,
720
705
router,
706
+ Arc :: clone ( & message_router) ,
721
707
logger. clone ( ) ,
722
708
user_config,
723
- channel_monitor_mut_references ,
709
+ channel_monitor_references ,
724
710
) ;
725
711
<( BlockHash , ChannelManager ) >:: read ( & mut BufReader :: new ( f) , read_args) . unwrap ( )
726
712
} else {
@@ -736,6 +722,7 @@ async fn start_ldk() {
736
722
chain_monitor. clone ( ) ,
737
723
broadcaster. clone ( ) ,
738
724
router,
725
+ Arc :: clone ( & message_router) ,
739
726
logger. clone ( ) ,
740
727
keys_manager. clone ( ) ,
741
728
keys_manager. clone ( ) ,
@@ -842,7 +829,8 @@ async fn start_ldk() {
842
829
Arc :: clone ( & keys_manager) ,
843
830
Arc :: clone ( & logger) ,
844
831
Arc :: clone ( & channel_manager) ,
845
- Arc :: new ( DefaultMessageRouter :: new ( Arc :: clone ( & network_graph) , Arc :: clone ( & keys_manager) ) ) ,
832
+ Arc :: clone ( & message_router) ,
833
+ Arc :: clone ( & channel_manager) ,
846
834
Arc :: clone ( & channel_manager) ,
847
835
Arc :: clone ( & channel_manager) ,
848
836
IgnoringMessageHandler { } ,
@@ -871,7 +859,7 @@ async fn start_ldk() {
871
859
Arc :: clone ( & gossip_sync) ,
872
860
Arc :: clone ( & peer_manager) ,
873
861
) ;
874
- gossip_sync. add_utxo_lookup ( Some ( utxo_lookup) ) ;
862
+ gossip_sync. add_utxo_lookup ( Some ( Arc :: new ( utxo_lookup) ) ) ;
875
863
876
864
// ## Running LDK
877
865
// Step 17: Initialize networking
0 commit comments