diff --git a/substrate/docs/CHANGELOG.md b/substrate/docs/CHANGELOG.md
index c867a245739ff95d71fc7e9002b525d0f92e1c63..25f8e582c78fc01f3b5ca46d8f57f70413f3c2b6 100644
--- a/substrate/docs/CHANGELOG.md
+++ b/substrate/docs/CHANGELOG.md
@@ -360,7 +360,7 @@ Runtime
 -------
 
 * Introduce stacked filtering (#6273)
-* Allow "anonymous" proxied accounts (#6236)
+* Allow "pure" proxied accounts (#6236)
 * Allow over-weight collective proposals to be closed (#6163)
 * Fix Election when ForceNone V1 (#6166)
 
diff --git a/substrate/frame/proxy/src/benchmarking.rs b/substrate/frame/proxy/src/benchmarking.rs
index f7e440d1f7d6f87ce7369c55be3558a428251aed..58c0cb73011dff2ef69c164e3ec2d905424082f0 100644
--- a/substrate/frame/proxy/src/benchmarking.rs
+++ b/substrate/frame/proxy/src/benchmarking.rs
@@ -98,7 +98,7 @@ benchmarks! {
 		let a in 0 .. T::MaxPending::get() - 1;
 		let p in 1 .. (T::MaxProxies::get() - 1) => add_proxies::<T>(p, None)?;
 		// In this case the caller is the "target" proxy
-		let caller: T::AccountId = account("anonymous", 0, SEED);
+		let caller: T::AccountId = account("pure", 0, SEED);
 		let delegate: T::AccountId = account("target", p - 1, SEED);
 		let delegate_lookup = T::Lookup::unlookup(delegate.clone());
 		T::Currency::make_free_balance_be(&delegate, BalanceOf::<T>::max_value() / 2u32.into());
@@ -218,7 +218,7 @@ benchmarks! {
 		assert_eq!(proxies.len() as u32, 0);
 	}
 
-	anonymous {
+	create_pure {
 		let p in 1 .. (T::MaxProxies::get() - 1) => add_proxies::<T>(p, None)?;
 		let caller: T::AccountId = whitelisted_caller();
 	}: _(
@@ -228,22 +228,22 @@ benchmarks! {
 		0
 	)
 	verify {
-		let anon_account = Pallet::<T>::anonymous_account(&caller, &T::ProxyType::default(), 0, None);
-		assert_last_event::<T>(Event::AnonymousCreated {
-			anonymous: anon_account,
+		let pure_account = Pallet::<T>::pure_account(&caller, &T::ProxyType::default(), 0, None);
+		assert_last_event::<T>(Event::PureCreated {
+			pure: pure_account,
 			who: caller,
 			proxy_type: T::ProxyType::default(),
 			disambiguation_index: 0,
 		}.into());
 	}
 
-	kill_anonymous {
+	kill_pure {
 		let p in 0 .. (T::MaxProxies::get() - 2);
 
 		let caller: T::AccountId = whitelisted_caller();
 		let caller_lookup = T::Lookup::unlookup(caller.clone());
 		T::Currency::make_free_balance_be(&caller, BalanceOf::<T>::max_value());
-		Pallet::<T>::anonymous(
+		Pallet::<T>::create_pure(
 			RawOrigin::Signed(whitelisted_caller()).into(),
 			T::ProxyType::default(),
 			T::BlockNumber::zero(),
@@ -251,13 +251,13 @@ benchmarks! {
 		)?;
 		let height = system::Pallet::<T>::block_number();
 		let ext_index = system::Pallet::<T>::extrinsic_index().unwrap_or(0);
-		let anon = Pallet::<T>::anonymous_account(&caller, &T::ProxyType::default(), 0, None);
+		let pure_account = Pallet::<T>::pure_account(&caller, &T::ProxyType::default(), 0, None);
 
-		add_proxies::<T>(p, Some(anon.clone()))?;
-		ensure!(Proxies::<T>::contains_key(&anon), "anon proxy not created");
-	}: _(RawOrigin::Signed(anon.clone()), caller_lookup, T::ProxyType::default(), 0, height, ext_index)
+		add_proxies::<T>(p, Some(pure_account.clone()))?;
+		ensure!(Proxies::<T>::contains_key(&pure_account), "pure proxy not created");
+	}: _(RawOrigin::Signed(pure_account.clone()), caller_lookup, T::ProxyType::default(), 0, height, ext_index)
 	verify {
-		assert!(!Proxies::<T>::contains_key(&anon));
+		assert!(!Proxies::<T>::contains_key(&pure_account));
 	}
 
 	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 af96069397255f4c661e68fa18f80e1ba2961120..5c07a2b0122433318e0b3d00ebde2c9d1e60c146 100644
--- a/substrate/frame/proxy/src/lib.rs
+++ b/substrate/frame/proxy/src/lib.rs
@@ -191,10 +191,6 @@ pub mod pallet {
 		/// - `real`: The account that the proxy will make a call on behalf of.
 		/// - `force_proxy_type`: Specify the exact proxy type to be used and checked for this call.
 		/// - `call`: The call to be made by the `real` account.
-		///
-		/// # <weight>
-		/// Weight is a function of the number of proxies the user has (P).
-		/// # </weight>
 		#[pallet::weight({
 			let di = call.get_dispatch_info();
 			(T::WeightInfo::proxy(T::MaxProxies::get())
@@ -228,10 +224,6 @@ pub mod pallet {
 		/// - `proxy_type`: The permissions allowed for this proxy account.
 		/// - `delay`: The announcement period required of the initial proxy. Will generally be
 		/// zero.
-		///
-		/// # <weight>
-		/// Weight is a function of the number of proxies the user has (P).
-		/// # </weight>
 		#[pallet::weight(T::WeightInfo::add_proxy(T::MaxProxies::get()))]
 		pub fn add_proxy(
 			origin: OriginFor<T>,
@@ -251,10 +243,6 @@ pub mod pallet {
 		/// Parameters:
 		/// - `proxy`: The account that the `caller` would like to remove as a proxy.
 		/// - `proxy_type`: The permissions currently enabled for the removed proxy account.
-		///
-		/// # <weight>
-		/// Weight is a function of the number of proxies the user has (P).
-		/// # </weight>
 		#[pallet::weight(T::WeightInfo::remove_proxy(T::MaxProxies::get()))]
 		pub fn remove_proxy(
 			origin: OriginFor<T>,
@@ -271,12 +259,8 @@ pub mod pallet {
 		///
 		/// The dispatch origin for this call must be _Signed_.
 		///
-		/// WARNING: This may be called on accounts created by `anonymous`, however if done, then
+		/// WARNING: This may be called on accounts created by `pure`, however if done, then
 		/// the unreserved fees will be inaccessible. **All access to this account will be lost.**
-		///
-		/// # <weight>
-		/// Weight is a function of the number of proxies the user has (P).
-		/// # </weight>
 		#[pallet::weight(T::WeightInfo::remove_proxies(T::MaxProxies::get()))]
 		pub fn remove_proxies(origin: OriginFor<T>) -> DispatchResult {
 			let who = ensure_signed(origin)?;
@@ -304,13 +288,8 @@ pub mod pallet {
 		/// same sender, with the same parameters.
 		///
 		/// Fails if there are insufficient funds to pay for deposit.
-		///
-		/// # <weight>
-		/// Weight is a function of the number of proxies the user has (P).
-		/// # </weight>
-		/// TODO: Might be over counting 1 read
-		#[pallet::weight(T::WeightInfo::anonymous(T::MaxProxies::get()))]
-		pub fn anonymous(
+		#[pallet::weight(T::WeightInfo::create_pure(T::MaxProxies::get()))]
+		pub fn create_pure(
 			origin: OriginFor<T>,
 			proxy_type: T::ProxyType,
 			delay: T::BlockNumber,
@@ -318,8 +297,8 @@ pub mod pallet {
 		) -> DispatchResult {
 			let who = ensure_signed(origin)?;
 
-			let anonymous = Self::anonymous_account(&who, &proxy_type, index, None);
-			ensure!(!Proxies::<T>::contains_key(&anonymous), Error::<T>::Duplicate);
+			let pure = Self::pure_account(&who, &proxy_type, index, None);
+			ensure!(!Proxies::<T>::contains_key(&pure), Error::<T>::Duplicate);
 
 			let proxy_def =
 				ProxyDefinition { delegate: who.clone(), proxy_type: proxy_type.clone(), delay };
@@ -329,9 +308,9 @@ pub mod pallet {
 			let deposit = T::ProxyDepositBase::get() + T::ProxyDepositFactor::get();
 			T::Currency::reserve(&who, deposit)?;
 
-			Proxies::<T>::insert(&anonymous, (bounded_proxies, deposit));
-			Self::deposit_event(Event::AnonymousCreated {
-				anonymous,
+			Proxies::<T>::insert(&pure, (bounded_proxies, deposit));
+			Self::deposit_event(Event::PureCreated {
+				pure,
 				who,
 				proxy_type,
 				disambiguation_index: index,
@@ -340,28 +319,24 @@ pub mod pallet {
 			Ok(())
 		}
 
-		/// Removes a previously spawned anonymous proxy.
+		/// Removes a previously spawned pure proxy.
 		///
 		/// WARNING: **All access to this account will be lost.** Any funds held in it will be
 		/// inaccessible.
 		///
 		/// Requires a `Signed` origin, and the sender account must have been created by a call to
-		/// `anonymous` with corresponding parameters.
-		///
-		/// - `spawner`: The account that originally called `anonymous` to create this account.
-		/// - `index`: The disambiguation index originally passed to `anonymous`. Probably `0`.
-		/// - `proxy_type`: The proxy type originally passed to `anonymous`.
-		/// - `height`: The height of the chain when the call to `anonymous` was processed.
-		/// - `ext_index`: The extrinsic index in which the call to `anonymous` was processed.
-		///
-		/// Fails with `NoPermission` in case the caller is not a previously created anonymous
-		/// account whose `anonymous` call has corresponding parameters.
-		///
-		/// # <weight>
-		/// Weight is a function of the number of proxies the user has (P).
-		/// # </weight>
-		#[pallet::weight(T::WeightInfo::kill_anonymous(T::MaxProxies::get()))]
-		pub fn kill_anonymous(
+		/// `pure` with corresponding parameters.
+		///
+		/// - `spawner`: The account that originally called `pure` to create this account.
+		/// - `index`: The disambiguation index originally passed to `pure`. Probably `0`.
+		/// - `proxy_type`: The proxy type originally passed to `pure`.
+		/// - `height`: The height of the chain when the call to `pure` was processed.
+		/// - `ext_index`: The extrinsic index in which the call to `pure` was processed.
+		///
+		/// Fails with `NoPermission` in case the caller is not a previously created pure
+		/// account whose `pure` call has corresponding parameters.
+		#[pallet::weight(T::WeightInfo::kill_pure(T::MaxProxies::get()))]
+		pub fn kill_pure(
 			origin: OriginFor<T>,
 			spawner: AccountIdLookupOf<T>,
 			proxy_type: T::ProxyType,
@@ -373,7 +348,7 @@ pub mod pallet {
 			let spawner = T::Lookup::lookup(spawner)?;
 
 			let when = (height, ext_index);
-			let proxy = Self::anonymous_account(&spawner, &proxy_type, index, Some(when));
+			let proxy = Self::pure_account(&spawner, &proxy_type, index, Some(when));
 			ensure!(proxy == who, Error::<T>::NoPermission);
 
 			let (_, deposit) = Proxies::<T>::take(&who);
@@ -397,12 +372,6 @@ pub mod pallet {
 		/// Parameters:
 		/// - `real`: The account that the proxy will make a call on behalf of.
 		/// - `call_hash`: The hash of the call to be made by the `real` account.
-		///
-		/// # <weight>
-		/// Weight is a function of:
-		/// - A: the number of announcements made.
-		/// - P: the number of proxies the user has.
-		/// # </weight>
 		#[pallet::weight(T::WeightInfo::announce(T::MaxPending::get(), T::MaxProxies::get()))]
 		pub fn announce(
 			origin: OriginFor<T>,
@@ -452,12 +421,6 @@ pub mod pallet {
 		/// Parameters:
 		/// - `real`: The account that the proxy will make a call on behalf of.
 		/// - `call_hash`: The hash of the call to be made by the `real` account.
-		///
-		/// # <weight>
-		/// Weight is a function of:
-		/// - A: the number of announcements made.
-		/// - P: the number of proxies the user has.
-		/// # </weight>
 		#[pallet::weight(T::WeightInfo::remove_announcement(
 			T::MaxPending::get(),
 			T::MaxProxies::get()
@@ -484,12 +447,6 @@ pub mod pallet {
 		/// Parameters:
 		/// - `delegate`: The account that previously announced the call.
 		/// - `call_hash`: The hash of the call to be made.
-		///
-		/// # <weight>
-		/// Weight is a function of:
-		/// - A: the number of announcements made.
-		/// - P: the number of proxies the user has.
-		/// # </weight>
 		#[pallet::weight(T::WeightInfo::reject_announcement(
 			T::MaxPending::get(),
 			T::MaxProxies::get()
@@ -519,12 +476,6 @@ pub mod pallet {
 		/// - `real`: The account that the proxy will make a call on behalf of.
 		/// - `force_proxy_type`: Specify the exact proxy type to be used and checked for this call.
 		/// - `call`: The call to be made by the `real` account.
-		///
-		/// # <weight>
-		/// Weight is a function of:
-		/// - A: the number of announcements made.
-		/// - P: the number of proxies the user has.
-		/// # </weight>
 		#[pallet::weight({
 			let di = call.get_dispatch_info();
 			(T::WeightInfo::proxy_announced(T::MaxPending::get(), T::MaxProxies::get())
@@ -565,10 +516,10 @@ pub mod pallet {
 	pub enum Event<T: Config> {
 		/// A proxy was executed correctly, with the given.
 		ProxyExecuted { result: DispatchResult },
-		/// Anonymous account has been created by new proxy with given
+		/// A pure account has been created by new proxy with given
 		/// disambiguation index and proxy type.
-		AnonymousCreated {
-			anonymous: T::AccountId,
+		PureCreated {
+			pure: T::AccountId,
 			who: T::AccountId,
 			proxy_type: T::ProxyType,
 			disambiguation_index: u16,
@@ -642,7 +593,7 @@ pub mod pallet {
 }
 
 impl<T: Config> Pallet<T> {
-	/// Calculate the address of an anonymous account.
+	/// Calculate the address of an pure account.
 	///
 	/// - `who`: The spawner account.
 	/// - `proxy_type`: The type of the proxy that the sender will be registered as over the
@@ -651,9 +602,9 @@ impl<T: Config> Pallet<T> {
 	/// - `index`: A disambiguation index, in case this is called multiple times in the same
 	/// transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just
 	/// want to use `0`.
-	/// - `maybe_when`: The block height and extrinsic index of when the anonymous account was
+	/// - `maybe_when`: The block height and extrinsic index of when the pure account was
 	/// created. None to use current block height and extrinsic index.
-	pub fn anonymous_account(
+	pub fn pure_account(
 		who: &T::AccountId,
 		proxy_type: &T::ProxyType,
 		index: u16,
@@ -830,9 +781,9 @@ impl<T: Config> Pallet<T> {
 				Some(Call::remove_proxy { ref proxy_type, .. })
 					if !def.proxy_type.is_superset(proxy_type) =>
 					false,
-				// Proxy call cannot remove all proxies or kill anonymous proxies unless it has full
+				// Proxy call cannot remove all proxies or kill pure proxies unless it has full
 				// permissions.
-				Some(Call::remove_proxies { .. }) | Some(Call::kill_anonymous { .. })
+				Some(Call::remove_proxies { .. }) | Some(Call::kill_pure { .. })
 					if def.proxy_type != T::ProxyType::default() =>
 					false,
 				_ => def.proxy_type.filter(c),
diff --git a/substrate/frame/proxy/src/tests.rs b/substrate/frame/proxy/src/tests.rs
index 3ed80107e0702e1e65018391912426e1ea311dfa..17bc7bcb92ee137b5cf5c80fb9fdba25e4b96268 100644
--- a/substrate/frame/proxy/src/tests.rs
+++ b/substrate/frame/proxy/src/tests.rs
@@ -550,13 +550,13 @@ fn proxying_works() {
 }
 
 #[test]
-fn anonymous_works() {
+fn pure_works() {
 	new_test_ext().execute_with(|| {
-		assert_ok!(Proxy::anonymous(RuntimeOrigin::signed(1), ProxyType::Any, 0, 0));
-		let anon = Proxy::anonymous_account(&1, &ProxyType::Any, 0, None);
+		assert_ok!(Proxy::create_pure(RuntimeOrigin::signed(1), ProxyType::Any, 0, 0));
+		let anon = Proxy::pure_account(&1, &ProxyType::Any, 0, None);
 		System::assert_last_event(
-			ProxyEvent::AnonymousCreated {
-				anonymous: anon,
+			ProxyEvent::PureCreated {
+				pure: anon,
 				who: 1,
 				proxy_type: ProxyType::Any,
 				disambiguation_index: 0,
@@ -564,20 +564,20 @@ fn anonymous_works() {
 			.into(),
 		);
 
-		// other calls to anonymous allowed as long as they're not exactly the same.
-		assert_ok!(Proxy::anonymous(RuntimeOrigin::signed(1), ProxyType::JustTransfer, 0, 0));
-		assert_ok!(Proxy::anonymous(RuntimeOrigin::signed(1), ProxyType::Any, 0, 1));
-		let anon2 = Proxy::anonymous_account(&2, &ProxyType::Any, 0, None);
-		assert_ok!(Proxy::anonymous(RuntimeOrigin::signed(2), ProxyType::Any, 0, 0));
+		// other calls to pure allowed as long as they're not exactly the same.
+		assert_ok!(Proxy::create_pure(RuntimeOrigin::signed(1), ProxyType::JustTransfer, 0, 0));
+		assert_ok!(Proxy::create_pure(RuntimeOrigin::signed(1), ProxyType::Any, 0, 1));
+		let anon2 = Proxy::pure_account(&2, &ProxyType::Any, 0, None);
+		assert_ok!(Proxy::create_pure(RuntimeOrigin::signed(2), ProxyType::Any, 0, 0));
 		assert_noop!(
-			Proxy::anonymous(RuntimeOrigin::signed(1), ProxyType::Any, 0, 0),
+			Proxy::create_pure(RuntimeOrigin::signed(1), ProxyType::Any, 0, 0),
 			Error::<Test>::Duplicate
 		);
 		System::set_extrinsic_index(1);
-		assert_ok!(Proxy::anonymous(RuntimeOrigin::signed(1), ProxyType::Any, 0, 0));
+		assert_ok!(Proxy::create_pure(RuntimeOrigin::signed(1), ProxyType::Any, 0, 0));
 		System::set_extrinsic_index(0);
 		System::set_block_number(2);
-		assert_ok!(Proxy::anonymous(RuntimeOrigin::signed(1), ProxyType::Any, 0, 0));
+		assert_ok!(Proxy::create_pure(RuntimeOrigin::signed(1), ProxyType::Any, 0, 0));
 
 		let call = Box::new(call_transfer(6, 1));
 		assert_ok!(Balances::transfer(RuntimeOrigin::signed(3), anon, 5));
@@ -585,7 +585,7 @@ fn anonymous_works() {
 		System::assert_last_event(ProxyEvent::ProxyExecuted { result: Ok(()) }.into());
 		assert_eq!(Balances::free_balance(6), 1);
 
-		let call = Box::new(RuntimeCall::Proxy(ProxyCall::new_call_variant_kill_anonymous(
+		let call = Box::new(RuntimeCall::Proxy(ProxyCall::new_call_variant_kill_pure(
 			1,
 			ProxyType::Any,
 			0,
@@ -596,7 +596,7 @@ fn anonymous_works() {
 		let de = DispatchError::from(Error::<Test>::NoPermission).stripped();
 		System::assert_last_event(ProxyEvent::ProxyExecuted { result: Err(de) }.into());
 		assert_noop!(
-			Proxy::kill_anonymous(RuntimeOrigin::signed(1), 1, ProxyType::Any, 0, 1, 0),
+			Proxy::kill_pure(RuntimeOrigin::signed(1), 1, ProxyType::Any, 0, 1, 0),
 			Error::<Test>::NoPermission
 		);
 		assert_eq!(Balances::free_balance(1), 0);
diff --git a/substrate/frame/proxy/src/weights.rs b/substrate/frame/proxy/src/weights.rs
index 2d409d977f8758bd75a1fb63a29d121e604f6c88..25457d52f4391eabdac54a79e50c712bf3841ec5 100644
--- a/substrate/frame/proxy/src/weights.rs
+++ b/substrate/frame/proxy/src/weights.rs
@@ -52,8 +52,8 @@ pub trait WeightInfo {
 	fn add_proxy(p: u32, ) -> Weight;
 	fn remove_proxy(p: u32, ) -> Weight;
 	fn remove_proxies(p: u32, ) -> Weight;
-	fn anonymous(p: u32, ) -> Weight;
-	fn kill_anonymous(p: u32, ) -> Weight;
+	fn create_pure(p: u32, ) -> Weight;
+	fn kill_pure(p: u32, ) -> Weight;
 }
 
 /// Weights for pallet_proxy using the Substrate node and recommended hardware.
@@ -138,7 +138,7 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	}
 	// Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0)
 	// Storage: Proxy Proxies (r:1 w:1)
-	fn anonymous(p: u32, ) -> Weight {
+	fn create_pure(p: u32, ) -> Weight {
 		Weight::from_ref_time(31_077_000 as u64)
 			// Standard Error: 3_000
 			.saturating_add(Weight::from_ref_time(37_000 as u64).saturating_mul(p as u64))
@@ -146,7 +146,7 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 			.saturating_add(T::DbWeight::get().writes(1 as u64))
 	}
 	// Storage: Proxy Proxies (r:1 w:1)
-	fn kill_anonymous(p: u32, ) -> Weight {
+	fn kill_pure(p: u32, ) -> Weight {
 		Weight::from_ref_time(24_657_000 as u64)
 			// Standard Error: 2_000
 			.saturating_add(Weight::from_ref_time(87_000 as u64).saturating_mul(p as u64))
@@ -236,7 +236,7 @@ impl WeightInfo for () {
 	}
 	// Storage: unknown [0x3a65787472696e7369635f696e646578] (r:1 w:0)
 	// Storage: Proxy Proxies (r:1 w:1)
-	fn anonymous(p: u32, ) -> Weight {
+	fn create_pure(p: u32, ) -> Weight {
 		Weight::from_ref_time(31_077_000 as u64)
 			// Standard Error: 3_000
 			.saturating_add(Weight::from_ref_time(37_000 as u64).saturating_mul(p as u64))
@@ -244,7 +244,7 @@ impl WeightInfo for () {
 			.saturating_add(RocksDbWeight::get().writes(1 as u64))
 	}
 	// Storage: Proxy Proxies (r:1 w:1)
-	fn kill_anonymous(p: u32, ) -> Weight {
+	fn kill_pure(p: u32, ) -> Weight {
 		Weight::from_ref_time(24_657_000 as u64)
 			// Standard Error: 2_000
 			.saturating_add(Weight::from_ref_time(87_000 as u64).saturating_mul(p as u64))