From fb134d08600f6be52718fe5d5eb8bc1a127877ff Mon Sep 17 00:00:00 2001 From: Rodrigo Quelhas Date: Fri, 18 Jul 2025 11:52:50 +0100 Subject: [PATCH 1/3] feat(cumulus): Adds support for parachain clients to collect additional relay state keys into the validation data inherent --- cumulus/client/consensus/aura/src/collator.rs | 1 + .../src/collators/slot_based/block_builder_task.rs | 1 + cumulus/client/parachain-inherent/src/lib.rs | 10 ++++++++++ 3 files changed, 12 insertions(+) diff --git a/cumulus/client/consensus/aura/src/collator.rs b/cumulus/client/consensus/aura/src/collator.rs index f213cf9071f89..e372162f21332 100644 --- a/cumulus/client/consensus/aura/src/collator.rs +++ b/cumulus/client/consensus/aura/src/collator.rs @@ -137,6 +137,7 @@ where relay_parent_descendants .map(RelayParentData::into_inherent_descendant_list) .unwrap_or_default(), + Vec::new(), ) .await; diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs b/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs index 1c9fe5ca04fae..e5b9db0a36baa 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs @@ -368,6 +368,7 @@ where parent_hash, slot_claim.timestamp(), Some(rp_data), + Vec::new(), ) .await { diff --git a/cumulus/client/parachain-inherent/src/lib.rs b/cumulus/client/parachain-inherent/src/lib.rs index e366214b8aaa8..47040d4782b5b 100644 --- a/cumulus/client/parachain-inherent/src/lib.rs +++ b/cumulus/client/parachain-inherent/src/lib.rs @@ -39,6 +39,7 @@ async fn collect_relay_storage_proof( relay_parent: PHash, include_authorities: bool, include_next_authorities: bool, + additional_relay_state_keys: Vec>, ) -> Option { use relay_chain::well_known_keys as relay_well_known_keys; @@ -133,6 +134,13 @@ async fn collect_relay_storage_proof( relevant_keys.push(relay_well_known_keys::NEXT_AUTHORITIES.to_vec()); } + // Add additional relay state keys + let unique_keys: Vec> = additional_relay_state_keys + .into_iter() + .filter(|key| !relevant_keys.contains(key)) + .collect(); + relevant_keys.extend(unique_keys); + relay_chain_interface .prove_read(relay_parent, &relevant_keys) .await @@ -159,6 +167,7 @@ impl ParachainInherentDataProvider { validation_data: &PersistedValidationData, para_id: ParaId, relay_parent_descendants: Vec, + additional_relay_state_keys: Vec>, ) -> Option { // Only include next epoch authorities when the descendants include an epoch digest. // Skip the first entry because this is the relay parent itself. @@ -174,6 +183,7 @@ impl ParachainInherentDataProvider { relay_parent, !relay_parent_descendants.is_empty(), include_next_authorities, + additional_relay_state_keys, ) .await?; From c6a5165f37cccfa92c856e3e483492750f284bdd Mon Sep 17 00:00:00 2001 From: Rodrigo Quelhas Date: Fri, 18 Jul 2025 12:06:02 +0100 Subject: [PATCH 2/3] fix build --- .../aura/src/collators/slot_based/block_builder_task.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs b/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs index e5b9db0a36baa..1c9fe5ca04fae 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs @@ -368,7 +368,6 @@ where parent_hash, slot_claim.timestamp(), Some(rp_data), - Vec::new(), ) .await { From c52063833e3ca7c154da5899caa44ed598b89dbc Mon Sep 17 00:00:00 2001 From: Rodrigo Quelhas Date: Fri, 18 Jul 2025 12:09:23 +0100 Subject: [PATCH 3/3] add prdoc --- prdoc/pr_9262.prdoc | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 prdoc/pr_9262.prdoc diff --git a/prdoc/pr_9262.prdoc b/prdoc/pr_9262.prdoc new file mode 100644 index 0000000000000..d54cb50547976 --- /dev/null +++ b/prdoc/pr_9262.prdoc @@ -0,0 +1,10 @@ +title: 'Adds support for additional relay state keys in parachain validation data inherent' +doc: +- audience: Node Dev + description: |- + Adds the possibility for parachain clients to collect additional relay state keys into the validation data inherent. +crates: +- name: cumulus-client-consensus-aura + bump: patch +- name: cumulus-client-parachain-inherent + bump: major \ No newline at end of file