Skip to content

Commit

Permalink
Verify gossip using our RpcClient and the new LDK verification impl
Browse files Browse the repository at this point in the history
  • Loading branch information
TheBlueMatt committed Oct 15, 2023
1 parent f5d699d commit 88bd0ca
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ edition = "2018"

[dependencies]
lightning = { version = "0.0.117", features = ["max_level_trace"] }
lightning-block-sync = { version = "0.0.117", features = [ "rpc-client" ] }
lightning-block-sync = { version = "0.0.117", features = [ "rpc-client", "tokio" ] }
lightning-invoice = { version = "0.25.0" }
lightning-net-tokio = { version = "0.0.117" }
lightning-persister = { version = "0.0.117" }
Expand Down
2 changes: 1 addition & 1 deletion src/bitcoind_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ use std::sync::Arc;
use std::time::Duration;

pub struct BitcoindClient {
bitcoind_rpc_client: Arc<RpcClient>,
pub(crate) bitcoind_rpc_client: Arc<RpcClient>,
host: String,
port: u16,
rpc_user: String,
Expand Down
29 changes: 23 additions & 6 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -133,12 +133,23 @@ type ChainMonitor = chainmonitor::ChainMonitor<
>,
>;

pub(crate) type GossipVerifier = lightning_block_sync::gossip::GossipVerifier<
lightning_block_sync::gossip::TokioSpawner,
Arc<lightning_block_sync::rpc::RpcClient>,
Arc<FilesystemLogger>,
SocketDescriptor,
Arc<ChannelManager>,
Arc<SimpleArcOnionMessenger<FilesystemLogger>>,
IgnoringMessageHandler,
Arc<KeysManager>,
>;

pub(crate) type PeerManager = SimpleArcPeerManager<
SocketDescriptor,
ChainMonitor,
BitcoindClient,
BitcoindClient,
Arc<BitcoindClient>,
GossipVerifier,
FilesystemLogger,
>;

Expand Down Expand Up @@ -733,11 +744,8 @@ async fn start_ldk() {
}

// Step 14: Optional: Initialize the P2PGossipSync
let gossip_sync = Arc::new(P2PGossipSync::new(
Arc::clone(&network_graph),
None::<Arc<BitcoindClient>>,
logger.clone(),
));
let gossip_sync =
Arc::new(P2PGossipSync::new(Arc::clone(&network_graph), None, Arc::clone(&logger)));

// Step 15: Initialize the PeerManager
let channel_manager: Arc<ChannelManager> = Arc::new(channel_manager);
Expand Down Expand Up @@ -766,6 +774,15 @@ async fn start_ldk() {
Arc::clone(&keys_manager),
));

// Install a GossipVerifier in in the P2PGossipSync
let utxo_lookup = GossipVerifier::new(
Arc::clone(&bitcoind_client.bitcoind_rpc_client),
lightning_block_sync::gossip::TokioSpawner,
Arc::clone(&gossip_sync),
Arc::clone(&peer_manager),
);
gossip_sync.add_utxo_lookup(Some(utxo_lookup));

// ## Running LDK
// Step 16: Initialize networking

Expand Down

0 comments on commit 88bd0ca

Please sign in to comment.