From 2fd493c48e6d56d3b1da1107df9032526acd1d9d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alexandre=20Bald=C3=A9?= <alexandre.balde@parity.io>
Date: Tue, 15 Oct 2024 14:09:13 +0100
Subject: [PATCH 1/2] Refactor `pallet-grandpa` to use `v2` benchmarks

---
 substrate/frame/grandpa/src/benchmarking.rs | 57 +++++++++++----------
 1 file changed, 30 insertions(+), 27 deletions(-)

diff --git a/substrate/frame/grandpa/src/benchmarking.rs b/substrate/frame/grandpa/src/benchmarking.rs
index c89592b3b3590..0a10e58827761 100644
--- a/substrate/frame/grandpa/src/benchmarking.rs
+++ b/substrate/frame/grandpa/src/benchmarking.rs
@@ -18,54 +18,57 @@
 //! Benchmarks for the GRANDPA pallet.
 
 use super::{Pallet as Grandpa, *};
-use frame_benchmarking::v1::benchmarks;
+use frame_benchmarking::v2::*;
 use frame_system::RawOrigin;
 use sp_core::H256;
 
-benchmarks! {
-	check_equivocation_proof {
-		let x in 0 .. 1;
+#[benchmarks]
+mod benchmarks {
+	use super::*;
 
+	#[benchmark]
+	fn check_equivocation_proof(x: Linear<0, 1>) {
 		// NOTE: generated with the test below `test_generate_equivocation_report_blob`.
 		// the output should be deterministic since the keys we use are static.
 		// with the current benchmark setup it is not possible to generate this
 		// programmatically from the benchmark setup.
 		const EQUIVOCATION_PROOF_BLOB: [u8; 257] = [
-			1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 136, 220, 52, 23,
-			213, 5, 142, 196, 180, 80, 62, 12, 18, 234, 26, 10, 137, 190, 32,
-			15, 233, 137, 34, 66, 61, 67, 52, 1, 79, 166, 176, 238, 207, 48,
-			195, 55, 171, 225, 252, 130, 161, 56, 151, 29, 193, 32, 25, 157,
-			249, 39, 80, 193, 214, 96, 167, 147, 25, 130, 45, 42, 64, 208, 182,
-			164, 10, 0, 0, 0, 0, 0, 0, 0, 234, 236, 231, 45, 70, 171, 135, 246,
-			136, 153, 38, 167, 91, 134, 150, 242, 215, 83, 56, 238, 16, 119, 55,
-			170, 32, 69, 255, 248, 164, 20, 57, 50, 122, 115, 135, 96, 80, 203,
-			131, 232, 73, 23, 149, 86, 174, 59, 193, 92, 121, 76, 154, 211, 44,
-			96, 10, 84, 159, 133, 211, 56, 103, 0, 59, 2, 96, 20, 69, 2, 32,
-			179, 16, 184, 108, 76, 215, 64, 195, 78, 143, 73, 177, 139, 20, 144,
-			98, 231, 41, 117, 255, 220, 115, 41, 59, 27, 75, 56, 10, 0, 0, 0, 0,
-			0, 0, 0, 128, 179, 250, 48, 211, 76, 10, 70, 74, 230, 219, 139, 96,
-			78, 88, 112, 33, 170, 44, 184, 59, 200, 155, 143, 128, 40, 222, 179,
-			210, 190, 84, 16, 182, 21, 34, 94, 28, 193, 163, 226, 51, 251, 134,
-			233, 187, 121, 63, 157, 240, 165, 203, 92, 16, 146, 120, 190, 229,
-			251, 129, 29, 45, 32, 29, 6
+			1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 136, 220, 52, 23, 213, 5, 142, 196,
+			180, 80, 62, 12, 18, 234, 26, 10, 137, 190, 32, 15, 233, 137, 34, 66, 61, 67, 52, 1,
+			79, 166, 176, 238, 207, 48, 195, 55, 171, 225, 252, 130, 161, 56, 151, 29, 193, 32, 25,
+			157, 249, 39, 80, 193, 214, 96, 167, 147, 25, 130, 45, 42, 64, 208, 182, 164, 10, 0, 0,
+			0, 0, 0, 0, 0, 234, 236, 231, 45, 70, 171, 135, 246, 136, 153, 38, 167, 91, 134, 150,
+			242, 215, 83, 56, 238, 16, 119, 55, 170, 32, 69, 255, 248, 164, 20, 57, 50, 122, 115,
+			135, 96, 80, 203, 131, 232, 73, 23, 149, 86, 174, 59, 193, 92, 121, 76, 154, 211, 44,
+			96, 10, 84, 159, 133, 211, 56, 103, 0, 59, 2, 96, 20, 69, 2, 32, 179, 16, 184, 108, 76,
+			215, 64, 195, 78, 143, 73, 177, 139, 20, 144, 98, 231, 41, 117, 255, 220, 115, 41, 59,
+			27, 75, 56, 10, 0, 0, 0, 0, 0, 0, 0, 128, 179, 250, 48, 211, 76, 10, 70, 74, 230, 219,
+			139, 96, 78, 88, 112, 33, 170, 44, 184, 59, 200, 155, 143, 128, 40, 222, 179, 210, 190,
+			84, 16, 182, 21, 34, 94, 28, 193, 163, 226, 51, 251, 134, 233, 187, 121, 63, 157, 240,
+			165, 203, 92, 16, 146, 120, 190, 229, 251, 129, 29, 45, 32, 29, 6,
 		];
 
 		let equivocation_proof1: sp_consensus_grandpa::EquivocationProof<H256, u64> =
 			Decode::decode(&mut &EQUIVOCATION_PROOF_BLOB[..]).unwrap();
 
 		let equivocation_proof2 = equivocation_proof1.clone();
-	}: {
-		sp_consensus_grandpa::check_equivocation_proof(equivocation_proof1);
-	} verify {
+
+		#[block]
+		{
+			sp_consensus_grandpa::check_equivocation_proof(equivocation_proof1);
+		}
+
 		assert!(sp_consensus_grandpa::check_equivocation_proof(equivocation_proof2));
 	}
 
-	note_stalled {
+	#[benchmark]
+	fn note_stalled() {
 		let delay = 1000u32.into();
 		let best_finalized_block_number = 1u32.into();
 
-	}: _(RawOrigin::Root, delay, best_finalized_block_number)
-	verify {
+		#[extrinsic_call]
+		_(RawOrigin::Root, delay, best_finalized_block_number);
+
 		assert!(Grandpa::<T>::stalled().is_some());
 	}
 

From 97d142975a320c974574ba45534d3db3278108db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Alexandre=20Bald=C3=A9?= <alexandre.balde@parity.io>
Date: Tue, 15 Oct 2024 14:16:33 +0100
Subject: [PATCH 2/2] Add PRDoc file

---
 prdoc/pr_6073.prdoc | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 prdoc/pr_6073.prdoc

diff --git a/prdoc/pr_6073.prdoc b/prdoc/pr_6073.prdoc
new file mode 100644
index 0000000000000..d83967f9b975f
--- /dev/null
+++ b/prdoc/pr_6073.prdoc
@@ -0,0 +1,13 @@
+# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0
+# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json
+
+title: Refactor `pallet-grandpa` benchmarks to `v2`
+
+doc:
+  - audience: Runtime Dev
+    description: |
+      Update benchmarks in GRANDPA pallet to use the second version of the `frame_benchmarking` runtime benchmarking framework.
+
+crates:
+  - name: pallet-grandpa
+    bump: patch
\ No newline at end of file