@@ -24,9 +24,13 @@ use lightning::ln::channelmanager::{
2424 ChainParameters , ChannelManagerReadArgs , PaymentId , SimpleArcChannelManager ,
2525} ;
2626use lightning:: ln:: msgs:: DecodeError ;
27- use lightning:: ln:: peer_handler:: { IgnoringMessageHandler , MessageHandler , SimpleArcPeerManager } ;
27+ use lightning:: ln:: peer_handler:: {
28+ IgnoringMessageHandler , MessageHandler , PeerManager as LdkPeerManager ,
29+ } ;
2830use lightning:: ln:: types:: ChannelId ;
29- use lightning:: onion_message:: messenger:: { DefaultMessageRouter , SimpleArcOnionMessenger } ;
31+ use lightning:: onion_message:: messenger:: {
32+ DefaultMessageRouter , OnionMessenger as LdkOnionMessenger ,
33+ } ;
3034use lightning:: routing:: gossip;
3135use lightning:: routing:: gossip:: { NodeId , P2PGossipSync } ;
3236use lightning:: routing:: router:: DefaultRouter ;
@@ -48,6 +52,7 @@ use lightning_block_sync::init;
4852use lightning_block_sync:: poll;
4953use lightning_block_sync:: SpvClient ;
5054use lightning_block_sync:: UnboundedCache ;
55+ use lightning_dns_resolver:: OMDomainResolver ;
5156use lightning_net_tokio:: SocketDescriptor ;
5257use lightning_persister:: fs_store:: FilesystemStore ;
5358use rand:: { thread_rng, Rng } ;
@@ -154,22 +159,36 @@ pub(crate) type GossipVerifier = lightning_block_sync::gossip::GossipVerifier<
154159 Arc < FilesystemLogger > ,
155160> ;
156161
157- pub ( crate ) type PeerManager = SimpleArcPeerManager <
162+ // Note that if you do not use an `OMDomainResolver` here you should use SimpleArcPeerManager
163+ // instead.
164+ pub ( crate ) type PeerManager = LdkPeerManager <
158165 SocketDescriptor ,
159- ChainMonitor ,
160- BitcoindClient ,
161- BitcoindClient ,
162- Arc < GossipVerifier > ,
163- FilesystemLogger ,
166+ Arc < ChannelManager > ,
167+ Arc < P2PGossipSync < Arc < NetworkGraph > , Arc < GossipVerifier > , Arc < FilesystemLogger > > > ,
168+ Arc < OnionMessenger > ,
169+ Arc < FilesystemLogger > ,
170+ IgnoringMessageHandler ,
171+ Arc < KeysManager > ,
164172> ;
165173
166174pub ( crate ) type ChannelManager =
167175 SimpleArcChannelManager < ChainMonitor , BitcoindClient , BitcoindClient , FilesystemLogger > ;
168176
169177pub ( crate ) type NetworkGraph = gossip:: NetworkGraph < Arc < FilesystemLogger > > ;
170178
171- type OnionMessenger =
172- SimpleArcOnionMessenger < ChainMonitor , BitcoindClient , BitcoindClient , FilesystemLogger > ;
179+ // Note that if you do not use an `OMDomainResolver` here you should use SimpleArcOnionMessenger
180+ // instead.
181+ type OnionMessenger = LdkOnionMessenger <
182+ Arc < KeysManager > ,
183+ Arc < KeysManager > ,
184+ Arc < FilesystemLogger > ,
185+ Arc < ChannelManager > ,
186+ Arc < DefaultMessageRouter < Arc < NetworkGraph > , Arc < FilesystemLogger > , Arc < KeysManager > > > ,
187+ Arc < ChannelManager > ,
188+ Arc < ChannelManager > ,
189+ Arc < OMDomainResolver < Arc < ChannelManager > > > ,
190+ IgnoringMessageHandler ,
191+ > ;
173192
174193pub ( crate ) type BumpTxEventHandler = BumpTransactionEventHandler <
175194 Arc < BitcoindClient > ,
@@ -822,8 +841,17 @@ async fn start_ldk() {
822841 let gossip_sync =
823842 Arc :: new ( P2PGossipSync :: new ( Arc :: clone ( & network_graph) , None , Arc :: clone ( & logger) ) ) ;
824843
825- // Step 16: Initialize the PeerManager
844+ // Step 16 an OMDomainResolver as a service to other nodes
845+ // As a service to other LDK users, using an `OMDomainResolver` allows others to resolve BIP
846+ // 353 Human Readable Names for others, providing them DNSSEC proofs over lightning onion
847+ // messages. Doing this only makes sense for a always-online public routing node, and doesn't
848+ // provide you any direct value, but its nice to offer the service for others.
826849 let channel_manager: Arc < ChannelManager > = Arc :: new ( channel_manager) ;
850+ let resolver = "8.8.8.8:53" . to_socket_addrs ( ) . unwrap ( ) . next ( ) . unwrap ( ) ;
851+ let domain_resolver =
852+ Arc :: new ( OMDomainResolver :: new ( resolver, Some ( Arc :: clone ( & channel_manager) ) ) ) ;
853+
854+ // Step 17: Initialize the PeerManager
827855 let onion_messenger: Arc < OnionMessenger > = Arc :: new ( OnionMessenger :: new (
828856 Arc :: clone ( & keys_manager) ,
829857 Arc :: clone ( & keys_manager) ,
@@ -832,7 +860,7 @@ async fn start_ldk() {
832860 Arc :: clone ( & message_router) ,
833861 Arc :: clone ( & channel_manager) ,
834862 Arc :: clone ( & channel_manager) ,
835- Arc :: clone ( & channel_manager ) ,
863+ domain_resolver ,
836864 IgnoringMessageHandler { } ,
837865 ) ) ;
838866 let mut ephemeral_bytes = [ 0 ; 32 ] ;
@@ -862,7 +890,7 @@ async fn start_ldk() {
862890 gossip_sync. add_utxo_lookup ( Some ( Arc :: new ( utxo_lookup) ) ) ;
863891
864892 // ## Running LDK
865- // Step 17 : Initialize networking
893+ // Step 18 : Initialize networking
866894
867895 let peer_manager_connection_handler = peer_manager. clone ( ) ;
868896 let listening_port = args. ldk_peer_listening_port ;
@@ -888,7 +916,7 @@ async fn start_ldk() {
888916 }
889917 } ) ;
890918
891- // Step 18 : Connect and Disconnect Blocks
919+ // Step 19 : Connect and Disconnect Blocks
892920 let output_sweeper: Arc < OutputSweeper > = Arc :: new ( output_sweeper) ;
893921 let channel_manager_listener = channel_manager. clone ( ) ;
894922 let chain_monitor_listener = chain_monitor. clone ( ) ;
@@ -937,7 +965,7 @@ async fn start_ldk() {
937965 . write ( "" , "" , OUTBOUND_PAYMENTS_FNAME , & outbound_payments. lock ( ) . unwrap ( ) . encode ( ) )
938966 . unwrap ( ) ;
939967
940- // Step 19 : Handle LDK Events
968+ // Step 20 : Handle LDK Events
941969 let channel_manager_event_listener = Arc :: clone ( & channel_manager) ;
942970 let bitcoind_client_event_listener = Arc :: clone ( & bitcoind_client) ;
943971 let network_graph_event_listener = Arc :: clone ( & network_graph) ;
@@ -979,10 +1007,10 @@ async fn start_ldk() {
9791007 }
9801008 } ;
9811009
982- // Step 20 : Persist ChannelManager and NetworkGraph
1010+ // Step 21 : Persist ChannelManager and NetworkGraph
9831011 let persister = Arc :: new ( FilesystemStore :: new ( ldk_data_dir. clone ( ) . into ( ) ) ) ;
9841012
985- // Step 21 : Background Processing
1013+ // Step 22 : Background Processing
9861014 let ( bp_exit, bp_exit_check) = tokio:: sync:: watch:: channel ( ( ) ) ;
9871015 let mut background_processor = tokio:: spawn ( process_events_async (
9881016 Arc :: clone ( & persister) ,
0 commit comments