From: Matt Corallo Date: Tue, 4 May 2021 17:44:04 +0000 (+0000) Subject: Check that the node we connect to matches the user-provided chain X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-sample;a=commitdiff_plain;h=cae92e8b151d8459fee7a7eb0b823c25951363f5 Check that the node we connect to matches the user-provided chain --- diff --git a/src/convert.rs b/src/convert.rs index 7dbd8cc..a652980 100644 --- a/src/convert.rs +++ b/src/convert.rs @@ -72,6 +72,7 @@ impl TryInto for JsonResponse { pub struct BlockchainInfo { pub latest_height: usize, pub latest_blockhash: BlockHash, + pub chain: String, } impl TryInto for JsonResponse { @@ -81,6 +82,7 @@ impl TryInto for JsonResponse { latest_height: self.0["blocks"].as_u64().unwrap() as usize, latest_blockhash: BlockHash::from_hex(self.0["bestblockhash"].as_str().unwrap()) .unwrap(), + chain: self.0["chain"].as_str().unwrap().to_string(), }) } } diff --git a/src/main.rs b/src/main.rs index 21dfb28..7f4b5bf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -290,6 +290,18 @@ async fn start_ldk() { } }; + // Check that the bitcoind we've connected to is running the network we expect + let bitcoind_chain = bitcoind_client.get_blockchain_info().await.chain; + if bitcoind_chain != match args.network { + bitcoin::Network::Bitcoin => "main", + bitcoin::Network::Testnet => "test", + bitcoin::Network::Regtest => "regtest", + bitcoin::Network::Signet => "signet", + } { + println!("Chain argument ({}) didn't match bitcoind chain ({})", args.network, bitcoind_chain); + return; + } + // ## Setup // Step 1: Initialize the FeeEstimator