mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-20 13:24:44 +00:00
Improve single-node testnet support and Arc NetworkConfig/ChainSpec (#6396)
* Arc ChainSpec and NetworkConfig * Fix release tests * Fix lint * Merge remote-tracking branch 'origin/unstable' into single-node-testnet
This commit is contained in:
@@ -76,7 +76,7 @@ pub fn build_log(level: slog::Level, enabled: bool) -> slog::Logger {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn build_config(mut boot_nodes: Vec<Enr>) -> NetworkConfig {
|
||||
pub fn build_config(mut boot_nodes: Vec<Enr>) -> Arc<NetworkConfig> {
|
||||
let mut config = NetworkConfig::default();
|
||||
|
||||
// Find unused ports by using the 0 port.
|
||||
@@ -92,7 +92,7 @@ pub fn build_config(mut boot_nodes: Vec<Enr>) -> NetworkConfig {
|
||||
config.enr_address = (Some(std::net::Ipv4Addr::LOCALHOST), None);
|
||||
config.boot_nodes_enr.append(&mut boot_nodes);
|
||||
config.network_dir = path.into_path();
|
||||
config
|
||||
Arc::new(config)
|
||||
}
|
||||
|
||||
pub async fn build_libp2p_instance(
|
||||
@@ -100,7 +100,7 @@ pub async fn build_libp2p_instance(
|
||||
boot_nodes: Vec<Enr>,
|
||||
log: slog::Logger,
|
||||
fork_name: ForkName,
|
||||
spec: &ChainSpec,
|
||||
chain_spec: Arc<ChainSpec>,
|
||||
) -> Libp2pInstance {
|
||||
let config = build_config(boot_nodes);
|
||||
// launch libp2p service
|
||||
@@ -109,10 +109,10 @@ pub async fn build_libp2p_instance(
|
||||
let (shutdown_tx, _) = futures::channel::mpsc::channel(1);
|
||||
let executor = task_executor::TaskExecutor::new(rt, exit, log.clone(), shutdown_tx);
|
||||
let libp2p_context = lighthouse_network::Context {
|
||||
config: &config,
|
||||
config,
|
||||
enr_fork_id: EnrForkId::default(),
|
||||
fork_context: Arc::new(fork_context(fork_name)),
|
||||
chain_spec: spec,
|
||||
chain_spec,
|
||||
libp2p_registry: None,
|
||||
};
|
||||
Libp2pInstance(
|
||||
@@ -142,14 +142,16 @@ pub async fn build_node_pair(
|
||||
rt: Weak<Runtime>,
|
||||
log: &slog::Logger,
|
||||
fork_name: ForkName,
|
||||
spec: &ChainSpec,
|
||||
spec: Arc<ChainSpec>,
|
||||
protocol: Protocol,
|
||||
) -> (Libp2pInstance, Libp2pInstance) {
|
||||
let sender_log = log.new(o!("who" => "sender"));
|
||||
let receiver_log = log.new(o!("who" => "receiver"));
|
||||
|
||||
let mut sender = build_libp2p_instance(rt.clone(), vec![], sender_log, fork_name, spec).await;
|
||||
let mut receiver = build_libp2p_instance(rt, vec![], receiver_log, fork_name, spec).await;
|
||||
let mut sender =
|
||||
build_libp2p_instance(rt.clone(), vec![], sender_log, fork_name, spec.clone()).await;
|
||||
let mut receiver =
|
||||
build_libp2p_instance(rt, vec![], receiver_log, fork_name, spec.clone()).await;
|
||||
|
||||
// let the two nodes set up listeners
|
||||
let sender_fut = async {
|
||||
@@ -218,11 +220,13 @@ pub async fn build_linear(
|
||||
log: slog::Logger,
|
||||
n: usize,
|
||||
fork_name: ForkName,
|
||||
spec: &ChainSpec,
|
||||
spec: Arc<ChainSpec>,
|
||||
) -> Vec<Libp2pInstance> {
|
||||
let mut nodes = Vec::with_capacity(n);
|
||||
for _ in 0..n {
|
||||
nodes.push(build_libp2p_instance(rt.clone(), vec![], log.clone(), fork_name, spec).await);
|
||||
nodes.push(
|
||||
build_libp2p_instance(rt.clone(), vec![], log.clone(), fork_name, spec.clone()).await,
|
||||
);
|
||||
}
|
||||
|
||||
let multiaddrs: Vec<Multiaddr> = nodes
|
||||
|
||||
Reference in New Issue
Block a user