Skip to content

Commit 37ec4d1

Browse files
authored
chore: instantiatable names pallet (#779)
Part of KILTprotocol/ticket#3650. Makes the web3name pallet instantiatable. I did not rename the pallet/crate itself, and was not sure if I wanted to do it. That could break more things and I thought we might want to leave everything else as-is.
1 parent 09b67ae commit 37ec4d1

File tree

7 files changed

+194
-188
lines changed

7 files changed

+194
-188
lines changed

pallets/pallet-web3-names/src/benchmarking.rs

Lines changed: 56 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
// If you feel like getting in touch with us, you can do so at [email protected]
1818
#![cfg(feature = "runtime-benchmarks")]
1919

20-
use frame_benchmarking::{account, benchmarks};
20+
use frame_benchmarking::{account, benchmarks_instance_pallet};
2121
use frame_support::{
2222
pallet_prelude::EnsureOrigin,
2323
sp_runtime::{traits::Zero, SaturatedConversion},
@@ -41,163 +41,165 @@ use crate::{
4141
const CALLER_SEED: u32 = 0;
4242
const OWNER_SEED: u32 = 1;
4343

44-
fn make_free_for_did<T: Config>(account: &AccountIdOf<T>)
44+
fn make_free_for_did<T, I>(account: &AccountIdOf<T>)
4545
where
46-
<T as Config>::Currency: Mutate<T::AccountId>,
46+
T: Config<I>,
47+
I: 'static,
48+
<T as Config<I>>::Currency: Mutate<T::AccountId>,
4749
{
48-
let balance = <CurrencyOf<T> as Inspect<AccountIdOf<T>>>::minimum_balance()
49-
+ <T as Config>::Deposit::get()
50-
+ <T as Config>::Deposit::get();
51-
CurrencyOf::<T>::set_balance(account, balance);
50+
let balance = <CurrencyOf<T, I> as Inspect<AccountIdOf<T>>>::minimum_balance()
51+
+ <T as Config<I>>::Deposit::get()
52+
+ <T as Config<I>>::Deposit::get();
53+
CurrencyOf::<T, I>::set_balance(account, balance);
5254
}
5355

5456
fn generate_web3_name_input(length: usize) -> Vec<u8> {
5557
vec![b'1'; length]
5658
}
5759

58-
benchmarks! {
60+
benchmarks_instance_pallet! {
5961
where_clause {
6062
where
6163
T::AccountId: From<sr25519::Public>,
6264
T::Web3NameOwner: From<T::AccountId>,
6365
T::OwnerOrigin: GenerateBenchmarkOrigin<T::RuntimeOrigin, T::AccountId, T::Web3NameOwner>,
6466
T::BanOrigin: EnsureOrigin<T::RuntimeOrigin>,
65-
<T as Config>::Currency: Mutate<T::AccountId>,
67+
<T as Config<I>>::Currency: Mutate<T::AccountId>,
6668
}
6769

6870
claim {
6971
let n in (T::MinNameLength::get()) .. (T::MaxNameLength::get());
7072
let caller: AccountIdOf<T> = account("caller", 0, CALLER_SEED);
71-
let owner: Web3NameOwnerOf<T> = account("owner", 0, OWNER_SEED);
73+
let owner: Web3NameOwnerOf<T, I> = account("owner", 0, OWNER_SEED);
7274
let web3_name_input: BoundedVec<u8, T::MaxNameLength> = BoundedVec::try_from(generate_web3_name_input(n.saturated_into())).expect("BoundedVec creation should not fail.");
7375
let web3_name_input_clone = web3_name_input.clone();
7476
let origin = T::OwnerOrigin::generate_origin(caller.clone(), owner.clone());
7577

76-
make_free_for_did::<T>(&caller);
78+
make_free_for_did::<T, I>(&caller);
7779
}: _<T::RuntimeOrigin>(origin, web3_name_input_clone)
7880
verify {
79-
let web3_name = Web3NameOf::<T>::try_from(web3_name_input.to_vec()).unwrap();
80-
assert!(Names::<T>::get(&owner).is_some());
81-
assert!(Owner::<T>::get(&web3_name).is_some());
81+
let web3_name = Web3NameOf::<T, I>::try_from(web3_name_input.to_vec()).unwrap();
82+
assert!(Names::<T, I>::get(&owner).is_some());
83+
assert!(Owner::<T, I>::get(&web3_name).is_some());
8284
}
8385

8486
release_by_owner {
8587
let caller: AccountIdOf<T> = account("caller", 0, CALLER_SEED);
86-
let owner: Web3NameOwnerOf<T> = account("owner", 0, OWNER_SEED);
88+
let owner: Web3NameOwnerOf<T, I> = account("owner", 0, OWNER_SEED);
8789
let web3_name_input: BoundedVec<u8, T::MaxNameLength> = BoundedVec::try_from(generate_web3_name_input(T::MaxNameLength::get().saturated_into())).expect("BoundedVec creation should not fail.");
8890
let origin = T::OwnerOrigin::generate_origin(caller.clone(), owner.clone());
8991

90-
make_free_for_did::<T>(&caller);
91-
Pallet::<T>::claim(origin.clone(), web3_name_input.clone()).expect("Should register the claimed web3 name.");
92+
make_free_for_did::<T, I>(&caller);
93+
Pallet::<T, I>::claim(origin.clone(), web3_name_input.clone()).expect("Should register the claimed web3 name.");
9294
}: _<T::RuntimeOrigin>(origin)
9395
verify {
94-
let web3_name = Web3NameOf::<T>::try_from(web3_name_input.to_vec()).unwrap();
95-
assert!(Names::<T>::get(&owner).is_none());
96-
assert!(Owner::<T>::get(&web3_name).is_none());
96+
let web3_name = Web3NameOf::<T, I>::try_from(web3_name_input.to_vec()).unwrap();
97+
assert!(Names::<T, I>::get(&owner).is_none());
98+
assert!(Owner::<T, I>::get(&web3_name).is_none());
9799
}
98100

99101
reclaim_deposit {
100102
let n in (T::MinNameLength::get()) .. (T::MaxNameLength::get());
101103
let caller: AccountIdOf<T> = account("caller", 0, CALLER_SEED);
102-
let owner: Web3NameOwnerOf<T> = account("owner", 0, OWNER_SEED);
104+
let owner: Web3NameOwnerOf<T, I> = account("owner", 0, OWNER_SEED);
103105
let web3_name_input: BoundedVec<u8, T::MaxNameLength> = BoundedVec::try_from(generate_web3_name_input(n.saturated_into())).expect("BoundedVec creation should not fail.");
104106
let web3_name_input_clone = web3_name_input.clone();
105107
let did_origin = T::OwnerOrigin::generate_origin(caller.clone(), owner.clone());
106108
let signed_origin = RawOrigin::Signed(caller.clone());
107109

108-
make_free_for_did::<T>(&caller);
109-
Pallet::<T>::claim(did_origin, web3_name_input.clone()).expect("Should register the claimed web3 name.");
110+
make_free_for_did::<T, I>(&caller);
111+
Pallet::<T, I>::claim(did_origin, web3_name_input.clone()).expect("Should register the claimed web3 name.");
110112
}: _(signed_origin, web3_name_input_clone)
111113
verify {
112-
let web3_name = Web3NameOf::<T>::try_from(web3_name_input.to_vec()).unwrap();
113-
assert!(Names::<T>::get(&owner).is_none());
114-
assert!(Owner::<T>::get(&web3_name).is_none());
114+
let web3_name = Web3NameOf::<T, I>::try_from(web3_name_input.to_vec()).unwrap();
115+
assert!(Names::<T, I>::get(&owner).is_none());
116+
assert!(Owner::<T, I>::get(&web3_name).is_none());
115117
}
116118

117119
ban {
118120
let n in (T::MinNameLength::get()) .. (T::MaxNameLength::get());
119121
let caller: AccountIdOf<T> = account("caller", 0, CALLER_SEED);
120-
let owner: Web3NameOwnerOf<T> = account("owner", 0, OWNER_SEED);
122+
let owner: Web3NameOwnerOf<T, I> = account("owner", 0, OWNER_SEED);
121123
let web3_name_input: BoundedVec<u8, T::MaxNameLength> = BoundedVec::try_from(generate_web3_name_input(n.saturated_into())).expect("BoundedVec creation should not fail.");
122124
let web3_name_input_clone = web3_name_input.clone();
123125
let did_origin = T::OwnerOrigin::generate_origin(caller.clone(), owner.clone());
124126
let ban_origin = RawOrigin::Root;
125127

126-
make_free_for_did::<T>(&caller);
127-
Pallet::<T>::claim(did_origin, web3_name_input.clone()).expect("Should register the claimed web3 name.");
128+
make_free_for_did::<T, I>(&caller);
129+
Pallet::<T, I>::claim(did_origin, web3_name_input.clone()).expect("Should register the claimed web3 name.");
128130
}: _(ban_origin, web3_name_input_clone)
129131
verify {
130-
let web3_name = Web3NameOf::<T>::try_from(web3_name_input.to_vec()).unwrap();
131-
assert!(Names::<T>::get(&owner).is_none());
132-
assert!(Owner::<T>::get(&web3_name).is_none());
133-
assert!(Banned::<T>::get(&web3_name).is_some());
132+
let web3_name = Web3NameOf::<T, I>::try_from(web3_name_input.to_vec()).unwrap();
133+
assert!(Names::<T, I>::get(&owner).is_none());
134+
assert!(Owner::<T, I>::get(&web3_name).is_none());
135+
assert!(Banned::<T, I>::get(&web3_name).is_some());
134136
}
135137

136138
unban {
137139
let n in (T::MinNameLength::get()) .. (T::MaxNameLength::get());
138140
let caller: AccountIdOf<T> = account("caller", 0, CALLER_SEED);
139-
let owner: Web3NameOwnerOf<T> = account("owner", 0, OWNER_SEED);
141+
let owner: Web3NameOwnerOf<T, I> = account("owner", 0, OWNER_SEED);
140142
let web3_name_input: BoundedVec<u8, T::MaxNameLength> = BoundedVec::try_from(generate_web3_name_input(n.saturated_into())).expect("BoundedVec creation should not fail.");
141143
let web3_name_input_clone = web3_name_input.clone();
142144
let ban_origin = RawOrigin::Root;
143145

144-
make_free_for_did::<T>(&caller);
145-
Pallet::<T>::ban(ban_origin.clone().into(), web3_name_input.clone()).expect("Should ban the web3 name.");
146+
make_free_for_did::<T, I>(&caller);
147+
Pallet::<T, I>::ban(ban_origin.clone().into(), web3_name_input.clone()).expect("Should ban the web3 name.");
146148
}: _(ban_origin, web3_name_input_clone)
147149
verify {
148-
let web3_name = Web3NameOf::<T>::try_from(web3_name_input.to_vec()).unwrap();
149-
assert!(Names::<T>::get(&owner).is_none());
150-
assert!(Owner::<T>::get(&web3_name).is_none());
151-
assert!(Banned::<T>::get(&web3_name).is_none());
150+
let web3_name = Web3NameOf::<T, I>::try_from(web3_name_input.to_vec()).unwrap();
151+
assert!(Names::<T, I>::get(&owner).is_none());
152+
assert!(Owner::<T, I>::get(&web3_name).is_none());
153+
assert!(Banned::<T, I>::get(&web3_name).is_none());
152154
}
153155

154156
change_deposit_owner {
155157
let deposit_owner_old: AccountIdOf<T> = account("caller", 0, CALLER_SEED);
156158
let deposit_owner_new: AccountIdOf<T> = account("caller", 1, CALLER_SEED);
157-
let owner: Web3NameOwnerOf<T> = account("owner", 0, OWNER_SEED);
159+
let owner: Web3NameOwnerOf<T, I> = account("owner", 0, OWNER_SEED);
158160
let web3_name_input: BoundedVec<u8, T::MaxNameLength> = BoundedVec::try_from(
159161
generate_web3_name_input(T::MaxNameLength::get().saturated_into())
160162
).expect("BoundedVec creation should not fail.");
161163
let web3_name_input_clone = web3_name_input.clone();
162164
let origin_create = T::OwnerOrigin::generate_origin(deposit_owner_old.clone(), owner.clone());
163165

164-
make_free_for_did::<T>(&deposit_owner_old);
165-
make_free_for_did::<T>(&deposit_owner_new);
166-
Pallet::<T>::claim(origin_create, web3_name_input.clone()).expect("Should register the claimed web3 name.");
166+
make_free_for_did::<T, I>(&deposit_owner_old);
167+
make_free_for_did::<T, I>(&deposit_owner_new);
168+
Pallet::<T, I>::claim(origin_create, web3_name_input.clone()).expect("Should register the claimed web3 name.");
167169

168170
let origin = T::OwnerOrigin::generate_origin(deposit_owner_new.clone(), owner);
169171
}: _<T::RuntimeOrigin>(origin)
170172
verify {
171-
let web3_name = Web3NameOf::<T>::try_from(web3_name_input.to_vec()).unwrap();
172-
assert_eq!(Owner::<T>::get(&web3_name).expect("w3n should exists").deposit, Deposit {
173+
let web3_name = Web3NameOf::<T, I>::try_from(web3_name_input.to_vec()).unwrap();
174+
assert_eq!(Owner::<T, I>::get(&web3_name).expect("w3n should exists").deposit, Deposit {
173175
owner: deposit_owner_new,
174-
amount: <T as Config>::Deposit::get(),
176+
amount: <T as Config<I>>::Deposit::get(),
175177
});
176178
}
177179

178180
update_deposit {
179181
let deposit_owner: AccountIdOf<T> = account("caller", 0, CALLER_SEED);
180-
let owner: Web3NameOwnerOf<T> = account("owner", 0, OWNER_SEED);
182+
let owner: Web3NameOwnerOf<T, I> = account("owner", 0, OWNER_SEED);
181183
let web3_name_input: BoundedVec<u8, T::MaxNameLength> = BoundedVec::try_from(
182184
generate_web3_name_input(T::MaxNameLength::get().saturated_into())
183185
).expect("BoundedVec creation should not fail.");
184-
let web3_name = Web3NameOf::<T>::try_from(web3_name_input.to_vec()).unwrap();
186+
let web3_name = Web3NameOf::<T, I>::try_from(web3_name_input.to_vec()).unwrap();
185187

186-
make_free_for_did::<T>(&deposit_owner);
187-
insert_raw_w3n::<T>(
188+
make_free_for_did::<T, I>(&deposit_owner);
189+
insert_raw_w3n::<T, I>(
188190
deposit_owner.clone(),
189191
owner,
190192
web3_name.clone(),
191193
BlockNumberFor::<T>::zero(),
192-
<T as Config>::Deposit::get() + <T as Config>::Deposit::get()
194+
<T as Config<I>>::Deposit::get() + <T as Config<I>>::Deposit::get()
193195
);
194196

195197
let origin = RawOrigin::Signed(deposit_owner.clone());
196198
}: _(origin, web3_name_input)
197199
verify {
198-
assert_eq!(Owner::<T>::get(&web3_name).expect("w3n should exists").deposit, Deposit {
200+
assert_eq!(Owner::<T, I>::get(&web3_name).expect("w3n should exists").deposit, Deposit {
199201
owner: deposit_owner,
200-
amount: <T as Config>::Deposit::get(),
202+
amount: <T as Config<I>>::Deposit::get(),
201203
});
202204
}
203205

0 commit comments

Comments
 (0)