@@ -27,16 +27,16 @@ fn mint_collateral<T: crate::Config>(account_id: &T::AccountId, amount: BalanceO
2727 deposit_tokens :: < T > ( get_native_currency_id :: < T > ( ) , account_id, amount) ;
2828}
2929
30- fn get_vault_id < T : crate :: Config > ( ) -> DefaultVaultId < T > {
30+ fn get_vault_id < T : crate :: Config > ( name : & ' static str ) -> DefaultVaultId < T > {
3131 VaultId :: new (
32- account ( "Vault" , 0 , 0 ) ,
32+ account ( name , 0 , 0 ) ,
3333 get_collateral_currency_id :: < T > ( ) ,
3434 get_wrapped_currency_id :: < T > ( ) ,
3535 )
3636}
3737
3838fn setup_chain < T : crate :: Config > ( ) {
39- let dummy_vault = get_vault_id :: < T > ( ) ;
39+ let dummy_vault = get_vault_id :: < T > ( "Vault" ) ;
4040
4141 Oracle :: < T > :: _set_exchange_rate (
4242 get_native_currency_id :: < T > ( ) , // for griefing collateral
@@ -114,9 +114,11 @@ fn setup_issue<T: crate::Config>(
114114 vin : u32 ,
115115 vout : u32 ,
116116 tx_size : u32 ,
117+ setup_as_replace : bool ,
117118) -> ChainState < T > {
118119 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
119- let vault_id = get_vault_id :: < T > ( ) ;
120+ let new_vault_id = get_vault_id :: < T > ( "Vault" ) ;
121+ let old_vault_id = get_vault_id :: < T > ( "OldVault" ) ;
120122 let relayer_id: T :: AccountId = account ( "Relayer" , 0 , 0 ) ;
121123
122124 mint_collateral :: < T > ( & origin, ( 1u32 << 31 ) . into ( ) ) ;
@@ -128,8 +130,12 @@ fn setup_issue<T: crate::Config>(
128130
129131 let issue_id = H256 :: zero ( ) ;
130132 let issue_request = IssueRequest {
131- requester : AccountOrVault :: Account ( origin. clone ( ) ) ,
132- vault : vault_id. clone ( ) ,
133+ requester : if setup_as_replace {
134+ AccountOrVault :: Vault ( old_vault_id. clone ( ) )
135+ } else {
136+ AccountOrVault :: Account ( origin. clone ( ) )
137+ } ,
138+ vault : new_vault_id. clone ( ) ,
133139 btc_address : vault_btc_address,
134140 amount : value. amount ( ) ,
135141 btc_height : Default :: default ( ) ,
@@ -159,11 +165,14 @@ fn setup_issue<T: crate::Config>(
159165 let transaction =
160166 BtcRelay :: < T > :: initialize_and_store_max ( relayer_id. clone ( ) , hashes, vin, outputs, tx_size as usize ) ;
161167
162- register_vault :: < T > ( vault_id. clone ( ) ) ;
168+ register_vault :: < T > ( new_vault_id. clone ( ) ) ;
169+ register_vault :: < T > ( old_vault_id. clone ( ) ) ;
170+
171+ VaultRegistry :: < T > :: try_increase_to_be_issued_tokens ( & new_vault_id, & value) . unwrap ( ) ;
172+ VaultRegistry :: < T > :: try_increase_to_be_issued_tokens ( & old_vault_id, & value) . unwrap ( ) ;
163173
164- VaultRegistry :: < T > :: try_increase_to_be_issued_tokens ( & vault_id, & value) . unwrap ( ) ;
165- let secure_id = Security :: < T > :: get_secure_id ( & vault_id. account_id ) ;
166- VaultRegistry :: < T > :: register_deposit_address ( & vault_id, secure_id) . unwrap ( ) ;
174+ let secure_id = Security :: < T > :: get_secure_id ( & new_vault_id. account_id ) ;
175+ VaultRegistry :: < T > :: register_deposit_address ( & new_vault_id, secure_id) . unwrap ( ) ;
167176
168177 ChainState {
169178 issue_id,
@@ -180,7 +189,7 @@ pub mod benchmarks {
180189 fn request_issue ( ) {
181190 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
182191 let amount = Issue :: < T > :: issue_btc_dust_value ( get_wrapped_currency_id :: < T > ( ) ) . amount ( ) + 1000u32 . into ( ) ;
183- let vault_id = get_vault_id :: < T > ( ) ;
192+ let vault_id = get_vault_id :: < T > ( "Vault" ) ;
184193 let relayer_id: T :: AccountId = account ( "Relayer" , 0 , 0 ) ;
185194
186195 mint_collateral :: < T > ( & origin, ( 1u32 << 31 ) . into ( ) ) ;
@@ -216,7 +225,7 @@ pub mod benchmarks {
216225 #[ benchmark]
217226 fn execute_issue_exact ( h : Linear < 2 , 10 > , i : Linear < 1 , 10 > , o : Linear < 1 , 10 > , b : Linear < 770 , 2_048 > ) {
218227 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
219- let issue_data = setup_issue :: < T > ( PaymentType :: Exact , h, i, o, b) ;
228+ let issue_data = setup_issue :: < T > ( PaymentType :: Exact , h, i, o, b, false ) ;
220229
221230 #[ extrinsic_call]
222231 execute_issue ( RawOrigin :: Signed ( origin) , issue_data. issue_id , issue_data. transaction ) ;
@@ -225,7 +234,7 @@ pub mod benchmarks {
225234 #[ benchmark]
226235 fn execute_issue_overpayment ( h : Linear < 2 , 10 > , i : Linear < 1 , 10 > , o : Linear < 1 , 10 > , b : Linear < 770 , 2_048 > ) {
227236 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
228- let issue_data = setup_issue :: < T > ( PaymentType :: Overpayment , h, i, o, b) ;
237+ let issue_data = setup_issue :: < T > ( PaymentType :: Overpayment , h, i, o, b, false ) ;
229238
230239 #[ extrinsic_call]
231240 execute_issue ( RawOrigin :: Signed ( origin) , issue_data. issue_id , issue_data. transaction ) ;
@@ -234,7 +243,7 @@ pub mod benchmarks {
234243 #[ benchmark]
235244 fn execute_issue_underpayment ( h : Linear < 2 , 10 > , i : Linear < 1 , 10 > , o : Linear < 1 , 10 > , b : Linear < 770 , 2_048 > ) {
236245 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
237- let issue_data = setup_issue :: < T > ( PaymentType :: Underpayment , h, i, o, b) ;
246+ let issue_data = setup_issue :: < T > ( PaymentType :: Underpayment , h, i, o, b, false ) ;
238247
239248 #[ extrinsic_call]
240249 execute_issue ( RawOrigin :: Signed ( origin) , issue_data. issue_id , issue_data. transaction ) ;
@@ -243,7 +252,7 @@ pub mod benchmarks {
243252 #[ benchmark]
244253 fn execute_expired_issue_exact ( h : Linear < 2 , 10 > , i : Linear < 1 , 10 > , o : Linear < 1 , 10 > , b : Linear < 770 , 2_048 > ) {
245254 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
246- let issue_data = setup_issue :: < T > ( PaymentType :: Exact , h, i, o, b) ;
255+ let issue_data = setup_issue :: < T > ( PaymentType :: Exact , h, i, o, b, false ) ;
247256 expire_issue :: < T > ( & issue_data) ;
248257
249258 #[ extrinsic_call]
@@ -253,7 +262,7 @@ pub mod benchmarks {
253262 #[ benchmark]
254263 fn execute_expired_issue_overpayment ( h : Linear < 2 , 10 > , i : Linear < 1 , 10 > , o : Linear < 1 , 10 > , b : Linear < 770 , 2_048 > ) {
255264 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
256- let issue_data = setup_issue :: < T > ( PaymentType :: Overpayment , h, i, o, b) ;
265+ let issue_data = setup_issue :: < T > ( PaymentType :: Overpayment , h, i, o, b, false ) ;
257266 expire_issue :: < T > ( & issue_data) ;
258267
259268 #[ extrinsic_call]
@@ -263,7 +272,7 @@ pub mod benchmarks {
263272 #[ benchmark]
264273 fn execute_expired_issue_underpayment ( h : Linear < 2 , 10 > , i : Linear < 1 , 10 > , o : Linear < 1 , 10 > , b : Linear < 770 , 2_048 > ) {
265274 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
266- let issue_data = setup_issue :: < T > ( PaymentType :: Underpayment , h, i, o, b) ;
275+ let issue_data = setup_issue :: < T > ( PaymentType :: Underpayment , h, i, o, b, false ) ;
267276 expire_issue :: < T > ( & issue_data) ;
268277
269278 #[ extrinsic_call]
@@ -274,7 +283,18 @@ pub mod benchmarks {
274283 fn cancel_issue ( ) {
275284 let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
276285
277- let issue_data = setup_issue :: < T > ( PaymentType :: Exact , 2 , 2 , 2 , 770 ) ;
286+ let issue_data = setup_issue :: < T > ( PaymentType :: Exact , 2 , 2 , 2 , 770 , false ) ;
287+ expire_issue :: < T > ( & issue_data) ;
288+
289+ #[ extrinsic_call]
290+ cancel_issue ( RawOrigin :: Signed ( origin) , issue_data. issue_id ) ;
291+ }
292+
293+ #[ benchmark]
294+ fn cancel_issue_for_replace ( ) {
295+ let origin: T :: AccountId = account ( "Origin" , 0 , 0 ) ;
296+
297+ let issue_data = setup_issue :: < T > ( PaymentType :: Exact , 2 , 2 , 2 , 770 , true ) ;
278298 expire_issue :: < T > ( & issue_data) ;
279299
280300 #[ extrinsic_call]
0 commit comments