Skip to content

Commit ca767e9

Browse files
committed
fix: added fee calculation , benchmarking, test cases, migration
1 parent 4a0f29b commit ca767e9

File tree

26 files changed

+2641
-1589
lines changed

26 files changed

+2641
-1589
lines changed

Cargo.lock

Lines changed: 489 additions & 466 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/issue/src/benchmarking.rs

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3838
fn 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

Comments
 (0)