Skip to content

Commit fecd5c3

Browse files
committed
fix: _execute_redeem
1 parent ed23ca3 commit fecd5c3

2 files changed

Lines changed: 9 additions & 16 deletions

File tree

  • crates/redeem/src
  • parachain/runtime/runtime-tests/src/parachain

crates/redeem/src/lib.rs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -753,28 +753,19 @@ impl<T: Config> Pallet<T> {
753753
)?;
754754

755755
// if redeem has issue_id its a replace request
756-
if let Some(issue_id) = redeem.issue_id {
756+
let (fee, redeem_amount) = if let Some(issue_id) = redeem.issue_id {
757757
let replace_fee = redeem.fee();
758758

759759
//redeem tokens for old vault
760760
let redeem_tokens = redeem.amount_btc().checked_sub(&replace_fee)?;
761761

762-
//Decreases to_be_redeem and issued tokens for old vault
763-
ext::vault_registry::redeem_tokens::<T>(
764-
&redeem.vault,
765-
&redeem_tokens,
766-
&redeem.premium()?,
767-
&redeem.redeemer,
768-
)?;
769-
770762
// complete_vault_issue increases issued_tokens & decreases to_be_issued for new vault
771763
ext::issue::complete_vault_issue::<T>(issue_id)?;
772764

773765
// mint wrapped fees
774766
replace_fee.mint_to(&ext::fee::fee_pool_account_id::<T>())?;
775767

776-
// distribute rewards
777-
ext::fee::distribute_rewards::<T>(&replace_fee)?;
768+
(replace_fee, redeem_tokens)
778769
} else {
779770
// burn amount (without parachain fee, but including transfer fee)
780771
let burn_amount = redeem.amount_btc().checked_add(&redeem.transfer_fee_btc())?;
@@ -784,11 +775,13 @@ impl<T: Config> Pallet<T> {
784775
let fee = redeem.fee();
785776
fee.unlock_on(&redeem.redeemer)?;
786777
fee.transfer(&redeem.redeemer, &ext::fee::fee_pool_account_id::<T>())?;
787-
ext::fee::distribute_rewards::<T>(&fee)?;
778+
(fee, burn_amount)
779+
};
788780

789-
//redeem tokens for vault
790-
ext::vault_registry::redeem_tokens::<T>(&redeem.vault, &burn_amount, &redeem.premium()?, &redeem.redeemer)?;
791-
}
781+
ext::fee::distribute_rewards::<T>(&fee)?;
782+
783+
//redeem tokens for vault
784+
ext::vault_registry::redeem_tokens::<T>(&redeem.vault, &redeem_amount, &redeem.premium()?, &redeem.redeemer)?;
792785

793786
Self::set_redeem_status(redeem_id, RedeemRequestStatus::Completed);
794787
Self::deposit_event(Event::<T>::ExecuteRedeem {

parachain/runtime/runtime-tests/src/parachain/redeem.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ mod spec_based_tests {
597597
set_redeem_period(2000);
598598
let redeem_id = request_redeem(&vault_id);
599599
SecurityPallet::set_active_block_number(1100);
600-
mine_blocks(12);
600+
mine_blocks(100);
601601
set_redeem_period(1000);
602602

603603
// request still uses period = 200, so cancel fails and execute succeeds

0 commit comments

Comments
 (0)