Skip to content

Commit e24cb62

Browse files
committed
Remove genesis block hash from public API
Forcing users to pass a genesis block hash has ended up being error-prone largely due to byte-swapping questions for bindings users. Further, our API is currently inconsistent - in `ChannelManager` we take a `Bitcoin::Network` but in `NetworkGraph` we take the genesis block hash. Luckily `NetworkGraph` is the only remaining place where we require users pass the genesis block hash, so swapping it for a `Network` is a simple change.
1 parent 2edb3f1 commit e24cb62

File tree

15 files changed

+43
-75
lines changed

15 files changed

+43
-75
lines changed

fuzz/src/full_stack.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
450450
// it's easier to just increment the counter here so the keys don't change.
451451
keys_manager.counter.fetch_sub(3, Ordering::AcqRel);
452452
let our_id = &keys_manager.get_node_id(Recipient::Node).unwrap();
453-
let network_graph = Arc::new(NetworkGraph::new(genesis_block(network).block_hash(), Arc::clone(&logger)));
453+
let network_graph = Arc::new(NetworkGraph::new(network, Arc::clone(&logger)));
454454
let gossip_sync = Arc::new(P2PGossipSync::new(Arc::clone(&network_graph), None, Arc::clone(&logger)));
455455
let scorer = FixedPenaltyScorer::with_penalty(0);
456456

fuzz/src/process_network_graph.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
// Imports that need to be added manually
22
use lightning_rapid_gossip_sync::RapidGossipSync;
3-
use bitcoin::hashes::Hash as TraitImport;
43

54
use crate::utils::test_logger;
65

76
/// Actual fuzz test, method signature and name are fixed
87
fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
9-
let block_hash = bitcoin::BlockHash::all_zeros();
108
let logger = test_logger::TestLogger::new("".to_owned(), out);
11-
let network_graph = lightning::routing::gossip::NetworkGraph::new(block_hash, &logger);
9+
let network_graph = lightning::routing::gossip::NetworkGraph::new(bitcoin::Network::Bitcoin, &logger);
1210
let rapid_sync = RapidGossipSync::new(&network_graph);
1311
let _ = rapid_sync.update_network_graph(data);
1412
}

fuzz/src/router.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use lightning::util::ser::Readable;
2424
use bitcoin::hashes::Hash;
2525
use bitcoin::secp256k1::PublicKey;
2626
use bitcoin::network::constants::Network;
27-
use bitcoin::blockdata::constants::genesis_block;
2827

2928
use crate::utils::test_logger;
3029

@@ -189,7 +188,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
189188
let logger = test_logger::TestLogger::new("".to_owned(), out);
190189

191190
let our_pubkey = get_pubkey!();
192-
let net_graph = NetworkGraph::new(genesis_block(Network::Bitcoin).header.block_hash(), &logger);
191+
let net_graph = NetworkGraph::new(Network::Bitcoin, &logger);
193192
let chain_source = FuzzChainSource {
194193
input: Arc::clone(&input),
195194
net_graph: &net_graph,

lightning-background-processor/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -941,7 +941,7 @@ mod tests {
941941
let logger = Arc::new(test_utils::TestLogger::with_id(format!("node {}", i)));
942942
let network = Network::Testnet;
943943
let genesis_block = genesis_block(network);
944-
let network_graph = Arc::new(NetworkGraph::new(genesis_block.header.block_hash(), logger.clone()));
944+
let network_graph = Arc::new(NetworkGraph::new(network, logger.clone()));
945945
let scorer = Arc::new(Mutex::new(TestScorer::new()));
946946
let seed = [i as u8; 32];
947947
let router = Arc::new(DefaultRouter::new(network_graph.clone(), logger.clone(), seed, scorer.clone()));

lightning-rapid-gossip-sync/src/lib.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@
5353
//! # }
5454
//! # let logger = FakeLogger {};
5555
//!
56-
//! let block_hash = genesis_block(Network::Bitcoin).header.block_hash();
57-
//! let network_graph = NetworkGraph::new(block_hash, &logger);
56+
//! let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
5857
//! let rapid_sync = RapidGossipSync::new(&network_graph);
5958
//! let snapshot_contents: &[u8] = &[0; 0];
6059
//! let new_last_sync_timestamp_result = rapid_sync.update_network_graph(snapshot_contents);
@@ -153,7 +152,6 @@ impl<NG: Deref<Target=NetworkGraph<L>>, L: Deref> RapidGossipSync<NG, L> where L
153152
mod tests {
154153
use std::fs;
155154

156-
use bitcoin::blockdata::constants::genesis_block;
157155
use bitcoin::Network;
158156

159157
use lightning::ln::msgs::DecodeError;
@@ -217,9 +215,8 @@ mod tests {
217215
let sync_test = FileSyncTest::new(tmp_directory, &valid_response);
218216
let graph_sync_test_file = sync_test.get_test_file_path();
219217

220-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
221218
let logger = TestLogger::new();
222-
let network_graph = NetworkGraph::new(block_hash, &logger);
219+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
223220

224221
assert_eq!(network_graph.read_only().channels().len(), 0);
225222

@@ -250,9 +247,8 @@ mod tests {
250247

251248
#[test]
252249
fn measure_native_read_from_file() {
253-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
254250
let logger = TestLogger::new();
255-
let network_graph = NetworkGraph::new(block_hash, &logger);
251+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
256252

257253
assert_eq!(network_graph.read_only().channels().len(), 0);
258254

@@ -293,10 +289,9 @@ pub mod bench {
293289

294290
#[bench]
295291
fn bench_reading_full_graph_from_file(b: &mut Bencher) {
296-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
297292
let logger = TestLogger::new();
298293
b.iter(|| {
299-
let network_graph = NetworkGraph::new(block_hash, &logger);
294+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
300295
let rapid_sync = RapidGossipSync::new(&network_graph);
301296
let sync_result = rapid_sync.sync_network_graph_with_file_path("./res/full_graph.lngossip");
302297
if let Err(crate::error::GraphSyncError::DecodeError(DecodeError::Io(io_error))) = &sync_result {

lightning-rapid-gossip-sync/src/processing.rs

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,6 @@ impl<NG: Deref<Target=NetworkGraph<L>>, L: Deref> RapidGossipSync<NG, L> where L
207207

208208
#[cfg(test)]
209209
mod tests {
210-
use bitcoin::blockdata::constants::genesis_block;
211210
use bitcoin::Network;
212211

213212
use lightning::ln::msgs::DecodeError;
@@ -219,9 +218,8 @@ mod tests {
219218

220219
#[test]
221220
fn network_graph_fails_to_update_from_clipped_input() {
222-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
223221
let logger = TestLogger::new();
224-
let network_graph = NetworkGraph::new(block_hash, &logger);
222+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
225223

226224
let example_input = vec![
227225
76, 68, 75, 1, 111, 226, 140, 10, 182, 241, 179, 114, 193, 166, 162, 70, 174, 99, 247,
@@ -259,9 +257,8 @@ mod tests {
259257
68, 226, 0, 6, 11, 0, 1, 128,
260258
];
261259

262-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
263260
let logger = TestLogger::new();
264-
let network_graph = NetworkGraph::new(block_hash, &logger);
261+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
265262

266263
assert_eq!(network_graph.read_only().channels().len(), 0);
267264

@@ -288,9 +285,8 @@ mod tests {
288285
2, 68, 226, 0, 6, 11, 0, 1, 128,
289286
];
290287

291-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
292288
let logger = TestLogger::new();
293-
let network_graph = NetworkGraph::new(block_hash, &logger);
289+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
294290

295291
assert_eq!(network_graph.read_only().channels().len(), 0);
296292

@@ -325,9 +321,8 @@ mod tests {
325321
0, 1, 0, 0, 0, 125, 255, 2, 68, 226, 0, 6, 11, 0, 1, 5, 0, 0, 0, 0, 29, 129, 25, 192,
326322
];
327323

328-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
329324
let logger = TestLogger::new();
330-
let network_graph = NetworkGraph::new(block_hash, &logger);
325+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
331326

332327
assert_eq!(network_graph.read_only().channels().len(), 0);
333328

@@ -392,9 +387,8 @@ mod tests {
392387
25, 192,
393388
];
394389

395-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
396390
let logger = TestLogger::new();
397-
let network_graph = NetworkGraph::new(block_hash, &logger);
391+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
398392

399393
assert_eq!(network_graph.read_only().channels().len(), 0);
400394

@@ -452,9 +446,8 @@ mod tests {
452446
25, 192,
453447
];
454448

455-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
456449
let logger = TestLogger::new();
457-
let network_graph = NetworkGraph::new(block_hash, &logger);
450+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
458451

459452
assert_eq!(network_graph.read_only().channels().len(), 0);
460453

@@ -496,9 +489,8 @@ mod tests {
496489
0, 0, 1,
497490
];
498491

499-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
500492
let logger = TestLogger::new();
501-
let network_graph = NetworkGraph::new(block_hash, &logger);
493+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
502494

503495
assert_eq!(network_graph.read_only().channels().len(), 0);
504496

@@ -546,9 +538,8 @@ mod tests {
546538
0, 0, 1,
547539
];
548540

549-
let block_hash = genesis_block(Network::Bitcoin).block_hash();
550541
let logger = TestLogger::new();
551-
let network_graph = NetworkGraph::new(block_hash, &logger);
542+
let network_graph = NetworkGraph::new(Network::Bitcoin, &logger);
552543
let rapid_sync = RapidGossipSync::new(&network_graph);
553544
let update_result = rapid_sync.update_network_graph(&unknown_version_input[..]);
554545

lightning/src/ln/channelmanager.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8511,13 +8511,12 @@ pub mod bench {
85118511
// Note that this is unrealistic as each payment send will require at least two fsync
85128512
// calls per node.
85138513
let network = bitcoin::Network::Testnet;
8514-
let genesis_hash = bitcoin::blockdata::constants::genesis_block(network).header.block_hash();
85158514

85168515
let tx_broadcaster = test_utils::TestBroadcaster{txn_broadcasted: Mutex::new(Vec::new()), blocks: Arc::new(Mutex::new(Vec::new()))};
85178516
let fee_estimator = test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) };
85188517
let logger_a = test_utils::TestLogger::with_id("node a".to_owned());
85198518
let scorer = Mutex::new(test_utils::TestScorer::new());
8520-
let router = test_utils::TestRouter::new(Arc::new(NetworkGraph::new(genesis_hash, &logger_a)), &scorer);
8519+
let router = test_utils::TestRouter::new(Arc::new(NetworkGraph::new(network, &logger_a)), &scorer);
85218520

85228521
let mut config: UserConfig = Default::default();
85238522
config.channel_handshake_config.minimum_depth = 1;
@@ -8561,7 +8560,7 @@ pub mod bench {
85618560
assert_eq!(&tx_broadcaster.txn_broadcasted.lock().unwrap()[..], &[tx.clone()]);
85628561

85638562
let block = Block {
8564-
header: BlockHeader { version: 0x20000000, prev_blockhash: genesis_hash, merkle_root: TxMerkleNode::all_zeros(), time: 42, bits: 42, nonce: 42 },
8563+
header: BlockHeader { version: 0x20000000, prev_blockhash: BestBlock::from_genesis(network), merkle_root: TxMerkleNode::all_zeros(), time: 42, bits: 42, nonce: 42 },
85658564
txdata: vec![tx],
85668565
};
85678566
Listen::block_connected(&node_a, &block, 1);
@@ -8600,7 +8599,7 @@ pub mod bench {
86008599
_ => panic!("Unexpected event"),
86018600
}
86028601

8603-
let dummy_graph = NetworkGraph::new(genesis_hash, &logger_a);
8602+
let dummy_graph = NetworkGraph::new(network, &logger_a);
86048603

86058604
let mut payment_count: u64 = 0;
86068605
macro_rules! send_payment {

lightning/src/ln/functional_test_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2300,7 +2300,7 @@ pub fn create_node_cfgs<'a>(node_count: usize, chanmon_cfgs: &'a Vec<TestChanMon
23002300

23012301
for i in 0..node_count {
23022302
let chain_monitor = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[i].chain_source), &chanmon_cfgs[i].tx_broadcaster, &chanmon_cfgs[i].logger, &chanmon_cfgs[i].fee_estimator, &chanmon_cfgs[i].persister, &chanmon_cfgs[i].keys_manager);
2303-
let network_graph = Arc::new(NetworkGraph::new(chanmon_cfgs[i].chain_source.genesis_hash, &chanmon_cfgs[i].logger));
2303+
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &chanmon_cfgs[i].logger));
23042304
let seed = [i as u8; 32];
23052305
nodes.push(NodeCfg {
23062306
chain_source: &chanmon_cfgs[i].chain_source,

lightning/src/ln/functional_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5257,7 +5257,7 @@ fn test_key_derivation_params() {
52575257
let seed = [42; 32];
52585258
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
52595259
let chain_monitor = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[0].chain_source), &chanmon_cfgs[0].tx_broadcaster, &chanmon_cfgs[0].logger, &chanmon_cfgs[0].fee_estimator, &chanmon_cfgs[0].persister, &keys_manager);
5260-
let network_graph = Arc::new(NetworkGraph::new(chanmon_cfgs[0].chain_source.genesis_hash, &chanmon_cfgs[0].logger));
5260+
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &chanmon_cfgs[0].logger));
52615261
let scorer = Mutex::new(test_utils::TestScorer::new());
52625262
let router = test_utils::TestRouter::new(network_graph.clone(), &scorer);
52635263
let node = NodeCfg { chain_source: &chanmon_cfgs[0].chain_source, logger: &chanmon_cfgs[0].logger, tx_broadcaster: &chanmon_cfgs[0].tx_broadcaster, fee_estimator: &chanmon_cfgs[0].fee_estimator, router, chain_monitor, keys_manager: &keys_manager, network_graph, node_seed: seed, override_init_features: alloc::rc::Rc::new(core::cell::RefCell::new(None)) };

lightning/src/ln/outbound_payment.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,7 +1195,6 @@ impl_writeable_tlv_based_enum_upgradable!(PendingOutboundPayment,
11951195

11961196
#[cfg(test)]
11971197
mod tests {
1198-
use bitcoin::blockdata::constants::genesis_block;
11991198
use bitcoin::network::constants::Network;
12001199
use bitcoin::secp256k1::{PublicKey, Secp256k1, SecretKey};
12011200

@@ -1219,8 +1218,7 @@ mod tests {
12191218
fn do_fails_paying_after_expiration(on_retry: bool) {
12201219
let outbound_payments = OutboundPayments::new();
12211220
let logger = test_utils::TestLogger::new();
1222-
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
1223-
let network_graph = Arc::new(NetworkGraph::new(genesis_hash, &logger));
1221+
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
12241222
let scorer = Mutex::new(test_utils::TestScorer::new());
12251223
let router = test_utils::TestRouter::new(network_graph, &scorer);
12261224
let secp_ctx = Secp256k1::new();
@@ -1259,8 +1257,7 @@ mod tests {
12591257
fn do_find_route_error(on_retry: bool) {
12601258
let outbound_payments = OutboundPayments::new();
12611259
let logger = test_utils::TestLogger::new();
1262-
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
1263-
let network_graph = Arc::new(NetworkGraph::new(genesis_hash, &logger));
1260+
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
12641261
let scorer = Mutex::new(test_utils::TestScorer::new());
12651262
let router = test_utils::TestRouter::new(network_graph, &scorer);
12661263
let secp_ctx = Secp256k1::new();

lightning/src/routing/gossip.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ use bitcoin::hashes::sha256d::Hash as Sha256dHash;
1818
use bitcoin::hashes::Hash;
1919
use bitcoin::hash_types::BlockHash;
2020

21+
use bitcoin::network::constants::Network;
22+
use bitcoin::blockdata::constants::genesis_block;
23+
2124
use crate::ln::features::{ChannelFeatures, NodeFeatures, InitFeatures};
2225
use crate::ln::msgs::{DecodeError, ErrorAction, Init, LightningError, RoutingMessageHandler, NetAddress, MAX_VALUE_MSAT};
2326
use crate::ln::msgs::{ChannelAnnouncement, ChannelUpdate, NodeAnnouncement, GossipTimestampFilter};
@@ -1265,10 +1268,10 @@ impl<L: Deref> PartialEq for NetworkGraph<L> where L::Target: Logger {
12651268

12661269
impl<L: Deref> NetworkGraph<L> where L::Target: Logger {
12671270
/// Creates a new, empty, network graph.
1268-
pub fn new(genesis_hash: BlockHash, logger: L) -> NetworkGraph<L> {
1271+
pub fn new(network: Network, logger: L) -> NetworkGraph<L> {
12691272
Self {
12701273
secp_ctx: Secp256k1::verification_only(),
1271-
genesis_hash,
1274+
genesis_hash: genesis_block(network).header.block_hash(),
12721275
logger,
12731276
channels: RwLock::new(IndexedMap::new()),
12741277
nodes: RwLock::new(IndexedMap::new()),
@@ -1960,9 +1963,8 @@ pub(crate) mod tests {
19601963
use crate::sync::Arc;
19611964

19621965
fn create_network_graph() -> NetworkGraph<Arc<test_utils::TestLogger>> {
1963-
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
19641966
let logger = Arc::new(test_utils::TestLogger::new());
1965-
NetworkGraph::new(genesis_hash, logger)
1967+
NetworkGraph::new(Network::Testnet, logger)
19661968
}
19671969

19681970
fn create_gossip_sync(network_graph: &NetworkGraph<Arc<test_utils::TestLogger>>) -> (
@@ -2137,8 +2139,7 @@ pub(crate) mod tests {
21372139
let valid_announcement = get_signed_channel_announcement(|_| {}, node_1_privkey, node_2_privkey, &secp_ctx);
21382140

21392141
// Test if the UTXO lookups were not supported
2140-
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
2141-
let network_graph = NetworkGraph::new(genesis_hash, &logger);
2142+
let network_graph = NetworkGraph::new(Network::Testnet, &logger);
21422143
let mut gossip_sync = P2PGossipSync::new(&network_graph, None, &logger);
21432144
match gossip_sync.handle_channel_announcement(&valid_announcement) {
21442145
Ok(res) => assert!(res),
@@ -2162,7 +2163,7 @@ pub(crate) mod tests {
21622163
// Test if an associated transaction were not on-chain (or not confirmed).
21632164
let chain_source = test_utils::TestChainSource::new(Network::Testnet);
21642165
*chain_source.utxo_ret.lock().unwrap() = UtxoResult::Sync(Err(UtxoLookupError::UnknownTx));
2165-
let network_graph = NetworkGraph::new(genesis_hash, &logger);
2166+
let network_graph = NetworkGraph::new(Network::Testnet, &logger);
21662167
gossip_sync = P2PGossipSync::new(&network_graph, Some(&chain_source), &logger);
21672168

21682169
let valid_announcement = get_signed_channel_announcement(|unsigned_announcement| {
@@ -2255,8 +2256,7 @@ pub(crate) mod tests {
22552256
let secp_ctx = Secp256k1::new();
22562257
let logger = test_utils::TestLogger::new();
22572258
let chain_source = test_utils::TestChainSource::new(Network::Testnet);
2258-
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
2259-
let network_graph = NetworkGraph::new(genesis_hash, &logger);
2259+
let network_graph = NetworkGraph::new(Network::Testnet, &logger);
22602260
let gossip_sync = P2PGossipSync::new(&network_graph, Some(&chain_source), &logger);
22612261

22622262
let node_1_privkey = &SecretKey::from_slice(&[42; 32]).unwrap();
@@ -2358,8 +2358,7 @@ pub(crate) mod tests {
23582358
#[test]
23592359
fn handling_network_update() {
23602360
let logger = test_utils::TestLogger::new();
2361-
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
2362-
let network_graph = NetworkGraph::new(genesis_hash, &logger);
2361+
let network_graph = NetworkGraph::new(Network::Testnet, &logger);
23632362
let secp_ctx = Secp256k1::new();
23642363

23652364
let node_1_privkey = &SecretKey::from_slice(&[42; 32]).unwrap();
@@ -2424,7 +2423,7 @@ pub(crate) mod tests {
24242423

24252424
{
24262425
// Get a new network graph since we don't want to track removed nodes in this test with "std"
2427-
let network_graph = NetworkGraph::new(genesis_hash, &logger);
2426+
let network_graph = NetworkGraph::new(Network::Testnet, &logger);
24282427

24292428
// Announce a channel to test permanent node failure
24302429
let valid_channel_announcement = get_signed_channel_announcement(|_| {}, node_1_privkey, node_2_privkey, &secp_ctx);
@@ -2459,8 +2458,7 @@ pub(crate) mod tests {
24592458
// Test the removal of channels with `remove_stale_channels_and_tracking`.
24602459
let logger = test_utils::TestLogger::new();
24612460
let chain_source = test_utils::TestChainSource::new(Network::Testnet);
2462-
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
2463-
let network_graph = NetworkGraph::new(genesis_hash, &logger);
2461+
let network_graph = NetworkGraph::new(Network::Testnet, &logger);
24642462
let gossip_sync = P2PGossipSync::new(&network_graph, Some(&chain_source), &logger);
24652463
let secp_ctx = Secp256k1::new();
24662464

0 commit comments

Comments
 (0)