Repository: paritytech/polkadot-sdk
Pull request #7801: add poke_deposit extrinsic to pallet-proxy
Author: login: UtkarshBhardwaj007
Labels: name: T1-FRAME
description: This PR/Issue is related to core FRAME, the framework.
name: T2-pallets
description: This PR/Issue is related to a particular pallet.
Created: 2025-03-04T17:57:06Z | Merged: 2025-03-06T20:38:14Z

# Description

* This PR adds a new extrinsic `poke_deposit` to `pallet-proxy`. This extrinsic will be used to re-adjust the deposits made in the pallet to create a proxy or to create an announcement.
* Part of #5591 

## Review Notes

* Added a new extrinsic `poke_deposit` in `pallet-proxy`.
* This extrinsic checks and adjusts the deposits made for either creating a proxy or creating an announcement or both.
* Added a new event `DepositPoked` to be emitted upon a successful call of the extrinsic.
* Although the immediate use of the extrinsic will be to give back some of the deposit after the AH-migration, the extrinsic is written such that it can work if the deposit decreases or increases (both).
* The call to the extrinsic would be `free` if an actual adjustment is made to the deposit for creating a proxy or to the deposit for creating an announcement or both and `paid` otherwise (when no deposit is changed).
* Added a new enum `DepositKind` to differentiate between proxy deposit adjusted and announcement deposit adjusted when emitting events.
* Added tests to test all scenarios.

## TO-DOs
* [ ] Run CI cmd bot to benchmark


Diff:
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs
index 92a30e6b15b9e..35e122d335b30 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs
@@ -16,9 +16,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `ef4134d66388`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -57,11 +57,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_792_000 picoseconds.
-		Weight::from_parts(15_713_712, 0)
+		// Minimum execution time: 14_174_000 picoseconds.
+		Weight::from_parts(15_016_964, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_483
-			.saturating_add(Weight::from_parts(40_867, 0).saturating_mul(p.into()))
+			// Standard Error: 937
+			.saturating_add(Weight::from_parts(29_307, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -76,13 +76,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `488 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 43_689_000 picoseconds.
-		Weight::from_parts(43_788_370, 0)
+		// Minimum execution time: 40_810_000 picoseconds.
+		Weight::from_parts(41_201_093, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 3_353
-			.saturating_add(Weight::from_parts(164_465, 0).saturating_mul(a.into()))
-			// Standard Error: 3_465
-			.saturating_add(Weight::from_parts(66_316, 0).saturating_mul(p.into()))
+			// Standard Error: 3_289
+			.saturating_add(Weight::from_parts(155_098, 0).saturating_mul(a.into()))
+			// Standard Error: 3_398
+			.saturating_add(Weight::from_parts(51_292, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,13 +96,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `403 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 31_017_000 picoseconds.
-		Weight::from_parts(28_951_731, 0)
+		// Minimum execution time: 29_268_000 picoseconds.
+		Weight::from_parts(27_279_884, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 6_151
-			.saturating_add(Weight::from_parts(131_476, 0).saturating_mul(a.into()))
-			// Standard Error: 6_355
-			.saturating_add(Weight::from_parts(115_777, 0).saturating_mul(p.into()))
+			// Standard Error: 5_927
+			.saturating_add(Weight::from_parts(118_689, 0).saturating_mul(a.into()))
+			// Standard Error: 6_124
+			.saturating_add(Weight::from_parts(112_018, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -116,13 +116,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `403 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 30_616_000 picoseconds.
-		Weight::from_parts(29_705_973, 0)
+		// Minimum execution time: 28_980_000 picoseconds.
+		Weight::from_parts(27_242_237, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 6_339
-			.saturating_add(Weight::from_parts(114_768, 0).saturating_mul(a.into()))
-			// Standard Error: 6_550
-			.saturating_add(Weight::from_parts(101_246, 0).saturating_mul(p.into()))
+			// Standard Error: 6_279
+			.saturating_add(Weight::from_parts(121_215, 0).saturating_mul(a.into()))
+			// Standard Error: 6_488
+			.saturating_add(Weight::from_parts(116_319, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -138,13 +138,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `420 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 38_359_000 picoseconds.
-		Weight::from_parts(39_155_898, 0)
+		// Minimum execution time: 37_394_000 picoseconds.
+		Weight::from_parts(37_283_951, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_535
-			.saturating_add(Weight::from_parts(157_477, 0).saturating_mul(a.into()))
-			// Standard Error: 2_619
-			.saturating_add(Weight::from_parts(62_098, 0).saturating_mul(p.into()))
+			// Standard Error: 2_431
+			.saturating_add(Weight::from_parts(150_859, 0).saturating_mul(a.into()))
+			// Standard Error: 2_511
+			.saturating_add(Weight::from_parts(59_816, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -155,11 +155,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_875_000 picoseconds.
-		Weight::from_parts(26_150_111, 0)
+		// Minimum execution time: 24_160_000 picoseconds.
+		Weight::from_parts(24_896_954, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_554
-			.saturating_add(Weight::from_parts(53_104, 0).saturating_mul(p.into()))
+			// Standard Error: 1_200
+			.saturating_add(Weight::from_parts(51_579, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -170,11 +170,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_962_000 picoseconds.
-		Weight::from_parts(26_475_274, 0)
+		// Minimum execution time: 23_957_000 picoseconds.
+		Weight::from_parts(24_867_217, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_919
-			.saturating_add(Weight::from_parts(46_473, 0).saturating_mul(p.into()))
+			// Standard Error: 1_157
+			.saturating_add(Weight::from_parts(46_274, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -185,11 +185,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_487_000 picoseconds.
-		Weight::from_parts(23_347_544, 0)
+		// Minimum execution time: 21_421_000 picoseconds.
+		Weight::from_parts(22_147_331, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_526
-			.saturating_add(Weight::from_parts(37_858, 0).saturating_mul(p.into()))
+			// Standard Error: 1_126
+			.saturating_add(Weight::from_parts(35_078, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -200,11 +200,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `173`
 		//  Estimated: `4706`
-		// Minimum execution time: 26_361_000 picoseconds.
-		Weight::from_parts(27_377_585, 0)
+		// Minimum execution time: 25_009_000 picoseconds.
+		Weight::from_parts(26_272_099, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_612
-			.saturating_add(Weight::from_parts(11_566, 0).saturating_mul(p.into()))
+			// Standard Error: 1_183
+			.saturating_add(Weight::from_parts(13_796, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -215,12 +215,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `198 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 23_371_000 picoseconds.
-		Weight::from_parts(24_589_016, 0)
+		// Minimum execution time: 22_450_000 picoseconds.
+		Weight::from_parts(23_280_004, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 2_453
-			.saturating_add(Weight::from_parts(31_019, 0).saturating_mul(p.into()))
+			// Standard Error: 958
+			.saturating_add(Weight::from_parts(31_635, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `487`
+		//  Estimated: `5698`
+		// Minimum execution time: 47_219_000 picoseconds.
+		Weight::from_parts(48_694_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_proxy.rs
index fcab49a6efe1b..09a94907f0d18 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_proxy.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_proxy.rs
@@ -16,9 +16,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `73b9817d6032`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -57,11 +57,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_571_000 picoseconds.
-		Weight::from_parts(15_152_428, 0)
+		// Minimum execution time: 14_242_000 picoseconds.
+		Weight::from_parts(14_960_578, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_064
-			.saturating_add(Weight::from_parts(38_023, 0).saturating_mul(p.into()))
+			// Standard Error: 1_137
+			.saturating_add(Weight::from_parts(35_649, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -76,13 +76,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `488 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 42_038_000 picoseconds.
-		Weight::from_parts(42_516_107, 0)
+		// Minimum execution time: 41_637_000 picoseconds.
+		Weight::from_parts(41_169_266, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_461
-			.saturating_add(Weight::from_parts(153_613, 0).saturating_mul(a.into()))
-			// Standard Error: 2_543
-			.saturating_add(Weight::from_parts(51_289, 0).saturating_mul(p.into()))
+			// Standard Error: 2_978
+			.saturating_add(Weight::from_parts(172_008, 0).saturating_mul(a.into()))
+			// Standard Error: 3_077
+			.saturating_add(Weight::from_parts(68_505, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,13 +96,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `403 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 26_115_000 picoseconds.
-		Weight::from_parts(26_773_221, 0)
+		// Minimum execution time: 26_087_000 picoseconds.
+		Weight::from_parts(26_927_415, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_941
-			.saturating_add(Weight::from_parts(153_810, 0).saturating_mul(a.into()))
-			// Standard Error: 2_005
-			.saturating_add(Weight::from_parts(32_722, 0).saturating_mul(p.into()))
+			// Standard Error: 1_873
+			.saturating_add(Weight::from_parts(147_445, 0).saturating_mul(a.into()))
+			// Standard Error: 1_935
+			.saturating_add(Weight::from_parts(22_864, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -116,13 +116,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `403 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 26_576_000 picoseconds.
-		Weight::from_parts(26_798_549, 0)
+		// Minimum execution time: 26_473_000 picoseconds.
+		Weight::from_parts(26_682_318, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_759
-			.saturating_add(Weight::from_parts(152_069, 0).saturating_mul(a.into()))
-			// Standard Error: 1_818
-			.saturating_add(Weight::from_parts(30_009, 0).saturating_mul(p.into()))
+			// Standard Error: 1_651
+			.saturating_add(Weight::from_parts(153_500, 0).saturating_mul(a.into()))
+			// Standard Error: 1_706
+			.saturating_add(Weight::from_parts(25_850, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -138,13 +138,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `420 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 38_171_000 picoseconds.
-		Weight::from_parts(38_884_925, 0)
+		// Minimum execution time: 37_884_000 picoseconds.
+		Weight::from_parts(38_379_964, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_992
-			.saturating_add(Weight::from_parts(156_025, 0).saturating_mul(a.into()))
-			// Standard Error: 2_058
-			.saturating_add(Weight::from_parts(47_982, 0).saturating_mul(p.into()))
+			// Standard Error: 1_965
+			.saturating_add(Weight::from_parts(151_226, 0).saturating_mul(a.into()))
+			// Standard Error: 2_030
+			.saturating_add(Weight::from_parts(51_251, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -155,11 +155,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_404_000 picoseconds.
-		Weight::from_parts(25_715_478, 0)
+		// Minimum execution time: 24_317_000 picoseconds.
+		Weight::from_parts(25_244_966, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_502
-			.saturating_add(Weight::from_parts(50_577, 0).saturating_mul(p.into()))
+			// Standard Error: 1_330
+			.saturating_add(Weight::from_parts(50_765, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -170,11 +170,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_375_000 picoseconds.
-		Weight::from_parts(25_794_656, 0)
+		// Minimum execution time: 23_865_000 picoseconds.
+		Weight::from_parts(25_111_800, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_353
-			.saturating_add(Weight::from_parts(41_072, 0).saturating_mul(p.into()))
+			// Standard Error: 1_501
+			.saturating_add(Weight::from_parts(45_002, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -185,11 +185,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 21_992_000 picoseconds.
-		Weight::from_parts(22_942_057, 0)
+		// Minimum execution time: 21_721_000 picoseconds.
+		Weight::from_parts(22_626_669, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_379
-			.saturating_add(Weight::from_parts(34_999, 0).saturating_mul(p.into()))
+			// Standard Error: 1_314
+			.saturating_add(Weight::from_parts(27_650, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -200,11 +200,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `173`
 		//  Estimated: `4706`
-		// Minimum execution time: 25_579_000 picoseconds.
-		Weight::from_parts(27_147_325, 0)
+		// Minimum execution time: 25_709_000 picoseconds.
+		Weight::from_parts(27_143_129, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_506
-			.saturating_add(Weight::from_parts(5_706, 0).saturating_mul(p.into()))
+			// Standard Error: 1_723
+			.saturating_add(Weight::from_parts(8_047, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -215,12 +215,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `198 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_786_000 picoseconds.
-		Weight::from_parts(23_900_996, 0)
+		// Minimum execution time: 22_817_000 picoseconds.
+		Weight::from_parts(23_755_496, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_730
-			.saturating_add(Weight::from_parts(34_801, 0).saturating_mul(p.into()))
+			// Standard Error: 1_854
+			.saturating_add(Weight::from_parts(33_383, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `487`
+		//  Estimated: `5698`
+		// Minimum execution time: 43_822_000 picoseconds.
+		Weight::from_parts(45_419_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_proxy.rs
index 41f985811538d..5b8d1d860e159 100644
--- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_proxy.rs
+++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_proxy.rs
@@ -16,9 +16,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `e0f303704c84`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -57,11 +57,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_894_000 picoseconds.
-		Weight::from_parts(15_589_339, 0)
+		// Minimum execution time: 14_410_000 picoseconds.
+		Weight::from_parts(15_193_802, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_607
-			.saturating_add(Weight::from_parts(36_872, 0).saturating_mul(p.into()))
+			// Standard Error: 997
+			.saturating_add(Weight::from_parts(30_486, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -76,13 +76,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `488 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 42_380_000 picoseconds.
-		Weight::from_parts(43_727_725, 0)
+		// Minimum execution time: 42_192_000 picoseconds.
+		Weight::from_parts(42_093_319, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_764
-			.saturating_add(Weight::from_parts(144_220, 0).saturating_mul(a.into()))
-			// Standard Error: 2_855
-			.saturating_add(Weight::from_parts(39_640, 0).saturating_mul(p.into()))
+			// Standard Error: 2_704
+			.saturating_add(Weight::from_parts(158_968, 0).saturating_mul(a.into()))
+			// Standard Error: 2_794
+			.saturating_add(Weight::from_parts(61_101, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,13 +96,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `403 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 29_880_000 picoseconds.
-		Weight::from_parts(29_370_254, 0)
+		// Minimum execution time: 30_338_000 picoseconds.
+		Weight::from_parts(28_843_418, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 5_994
-			.saturating_add(Weight::from_parts(123_707, 0).saturating_mul(a.into()))
-			// Standard Error: 6_193
-			.saturating_add(Weight::from_parts(89_910, 0).saturating_mul(p.into()))
+			// Standard Error: 6_326
+			.saturating_add(Weight::from_parts(124_307, 0).saturating_mul(a.into()))
+			// Standard Error: 6_536
+			.saturating_add(Weight::from_parts(97_949, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -116,13 +116,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `403 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 30_243_000 picoseconds.
-		Weight::from_parts(29_101_364, 0)
+		// Minimum execution time: 29_682_000 picoseconds.
+		Weight::from_parts(28_524_214, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 6_516
-			.saturating_add(Weight::from_parts(130_667, 0).saturating_mul(a.into()))
-			// Standard Error: 6_733
-			.saturating_add(Weight::from_parts(95_291, 0).saturating_mul(p.into()))
+			// Standard Error: 6_288
+			.saturating_add(Weight::from_parts(127_666, 0).saturating_mul(a.into()))
+			// Standard Error: 6_497
+			.saturating_add(Weight::from_parts(103_590, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -138,13 +138,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `420 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 39_270_000 picoseconds.
-		Weight::from_parts(39_500_844, 0)
+		// Minimum execution time: 37_999_000 picoseconds.
+		Weight::from_parts(37_895_047, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_386
-			.saturating_add(Weight::from_parts(144_415, 0).saturating_mul(a.into()))
-			// Standard Error: 2_465
-			.saturating_add(Weight::from_parts(55_156, 0).saturating_mul(p.into()))
+			// Standard Error: 2_480
+			.saturating_add(Weight::from_parts(165_564, 0).saturating_mul(a.into()))
+			// Standard Error: 2_562
+			.saturating_add(Weight::from_parts(66_557, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -155,11 +155,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 25_633_000 picoseconds.
-		Weight::from_parts(26_804_755, 0)
+		// Minimum execution time: 25_113_000 picoseconds.
+		Weight::from_parts(26_024_377, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_374
-			.saturating_add(Weight::from_parts(49_600, 0).saturating_mul(p.into()))
+			// Standard Error: 1_385
+			.saturating_add(Weight::from_parts(45_544, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -170,11 +170,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 25_746_000 picoseconds.
-		Weight::from_parts(26_719_021, 0)
+		// Minimum execution time: 25_130_000 picoseconds.
+		Weight::from_parts(26_149_710, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_765
-			.saturating_add(Weight::from_parts(47_725, 0).saturating_mul(p.into()))
+			// Standard Error: 1_578
+			.saturating_add(Weight::from_parts(35_938, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -185,11 +185,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `161 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_240_000 picoseconds.
-		Weight::from_parts(23_427_919, 0)
+		// Minimum execution time: 22_244_000 picoseconds.
+		Weight::from_parts(23_072_656, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_532
-			.saturating_add(Weight::from_parts(34_610, 0).saturating_mul(p.into()))
+			// Standard Error: 1_299
+			.saturating_add(Weight::from_parts(34_781, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -200,11 +200,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `173`
 		//  Estimated: `4706`
-		// Minimum execution time: 26_708_000 picoseconds.
-		Weight::from_parts(28_113_891, 0)
+		// Minimum execution time: 26_399_000 picoseconds.
+		Weight::from_parts(27_535_679, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_315
-			.saturating_add(Weight::from_parts(14_632, 0).saturating_mul(p.into()))
+			// Standard Error: 1_302
+			.saturating_add(Weight::from_parts(10_041, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -215,12 +215,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `198 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 23_509_000 picoseconds.
-		Weight::from_parts(24_555_865, 0)
+		// Minimum execution time: 23_128_000 picoseconds.
+		Weight::from_parts(24_202_796, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_385
-			.saturating_add(Weight::from_parts(34_040, 0).saturating_mul(p.into()))
+			// Standard Error: 1_739
+			.saturating_add(Weight::from_parts(27_659, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `487`
+		//  Estimated: `5698`
+		// Minimum execution time: 49_692_000 picoseconds.
+		Weight::from_parts(51_121_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs
index f24dd1c26b0ef..c0fd7f312191d 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs
+++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs
@@ -16,9 +16,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `731f893ee36e`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -57,11 +57,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_371_000 picoseconds.
-		Weight::from_parts(15_478_815, 0)
+		// Minimum execution time: 13_890_000 picoseconds.
+		Weight::from_parts(14_690_357, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 2_762
-			.saturating_add(Weight::from_parts(15_930, 0).saturating_mul(p.into()))
+			// Standard Error: 1_079
+			.saturating_add(Weight::from_parts(35_620, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -76,13 +76,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `454 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 41_173_000 picoseconds.
-		Weight::from_parts(43_432_388, 0)
+		// Minimum execution time: 40_937_000 picoseconds.
+		Weight::from_parts(41_413_996, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 6_381
-			.saturating_add(Weight::from_parts(155_547, 0).saturating_mul(a.into()))
-			// Standard Error: 6_593
-			.saturating_add(Weight::from_parts(55_795, 0).saturating_mul(p.into()))
+			// Standard Error: 2_304
+			.saturating_add(Weight::from_parts(151_878, 0).saturating_mul(a.into()))
+			// Standard Error: 2_380
+			.saturating_add(Weight::from_parts(49_552, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,13 +96,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `369 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 26_224_000 picoseconds.
-		Weight::from_parts(27_902_096, 0)
+		// Minimum execution time: 25_502_000 picoseconds.
+		Weight::from_parts(26_072_967, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 3_611
-			.saturating_add(Weight::from_parts(133_140, 0).saturating_mul(a.into()))
-			// Standard Error: 3_731
-			.saturating_add(Weight::from_parts(14_956, 0).saturating_mul(p.into()))
+			// Standard Error: 1_715
+			.saturating_add(Weight::from_parts(150_032, 0).saturating_mul(a.into()))
+			// Standard Error: 1_772
+			.saturating_add(Weight::from_parts(27_530, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -116,13 +116,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `369 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 25_947_000 picoseconds.
-		Weight::from_parts(27_442_525, 0)
+		// Minimum execution time: 25_381_000 picoseconds.
+		Weight::from_parts(25_796_690, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 3_438
-			.saturating_add(Weight::from_parts(139_129, 0).saturating_mul(a.into()))
-			// Standard Error: 3_553
-			.saturating_add(Weight::from_parts(22_162, 0).saturating_mul(p.into()))
+			// Standard Error: 1_798
+			.saturating_add(Weight::from_parts(155_598, 0).saturating_mul(a.into()))
+			// Standard Error: 1_858
+			.saturating_add(Weight::from_parts(31_967, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -138,13 +138,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `386 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 34_101_000 picoseconds.
-		Weight::from_parts(38_190_660, 0)
+		// Minimum execution time: 33_900_000 picoseconds.
+		Weight::from_parts(37_483_729, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 5_442
-			.saturating_add(Weight::from_parts(173_059, 0).saturating_mul(a.into()))
-			// Standard Error: 5_623
-			.saturating_add(Weight::from_parts(77_492, 0).saturating_mul(p.into()))
+			// Standard Error: 3_283
+			.saturating_add(Weight::from_parts(166_328, 0).saturating_mul(a.into()))
+			// Standard Error: 3_392
+			.saturating_add(Weight::from_parts(48_909, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -155,11 +155,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_706_000 picoseconds.
-		Weight::from_parts(25_739_083, 0)
+		// Minimum execution time: 24_003_000 picoseconds.
+		Weight::from_parts(24_851_370, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 3_446
-			.saturating_add(Weight::from_parts(62_969, 0).saturating_mul(p.into()))
+			// Standard Error: 1_101
+			.saturating_add(Weight::from_parts(51_924, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -170,11 +170,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_440_000 picoseconds.
-		Weight::from_parts(25_773_227, 0)
+		// Minimum execution time: 23_865_000 picoseconds.
+		Weight::from_parts(24_891_590, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 3_212
-			.saturating_add(Weight::from_parts(48_965, 0).saturating_mul(p.into()))
+			// Standard Error: 1_213
+			.saturating_add(Weight::from_parts(51_884, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -185,11 +185,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 21_879_000 picoseconds.
-		Weight::from_parts(23_159_112, 0)
+		// Minimum execution time: 21_419_000 picoseconds.
+		Weight::from_parts(22_277_152, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 2_962
-			.saturating_add(Weight::from_parts(26_919, 0).saturating_mul(p.into()))
+			// Standard Error: 1_286
+			.saturating_add(Weight::from_parts(32_631, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -200,11 +200,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `4706`
-		// Minimum execution time: 25_946_000 picoseconds.
-		Weight::from_parts(27_209_556, 0)
+		// Minimum execution time: 25_635_000 picoseconds.
+		Weight::from_parts(26_592_871, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 5_681
-			.saturating_add(Weight::from_parts(34_902, 0).saturating_mul(p.into()))
+			// Standard Error: 1_635
+			.saturating_add(Weight::from_parts(22_103, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -215,12 +215,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `164 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_900_000 picoseconds.
-		Weight::from_parts(24_094_563, 0)
+		// Minimum execution time: 22_150_000 picoseconds.
+		Weight::from_parts(23_367_544, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 4_924
-			.saturating_add(Weight::from_parts(54_861, 0).saturating_mul(p.into()))
+			// Standard Error: 1_500
+			.saturating_add(Weight::from_parts(24_164, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `453`
+		//  Estimated: `5698`
+		// Minimum execution time: 43_886_000 picoseconds.
+		Weight::from_parts(45_017_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs
index e2bcbf11561ce..b18f24086e5bf 100644
--- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs
+++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs
@@ -16,9 +16,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `050e4dc4313a`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -57,11 +57,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_409_000 picoseconds.
-		Weight::from_parts(15_053_784, 0)
+		// Minimum execution time: 13_924_000 picoseconds.
+		Weight::from_parts(14_790_514, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_072
-			.saturating_add(Weight::from_parts(33_384, 0).saturating_mul(p.into()))
+			// Standard Error: 1_262
+			.saturating_add(Weight::from_parts(24_379, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -76,13 +76,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `454 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 41_927_000 picoseconds.
-		Weight::from_parts(42_129_298, 0)
+		// Minimum execution time: 40_753_000 picoseconds.
+		Weight::from_parts(40_824_200, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_790
-			.saturating_add(Weight::from_parts(147_133, 0).saturating_mul(a.into()))
-			// Standard Error: 2_883
-			.saturating_add(Weight::from_parts(59_473, 0).saturating_mul(p.into()))
+			// Standard Error: 3_314
+			.saturating_add(Weight::from_parts(156_665, 0).saturating_mul(a.into()))
+			// Standard Error: 3_424
+			.saturating_add(Weight::from_parts(63_749, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,13 +96,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `369 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 26_048_000 picoseconds.
-		Weight::from_parts(26_452_311, 0)
+		// Minimum execution time: 25_557_000 picoseconds.
+		Weight::from_parts(26_150_713, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_860
-			.saturating_add(Weight::from_parts(159_533, 0).saturating_mul(a.into()))
-			// Standard Error: 1_922
-			.saturating_add(Weight::from_parts(32_811, 0).saturating_mul(p.into()))
+			// Standard Error: 2_113
+			.saturating_add(Weight::from_parts(152_353, 0).saturating_mul(a.into()))
+			// Standard Error: 2_183
+			.saturating_add(Weight::from_parts(30_158, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -116,13 +116,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `369 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 25_980_000 picoseconds.
-		Weight::from_parts(26_249_773, 0)
+		// Minimum execution time: 25_589_000 picoseconds.
+		Weight::from_parts(25_958_292, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_769
-			.saturating_add(Weight::from_parts(163_533, 0).saturating_mul(a.into()))
-			// Standard Error: 1_828
-			.saturating_add(Weight::from_parts(39_430, 0).saturating_mul(p.into()))
+			// Standard Error: 1_983
+			.saturating_add(Weight::from_parts(156_891, 0).saturating_mul(a.into()))
+			// Standard Error: 2_049
+			.saturating_add(Weight::from_parts(26_327, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -138,13 +138,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `386 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 34_077_000 picoseconds.
-		Weight::from_parts(38_101_638, 0)
+		// Minimum execution time: 33_748_000 picoseconds.
+		Weight::from_parts(36_450_227, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 4_328
-			.saturating_add(Weight::from_parts(162_966, 0).saturating_mul(a.into()))
-			// Standard Error: 4_472
-			.saturating_add(Weight::from_parts(64_885, 0).saturating_mul(p.into()))
+			// Standard Error: 3_480
+			.saturating_add(Weight::from_parts(193_241, 0).saturating_mul(a.into()))
+			// Standard Error: 3_595
+			.saturating_add(Weight::from_parts(73_997, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -155,11 +155,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_748_000 picoseconds.
-		Weight::from_parts(25_945_504, 0)
+		// Minimum execution time: 24_018_000 picoseconds.
+		Weight::from_parts(25_033_148, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_780
-			.saturating_add(Weight::from_parts(45_619, 0).saturating_mul(p.into()))
+			// Standard Error: 1_434
+			.saturating_add(Weight::from_parts(53_810, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -170,11 +170,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_697_000 picoseconds.
-		Weight::from_parts(25_776_786, 0)
+		// Minimum execution time: 23_797_000 picoseconds.
+		Weight::from_parts(24_845_997, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_957
-			.saturating_add(Weight::from_parts(50_166, 0).saturating_mul(p.into()))
+			// Standard Error: 1_369
+			.saturating_add(Weight::from_parts(49_882, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -185,11 +185,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 21_912_000 picoseconds.
-		Weight::from_parts(22_823_643, 0)
+		// Minimum execution time: 21_311_000 picoseconds.
+		Weight::from_parts(22_123_383, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_396
-			.saturating_add(Weight::from_parts(38_644, 0).saturating_mul(p.into()))
+			// Standard Error: 1_276
+			.saturating_add(Weight::from_parts(32_718, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -200,11 +200,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `4706`
-		// Minimum execution time: 25_848_000 picoseconds.
-		Weight::from_parts(27_293_823, 0)
+		// Minimum execution time: 25_458_000 picoseconds.
+		Weight::from_parts(26_445_470, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 2_451
-			.saturating_add(Weight::from_parts(8_546, 0).saturating_mul(p.into()))
+			// Standard Error: 1_375
+			.saturating_add(Weight::from_parts(19_575, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -215,12 +215,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `164 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_938_000 picoseconds.
-		Weight::from_parts(24_023_183, 0)
+		// Minimum execution time: 22_087_000 picoseconds.
+		Weight::from_parts(23_104_943, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_563
-			.saturating_add(Weight::from_parts(37_026, 0).saturating_mul(p.into()))
+			// Standard Error: 1_686
+			.saturating_add(Weight::from_parts(35_333, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `453`
+		//  Estimated: `5698`
+		// Minimum execution time: 43_537_000 picoseconds.
+		Weight::from_parts(44_096_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs
index dd7ac3348d972..c971e1a96379b 100644
--- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs
+++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs
@@ -16,9 +16,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `afc679a858d4`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -57,11 +57,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_117_000 picoseconds.
-		Weight::from_parts(15_104_234, 0)
+		// Minimum execution time: 14_193_000 picoseconds.
+		Weight::from_parts(14_814_540, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 908
-			.saturating_add(Weight::from_parts(30_959, 0).saturating_mul(p.into()))
+			// Standard Error: 1_163
+			.saturating_add(Weight::from_parts(25_891, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -76,13 +76,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `454 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 41_398_000 picoseconds.
-		Weight::from_parts(42_122_465, 0)
+		// Minimum execution time: 40_717_000 picoseconds.
+		Weight::from_parts(41_406_158, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_537
-			.saturating_add(Weight::from_parts(154_452, 0).saturating_mul(a.into()))
-			// Standard Error: 2_622
-			.saturating_add(Weight::from_parts(51_800, 0).saturating_mul(p.into()))
+			// Standard Error: 3_363
+			.saturating_add(Weight::from_parts(149_287, 0).saturating_mul(a.into()))
+			// Standard Error: 3_475
+			.saturating_add(Weight::from_parts(53_202, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,13 +96,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `369 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 25_783_000 picoseconds.
-		Weight::from_parts(26_897_251, 0)
+		// Minimum execution time: 25_574_000 picoseconds.
+		Weight::from_parts(25_943_471, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_851
-			.saturating_add(Weight::from_parts(148_965, 0).saturating_mul(a.into()))
-			// Standard Error: 1_913
-			.saturating_add(Weight::from_parts(25_587, 0).saturating_mul(p.into()))
+			// Standard Error: 1_934
+			.saturating_add(Weight::from_parts(145_112, 0).saturating_mul(a.into()))
+			// Standard Error: 1_998
+			.saturating_add(Weight::from_parts(31_322, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -116,13 +116,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `369 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 26_002_000 picoseconds.
-		Weight::from_parts(26_723_567, 0)
+		// Minimum execution time: 25_649_000 picoseconds.
+		Weight::from_parts(25_882_341, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_593
-			.saturating_add(Weight::from_parts(148_320, 0).saturating_mul(a.into()))
-			// Standard Error: 1_646
-			.saturating_add(Weight::from_parts(32_877, 0).saturating_mul(p.into()))
+			// Standard Error: 2_025
+			.saturating_add(Weight::from_parts(142_994, 0).saturating_mul(a.into()))
+			// Standard Error: 2_092
+			.saturating_add(Weight::from_parts(34_199, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -138,13 +138,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `386 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 36_935_000 picoseconds.
-		Weight::from_parts(38_029_030, 0)
+		// Minimum execution time: 37_082_000 picoseconds.
+		Weight::from_parts(37_886_513, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_711
-			.saturating_add(Weight::from_parts(157_336, 0).saturating_mul(a.into()))
-			// Standard Error: 2_801
-			.saturating_add(Weight::from_parts(55_583, 0).saturating_mul(p.into()))
+			// Standard Error: 3_640
+			.saturating_add(Weight::from_parts(144_359, 0).saturating_mul(a.into()))
+			// Standard Error: 3_760
+			.saturating_add(Weight::from_parts(45_703, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -155,11 +155,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_665_000 picoseconds.
-		Weight::from_parts(25_465_824, 0)
+		// Minimum execution time: 23_957_000 picoseconds.
+		Weight::from_parts(24_927_975, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_219
-			.saturating_add(Weight::from_parts(51_099, 0).saturating_mul(p.into()))
+			// Standard Error: 1_758
+			.saturating_add(Weight::from_parts(43_725, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -170,11 +170,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_496_000 picoseconds.
-		Weight::from_parts(25_411_752, 0)
+		// Minimum execution time: 23_729_000 picoseconds.
+		Weight::from_parts(24_583_323, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_322
-			.saturating_add(Weight::from_parts(52_961, 0).saturating_mul(p.into()))
+			// Standard Error: 1_400
+			.saturating_add(Weight::from_parts(45_509, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -185,11 +185,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 21_726_000 picoseconds.
-		Weight::from_parts(22_667_897, 0)
+		// Minimum execution time: 21_192_000 picoseconds.
+		Weight::from_parts(21_995_477, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_026
-			.saturating_add(Weight::from_parts(30_007, 0).saturating_mul(p.into()))
+			// Standard Error: 1_926
+			.saturating_add(Weight::from_parts(34_525, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -200,11 +200,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `4706`
-		// Minimum execution time: 26_078_000 picoseconds.
-		Weight::from_parts(27_080_372, 0)
+		// Minimum execution time: 25_253_000 picoseconds.
+		Weight::from_parts(26_188_295, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_900
-			.saturating_add(Weight::from_parts(16_097, 0).saturating_mul(p.into()))
+			// Standard Error: 1_659
+			.saturating_add(Weight::from_parts(22_321, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -215,12 +215,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `164 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_856_000 picoseconds.
-		Weight::from_parts(23_811_973, 0)
+		// Minimum execution time: 22_278_000 picoseconds.
+		Weight::from_parts(23_226_079, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_116
-			.saturating_add(Weight::from_parts(29_272, 0).saturating_mul(p.into()))
+			// Standard Error: 1_375
+			.saturating_add(Weight::from_parts(23_729, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `453`
+		//  Estimated: `5698`
+		// Minimum execution time: 43_833_000 picoseconds.
+		Weight::from_parts(44_489_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs
index dde21332f10a9..28868c97fd6fc 100644
--- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs
+++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs
@@ -16,9 +16,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `b9a9df1fcddf`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -57,11 +57,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_211_000 picoseconds.
-		Weight::from_parts(15_083_006, 0)
+		// Minimum execution time: 14_292_000 picoseconds.
+		Weight::from_parts(15_140_165, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_072
-			.saturating_add(Weight::from_parts(34_377, 0).saturating_mul(p.into()))
+			// Standard Error: 1_184
+			.saturating_add(Weight::from_parts(37_715, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -76,13 +76,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `454 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 42_275_000 picoseconds.
-		Weight::from_parts(42_416_930, 0)
+		// Minimum execution time: 41_703_000 picoseconds.
+		Weight::from_parts(42_146_045, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_511
-			.saturating_add(Weight::from_parts(154_326, 0).saturating_mul(a.into()))
-			// Standard Error: 2_594
-			.saturating_add(Weight::from_parts(55_214, 0).saturating_mul(p.into()))
+			// Standard Error: 3_906
+			.saturating_add(Weight::from_parts(152_856, 0).saturating_mul(a.into()))
+			// Standard Error: 4_036
+			.saturating_add(Weight::from_parts(63_199, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -96,13 +96,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `369 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 26_124_000 picoseconds.
-		Weight::from_parts(26_832_182, 0)
+		// Minimum execution time: 25_888_000 picoseconds.
+		Weight::from_parts(26_963_577, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_619
-			.saturating_add(Weight::from_parts(152_291, 0).saturating_mul(a.into()))
-			// Standard Error: 1_673
-			.saturating_add(Weight::from_parts(27_294, 0).saturating_mul(p.into()))
+			// Standard Error: 2_452
+			.saturating_add(Weight::from_parts(142_225, 0).saturating_mul(a.into()))
+			// Standard Error: 2_534
+			.saturating_add(Weight::from_parts(15_645, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -116,13 +116,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `369 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 26_147_000 picoseconds.
-		Weight::from_parts(27_079_986, 0)
+		// Minimum execution time: 25_867_000 picoseconds.
+		Weight::from_parts(25_977_737, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_776
-			.saturating_add(Weight::from_parts(146_088, 0).saturating_mul(a.into()))
-			// Standard Error: 1_835
-			.saturating_add(Weight::from_parts(25_996, 0).saturating_mul(p.into()))
+			// Standard Error: 1_855
+			.saturating_add(Weight::from_parts(157_924, 0).saturating_mul(a.into()))
+			// Standard Error: 1_916
+			.saturating_add(Weight::from_parts(41_678, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -138,13 +138,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `386 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 37_992_000 picoseconds.
-		Weight::from_parts(38_894_678, 0)
+		// Minimum execution time: 37_343_000 picoseconds.
+		Weight::from_parts(37_754_114, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_213
-			.saturating_add(Weight::from_parts(151_123, 0).saturating_mul(a.into()))
-			// Standard Error: 2_287
-			.saturating_add(Weight::from_parts(53_141, 0).saturating_mul(p.into()))
+			// Standard Error: 2_112
+			.saturating_add(Weight::from_parts(154_206, 0).saturating_mul(a.into()))
+			// Standard Error: 2_183
+			.saturating_add(Weight::from_parts(65_528, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -155,11 +155,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_993_000 picoseconds.
-		Weight::from_parts(25_785_521, 0)
+		// Minimum execution time: 24_058_000 picoseconds.
+		Weight::from_parts(25_043_055, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_123
-			.saturating_add(Weight::from_parts(48_508, 0).saturating_mul(p.into()))
+			// Standard Error: 1_548
+			.saturating_add(Weight::from_parts(59_084, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -170,11 +170,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_674_000 picoseconds.
-		Weight::from_parts(25_625_536, 0)
+		// Minimum execution time: 24_027_000 picoseconds.
+		Weight::from_parts(25_013_643, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_365
-			.saturating_add(Weight::from_parts(48_773, 0).saturating_mul(p.into()))
+			// Standard Error: 1_194
+			.saturating_add(Weight::from_parts(52_428, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -185,11 +185,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `127 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_076_000 picoseconds.
-		Weight::from_parts(22_971_690, 0)
+		// Minimum execution time: 21_487_000 picoseconds.
+		Weight::from_parts(22_407_585, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_069
-			.saturating_add(Weight::from_parts(33_803, 0).saturating_mul(p.into()))
+			// Standard Error: 1_366
+			.saturating_add(Weight::from_parts(35_206, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -200,11 +200,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `139`
 		//  Estimated: `4706`
-		// Minimum execution time: 26_289_000 picoseconds.
-		Weight::from_parts(27_283_065, 0)
+		// Minimum execution time: 25_488_000 picoseconds.
+		Weight::from_parts(26_421_963, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_211
-			.saturating_add(Weight::from_parts(15_881, 0).saturating_mul(p.into()))
+			// Standard Error: 1_595
+			.saturating_add(Weight::from_parts(23_770, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -215,12 +215,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `164 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_961_000 picoseconds.
-		Weight::from_parts(24_005_115, 0)
+		// Minimum execution time: 22_402_000 picoseconds.
+		Weight::from_parts(23_547_112, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_176
-			.saturating_add(Weight::from_parts(29_506, 0).saturating_mul(p.into()))
+			// Standard Error: 2_281
+			.saturating_add(Weight::from_parts(33_996, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `453`
+		//  Estimated: `5698`
+		// Minimum execution time: 44_682_000 picoseconds.
+		Weight::from_parts(45_638_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/polkadot/runtime/rococo/src/weights/pallet_proxy.rs b/polkadot/runtime/rococo/src/weights/pallet_proxy.rs
index e29329b4a4e2d..e41173ebe3362 100644
--- a/polkadot/runtime/rococo/src/weights/pallet_proxy.rs
+++ b/polkadot/runtime/rococo/src/weights/pallet_proxy.rs
@@ -17,9 +17,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `d3a9aad6f7a3`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -58,11 +58,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `89 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_003_000 picoseconds.
-		Weight::from_parts(14_850_553, 0)
+		// Minimum execution time: 13_806_000 picoseconds.
+		Weight::from_parts(14_554_351, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_115
-			.saturating_add(Weight::from_parts(29_879, 0).saturating_mul(p.into()))
+			// Standard Error: 1_532
+			.saturating_add(Weight::from_parts(34_377, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -77,13 +77,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `416 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 38_342_000 picoseconds.
-		Weight::from_parts(39_628_705, 0)
+		// Minimum execution time: 37_228_000 picoseconds.
+		Weight::from_parts(38_313_529, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 3_133
-			.saturating_add(Weight::from_parts(142_200, 0).saturating_mul(a.into()))
-			// Standard Error: 3_237
-			.saturating_add(Weight::from_parts(32_673, 0).saturating_mul(p.into()))
+			// Standard Error: 2_504
+			.saturating_add(Weight::from_parts(152_320, 0).saturating_mul(a.into()))
+			// Standard Error: 2_587
+			.saturating_add(Weight::from_parts(31_543, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -97,13 +97,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `331 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 26_033_000 picoseconds.
-		Weight::from_parts(27_251_440, 0)
+		// Minimum execution time: 25_166_000 picoseconds.
+		Weight::from_parts(26_418_176, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 1_815
-			.saturating_add(Weight::from_parts(147_524, 0).saturating_mul(a.into()))
-			// Standard Error: 1_876
-			.saturating_add(Weight::from_parts(7_453, 0).saturating_mul(p.into()))
+			// Standard Error: 2_246
+			.saturating_add(Weight::from_parts(153_564, 0).saturating_mul(a.into()))
+			// Standard Error: 2_320
+			.saturating_add(Weight::from_parts(4_962, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -117,13 +117,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `331 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 25_640_000 picoseconds.
-		Weight::from_parts(26_979_431, 0)
+		// Minimum execution time: 25_037_000 picoseconds.
+		Weight::from_parts(26_468_002, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_485
-			.saturating_add(Weight::from_parts(151_580, 0).saturating_mul(a.into()))
-			// Standard Error: 2_567
-			.saturating_add(Weight::from_parts(15_525, 0).saturating_mul(p.into()))
+			// Standard Error: 2_411
+			.saturating_add(Weight::from_parts(143_670, 0).saturating_mul(a.into()))
+			// Standard Error: 2_491
+			.saturating_add(Weight::from_parts(6_595, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -139,13 +139,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `348 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 34_615_000 picoseconds.
-		Weight::from_parts(35_256_571, 0)
+		// Minimum execution time: 33_282_000 picoseconds.
+		Weight::from_parts(34_525_175, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_509
-			.saturating_add(Weight::from_parts(161_986, 0).saturating_mul(a.into()))
-			// Standard Error: 2_593
-			.saturating_add(Weight::from_parts(37_310, 0).saturating_mul(p.into()))
+			// Standard Error: 2_568
+			.saturating_add(Weight::from_parts(153_824, 0).saturating_mul(a.into()))
+			// Standard Error: 2_654
+			.saturating_add(Weight::from_parts(32_899, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -156,11 +156,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `89 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_334_000 picoseconds.
-		Weight::from_parts(25_719_163, 0)
+		// Minimum execution time: 23_623_000 picoseconds.
+		Weight::from_parts(24_796_223, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_993
-			.saturating_add(Weight::from_parts(51_224, 0).saturating_mul(p.into()))
+			// Standard Error: 1_528
+			.saturating_add(Weight::from_parts(49_181, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -171,11 +171,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `89 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 24_600_000 picoseconds.
-		Weight::from_parts(25_587_987, 0)
+		// Minimum execution time: 23_507_000 picoseconds.
+		Weight::from_parts(24_816_973, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_434
-			.saturating_add(Weight::from_parts(52_906, 0).saturating_mul(p.into()))
+			// Standard Error: 1_511
+			.saturating_add(Weight::from_parts(38_405, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -186,11 +186,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `89 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 21_716_000 picoseconds.
-		Weight::from_parts(22_675_217, 0)
+		// Minimum execution time: 20_730_000 picoseconds.
+		Weight::from_parts(22_017_715, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_305
-			.saturating_add(Weight::from_parts(30_903, 0).saturating_mul(p.into()))
+			// Standard Error: 1_790
+			.saturating_add(Weight::from_parts(23_582, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -201,11 +201,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `101`
 		//  Estimated: `4706`
-		// Minimum execution time: 26_034_000 picoseconds.
-		Weight::from_parts(27_334_391, 0)
+		// Minimum execution time: 25_202_000 picoseconds.
+		Weight::from_parts(26_459_004, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_440
-			.saturating_add(Weight::from_parts(6_151, 0).saturating_mul(p.into()))
+			// Standard Error: 1_850
+			.saturating_add(Weight::from_parts(3_579, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -216,12 +216,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `126 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 22_474_000 picoseconds.
-		Weight::from_parts(23_584_470, 0)
+		// Minimum execution time: 21_449_000 picoseconds.
+		Weight::from_parts(22_621_565, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_258
-			.saturating_add(Weight::from_parts(39_748, 0).saturating_mul(p.into()))
+			// Standard Error: 2_057
+			.saturating_add(Weight::from_parts(41_291, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `414`
+		//  Estimated: `5698`
+		// Minimum execution time: 44_155_000 picoseconds.
+		Weight::from_parts(45_402_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/polkadot/runtime/westend/src/weights/pallet_proxy.rs b/polkadot/runtime/westend/src/weights/pallet_proxy.rs
index 4f1ac72a482f2..af628d9bd66d3 100644
--- a/polkadot/runtime/westend/src/weights/pallet_proxy.rs
+++ b/polkadot/runtime/westend/src/weights/pallet_proxy.rs
@@ -17,9 +17,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-22, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `3a2e9ae8a8f5`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024
 
 // Executed Command:
@@ -58,11 +58,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `89 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 17_743_000 picoseconds.
-		Weight::from_parts(18_436_629, 0)
+		// Minimum execution time: 17_270_000 picoseconds.
+		Weight::from_parts(18_200_528, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 2_056
-			.saturating_add(Weight::from_parts(43_916, 0).saturating_mul(p.into()))
+			// Standard Error: 1_391
+			.saturating_add(Weight::from_parts(26_966, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -77,13 +77,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `416 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 41_728_000 picoseconds.
-		Weight::from_parts(42_605_142, 0)
+		// Minimum execution time: 41_652_000 picoseconds.
+		Weight::from_parts(42_325_742, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_675
-			.saturating_add(Weight::from_parts(173_815, 0).saturating_mul(a.into()))
-			// Standard Error: 2_764
-			.saturating_add(Weight::from_parts(29_849, 0).saturating_mul(p.into()))
+			// Standard Error: 2_581
+			.saturating_add(Weight::from_parts(153_418, 0).saturating_mul(a.into()))
+			// Standard Error: 2_667
+			.saturating_add(Weight::from_parts(32_644, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -97,13 +97,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `331 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 29_396_000 picoseconds.
-		Weight::from_parts(31_069_465, 0)
+		// Minimum execution time: 29_407_000 picoseconds.
+		Weight::from_parts(30_301_847, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_248
-			.saturating_add(Weight::from_parts(134_192, 0).saturating_mul(a.into()))
-			// Standard Error: 2_322
-			.saturating_add(Weight::from_parts(7_479, 0).saturating_mul(p.into()))
+			// Standard Error: 1_850
+			.saturating_add(Weight::from_parts(146_134, 0).saturating_mul(a.into()))
+			// Standard Error: 1_912
+			.saturating_add(Weight::from_parts(11_996, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -117,13 +117,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `331 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 28_816_000 picoseconds.
-		Weight::from_parts(30_383_460, 0)
+		// Minimum execution time: 28_928_000 picoseconds.
+		Weight::from_parts(30_241_050, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
-			// Standard Error: 2_128
-			.saturating_add(Weight::from_parts(157_895, 0).saturating_mul(a.into()))
-			// Standard Error: 2_198
-			.saturating_add(Weight::from_parts(10_169, 0).saturating_mul(p.into()))
+			// Standard Error: 2_174
+			.saturating_add(Weight::from_parts(148_745, 0).saturating_mul(a.into()))
+			// Standard Error: 2_247
+			.saturating_add(Weight::from_parts(9_802, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -139,13 +139,13 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `348 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 37_628_000 picoseconds.
-		Weight::from_parts(39_513_043, 0)
+		// Minimum execution time: 37_416_000 picoseconds.
+		Weight::from_parts(38_427_320, 0)
 			.saturating_add(Weight::from_parts(0, 5698))
+			// Standard Error: 2_372
+			.saturating_add(Weight::from_parts(150_795, 0).saturating_mul(a.into()))
 			// Standard Error: 2_451
-			.saturating_add(Weight::from_parts(149_654, 0).saturating_mul(a.into()))
-			// Standard Error: 2_533
-			.saturating_add(Weight::from_parts(17_215, 0).saturating_mul(p.into()))
+			.saturating_add(Weight::from_parts(33_626, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3))
 			.saturating_add(T::DbWeight::get().writes(2))
 	}
@@ -156,11 +156,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `89 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 28_284_000 picoseconds.
-		Weight::from_parts(29_549_215, 0)
+		// Minimum execution time: 27_489_000 picoseconds.
+		Weight::from_parts(28_509_919, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 4_083
-			.saturating_add(Weight::from_parts(61_848, 0).saturating_mul(p.into()))
+			// Standard Error: 1_592
+			.saturating_add(Weight::from_parts(60_615, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -171,11 +171,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `89 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 28_231_000 picoseconds.
-		Weight::from_parts(29_589_594, 0)
+		// Minimum execution time: 27_232_000 picoseconds.
+		Weight::from_parts(28_580_565, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_950
-			.saturating_add(Weight::from_parts(54_339, 0).saturating_mul(p.into()))
+			// Standard Error: 1_717
+			.saturating_add(Weight::from_parts(57_719, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -186,11 +186,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `89 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 25_116_000 picoseconds.
-		Weight::from_parts(26_314_944, 0)
+		// Minimum execution time: 24_690_000 picoseconds.
+		Weight::from_parts(25_944_249, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_968
-			.saturating_add(Weight::from_parts(39_294, 0).saturating_mul(p.into()))
+			// Standard Error: 2_748
+			.saturating_add(Weight::from_parts(30_286, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -201,11 +201,11 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `101`
 		//  Estimated: `4706`
-		// Minimum execution time: 29_742_000 picoseconds.
-		Weight::from_parts(31_063_206, 0)
+		// Minimum execution time: 28_721_000 picoseconds.
+		Weight::from_parts(30_396_418, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 2_575
-			.saturating_add(Weight::from_parts(22_471, 0).saturating_mul(p.into()))
+			// Standard Error: 2_107
+			.saturating_add(Weight::from_parts(1_013, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
@@ -216,12 +216,28 @@ impl<T: frame_system::Config> pallet_proxy::WeightInfo for WeightInfo<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `126 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 26_141_000 picoseconds.
-		Weight::from_parts(27_309_074, 0)
+		// Minimum execution time: 25_591_000 picoseconds.
+		Weight::from_parts(27_026_043, 0)
 			.saturating_add(Weight::from_parts(0, 4706))
-			// Standard Error: 1_808
-			.saturating_add(Weight::from_parts(37_564, 0).saturating_mul(p.into()))
+			// Standard Error: 1_719
+			.saturating_add(Weight::from_parts(24_549, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1))
 			.saturating_add(T::DbWeight::get().writes(1))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `452`
+		//  Estimated: `5698`
+		// Minimum execution time: 49_684_000 picoseconds.
+		Weight::from_parts(50_366_000, 0)
+			.saturating_add(Weight::from_parts(0, 5698))
+			.saturating_add(T::DbWeight::get().reads(3))
+			.saturating_add(T::DbWeight::get().writes(3))
+	}
 }
diff --git a/prdoc/pr_7801.prdoc b/prdoc/pr_7801.prdoc
new file mode 100644
index 0000000000000..3d3dde3b02f44
--- /dev/null
+++ b/prdoc/pr_7801.prdoc
@@ -0,0 +1,25 @@
+title: add poke_deposit extrinsic to pallet-proxy
+doc:
+- audience: Runtime Dev
+  description: This PR adds a new extrinsic `poke_deposit` to `pallet-proxy`. This extrinsic will be used to re-adjust the deposits made in the pallet to create a proxy or to create an announcement.
+crates:
+- name: asset-hub-rococo-runtime
+  bump: major
+- name: asset-hub-westend-runtime
+  bump: major
+- name: collectives-westend-runtime
+  bump: major
+- name: coretime-rococo-runtime
+  bump: major
+- name: coretime-westend-runtime
+  bump: major
+- name: people-rococo-runtime
+  bump: major
+- name: people-westend-runtime
+  bump: major
+- name: rococo-runtime
+  bump: major
+- name: westend-runtime
+  bump: major
+- name: pallet-proxy
+  bump: major
diff --git a/substrate/frame/proxy/src/benchmarking.rs b/substrate/frame/proxy/src/benchmarking.rs
index b72f53af8e722..aa3621c7c9595 100644
--- a/substrate/frame/proxy/src/benchmarking.rs
+++ b/substrate/frame/proxy/src/benchmarking.rs
@@ -32,6 +32,10 @@ fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
 	frame_system::Pallet::<T>::assert_last_event(generic_event.into());
 }
 
+fn assert_has_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
+	frame_system::Pallet::<T>::assert_has_event(generic_event.into());
+}
+
 fn add_proxies<T: Config>(n: u32, maybe_who: Option<T::AccountId>) -> Result<(), &'static str> {
 	let caller = maybe_who.unwrap_or_else(whitelisted_caller);
 	T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value() / 2u32.into());
@@ -341,5 +345,117 @@ mod benchmarks {
 		Ok(())
 	}
 
+	#[benchmark]
+	fn poke_deposit() -> Result<(), BenchmarkError> {
+		// Create accounts using the same pattern as other benchmarks
+		let account_1: T::AccountId = account("account", 1, SEED);
+		let account_2: T::AccountId = account("account", 2, SEED);
+		let account_3: T::AccountId = account("account", 3, SEED);
+
+		// Fund accounts
+		T::Currency::make_free_balance_be(&account_1, BalanceOf::<T>::max_value() / 100u8.into());
+		T::Currency::make_free_balance_be(&account_2, BalanceOf::<T>::max_value() / 100u8.into());
+		T::Currency::make_free_balance_be(&account_3, BalanceOf::<T>::max_value() / 100u8.into());
+
+		// Add proxy relationships
+		Proxy::<T>::add_proxy(
+			RawOrigin::Signed(account_1.clone()).into(),
+			T::Lookup::unlookup(account_2.clone()),
+			T::ProxyType::default(),
+			BlockNumberFor::<T>::zero(),
+		)?;
+		Proxy::<T>::add_proxy(
+			RawOrigin::Signed(account_2.clone()).into(),
+			T::Lookup::unlookup(account_3.clone()),
+			T::ProxyType::default(),
+			BlockNumberFor::<T>::zero(),
+		)?;
+		let (proxies, initial_proxy_deposit) = Proxies::<T>::get(&account_2);
+		assert!(!initial_proxy_deposit.is_zero());
+		assert_eq!(initial_proxy_deposit, T::Currency::reserved_balance(&account_2));
+
+		// Create announcement
+		Proxy::<T>::announce(
+			RawOrigin::Signed(account_2.clone()).into(),
+			T::Lookup::unlookup(account_1.clone()),
+			T::CallHasher::hash_of(&("add_announcement", 1)),
+		)?;
+		let (announcements, initial_announcement_deposit) = Announcements::<T>::get(&account_2);
+		assert!(!initial_announcement_deposit.is_zero());
+		assert_eq!(
+			initial_announcement_deposit.saturating_add(initial_proxy_deposit),
+			T::Currency::reserved_balance(&account_2)
+		);
+
+		// Artificially inflate deposits and reserve the extra amount
+		let extra_proxy_deposit = initial_proxy_deposit; // Double the deposit
+		let extra_announcement_deposit = initial_announcement_deposit; // Double the deposit
+		let total = extra_proxy_deposit.saturating_add(extra_announcement_deposit);
+
+		T::Currency::reserve(&account_2, total)?;
+
+		let initial_reserved = T::Currency::reserved_balance(&account_2);
+		assert_eq!(initial_reserved, total.saturating_add(total)); // Double
+
+		// Update storage with increased deposits
+		Proxies::<T>::insert(
+			&account_2,
+			(proxies, initial_proxy_deposit.saturating_add(extra_proxy_deposit)),
+		);
+		Announcements::<T>::insert(
+			&account_2,
+			(
+				announcements,
+				initial_announcement_deposit.saturating_add(extra_announcement_deposit),
+			),
+		);
+
+		// Verify artificial state
+		let (_, inflated_proxy_deposit) = Proxies::<T>::get(&account_2);
+		let (_, inflated_announcement_deposit) = Announcements::<T>::get(&account_2);
+		assert_eq!(
+			inflated_proxy_deposit,
+			initial_proxy_deposit.saturating_add(extra_proxy_deposit)
+		);
+		assert_eq!(
+			inflated_announcement_deposit,
+			initial_announcement_deposit.saturating_add(extra_announcement_deposit)
+		);
+
+		#[extrinsic_call]
+		_(RawOrigin::Signed(account_2.clone()));
+
+		// Verify results
+		let (_, final_proxy_deposit) = Proxies::<T>::get(&account_2);
+		let (_, final_announcement_deposit) = Announcements::<T>::get(&account_2);
+		assert_eq!(final_proxy_deposit, initial_proxy_deposit);
+		assert_eq!(final_announcement_deposit, initial_announcement_deposit);
+
+		let final_reserved = T::Currency::reserved_balance(&account_2);
+		assert_eq!(final_reserved, initial_reserved.saturating_sub(total));
+
+		// Verify events
+		assert_has_event::<T>(
+			Event::DepositPoked {
+				who: account_2.clone(),
+				kind: DepositKind::Proxies,
+				old_deposit: inflated_proxy_deposit,
+				new_deposit: final_proxy_deposit,
+			}
+			.into(),
+		);
+		assert_last_event::<T>(
+			Event::DepositPoked {
+				who: account_2,
+				kind: DepositKind::Announcements,
+				old_deposit: inflated_announcement_deposit,
+				new_deposit: final_announcement_deposit,
+			}
+			.into(),
+		);
+
+		Ok(())
+	}
+
 	impl_benchmark_test_suite!(Proxy, crate::tests::new_test_ext(), crate::tests::Test);
 }
diff --git a/substrate/frame/proxy/src/lib.rs b/substrate/frame/proxy/src/lib.rs
index 594d1721cd41b..e583980760231 100644
--- a/substrate/frame/proxy/src/lib.rs
+++ b/substrate/frame/proxy/src/lib.rs
@@ -88,6 +88,26 @@ pub struct Announcement<AccountId, Hash, BlockNumber> {
 	height: BlockNumber,
 }
 
+/// The type of deposit
+#[derive(
+	Encode,
+	Decode,
+	Clone,
+	Copy,
+	Eq,
+	PartialEq,
+	RuntimeDebug,
+	MaxEncodedLen,
+	TypeInfo,
+	DecodeWithMemTracking,
+)]
+pub enum DepositKind {
+	/// Proxy registration deposit
+	Proxies,
+	/// Announcement deposit
+	Announcements,
+}
+
 #[frame::pallet]
 pub mod pallet {
 	use super::*;
@@ -529,6 +549,105 @@ pub mod pallet {
 
 			Ok(())
 		}
+
+		/// Poke / Adjust deposits made for proxies and announcements based on current values.
+		/// This can be used by accounts to possibly lower their locked amount.
+		///
+		/// The dispatch origin for this call must be _Signed_.
+		///
+		/// The transaction fee is waived if the deposit amount has changed.
+		///
+		/// Emits `DepositPoked` if successful.
+		#[pallet::call_index(10)]
+		#[pallet::weight(T::WeightInfo::poke_deposit())]
+		pub fn poke_deposit(origin: OriginFor<T>) -> DispatchResultWithPostInfo {
+			let who = ensure_signed(origin)?;
+			let mut deposit_updated = false;
+
+			// Check and update proxy deposits
+			Proxies::<T>::try_mutate_exists(&who, |maybe_proxies| -> DispatchResult {
+				let (proxies, old_deposit) = maybe_proxies.take().unwrap_or_default();
+				let maybe_new_deposit = Self::rejig_deposit(
+					&who,
+					old_deposit,
+					T::ProxyDepositBase::get(),
+					T::ProxyDepositFactor::get(),
+					proxies.len(),
+				)?;
+
+				match maybe_new_deposit {
+					Some(new_deposit) if new_deposit != old_deposit => {
+						*maybe_proxies = Some((proxies, new_deposit));
+						deposit_updated = true;
+						Self::deposit_event(Event::DepositPoked {
+							who: who.clone(),
+							kind: DepositKind::Proxies,
+							old_deposit,
+							new_deposit,
+						});
+					},
+					Some(_) => {
+						*maybe_proxies = Some((proxies, old_deposit));
+					},
+					None => {
+						*maybe_proxies = None;
+						if !old_deposit.is_zero() {
+							deposit_updated = true;
+							Self::deposit_event(Event::DepositPoked {
+								who: who.clone(),
+								kind: DepositKind::Proxies,
+								old_deposit,
+								new_deposit: BalanceOf::<T>::zero(),
+							});
+						}
+					},
+				}
+				Ok(())
+			})?;
+
+			// Check and update announcement deposits
+			Announcements::<T>::try_mutate_exists(&who, |maybe_announcements| -> DispatchResult {
+				let (announcements, old_deposit) = maybe_announcements.take().unwrap_or_default();
+				let maybe_new_deposit = Self::rejig_deposit(
+					&who,
+					old_deposit,
+					T::AnnouncementDepositBase::get(),
+					T::AnnouncementDepositFactor::get(),
+					announcements.len(),
+				)?;
+
+				match maybe_new_deposit {
+					Some(new_deposit) if new_deposit != old_deposit => {
+						*maybe_announcements = Some((announcements, new_deposit));
+						deposit_updated = true;
+						Self::deposit_event(Event::DepositPoked {
+							who: who.clone(),
+							kind: DepositKind::Announcements,
+							old_deposit,
+							new_deposit,
+						});
+					},
+					Some(_) => {
+						*maybe_announcements = Some((announcements, old_deposit));
+					},
+					None => {
+						*maybe_announcements = None;
+						if !old_deposit.is_zero() {
+							deposit_updated = true;
+							Self::deposit_event(Event::DepositPoked {
+								who: who.clone(),
+								kind: DepositKind::Announcements,
+								old_deposit,
+								new_deposit: BalanceOf::<T>::zero(),
+							});
+						}
+					},
+				}
+				Ok(())
+			})?;
+
+			Ok(if deposit_updated { Pays::No.into() } else { Pays::Yes.into() })
+		}
 	}
 
 	#[pallet::event]
@@ -560,6 +679,13 @@ pub mod pallet {
 			proxy_type: T::ProxyType,
 			delay: BlockNumberFor<T>,
 		},
+		/// A deposit stored for proxies or announcements was poked / updated.
+		DepositPoked {
+			who: T::AccountId,
+			kind: DepositKind,
+			old_deposit: BalanceOf<T>,
+			new_deposit: BalanceOf<T>,
+		},
 	}
 
 	#[pallet::error]
@@ -779,9 +905,16 @@ impl<T: Config> Pallet<T> {
 		let new_deposit =
 			if len == 0 { BalanceOf::<T>::zero() } else { base + factor * (len as u32).into() };
 		if new_deposit > old_deposit {
-			T::Currency::reserve(who, new_deposit - old_deposit)?;
+			T::Currency::reserve(who, new_deposit.saturating_sub(old_deposit))?;
 		} else if new_deposit < old_deposit {
-			T::Currency::unreserve(who, old_deposit - new_deposit);
+			let excess = old_deposit.saturating_sub(new_deposit);
+			let remaining_unreserved = T::Currency::unreserve(who, excess);
+			if !remaining_unreserved.is_zero() {
+				defensive!(
+					"Failed to unreserve full amount. (Requested, Actual)",
+					(excess, excess.saturating_sub(remaining_unreserved))
+				);
+			}
 		}
 		Ok(if len == 0 { None } else { Some(new_deposit) })
 	}
diff --git a/substrate/frame/proxy/src/tests.rs b/substrate/frame/proxy/src/tests.rs
index b52dc5ce0e398..2e2d729c1f3bc 100644
--- a/substrate/frame/proxy/src/tests.rs
+++ b/substrate/frame/proxy/src/tests.rs
@@ -107,25 +107,33 @@ impl Contains<RuntimeCall> for BaseFilter {
 		}
 	}
 }
+
+parameter_types! {
+	pub static ProxyDepositBase: u64 = 1;
+	pub static ProxyDepositFactor: u64 = 1;
+	pub static AnnouncementDepositBase: u64 = 1;
+	pub static AnnouncementDepositFactor: u64 = 1;
+}
+
 impl Config for Test {
 	type RuntimeEvent = RuntimeEvent;
 	type RuntimeCall = RuntimeCall;
 	type Currency = Balances;
 	type ProxyType = ProxyType;
-	type ProxyDepositBase = ConstU64<1>;
-	type ProxyDepositFactor = ConstU64<1>;
+	type ProxyDepositBase = ProxyDepositBase;
+	type ProxyDepositFactor = ProxyDepositFactor;
 	type MaxProxies = ConstU32<4>;
 	type WeightInfo = ();
 	type CallHasher = BlakeTwo256;
 	type MaxPending = ConstU32<2>;
-	type AnnouncementDepositBase = ConstU64<1>;
-	type AnnouncementDepositFactor = ConstU64<1>;
+	type AnnouncementDepositBase = AnnouncementDepositBase;
+	type AnnouncementDepositFactor = AnnouncementDepositFactor;
 	type BlockNumberProvider = frame_system::Pallet<Test>;
 }
 
 use super::{Call as ProxyCall, Event as ProxyEvent};
 use frame_system::Call as SystemCall;
-use pallet_balances::{Call as BalancesCall, Event as BalancesEvent};
+use pallet_balances::{Call as BalancesCall, Error as BalancesError, Event as BalancesEvent};
 use pallet_utility::{Call as UtilityCall, Event as UtilityEvent};
 
 type SystemError = frame_system::Error<Test>;
@@ -586,3 +594,232 @@ fn pure_works() {
 		);
 	});
 }
+
+#[test]
+fn poke_deposit_works_for_proxy_deposits() {
+	new_test_ext().execute_with(|| {
+		// Add a proxy and check initial deposit
+		assert_ok!(Proxy::add_proxy(RuntimeOrigin::signed(1), 2, ProxyType::Any, 0));
+		assert_eq!(Balances::reserved_balance(1), 2); // Base(1) + Factor(1) * 1
+
+		// Change the proxy deposit base to trigger deposit update
+		ProxyDepositBase::set(2);
+		let result = Proxy::poke_deposit(RuntimeOrigin::signed(1));
+		assert_ok!(result.as_ref());
+		assert_eq!(result.unwrap().pays_fee, Pays::No);
+		assert_eq!(Balances::reserved_balance(1), 3); // New Base(2) + Factor(1) * 1
+		System::assert_last_event(
+			ProxyEvent::DepositPoked {
+				who: 1,
+				kind: DepositKind::Proxies,
+				old_deposit: 2,
+				new_deposit: 3,
+			}
+			.into(),
+		);
+		assert!(System::events()
+			.iter()
+			.any(|record| matches!(record.event, RuntimeEvent::Proxy(Event::DepositPoked { .. }))));
+	});
+}
+
+#[test]
+fn poke_deposit_works_for_announcement_deposits() {
+	new_test_ext().execute_with(|| {
+		// Setup proxy and make announcement
+		assert_ok!(Proxy::add_proxy(RuntimeOrigin::signed(1), 3, ProxyType::Any, 1));
+		assert_eq!(Balances::reserved_balance(1), 2); // Base(1) + Factor(1) * 1
+		assert_ok!(Proxy::announce(RuntimeOrigin::signed(3), 1, [1; 32].into()));
+		let announcements = Announcements::<Test>::get(3);
+		assert_eq!(
+			announcements.0,
+			vec![Announcement { real: 1, call_hash: [1; 32].into(), height: 1 }]
+		);
+		assert_eq!(Balances::reserved_balance(3), announcements.1);
+		let initial_deposit = Balances::reserved_balance(3);
+
+		// Change announcement deposit base to trigger update
+		AnnouncementDepositBase::set(2);
+		let result = Proxy::poke_deposit(RuntimeOrigin::signed(3));
+		assert_ok!(result.as_ref());
+		assert_eq!(result.unwrap().pays_fee, Pays::No);
+		let new_deposit = initial_deposit.saturating_add(1); // Base increased by 1
+		assert_eq!(Balances::reserved_balance(3), new_deposit);
+		System::assert_last_event(
+			ProxyEvent::DepositPoked {
+				who: 3,
+				kind: DepositKind::Announcements,
+				old_deposit: initial_deposit,
+				new_deposit,
+			}
+			.into(),
+		);
+		assert!(System::events()
+			.iter()
+			.any(|record| matches!(record.event, RuntimeEvent::Proxy(Event::DepositPoked { .. }))));
+	});
+}
+
+#[test]
+fn poke_deposit_charges_fee_when_deposit_unchanged() {
+	new_test_ext().execute_with(|| {
+		// Add a proxy and check initial deposit
+		assert_ok!(Proxy::add_proxy(RuntimeOrigin::signed(1), 3, ProxyType::Any, 0));
+		assert_eq!(Balances::reserved_balance(1), 2); // Base(1) + Factor(1) * 1
+
+		// Poke the deposit without changing deposit required and check fee
+		let result = Proxy::poke_deposit(RuntimeOrigin::signed(1));
+		assert_ok!(result.as_ref());
+		assert_eq!(result.unwrap().pays_fee, Pays::Yes); // Pays fee
+		assert_eq!(Balances::reserved_balance(1), 2); // No change
+
+		// No event emitted
+		assert!(!System::events()
+			.iter()
+			.any(|record| matches!(record.event, RuntimeEvent::Proxy(Event::DepositPoked { .. }))));
+
+		// Add an announcement and check initial deposit
+		assert_ok!(Proxy::announce(RuntimeOrigin::signed(3), 1, [1; 32].into()));
+		let announcements = Announcements::<Test>::get(3);
+		assert_eq!(
+			announcements.0,
+			vec![Announcement { real: 1, call_hash: [1; 32].into(), height: 1 }]
+		);
+		assert_eq!(Balances::reserved_balance(3), announcements.1);
+		let initial_deposit = Balances::reserved_balance(3);
+
+		// Poke the deposit without changing deposit required and check fee
+		let result = Proxy::poke_deposit(RuntimeOrigin::signed(3));
+		assert_ok!(result.as_ref());
+		assert_eq!(result.unwrap().pays_fee, Pays::Yes); // Pays fee
+		assert_eq!(Balances::reserved_balance(3), initial_deposit); // No change
+
+		// No event emitted
+		assert!(!System::events()
+			.iter()
+			.any(|record| matches!(record.event, RuntimeEvent::Proxy(Event::DepositPoked { .. }))));
+	});
+}
+
+#[test]
+fn poke_deposit_handles_insufficient_balance() {
+	new_test_ext().execute_with(|| {
+		// Setup with account that has minimal balance
+		assert_ok!(Proxy::add_proxy(RuntimeOrigin::signed(5), 3, ProxyType::Any, 0));
+		let initial_deposit = Balances::reserved_balance(5);
+
+		// Change deposit base to require more than available balance
+		ProxyDepositBase::set(10);
+
+		// Poking should fail due to insufficient balance
+		assert_noop!(
+			Proxy::poke_deposit(RuntimeOrigin::signed(5)),
+			BalancesError::<Test, _>::InsufficientBalance,
+		);
+
+		// Original deposit should remain unchanged
+		assert_eq!(Balances::reserved_balance(5), initial_deposit);
+	});
+}
+
+#[test]
+fn poke_deposit_updates_both_proxy_and_announcement_deposits() {
+	new_test_ext().execute_with(|| {
+		// Setup both proxy and announcement for the same account
+		assert_ok!(Proxy::add_proxy(RuntimeOrigin::signed(1), 2, ProxyType::Any, 0));
+		assert_eq!(Balances::reserved_balance(1), 2); // Base(1) + Factor(1) * 1
+		assert_ok!(Proxy::add_proxy(RuntimeOrigin::signed(2), 3, ProxyType::Any, 1));
+		assert_eq!(Balances::reserved_balance(2), 2); // Base(1) + Factor(1) * 1
+		assert_ok!(Proxy::announce(RuntimeOrigin::signed(2), 1, [1; 32].into()));
+		let announcements = Announcements::<Test>::get(2);
+		assert_eq!(
+			announcements.0,
+			vec![Announcement { real: 1, call_hash: [1; 32].into(), height: 1 }]
+		);
+		assert_eq!(announcements.1, 2); // Base(1) + Factor(1) * 1
+
+		// Record initial deposits
+		let initial_proxy_deposit = Proxies::<Test>::get(2).1;
+		let initial_announcement_deposit = Announcements::<Test>::get(2).1;
+
+		// Total reserved = deposit for proxy + deposit for announcement
+		assert_eq!(
+			Balances::reserved_balance(2),
+			initial_proxy_deposit.saturating_add(initial_announcement_deposit)
+		);
+
+		// Change both deposit requirements
+		ProxyDepositBase::set(2);
+		AnnouncementDepositBase::set(2);
+
+		// Poke deposits - should update both deposits and emit two events
+		let result = Proxy::poke_deposit(RuntimeOrigin::signed(2));
+		assert_ok!(result.as_ref());
+		assert_eq!(result.unwrap().pays_fee, Pays::No);
+
+		// Check both deposits were updated
+		let (_, new_proxy_deposit) = Proxies::<Test>::get(2);
+		let (_, new_announcement_deposit) = Announcements::<Test>::get(2);
+		assert_eq!(new_proxy_deposit, 3); // Base(2) + Factor(1) * 1
+		assert_eq!(new_announcement_deposit, 3); // Base(2) + Factor(1) * 1
+		assert_eq!(
+			Balances::reserved_balance(2),
+			new_proxy_deposit.saturating_add(new_announcement_deposit)
+		);
+
+		// Verify both events were emitted in the correct order
+		let events = System::events();
+		let relevant_events: Vec<_> = events
+			.iter()
+			.filter(|record| {
+				matches!(record.event, RuntimeEvent::Proxy(ProxyEvent::DepositPoked { .. }))
+			})
+			.collect();
+
+		assert_eq!(relevant_events.len(), 2);
+
+		// First event should be for Proxies
+		assert_eq!(
+			relevant_events[0].event,
+			ProxyEvent::DepositPoked {
+				who: 2,
+				kind: DepositKind::Proxies,
+				old_deposit: initial_proxy_deposit,
+				new_deposit: new_proxy_deposit,
+			}
+			.into()
+		);
+
+		// Second event should be for Announcements
+		assert_eq!(
+			relevant_events[1].event,
+			ProxyEvent::DepositPoked {
+				who: 2,
+				kind: DepositKind::Announcements,
+				old_deposit: initial_announcement_deposit,
+				new_deposit: new_announcement_deposit,
+			}
+			.into()
+		);
+
+		// Poking again should charge fee as nothing changes
+		let result = Proxy::poke_deposit(RuntimeOrigin::signed(2));
+		assert_ok!(result.as_ref());
+		assert_eq!(result.unwrap().pays_fee, Pays::Yes);
+
+		// Verify deposits remained the same
+		assert_eq!(Proxies::<Test>::get(2).1, new_proxy_deposit);
+		assert_eq!(Announcements::<Test>::get(2).1, new_announcement_deposit);
+		assert_eq!(
+			Balances::reserved_balance(2),
+			new_proxy_deposit.saturating_add(new_announcement_deposit)
+		);
+	});
+}
+
+#[test]
+fn poke_deposit_fails_for_unsigned_origin() {
+	new_test_ext().execute_with(|| {
+		assert_noop!(Proxy::poke_deposit(RuntimeOrigin::none()), DispatchError::BadOrigin,);
+	});
+}
diff --git a/substrate/frame/proxy/src/weights.rs b/substrate/frame/proxy/src/weights.rs
index c9a39a400a88f..504b083f37e89 100644
--- a/substrate/frame/proxy/src/weights.rs
+++ b/substrate/frame/proxy/src/weights.rs
@@ -35,9 +35,9 @@
 //! Autogenerated weights for `pallet_proxy`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-21, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `4563561839a5`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `99fc4dfa9c86`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: `1024`
 
 // Executed Command:
@@ -58,7 +58,6 @@
 // --no-storage-info
 // --no-min-squares
 // --no-median-slopes
-// --genesis-builder-policy=none
 // --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic,pallet_nomination_pools,pallet_remark,pallet_transaction_storage,pallet_election_provider_multi_block,pallet_election_provider_multi_block::signed,pallet_election_provider_multi_block::unsigned,pallet_election_provider_multi_block::verifier
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -81,6 +80,7 @@ pub trait WeightInfo {
 	fn remove_proxies(p: u32, ) -> Weight;
 	fn create_pure(p: u32, ) -> Weight;
 	fn kill_pure(p: u32, ) -> Weight;
+	fn poke_deposit() -> Weight;
 }
 
 /// Weights for `pallet_proxy` using the Substrate node and recommended hardware.
@@ -95,12 +95,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn proxy(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `65 + p * (37 ±0)`
+		//  Measured:  `339 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_388_000 picoseconds.
-		Weight::from_parts(14_978_053, 4706)
-			// Standard Error: 982
-			.saturating_add(Weight::from_parts(26_955, 0).saturating_mul(p.into()))
+		// Minimum execution time: 23_353_000 picoseconds.
+		Weight::from_parts(25_084_085, 4706)
+			// Standard Error: 2_569
+			.saturating_add(Weight::from_parts(33_574, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3_u64))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -117,14 +117,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn proxy_announced(a: u32, p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `358 + a * (68 ±0) + p * (37 ±0)`
+		//  Measured:  `666 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 36_883_000 picoseconds.
-		Weight::from_parts(36_934_197, 5698)
-			// Standard Error: 2_551
-			.saturating_add(Weight::from_parts(180_913, 0).saturating_mul(a.into()))
-			// Standard Error: 2_635
-			.saturating_add(Weight::from_parts(38_689, 0).saturating_mul(p.into()))
+		// Minimum execution time: 47_196_000 picoseconds.
+		Weight::from_parts(48_686_812, 5698)
+			// Standard Error: 3_711
+			.saturating_add(Weight::from_parts(171_107, 0).saturating_mul(a.into()))
+			// Standard Error: 3_834
+			.saturating_add(Weight::from_parts(34_523, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(5_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
@@ -136,14 +136,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn remove_announcement(a: u32, p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `272 + a * (68 ±0)`
+		//  Measured:  `436 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 22_910_000 picoseconds.
-		Weight::from_parts(24_053_942, 5698)
-			// Standard Error: 1_044
-			.saturating_add(Weight::from_parts(147_368, 0).saturating_mul(a.into()))
-			// Standard Error: 1_078
-			.saturating_add(Weight::from_parts(4_805, 0).saturating_mul(p.into()))
+		// Minimum execution time: 29_341_000 picoseconds.
+		Weight::from_parts(30_320_504, 5698)
+			// Standard Error: 1_821
+			.saturating_add(Weight::from_parts(158_572, 0).saturating_mul(a.into()))
+			// Standard Error: 1_881
+			.saturating_add(Weight::from_parts(8_433, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
@@ -155,14 +155,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn reject_announcement(a: u32, p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `272 + a * (68 ±0)`
+		//  Measured:  `436 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 22_951_000 picoseconds.
-		Weight::from_parts(24_164_509, 5698)
-			// Standard Error: 1_202
-			.saturating_add(Weight::from_parts(149_236, 0).saturating_mul(a.into()))
-			// Standard Error: 1_242
-			.saturating_add(Weight::from_parts(898, 0).saturating_mul(p.into()))
+		// Minimum execution time: 28_422_000 picoseconds.
+		Weight::from_parts(29_754_384, 5698)
+			// Standard Error: 1_840
+			.saturating_add(Weight::from_parts(176_827, 0).saturating_mul(a.into()))
+			// Standard Error: 1_901
+			.saturating_add(Weight::from_parts(9_607, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
@@ -176,14 +176,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn announce(a: u32, p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `290 + a * (68 ±0) + p * (37 ±0)`
+		//  Measured:  `453 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 30_098_000 picoseconds.
-		Weight::from_parts(31_057_828, 5698)
-			// Standard Error: 2_790
-			.saturating_add(Weight::from_parts(171_651, 0).saturating_mul(a.into()))
-			// Standard Error: 2_883
-			.saturating_add(Weight::from_parts(38_563, 0).saturating_mul(p.into()))
+		// Minimum execution time: 36_885_000 picoseconds.
+		Weight::from_parts(38_080_636, 5698)
+			// Standard Error: 2_642
+			.saturating_add(Weight::from_parts(157_335, 0).saturating_mul(a.into()))
+			// Standard Error: 2_730
+			.saturating_add(Weight::from_parts(28_872, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(3_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
@@ -192,12 +192,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn add_proxy(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `65 + p * (37 ±0)`
+		//  Measured:  `194 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 20_657_000 picoseconds.
-		Weight::from_parts(21_576_519, 4706)
-			// Standard Error: 1_096
-			.saturating_add(Weight::from_parts(40_842, 0).saturating_mul(p.into()))
+		// Minimum execution time: 27_016_000 picoseconds.
+		Weight::from_parts(28_296_216, 4706)
+			// Standard Error: 1_643
+			.saturating_add(Weight::from_parts(50_271, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -206,12 +206,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn remove_proxy(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `65 + p * (37 ±0)`
+		//  Measured:  `194 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 20_470_000 picoseconds.
-		Weight::from_parts(21_337_014, 4706)
-			// Standard Error: 1_496
-			.saturating_add(Weight::from_parts(39_232, 0).saturating_mul(p.into()))
+		// Minimum execution time: 26_955_000 picoseconds.
+		Weight::from_parts(28_379_566, 4706)
+			// Standard Error: 1_547
+			.saturating_add(Weight::from_parts(45_784, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -220,12 +220,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn remove_proxies(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `65 + p * (37 ±0)`
+		//  Measured:  `194 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 18_116_000 picoseconds.
-		Weight::from_parts(18_895_722, 4706)
-			// Standard Error: 809
-			.saturating_add(Weight::from_parts(23_829, 0).saturating_mul(p.into()))
+		// Minimum execution time: 24_656_000 picoseconds.
+		Weight::from_parts(25_821_878, 4706)
+			// Standard Error: 2_300
+			.saturating_add(Weight::from_parts(33_972, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -234,12 +234,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[1, 31]`.
 	fn create_pure(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `76`
+		//  Measured:  `206`
 		//  Estimated: `4706`
-		// Minimum execution time: 21_990_000 picoseconds.
-		Weight::from_parts(22_637_682, 4706)
-			// Standard Error: 1_147
-			.saturating_add(Weight::from_parts(21_637, 0).saturating_mul(p.into()))
+		// Minimum execution time: 28_416_000 picoseconds.
+		Weight::from_parts(29_662_728, 4706)
+			// Standard Error: 1_851
+			.saturating_add(Weight::from_parts(29_928, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -248,15 +248,30 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `p` is `[0, 30]`.
 	fn kill_pure(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `102 + p * (37 ±0)`
+		//  Measured:  `231 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 19_860_000 picoseconds.
-		Weight::from_parts(20_734_482, 4706)
-			// Standard Error: 916
-			.saturating_add(Weight::from_parts(21_379, 0).saturating_mul(p.into()))
+		// Minimum execution time: 25_505_000 picoseconds.
+		Weight::from_parts(26_780_627, 4706)
+			// Standard Error: 1_581
+			.saturating_add(Weight::from_parts(33_085, 0).saturating_mul(p.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `519`
+		//  Estimated: `5698`
+		// Minimum execution time: 46_733_000 picoseconds.
+		Weight::from_parts(47_972_000, 5698)
+			.saturating_add(T::DbWeight::get().reads(3_u64))
+			.saturating_add(T::DbWeight::get().writes(3_u64))
+	}
 }
 
 // For backwards compatibility and tests.
@@ -270,12 +285,12 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn proxy(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `65 + p * (37 ±0)`
+		//  Measured:  `339 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 14_388_000 picoseconds.
-		Weight::from_parts(14_978_053, 4706)
-			// Standard Error: 982
-			.saturating_add(Weight::from_parts(26_955, 0).saturating_mul(p.into()))
+		// Minimum execution time: 23_353_000 picoseconds.
+		Weight::from_parts(25_084_085, 4706)
+			// Standard Error: 2_569
+			.saturating_add(Weight::from_parts(33_574, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(3_u64))
 	}
 	/// Storage: `Proxy::Proxies` (r:1 w:0)
@@ -292,14 +307,14 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn proxy_announced(a: u32, p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `358 + a * (68 ±0) + p * (37 ±0)`
+		//  Measured:  `666 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 36_883_000 picoseconds.
-		Weight::from_parts(36_934_197, 5698)
-			// Standard Error: 2_551
-			.saturating_add(Weight::from_parts(180_913, 0).saturating_mul(a.into()))
-			// Standard Error: 2_635
-			.saturating_add(Weight::from_parts(38_689, 0).saturating_mul(p.into()))
+		// Minimum execution time: 47_196_000 picoseconds.
+		Weight::from_parts(48_686_812, 5698)
+			// Standard Error: 3_711
+			.saturating_add(Weight::from_parts(171_107, 0).saturating_mul(a.into()))
+			// Standard Error: 3_834
+			.saturating_add(Weight::from_parts(34_523, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(5_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
@@ -311,14 +326,14 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn remove_announcement(a: u32, p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `272 + a * (68 ±0)`
+		//  Measured:  `436 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 22_910_000 picoseconds.
-		Weight::from_parts(24_053_942, 5698)
-			// Standard Error: 1_044
-			.saturating_add(Weight::from_parts(147_368, 0).saturating_mul(a.into()))
-			// Standard Error: 1_078
-			.saturating_add(Weight::from_parts(4_805, 0).saturating_mul(p.into()))
+		// Minimum execution time: 29_341_000 picoseconds.
+		Weight::from_parts(30_320_504, 5698)
+			// Standard Error: 1_821
+			.saturating_add(Weight::from_parts(158_572, 0).saturating_mul(a.into()))
+			// Standard Error: 1_881
+			.saturating_add(Weight::from_parts(8_433, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
@@ -330,14 +345,14 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn reject_announcement(a: u32, p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `272 + a * (68 ±0)`
+		//  Measured:  `436 + a * (68 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 22_951_000 picoseconds.
-		Weight::from_parts(24_164_509, 5698)
-			// Standard Error: 1_202
-			.saturating_add(Weight::from_parts(149_236, 0).saturating_mul(a.into()))
-			// Standard Error: 1_242
-			.saturating_add(Weight::from_parts(898, 0).saturating_mul(p.into()))
+		// Minimum execution time: 28_422_000 picoseconds.
+		Weight::from_parts(29_754_384, 5698)
+			// Standard Error: 1_840
+			.saturating_add(Weight::from_parts(176_827, 0).saturating_mul(a.into()))
+			// Standard Error: 1_901
+			.saturating_add(Weight::from_parts(9_607, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
@@ -351,14 +366,14 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn announce(a: u32, p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `290 + a * (68 ±0) + p * (37 ±0)`
+		//  Measured:  `453 + a * (68 ±0) + p * (37 ±0)`
 		//  Estimated: `5698`
-		// Minimum execution time: 30_098_000 picoseconds.
-		Weight::from_parts(31_057_828, 5698)
-			// Standard Error: 2_790
-			.saturating_add(Weight::from_parts(171_651, 0).saturating_mul(a.into()))
-			// Standard Error: 2_883
-			.saturating_add(Weight::from_parts(38_563, 0).saturating_mul(p.into()))
+		// Minimum execution time: 36_885_000 picoseconds.
+		Weight::from_parts(38_080_636, 5698)
+			// Standard Error: 2_642
+			.saturating_add(Weight::from_parts(157_335, 0).saturating_mul(a.into()))
+			// Standard Error: 2_730
+			.saturating_add(Weight::from_parts(28_872, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(3_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
@@ -367,12 +382,12 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn add_proxy(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `65 + p * (37 ±0)`
+		//  Measured:  `194 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 20_657_000 picoseconds.
-		Weight::from_parts(21_576_519, 4706)
-			// Standard Error: 1_096
-			.saturating_add(Weight::from_parts(40_842, 0).saturating_mul(p.into()))
+		// Minimum execution time: 27_016_000 picoseconds.
+		Weight::from_parts(28_296_216, 4706)
+			// Standard Error: 1_643
+			.saturating_add(Weight::from_parts(50_271, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -381,12 +396,12 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn remove_proxy(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `65 + p * (37 ±0)`
+		//  Measured:  `194 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 20_470_000 picoseconds.
-		Weight::from_parts(21_337_014, 4706)
-			// Standard Error: 1_496
-			.saturating_add(Weight::from_parts(39_232, 0).saturating_mul(p.into()))
+		// Minimum execution time: 26_955_000 picoseconds.
+		Weight::from_parts(28_379_566, 4706)
+			// Standard Error: 1_547
+			.saturating_add(Weight::from_parts(45_784, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -395,12 +410,12 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn remove_proxies(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `65 + p * (37 ±0)`
+		//  Measured:  `194 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 18_116_000 picoseconds.
-		Weight::from_parts(18_895_722, 4706)
-			// Standard Error: 809
-			.saturating_add(Weight::from_parts(23_829, 0).saturating_mul(p.into()))
+		// Minimum execution time: 24_656_000 picoseconds.
+		Weight::from_parts(25_821_878, 4706)
+			// Standard Error: 2_300
+			.saturating_add(Weight::from_parts(33_972, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -409,12 +424,12 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[1, 31]`.
 	fn create_pure(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `76`
+		//  Measured:  `206`
 		//  Estimated: `4706`
-		// Minimum execution time: 21_990_000 picoseconds.
-		Weight::from_parts(22_637_682, 4706)
-			// Standard Error: 1_147
-			.saturating_add(Weight::from_parts(21_637, 0).saturating_mul(p.into()))
+		// Minimum execution time: 28_416_000 picoseconds.
+		Weight::from_parts(29_662_728, 4706)
+			// Standard Error: 1_851
+			.saturating_add(Weight::from_parts(29_928, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -423,13 +438,28 @@ impl WeightInfo for () {
 	/// The range of component `p` is `[0, 30]`.
 	fn kill_pure(p: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `102 + p * (37 ±0)`
+		//  Measured:  `231 + p * (37 ±0)`
 		//  Estimated: `4706`
-		// Minimum execution time: 19_860_000 picoseconds.
-		Weight::from_parts(20_734_482, 4706)
-			// Standard Error: 916
-			.saturating_add(Weight::from_parts(21_379, 0).saturating_mul(p.into()))
+		// Minimum execution time: 25_505_000 picoseconds.
+		Weight::from_parts(26_780_627, 4706)
+			// Standard Error: 1_581
+			.saturating_add(Weight::from_parts(33_085, 0).saturating_mul(p.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
+	/// Storage: `Proxy::Proxies` (r:1 w:1)
+	/// Proof: `Proxy::Proxies` (`max_values`: None, `max_size`: Some(1241), added: 3716, mode: `MaxEncodedLen`)
+	/// Storage: `System::Account` (r:1 w:1)
+	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `MaxEncodedLen`)
+	/// Storage: `Proxy::Announcements` (r:1 w:1)
+	/// Proof: `Proxy::Announcements` (`max_values`: None, `max_size`: Some(2233), added: 4708, mode: `MaxEncodedLen`)
+	fn poke_deposit() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `519`
+		//  Estimated: `5698`
+		// Minimum execution time: 46_733_000 picoseconds.
+		Weight::from_parts(47_972_000, 5698)
+			.saturating_add(RocksDbWeight::get().reads(3_u64))
+			.saturating_add(RocksDbWeight::get().writes(3_u64))
+	}
 }


Reviews:
user: login: re-gius
body: LGTM
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-05T18:13:53Z
user: login: ggwpez
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T13:39:42Z
user: login: ggwpez
body: Nice!
state: APPROVED
author_association: MEMBER
submitted_at: 2025-03-06T14:48:29Z
user: login: kianenigma
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T15:09:06Z
user: login: kianenigma
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T15:11:13Z
user: login: kianenigma
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T15:11:56Z
user: login: UtkarshBhardwaj007
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T19:06:38Z
user: login: UtkarshBhardwaj007
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T19:12:46Z
user: login: UtkarshBhardwaj007
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T19:16:39Z
user: login: UtkarshBhardwaj007
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-06T19:17:08Z

Review comments:
diff_hunk: @@ -529,6 +549,104 @@ pub mod pallet {
 
 			Ok(())
 		}
+
+		/// Poke / Adjust deposits made for proxies and announcements based on current values.
+		///
+		/// The dispatch origin for this call must be _Signed_.
path: substrate/frame/proxy/src/lib.rs
user: login: ggwpez
body: This can be used by accounts to update their deposits and possibly lower their locked amount.
created_at: 2025-03-06T13:39:42Z
author_association: MEMBER
diff_hunk: @@ -779,9 +904,16 @@ impl<T: Config> Pallet<T> {
 		let new_deposit =
 			if len == 0 { BalanceOf::<T>::zero() } else { base + factor * (len as u32).into() };
 		if new_deposit > old_deposit {
-			T::Currency::reserve(who, new_deposit - old_deposit)?;
+			T::Currency::reserve(who, new_deposit.saturating_sub(old_deposit))?;
 		} else if new_deposit < old_deposit {
-			T::Currency::unreserve(who, old_deposit - new_deposit);
+			let excess = old_deposit.saturating_sub(new_deposit);
+			let remaining_unreserved = T::Currency::unreserve(who, excess);
+			if !remaining_unreserved.is_zero() {
+				defensive!(
path: substrate/frame/proxy/src/lib.rs
user: login: ggwpez
body: I think there is also `defensive_assert!`, but just FYI. Current code looks fine.
created_at: 2025-03-06T14:45:27Z
author_association: MEMBER
diff_hunk: @@ -586,3 +594,232 @@ fn pure_works() {
 		);
 	});
 }
+
+#[test]
+fn poke_deposit_works_for_proxy_deposits() {
+	new_test_ext().execute_with(|| {
+		// Add a proxy and check initial deposit
path: substrate/frame/proxy/src/tests.rs
user: login: kianenigma
body: A patter that I encourage in smallish tests is: 

```
// given
<initial condition>

// when
<trigger>

// then
<assertions on post state> 
```
created_at: 2025-03-06T15:09:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -586,3 +594,232 @@ fn pure_works() {
 		);
 	});
 }
+
+#[test]
+fn poke_deposit_works_for_proxy_deposits() {
+	new_test_ext().execute_with(|| {
+		// Add a proxy and check initial deposit
+		assert_ok!(Proxy::add_proxy(RuntimeOrigin::signed(1), 2, ProxyType::Any, 0));
+		assert_eq!(Balances::reserved_balance(1), 2); // Base(1) + Factor(1) * 1
+
+		// Change the proxy deposit base to trigger deposit update
+		ProxyDepositBase::set(2);
+		let result = Proxy::poke_deposit(RuntimeOrigin::signed(1));
+		assert_ok!(result.as_ref());
+		assert_eq!(result.unwrap().pays_fee, Pays::No);
+		assert_eq!(Balances::reserved_balance(1), 3); // New Base(2) + Factor(1) * 1
+		System::assert_last_event(
path: substrate/frame/proxy/src/tests.rs
user: login: kianenigma
body: fwiw there is a nice helper function for this: 

https://paritytech.github.io/polkadot-sdk/master/frame_system/pallet/struct.Pallet.html#method.read_events_for_pallet
created_at: 2025-03-06T15:11:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -529,6 +549,104 @@ pub mod pallet {
 
 			Ok(())
 		}
+
+		/// Poke / Adjust deposits made for proxies and announcements based on current values.
+		///
+		/// The dispatch origin for this call must be _Signed_.
path: substrate/frame/proxy/src/lib.rs
user: login: UtkarshBhardwaj007
body: Sure.
created_at: 2025-03-06T19:06:38Z
author_association: MEMBER
diff_hunk: @@ -779,9 +904,16 @@ impl<T: Config> Pallet<T> {
 		let new_deposit =
 			if len == 0 { BalanceOf::<T>::zero() } else { base + factor * (len as u32).into() };
 		if new_deposit > old_deposit {
-			T::Currency::reserve(who, new_deposit - old_deposit)?;
+			T::Currency::reserve(who, new_deposit.saturating_sub(old_deposit))?;
 		} else if new_deposit < old_deposit {
-			T::Currency::unreserve(who, old_deposit - new_deposit);
+			let excess = old_deposit.saturating_sub(new_deposit);
+			let remaining_unreserved = T::Currency::unreserve(who, excess);
+			if !remaining_unreserved.is_zero() {
+				defensive!(
path: substrate/frame/proxy/src/lib.rs
user: login: UtkarshBhardwaj007
body: Thanks for letting me know :)
created_at: 2025-03-06T19:12:45Z
author_association: MEMBER
diff_hunk: @@ -586,3 +594,232 @@ fn pure_works() {
 		);
 	});
 }
+
+#[test]
+fn poke_deposit_works_for_proxy_deposits() {
+	new_test_ext().execute_with(|| {
+		// Add a proxy and check initial deposit
path: substrate/frame/proxy/src/tests.rs
user: login: UtkarshBhardwaj007
body: Right, makes sense. I have something similar here. I just have assertions for `Initial State` and then assertions when we update the deposits and finally some post state assertions as well. I will try to keep the distinction clearer for future tests.
created_at: 2025-03-06T19:16:39Z
author_association: MEMBER
diff_hunk: @@ -586,3 +594,232 @@ fn pure_works() {
 		);
 	});
 }
+
+#[test]
+fn poke_deposit_works_for_proxy_deposits() {
+	new_test_ext().execute_with(|| {
+		// Add a proxy and check initial deposit
+		assert_ok!(Proxy::add_proxy(RuntimeOrigin::signed(1), 2, ProxyType::Any, 0));
+		assert_eq!(Balances::reserved_balance(1), 2); // Base(1) + Factor(1) * 1
+
+		// Change the proxy deposit base to trigger deposit update
+		ProxyDepositBase::set(2);
+		let result = Proxy::poke_deposit(RuntimeOrigin::signed(1));
+		assert_ok!(result.as_ref());
+		assert_eq!(result.unwrap().pays_fee, Pays::No);
+		assert_eq!(Balances::reserved_balance(1), 3); // New Base(2) + Factor(1) * 1
+		System::assert_last_event(
path: substrate/frame/proxy/src/tests.rs
user: login: UtkarshBhardwaj007
body: Cool, didn't know about this. Thanks for letting me know. 
created_at: 2025-03-06T19:17:08Z
author_association: MEMBER

PR comments:
user: login: UtkarshBhardwaj007
created_at: 2025-03-04T17:59:37Z
body: /cmd fmt
author_association: MEMBER
user: login: UtkarshBhardwaj007
created_at: 2025-03-04T17:59:46Z
body: /cmd prdoc
author_association: MEMBER
user: login: UtkarshBhardwaj007
created_at: 2025-03-04T18:00:05Z
body: /cmd bench --pallet pallet_proxy
author_association: MEMBER
user: login: github-actions[bot]
created_at: 2025-03-04T18:00:42Z
body: Command "bench --pallet pallet_proxy" has started 🚀 [See logs here](https://github.com/paritytech/polkadot-sdk/actions/runs/13659934369/job/38188534574)
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-04T19:30:05Z
body: Command "bench --pallet pallet_proxy" has finished ✅ [See logs here](https://github.com/paritytech/polkadot-sdk/actions/runs/13659934369)<details>

<summary>Subweight results:</summary>

| File                                                                                    | Extrinsic      | Old      | New      | Change [%] |
|-----------------------------------------------------------------------------------------|----------------|----------|----------|------------|
| substrate/frame/proxy/src/weights.rs                                                    | proxy          | 90.81us  | 101.12us | +11.35     |
| substrate/frame/proxy/src/weights.rs                                                    | remove_proxies | 144.63us | 151.88us | +5.01      |
| substrate/frame/proxy/src/weights.rs                                                    | poke_deposit   |          | 422.97us | Added      |
| polkadot/runtime/westend/src/weights/pallet_proxy.rs                                    | poke_deposit   |          | 425.37us | Added      |
| polkadot/runtime/rococo/src/weights/pallet_proxy.rs                                     | poke_deposit   |          | 420.40us | Added      |
| cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs           | poke_deposit   |          | 420.64us | Added      |
| cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs            | poke_deposit   |          | 419.49us | Added      |
| cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs       | poke_deposit   |          | 419.10us | Added      |
| cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs        | poke_deposit   |          | 420.02us | Added      |
| cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_proxy.rs | poke_deposit   |          | 426.12us | Added      |
| cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_proxy.rs        | poke_deposit   |          | 420.42us | Added      |
| cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs         | poke_deposit   |          | 423.69us | Added      |

</details><details>

<summary>Command output:</summary>

✅ Successful benchmarks of runtimes/pallets:
-- dev: ['pallet_proxy']
-- westend: ['pallet_proxy']
-- rococo: ['pallet_proxy']
-- asset-hub-westend: ['pallet_proxy']
-- asset-hub-rococo: ['pallet_proxy']
-- collectives-westend: ['pallet_proxy']
-- coretime-rococo: ['pallet_proxy']
-- coretime-westend: ['pallet_proxy']
-- people-rococo: ['pallet_proxy']
-- people-westend: ['pallet_proxy']

</details>
author_association: CONTRIBUTOR
user: login: UtkarshBhardwaj007
created_at: 2025-03-06T19:24:40Z
body: /cmd fmt
author_association: MEMBER