diff --git a/locked-asset/token-unstake/src/fees_handler.rs b/locked-asset/token-unstake/src/fees_handler.rs index 803ef5345..238826a77 100644 --- a/locked-asset/token-unstake/src/fees_handler.rs +++ b/locked-asset/token-unstake/src/fees_handler.rs @@ -67,13 +67,26 @@ pub trait FeesHandlerModule: self.burn_penalty(payment); } + #[only_owner] + #[endpoint(setFeesBurnPercentage)] + fn set_fees_burn_percentage(&self, fees_burn_percentage: u64) { + require!( + fees_burn_percentage <= MAX_PENALTY_PERCENTAGE, + "Fees burn percentage exceeds the maximum allowed percentage" + ); + self.fees_burn_percentage().set(fees_burn_percentage); + } + fn burn_penalty(&self, payment: EsdtTokenPayment) { let fees_burn_percentage = self.fees_burn_percentage().get(); let burn_amount = &payment.amount * fees_burn_percentage / MAX_PENALTY_PERCENTAGE; let remaining_amount = &payment.amount - &burn_amount; - self.send() - .esdt_local_burn(&payment.token_identifier, payment.token_nonce, &burn_amount); + self.send().esdt_non_zero_local_burn( + &payment.token_identifier, + payment.token_nonce, + &burn_amount, + ); self.send_fees_to_collector(EsdtTokenPayment::new( payment.token_identifier, diff --git a/locked-asset/token-unstake/wasm/src/lib.rs b/locked-asset/token-unstake/wasm/src/lib.rs index ea93ce423..48286afd1 100644 --- a/locked-asset/token-unstake/wasm/src/lib.rs +++ b/locked-asset/token-unstake/wasm/src/lib.rs @@ -6,9 +6,9 @@ // Init: 1 // Upgrade: 1 -// Endpoints: 10 +// Endpoints: 11 // Async Callback (empty): 1 -// Total number of exported functions: 13 +// Total number of exported functions: 14 #![no_std] @@ -26,6 +26,7 @@ multiversx_sc_wasm_adapter::endpoints! { cancelUnbond => cancel_unbond depositUserTokens => deposit_user_tokens depositFees => deposit_fees + setFeesBurnPercentage => set_fees_burn_percentage getFeesBurnPercentage => fees_burn_percentage getFeesCollectorAddress => fees_collector_address setEnergyFactoryAddress => set_energy_factory_address