From e1e6e67d4a40729c195fcce298ed7fb7c5feb386 Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Tue, 18 Nov 2025 21:46:58 -0500 Subject: [PATCH] Ensure desired pruning behavior is held within the node --- substrate/node/src/command.rs | 20 ++++++++++---------- substrate/node/src/service/mod.rs | 18 +++++++++++------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/substrate/node/src/command.rs b/substrate/node/src/command.rs index 5b55be25..d031eeaa 100644 --- a/substrate/node/src/command.rs +++ b/substrate/node/src/command.rs @@ -57,25 +57,25 @@ pub fn run() -> sc_cli::Result<()> { cli.create_runner(cmd)?.sync_run(|config| cmd.run(config.chain_spec, config.network)) } - Some(Subcommand::CheckBlock(cmd)) => cli.create_runner(cmd)?.async_run(|config| { + Some(Subcommand::CheckBlock(cmd)) => cli.create_runner(cmd)?.async_run(|mut config| { let PartialComponents { client, task_manager, import_queue, .. } = - service::new_partial(&config)?.0; + service::new_partial(&mut config)?.0; Ok((cmd.run(client, import_queue), task_manager)) }), - Some(Subcommand::ExportBlocks(cmd)) => cli.create_runner(cmd)?.async_run(|config| { - let PartialComponents { client, task_manager, .. } = service::new_partial(&config)?.0; + Some(Subcommand::ExportBlocks(cmd)) => cli.create_runner(cmd)?.async_run(|mut config| { + let PartialComponents { client, task_manager, .. } = service::new_partial(&mut config)?.0; Ok((cmd.run(client, config.database), task_manager)) }), - Some(Subcommand::ExportState(cmd)) => cli.create_runner(cmd)?.async_run(|config| { - let PartialComponents { client, task_manager, .. } = service::new_partial(&config)?.0; + Some(Subcommand::ExportState(cmd)) => cli.create_runner(cmd)?.async_run(|mut config| { + let PartialComponents { client, task_manager, .. } = service::new_partial(&mut config)?.0; Ok((cmd.run(client, config.chain_spec), task_manager)) }), - Some(Subcommand::ImportBlocks(cmd)) => cli.create_runner(cmd)?.async_run(|config| { + Some(Subcommand::ImportBlocks(cmd)) => cli.create_runner(cmd)?.async_run(|mut config| { let PartialComponents { client, task_manager, import_queue, .. } = - service::new_partial(&config)?.0; + service::new_partial(&mut config)?.0; Ok((cmd.run(client, import_queue), task_manager)) }), @@ -83,9 +83,9 @@ pub fn run() -> sc_cli::Result<()> { cli.create_runner(cmd)?.sync_run(|config| cmd.run(config.database)) } - Some(Subcommand::Revert(cmd)) => cli.create_runner(cmd)?.async_run(|config| { + Some(Subcommand::Revert(cmd)) => cli.create_runner(cmd)?.async_run(|mut config| { let PartialComponents { client, task_manager, backend, .. } = - service::new_partial(&config)?.0; + service::new_partial(&mut config)?.0; let aux_revert = Box::new(|client: Arc, backend, blocks| { sc_consensus_babe::revert(client.clone(), backend, blocks)?; sc_consensus_grandpa::revert(client, blocks)?; diff --git a/substrate/node/src/service/mod.rs b/substrate/node/src/service/mod.rs index d3d8e4b6..38288074 100644 --- a/substrate/node/src/service/mod.rs +++ b/substrate/node/src/service/mod.rs @@ -65,7 +65,7 @@ fn create_inherent_data_providers( #[allow(clippy::type_complexity)] pub fn new_partial( - config: &Configuration, + config: &mut Configuration, ) -> Result< ( PartialComponents< @@ -79,6 +79,15 @@ pub fn new_partial( ), ServiceError, > { + // TODO: Copy events on block import, allow arbitrary pruning of state + config.state_pruning = Some(sc_service::PruningMode::ArchiveCanonical); + config.blocks_pruning = sc_service::BlocksPruning::KeepAll; + + config.network.node_name = "serai".to_string(); + config.network.client_version = "0.1.0".to_string(); + config.network.listen_addresses = + vec!["/ip4/0.0.0.0/tcp/30333".parse().unwrap(), "/ip6/::/tcp/30333".parse().unwrap()]; + let telemetry = config .telemetry_endpoints .clone() @@ -208,12 +217,7 @@ pub fn new_full(mut config: Configuration) -> Result other: (block_import, babe_link, grandpa_link, shared_voter_state, mut telemetry), }, keystore_container, - ) = new_partial(&config)?; - - config.network.node_name = "serai".to_string(); - config.network.client_version = "0.1.0".to_string(); - config.network.listen_addresses = - vec!["/ip4/0.0.0.0/tcp/30333".parse().unwrap(), "/ip6/::/tcp/30333".parse().unwrap()]; + ) = new_partial(&mut config)?; type N = sc_network::service::NetworkWorker::Hash>; let mut net_config = sc_network::config::FullNetworkConfiguration::<_, _, N>::new(