@@ -31,7 +31,7 @@ const SEED: u32 = 0;
31
31
fn setup_multi < T : Config > (
32
32
s : u32 ,
33
33
z : u32 ,
34
- ) -> Result < ( Vec < T :: AccountId > , OpaqueCall < T > ) , & ' static str > {
34
+ ) -> Result < ( Vec < T :: AccountId > , Box < < T as Config > :: Call > ) , & ' static str > {
35
35
let mut signatories: Vec < T :: AccountId > = Vec :: new ( ) ;
36
36
for i in 0 ..s {
37
37
let signatory = account ( "signatory" , i, SEED ) ;
@@ -44,8 +44,7 @@ fn setup_multi<T: Config>(
44
44
// Must first convert to outer call type.
45
45
let call: <T as Config >:: Call =
46
46
frame_system:: Call :: < T > :: remark { remark : vec ! [ 0 ; z as usize ] } . into ( ) ;
47
- let call_data = OpaqueCall :: < T > :: from_encoded ( call. encode ( ) ) ;
48
- Ok ( ( signatories, call_data) )
47
+ Ok ( ( signatories, Box :: new ( call) ) )
49
48
}
50
49
51
50
benchmarks ! {
@@ -74,35 +73,15 @@ benchmarks! {
74
73
// Transaction Length
75
74
let z in 0 .. 10_000 ;
76
75
let ( mut signatories, call) = setup_multi:: <T >( s, z) ?;
77
- let call_hash = blake2_256( call. encoded( ) ) ;
78
- let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
79
- let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
80
- // Whitelist caller account from further DB operations.
81
- let caller_key = frame_system:: Account :: <T >:: hashed_key_for( & caller) ;
82
- frame_benchmarking:: benchmarking:: add_to_whitelist( caller_key. into( ) ) ;
83
- } : as_multi( RawOrigin :: Signed ( caller) , s as u16 , signatories, None , call, false , Weight :: zero( ) )
84
- verify {
85
- assert!( Multisigs :: <T >:: contains_key( multi_account_id, call_hash) ) ;
86
- assert!( !Calls :: <T >:: contains_key( call_hash) ) ;
87
- }
88
-
89
- as_multi_create_store {
90
- // Signatories, need at least 2 total people
91
- let s in 2 .. T :: MaxSignatories :: get( ) as u32 ;
92
- // Transaction Length
93
- let z in 0 .. 10_000 ;
94
- let ( mut signatories, call) = setup_multi:: <T >( s, z) ?;
95
- let call_hash = blake2_256( call. encoded( ) ) ;
76
+ let call_hash = call. using_encoded( blake2_256) ;
96
77
let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
97
78
let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
98
- T :: Currency :: make_free_balance_be( & caller, BalanceOf :: <T >:: max_value( ) ) ;
99
79
// Whitelist caller account from further DB operations.
100
80
let caller_key = frame_system:: Account :: <T >:: hashed_key_for( & caller) ;
101
81
frame_benchmarking:: benchmarking:: add_to_whitelist( caller_key. into( ) ) ;
102
- } : as_multi( RawOrigin :: Signed ( caller) , s as u16 , signatories, None , call, true , Weight :: zero( ) )
82
+ } : as_multi( RawOrigin :: Signed ( caller) , s as u16 , signatories, None , call, Weight :: zero( ) )
103
83
verify {
104
84
assert!( Multisigs :: <T >:: contains_key( multi_account_id, call_hash) ) ;
105
- assert!( Calls :: <T >:: contains_key( call_hash) ) ;
106
85
}
107
86
108
87
as_multi_approve {
@@ -111,49 +90,22 @@ benchmarks! {
111
90
// Transaction Length
112
91
let z in 0 .. 10_000 ;
113
92
let ( mut signatories, call) = setup_multi:: <T >( s, z) ?;
114
- let call_hash = blake2_256( call. encoded( ) ) ;
115
- let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
116
- let mut signatories2 = signatories. clone( ) ;
117
- let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
118
- // before the call, get the timepoint
119
- let timepoint = Multisig :: <T >:: timepoint( ) ;
120
- // Create the multi, storing for worst case
121
- Multisig :: <T >:: as_multi( RawOrigin :: Signed ( caller) . into( ) , s as u16 , signatories, None , call. clone( ) , true , Weight :: zero( ) ) ?;
122
- assert!( Calls :: <T >:: contains_key( call_hash) ) ;
123
- let caller2 = signatories2. remove( 0 ) ;
124
- // Whitelist caller account from further DB operations.
125
- let caller_key = frame_system:: Account :: <T >:: hashed_key_for( & caller2) ;
126
- frame_benchmarking:: benchmarking:: add_to_whitelist( caller_key. into( ) ) ;
127
- } : as_multi( RawOrigin :: Signed ( caller2) , s as u16 , signatories2, Some ( timepoint) , call, false , Weight :: zero( ) )
128
- verify {
129
- let multisig = Multisigs :: <T >:: get( multi_account_id, call_hash) . ok_or( "multisig not created" ) ?;
130
- assert_eq!( multisig. approvals. len( ) , 2 ) ;
131
- }
132
-
133
- as_multi_approve_store {
134
- // Signatories, need at least 3 people (so we don't complete the multisig)
135
- let s in 3 .. T :: MaxSignatories :: get( ) as u32 ;
136
- // Transaction Length
137
- let z in 0 .. 10_000 ;
138
- let ( mut signatories, call) = setup_multi:: <T >( s, z) ?;
139
- let call_hash = blake2_256( call. encoded( ) ) ;
93
+ let call_hash = call. using_encoded( blake2_256) ;
140
94
let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
141
95
let mut signatories2 = signatories. clone( ) ;
142
96
let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
143
97
// before the call, get the timepoint
144
98
let timepoint = Multisig :: <T >:: timepoint( ) ;
145
- // Create the multi, not storing
146
- Multisig :: <T >:: as_multi( RawOrigin :: Signed ( caller) . into( ) , s as u16 , signatories, None , call. clone( ) , false , Weight :: zero( ) ) ?;
147
- assert!( !Calls :: <T >:: contains_key( call_hash) ) ;
99
+ // Create the multi
100
+ Multisig :: <T >:: as_multi( RawOrigin :: Signed ( caller) . into( ) , s as u16 , signatories, None , call. clone( ) , Weight :: zero( ) ) ?;
148
101
let caller2 = signatories2. remove( 0 ) ;
149
102
// Whitelist caller account from further DB operations.
150
103
let caller_key = frame_system:: Account :: <T >:: hashed_key_for( & caller2) ;
151
104
frame_benchmarking:: benchmarking:: add_to_whitelist( caller_key. into( ) ) ;
152
- } : as_multi( RawOrigin :: Signed ( caller2) , s as u16 , signatories2, Some ( timepoint) , call, true , Weight :: zero( ) )
105
+ } : as_multi( RawOrigin :: Signed ( caller2) , s as u16 , signatories2, Some ( timepoint) , call, Weight :: zero( ) )
153
106
verify {
154
107
let multisig = Multisigs :: <T >:: get( multi_account_id, call_hash) . ok_or( "multisig not created" ) ?;
155
108
assert_eq!( multisig. approvals. len( ) , 2 ) ;
156
- assert!( Calls :: <T >:: contains_key( call_hash) ) ;
157
109
}
158
110
159
111
as_multi_complete {
@@ -162,27 +114,27 @@ benchmarks! {
162
114
// Transaction Length
163
115
let z in 0 .. 10_000 ;
164
116
let ( mut signatories, call) = setup_multi:: <T >( s, z) ?;
165
- let call_hash = blake2_256 ( call. encoded ( ) ) ;
117
+ let call_hash = call. using_encoded ( blake2_256 ) ;
166
118
let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
167
119
let mut signatories2 = signatories. clone( ) ;
168
120
let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
169
121
// before the call, get the timepoint
170
122
let timepoint = Multisig :: <T >:: timepoint( ) ;
171
- // Create the multi, storing it for worst case
172
- Multisig :: <T >:: as_multi( RawOrigin :: Signed ( caller) . into( ) , s as u16 , signatories, None , call. clone( ) , true , Weight :: zero( ) ) ?;
123
+ // Create the multi
124
+ Multisig :: <T >:: as_multi( RawOrigin :: Signed ( caller) . into( ) , s as u16 , signatories, None , call. clone( ) , Weight :: zero( ) ) ?;
173
125
// Everyone except the first person approves
174
126
for i in 1 .. s - 1 {
175
127
let mut signatories_loop = signatories2. clone( ) ;
176
128
let caller_loop = signatories_loop. remove( i as usize ) ;
177
129
let o = RawOrigin :: Signed ( caller_loop) . into( ) ;
178
- Multisig :: <T >:: as_multi( o, s as u16 , signatories_loop, Some ( timepoint) , call. clone( ) , false , Weight :: zero( ) ) ?;
130
+ Multisig :: <T >:: as_multi( o, s as u16 , signatories_loop, Some ( timepoint) , call. clone( ) , Weight :: zero( ) ) ?;
179
131
}
180
132
let caller2 = signatories2. remove( 0 ) ;
181
133
assert!( Multisigs :: <T >:: contains_key( & multi_account_id, call_hash) ) ;
182
134
// Whitelist caller account from further DB operations.
183
135
let caller_key = frame_system:: Account :: <T >:: hashed_key_for( & caller2) ;
184
136
frame_benchmarking:: benchmarking:: add_to_whitelist( caller_key. into( ) ) ;
185
- } : as_multi( RawOrigin :: Signed ( caller2) , s as u16 , signatories2, Some ( timepoint) , call, false , Weight :: MAX )
137
+ } : as_multi( RawOrigin :: Signed ( caller2) , s as u16 , signatories2, Some ( timepoint) , call, Weight :: MAX )
186
138
verify {
187
139
assert!( !Multisigs :: <T >:: contains_key( & multi_account_id, call_hash) ) ;
188
140
}
@@ -195,7 +147,7 @@ benchmarks! {
195
147
let ( mut signatories, call) = setup_multi:: <T >( s, z) ?;
196
148
let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
197
149
let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
198
- let call_hash = blake2_256 ( call. encoded ( ) ) ;
150
+ let call_hash = call. using_encoded ( blake2_256 ) ;
199
151
// Whitelist caller account from further DB operations.
200
152
let caller_key = frame_system:: Account :: <T >:: hashed_key_for( & caller) ;
201
153
frame_benchmarking:: benchmarking:: add_to_whitelist( caller_key. into( ) ) ;
@@ -214,7 +166,7 @@ benchmarks! {
214
166
let mut signatories2 = signatories. clone( ) ;
215
167
let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
216
168
let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
217
- let call_hash = blake2_256 ( call. encoded ( ) ) ;
169
+ let call_hash = call. using_encoded ( blake2_256 ) ;
218
170
// before the call, get the timepoint
219
171
let timepoint = Multisig :: <T >:: timepoint( ) ;
220
172
// Create the multi
@@ -224,7 +176,6 @@ benchmarks! {
224
176
signatories,
225
177
None ,
226
178
call,
227
- false ,
228
179
Weight :: zero( )
229
180
) ?;
230
181
let caller2 = signatories2. remove( 0 ) ;
@@ -237,45 +188,6 @@ benchmarks! {
237
188
assert_eq!( multisig. approvals. len( ) , 2 ) ;
238
189
}
239
190
240
- approve_as_multi_complete {
241
- // Signatories, need at least 2 people
242
- let s in 2 .. T :: MaxSignatories :: get( ) as u32 ;
243
- // Transaction Length, not a component
244
- let z = 10_000 ;
245
- let ( mut signatories, call) = setup_multi:: <T >( s, z) ?;
246
- let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
247
- let mut signatories2 = signatories. clone( ) ;
248
- let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
249
- T :: Currency :: make_free_balance_be( & caller, BalanceOf :: <T >:: max_value( ) ) ;
250
- let call_hash = blake2_256( call. encoded( ) ) ;
251
- // before the call, get the timepoint
252
- let timepoint = Multisig :: <T >:: timepoint( ) ;
253
- // Create the multi
254
- Multisig :: <T >:: as_multi( RawOrigin :: Signed ( caller) . into( ) , s as u16 , signatories, None , call. clone( ) , true , Weight :: zero( ) ) ?;
255
- // Everyone except the first person approves
256
- for i in 1 .. s - 1 {
257
- let mut signatories_loop = signatories2. clone( ) ;
258
- let caller_loop = signatories_loop. remove( i as usize ) ;
259
- let o = RawOrigin :: Signed ( caller_loop) . into( ) ;
260
- Multisig :: <T >:: as_multi( o, s as u16 , signatories_loop, Some ( timepoint) , call. clone( ) , false , Weight :: zero( ) ) ?;
261
- }
262
- let caller2 = signatories2. remove( 0 ) ;
263
- assert!( Multisigs :: <T >:: contains_key( & multi_account_id, call_hash) ) ;
264
- // Whitelist caller account from further DB operations.
265
- let caller_key = frame_system:: Account :: <T >:: hashed_key_for( & caller2) ;
266
- frame_benchmarking:: benchmarking:: add_to_whitelist( caller_key. into( ) ) ;
267
- } : approve_as_multi(
268
- RawOrigin :: Signed ( caller2) ,
269
- s as u16 ,
270
- signatories2,
271
- Some ( timepoint) ,
272
- call_hash,
273
- Weight :: MAX
274
- )
275
- verify {
276
- assert!( !Multisigs :: <T >:: contains_key( multi_account_id, call_hash) ) ;
277
- }
278
-
279
191
cancel_as_multi {
280
192
// Signatories, need at least 2 people
281
193
let s in 2 .. T :: MaxSignatories :: get( ) as u32 ;
@@ -284,20 +196,18 @@ benchmarks! {
284
196
let ( mut signatories, call) = setup_multi:: <T >( s, z) ?;
285
197
let multi_account_id = Multisig :: <T >:: multi_account_id( & signatories, s. try_into( ) . unwrap( ) ) ;
286
198
let caller = signatories. pop( ) . ok_or( "signatories should have len 2 or more" ) ?;
287
- let call_hash = blake2_256 ( call. encoded ( ) ) ;
199
+ let call_hash = call. using_encoded ( blake2_256 ) ;
288
200
let timepoint = Multisig :: <T >:: timepoint( ) ;
289
201
// Create the multi
290
202
let o = RawOrigin :: Signed ( caller. clone( ) ) . into( ) ;
291
- Multisig :: <T >:: as_multi( o, s as u16 , signatories. clone( ) , None , call, true , Weight :: zero( ) ) ?;
203
+ Multisig :: <T >:: as_multi( o, s as u16 , signatories. clone( ) , None , call, Weight :: zero( ) ) ?;
292
204
assert!( Multisigs :: <T >:: contains_key( & multi_account_id, call_hash) ) ;
293
- assert!( Calls :: <T >:: contains_key( call_hash) ) ;
294
205
// Whitelist caller account from further DB operations.
295
206
let caller_key = frame_system:: Account :: <T >:: hashed_key_for( & caller) ;
296
207
frame_benchmarking:: benchmarking:: add_to_whitelist( caller_key. into( ) ) ;
297
208
} : _( RawOrigin :: Signed ( caller) , s as u16 , signatories, timepoint, call_hash)
298
209
verify {
299
210
assert!( !Multisigs :: <T >:: contains_key( multi_account_id, call_hash) ) ;
300
- assert!( !Calls :: <T >:: contains_key( call_hash) ) ;
301
211
}
302
212
303
213
impl_benchmark_test_suite!( Multisig , crate :: tests:: new_test_ext( ) , crate :: tests:: Test ) ;
0 commit comments