diff --git a/farm-staking/farm-staking-nft/Cargo.toml b/farm-staking/farm-staking-nft/Cargo.toml index fd515d1f3..fd18f6772 100644 --- a/farm-staking/farm-staking-nft/Cargo.toml +++ b/farm-staking/farm-staking-nft/Cargo.toml @@ -53,9 +53,6 @@ path = "../../common/modules/pausable" [dependencies.permissions_module] path = "../../common/modules/permissions_module" -[dependencies.sc_whitelist_module] -path = "../../common/modules/sc_whitelist_module" - [dependencies.banned_addresses] path = "../../common/modules/banned_addresses" diff --git a/farm-staking/farm-staking-nft/src/base_impl_wrapper.rs b/farm-staking/farm-staking-nft/src/base_impl_wrapper.rs index 2b671677f..227e3efb6 100644 --- a/farm-staking/farm-staking-nft/src/base_impl_wrapper.rs +++ b/farm-staking/farm-staking-nft/src/base_impl_wrapper.rs @@ -9,7 +9,7 @@ use multiversx_sc_modules::transfer_role_proxy::PaymentsVec; use crate::token_attributes::StakingFarmTokenAttributes; -pub trait FarmStakingTraits = +pub trait FarmStakingNftTraits = crate::custom_rewards::CustomRewardsModule + rewards::RewardsModule + config::ConfigModule @@ -19,16 +19,16 @@ pub trait FarmStakingTraits = + multiversx_sc_modules::default_issue_callbacks::DefaultIssueCallbacksModule + farm_boosted_yields::FarmBoostedYieldsModule; -pub struct FarmStakingWrapper +pub struct FarmStakingNftWrapper where T:, { _phantom: PhantomData, } -impl FarmStakingWrapper +impl FarmStakingNftWrapper where - T: FarmStakingTraits, + T: FarmStakingNftTraits, { pub fn calculate_base_farm_rewards( farm_token_amount: &BigUint<<::FarmSc as ContractBase>::Api>, @@ -50,19 +50,17 @@ where ) -> BigUint<<::FarmSc as ContractBase>::Api> { let user_total_farm_position = sc.get_user_total_farm_position(caller); let user_farm_position = user_total_farm_position.total_farm_position; - let mut boosted_rewards = BigUint::zero(); - - if user_farm_position > 0 { - boosted_rewards = sc.claim_boosted_yields_rewards(caller, user_farm_position); + if user_farm_position == 0 { + return BigUint::zero(); } - boosted_rewards + sc.claim_boosted_yields_rewards(caller, user_farm_position) } } -impl FarmContract for FarmStakingWrapper +impl FarmContract for FarmStakingNftWrapper where - T: FarmStakingTraits, + T: FarmStakingNftTraits, { type FarmSc = T; type AttributesType = StakingFarmTokenAttributes<::Api>; @@ -192,10 +190,6 @@ where ) { let farm_token_mapper = sc.farm_token(); for farm_position in farm_positions { - if sc.is_old_farm_position(farm_position.token_nonce) { - continue; - } - farm_token_mapper.require_same_token(&farm_position.token_identifier); let token_attributes: StakingFarmTokenAttributes<::Api> = @@ -208,7 +202,6 @@ where } } - #[inline] fn increase_user_farm_position( sc: &Self::FarmSc, user: &ManagedAddress<::Api>, @@ -224,10 +217,6 @@ where sc: &Self::FarmSc, farm_position: &EsdtTokenPayment<::Api>, ) { - if sc.is_old_farm_position(farm_position.token_nonce) { - return; - } - let farm_token_mapper = sc.farm_token(); let token_attributes: StakingFarmTokenAttributes<::Api> = farm_token_mapper.get_token_attributes(farm_position.token_nonce); diff --git a/farm-staking/farm-staking-nft/src/custom_rewards.rs b/farm-staking/farm-staking-nft/src/custom_rewards.rs index 8e4d538dc..cb6b03e73 100644 --- a/farm-staking/farm-staking-nft/src/custom_rewards.rs +++ b/farm-staking/farm-staking-nft/src/custom_rewards.rs @@ -5,7 +5,7 @@ use common_structs::Epoch; use contexts::storage_cache::StorageCache; use farm_base_impl::base_traits_impl::FarmContract; -use crate::base_impl_wrapper::FarmStakingWrapper; +use crate::base_impl_wrapper::FarmStakingNftWrapper; pub const MAX_PERCENT: u64 = 10_000; pub const BLOCKS_IN_YEAR: u64 = 31_536_000 / 6; // seconds_in_year / 6_seconds_per_block @@ -67,7 +67,7 @@ pub trait CustomRewardsModule: self.require_caller_has_admin_permissions(); let mut storage_cache = StorageCache::new(self); - FarmStakingWrapper::::generate_aggregated_rewards(self, &mut storage_cache); + FarmStakingNftWrapper::::generate_aggregated_rewards(self, &mut storage_cache); self.produce_rewards_enabled().set(false); } @@ -77,7 +77,7 @@ pub trait CustomRewardsModule: require!(per_block_amount != 0, "Amount cannot be zero"); let mut storage_cache = StorageCache::new(self); - FarmStakingWrapper::::generate_aggregated_rewards(self, &mut storage_cache); + FarmStakingNftWrapper::::generate_aggregated_rewards(self, &mut storage_cache); self.per_block_reward_amount().set(&per_block_amount); } @@ -87,7 +87,7 @@ pub trait CustomRewardsModule: require!(max_apr != 0, "Max APR cannot be zero"); let mut storage_cache = StorageCache::new(self); - FarmStakingWrapper::::generate_aggregated_rewards(self, &mut storage_cache); + FarmStakingNftWrapper::::generate_aggregated_rewards(self, &mut storage_cache); self.max_annual_percentage_rewards().set(&max_apr); } diff --git a/farm-staking/farm-staking-nft/src/farm_actions/claim_only_boosted_staking_rewards.rs b/farm-staking/farm-staking-nft/src/farm_actions/claim_only_boosted_staking_rewards.rs index 71e7ab9e3..18f5db510 100644 --- a/farm-staking/farm-staking-nft/src/farm_actions/claim_only_boosted_staking_rewards.rs +++ b/farm-staking/farm-staking-nft/src/farm_actions/claim_only_boosted_staking_rewards.rs @@ -1,4 +1,4 @@ -use crate::base_impl_wrapper::FarmStakingWrapper; +use crate::base_impl_wrapper::FarmStakingNftWrapper; multiversx_sc::imports!(); @@ -49,42 +49,9 @@ pub trait ClaimOnlyBoostedStakingRewardsModule: boosted_rewards_payment } - fn migrate_old_farm_positions(&self, caller: &ManagedAddress) -> BigUint { - let payments = self.call_value().all_esdt_transfers().clone_value(); - let farm_token_mapper = self.farm_token(); - let farm_token_id = farm_token_mapper.get_token_id(); - let mut migrated_amount = BigUint::zero(); - for farm_position in &payments { - if farm_position.token_identifier == farm_token_id - && self.is_old_farm_position(farm_position.token_nonce) - { - migrated_amount += farm_position.amount; - } - } - - if migrated_amount > 0 { - let mut user_total_farm_position = self.get_user_total_farm_position(caller); - user_total_farm_position.total_farm_position += &migrated_amount; - self.user_total_farm_position(caller) - .set(user_total_farm_position); - } - - migrated_amount - } - - fn decrease_old_farm_positions(&self, migrated_amount: BigUint, caller: &ManagedAddress) { - if migrated_amount == BigUint::zero() { - return; - } - self.user_total_farm_position(caller) - .update(|user_total_farm_position| { - user_total_farm_position.total_farm_position -= migrated_amount; - }); - } - // Cannot import the one from farm, as the Wrapper struct has different dependencies fn claim_only_boosted_payment(&self, caller: &ManagedAddress) -> BigUint { - let reward = FarmStakingWrapper::::calculate_boosted_rewards(self, caller); + let reward = FarmStakingNftWrapper::::calculate_boosted_rewards(self, caller); if reward > 0 { self.reward_reserve().update(|reserve| *reserve -= &reward); } diff --git a/farm-staking/farm-staking-nft/src/farm_actions/claim_stake_farm_rewards.rs b/farm-staking/farm-staking-nft/src/farm_actions/claim_stake_farm_rewards.rs index 986cbab13..af1595106 100644 --- a/farm-staking/farm-staking-nft/src/farm_actions/claim_stake_farm_rewards.rs +++ b/farm-staking/farm-staking-nft/src/farm_actions/claim_stake_farm_rewards.rs @@ -2,7 +2,7 @@ multiversx_sc::imports!(); use farm::base_functions::ClaimRewardsResultType; -use crate::{base_impl_wrapper::FarmStakingWrapper, farm_hooks::hook_type::FarmHookType}; +use crate::{base_impl_wrapper::FarmStakingNftWrapper, farm_hooks::hook_type::FarmHookType}; #[multiversx_sc::module] pub trait ClaimStakeFarmRewardsModule: @@ -13,7 +13,6 @@ pub trait ClaimStakeFarmRewardsModule: + events::EventsModule + token_send::TokenSendModule + farm_token::FarmTokenModule - + sc_whitelist_module::SCWhitelistModule + pausable::PausableModule + permissions_module::PermissionsModule + multiversx_sc_modules::default_issue_callbacks::DefaultIssueCallbacksModule @@ -36,63 +35,26 @@ pub trait ClaimStakeFarmRewardsModule: { #[payable("*")] #[endpoint(claimRewards)] - fn claim_rewards( - &self, - opt_original_caller: OptionalValue, - ) -> ClaimRewardsResultType { + fn claim_rewards(&self) -> ClaimRewardsResultType { let caller = self.blockchain().get_caller(); - let original_caller = self.get_orig_caller_from_opt(&caller, opt_original_caller); - - self.claim_rewards_common(original_caller, None) - } - - #[payable("*")] - #[endpoint(claimRewardsWithNewValue)] - fn claim_rewards_with_new_value( - &self, - new_farming_amount: BigUint, - original_caller: ManagedAddress, - ) -> ClaimRewardsResultType { - let caller = self.blockchain().get_caller(); - self.require_sc_address_whitelisted(&caller); - - self.claim_rewards_common(original_caller, Some(new_farming_amount)) - } - - fn claim_rewards_common( - &self, - original_caller: ManagedAddress, - opt_new_farming_amount: Option, - ) -> ClaimRewardsResultType { - self.migrate_old_farm_positions(&original_caller); - let payment = self.call_value().single_esdt(); let payments_after_hook = self.call_hook( FarmHookType::BeforeClaimRewards, - original_caller.clone(), + caller.clone(), ManagedVec::from_single_item(payment), ManagedVec::new(), ); let payment = payments_after_hook.get(0); let mut claim_result = self - .claim_rewards_base_no_farm_token_mint::>( - original_caller.clone(), + .claim_rewards_base_no_farm_token_mint::>( + caller.clone(), ManagedVec::from_single_item(payment), ); let mut virtual_farm_token = claim_result.new_farm_token.clone(); - if let Some(new_amount) = opt_new_farming_amount { - claim_result.storage_cache.farm_token_supply -= &virtual_farm_token.payment.amount; - claim_result.storage_cache.farm_token_supply += &new_amount; - virtual_farm_token.payment.amount = new_amount.clone(); - virtual_farm_token.attributes.current_farm_amount = new_amount; - - self.set_farm_supply_for_current_week(&claim_result.storage_cache.farm_token_supply); - } - - self.update_energy_and_progress(&original_caller); + self.update_energy_and_progress(&caller); let new_farm_token_nonce = self.send().esdt_nft_create_compact( &virtual_farm_token.payment.token_identifier, @@ -107,7 +69,7 @@ pub trait ClaimStakeFarmRewardsModule: let mut output_payments_after_hook = self.call_hook( FarmHookType::AfterClaimRewards, - original_caller, + caller.clone(), output_payments, ManagedVec::new(), ); @@ -115,7 +77,6 @@ pub trait ClaimStakeFarmRewardsModule: claim_result.rewards = self.pop_or_return_payment(&mut output_payments_after_hook, claim_result.rewards); - let caller = self.blockchain().get_caller(); self.send_payment_non_zero(&caller, &virtual_farm_token.payment); self.send_payment_non_zero(&caller, &claim_result.rewards); diff --git a/farm-staking/farm-staking-nft/src/farm_actions/compound_stake_farm_rewards.rs b/farm-staking/farm-staking-nft/src/farm_actions/compound_stake_farm_rewards.rs index 74c5e99f7..f8e3ea846 100644 --- a/farm-staking/farm-staking-nft/src/farm_actions/compound_stake_farm_rewards.rs +++ b/farm-staking/farm-staking-nft/src/farm_actions/compound_stake_farm_rewards.rs @@ -1,4 +1,4 @@ -use crate::{base_impl_wrapper::FarmStakingWrapper, farm_hooks::hook_type::FarmHookType}; +use crate::{base_impl_wrapper::FarmStakingNftWrapper, farm_hooks::hook_type::FarmHookType}; multiversx_sc::imports!(); @@ -11,7 +11,6 @@ pub trait CompoundStakeFarmRewardsModule: + events::EventsModule + token_send::TokenSendModule + farm_token::FarmTokenModule - + sc_whitelist_module::SCWhitelistModule + pausable::PausableModule + permissions_module::PermissionsModule + multiversx_sc_modules::default_issue_callbacks::DefaultIssueCallbacksModule @@ -36,8 +35,6 @@ pub trait CompoundStakeFarmRewardsModule: #[endpoint(compoundRewards)] fn compound_rewards(&self) -> EsdtTokenPayment { let caller = self.blockchain().get_caller(); - self.migrate_old_farm_positions(&caller); - let payments = self.get_non_empty_payments(); let payments_after_hook = self.call_hook( FarmHookType::BeforeCompoundRewards, @@ -46,8 +43,10 @@ pub trait CompoundStakeFarmRewardsModule: ManagedVec::new(), ); - let mut compound_result = self - .compound_rewards_base::>(caller.clone(), payments_after_hook); + let mut compound_result = self.compound_rewards_base::>( + caller.clone(), + payments_after_hook, + ); let new_farm_token = compound_result.new_farm_token.payment.clone(); let mut args = ManagedVec::new(); diff --git a/farm-staking/farm-staking-nft/src/farm_actions/stake_farm.rs b/farm-staking/farm-staking-nft/src/farm_actions/stake_farm.rs index a8a977114..bb8a263d1 100644 --- a/farm-staking/farm-staking-nft/src/farm_actions/stake_farm.rs +++ b/farm-staking/farm-staking-nft/src/farm_actions/stake_farm.rs @@ -1,9 +1,8 @@ multiversx_sc::imports!(); -use common_structs::PaymentsVec; use farm::EnterFarmResultType; -use crate::{base_impl_wrapper::FarmStakingWrapper, farm_hooks::hook_type::FarmHookType}; +use crate::{base_impl_wrapper::FarmStakingNftWrapper, farm_hooks::hook_type::FarmHookType}; #[multiversx_sc::module] pub trait StakeFarmModule: @@ -14,7 +13,6 @@ pub trait StakeFarmModule: + events::EventsModule + token_send::TokenSendModule + farm_token::FarmTokenModule - + sc_whitelist_module::SCWhitelistModule + pausable::PausableModule + permissions_module::PermissionsModule + multiversx_sc_modules::default_issue_callbacks::DefaultIssueCallbacksModule @@ -35,59 +33,24 @@ pub trait StakeFarmModule: + crate::farm_hooks::change_hooks::ChangeHooksModule + crate::farm_hooks::call_hook::CallHookModule { - #[payable("*")] - #[endpoint(stakeFarmThroughProxy)] - fn stake_farm_through_proxy( - &self, - staked_token_amount: BigUint, - original_caller: ManagedAddress, - ) -> EnterFarmResultType { - let caller = self.blockchain().get_caller(); - self.require_sc_address_whitelisted(&caller); - - let staked_token_id = self.farming_token_id().get(); - let staked_token_simulated_payment = - EsdtTokenPayment::new(staked_token_id, 0, staked_token_amount); - - let farm_tokens = self.call_value().all_esdt_transfers().clone_value(); - let mut payments = ManagedVec::from_single_item(staked_token_simulated_payment); - payments.append_vec(farm_tokens); - - self.stake_farm_common(original_caller, payments) - } - #[payable("*")] #[endpoint(stakeFarm)] - fn stake_farm_endpoint( - &self, - opt_original_caller: OptionalValue, - ) -> EnterFarmResultType { + fn stake_farm_endpoint(&self) -> EnterFarmResultType { let caller = self.blockchain().get_caller(); - let original_caller = self.get_orig_caller_from_opt(&caller, opt_original_caller); let payments = self.get_non_empty_payments(); let payments_after_hook = self.call_hook( FarmHookType::BeforeStake, - original_caller.clone(), + caller.clone(), payments, ManagedVec::new(), ); - self.stake_farm_common(original_caller, payments_after_hook) - } - - fn stake_farm_common( - &self, - original_caller: ManagedAddress, - payments: PaymentsVec, - ) -> EnterFarmResultType { - let caller = self.blockchain().get_caller(); - self.migrate_old_farm_positions(&original_caller); - let boosted_rewards = self.claim_only_boosted_payment(&original_caller); + let boosted_rewards = self.claim_only_boosted_payment(&caller); let boosted_rewards_payment = EsdtTokenPayment::new(self.reward_token_id().get(), 0, boosted_rewards); - let mut enter_result = - self.enter_farm_base::>(original_caller.clone(), payments); + let mut enter_result = self + .enter_farm_base::>(caller.clone(), payments_after_hook); let new_farm_token = enter_result.new_farm_token.payment.clone(); let mut output_payments = ManagedVec::new(); @@ -96,7 +59,7 @@ pub trait StakeFarmModule: let mut output_payments_after_hook = self.call_hook( FarmHookType::AfterStake, - original_caller.clone(), + caller.clone(), output_payments, ManagedVec::new(), ); @@ -109,7 +72,7 @@ pub trait StakeFarmModule: self.set_farm_supply_for_current_week(&enter_result.storage_cache.farm_token_supply); - self.update_energy_and_progress(&original_caller); + self.update_energy_and_progress(&caller); enter_result.new_farm_token.payment = new_farm_token.clone(); diff --git a/farm-staking/farm-staking-nft/src/farm_actions/unbond_farm.rs b/farm-staking/farm-staking-nft/src/farm_actions/unbond_farm.rs index 7314f5871..d103ebc3c 100644 --- a/farm-staking/farm-staking-nft/src/farm_actions/unbond_farm.rs +++ b/farm-staking/farm-staking-nft/src/farm_actions/unbond_farm.rs @@ -12,7 +12,6 @@ pub trait UnbondFarmModule: + events::EventsModule + token_send::TokenSendModule + farm_token::FarmTokenModule - + sc_whitelist_module::SCWhitelistModule + pausable::PausableModule + permissions_module::PermissionsModule + multiversx_sc_modules::default_issue_callbacks::DefaultIssueCallbacksModule diff --git a/farm-staking/farm-staking-nft/src/farm_actions/unstake_farm.rs b/farm-staking/farm-staking-nft/src/farm_actions/unstake_farm.rs index 3e243eaa8..4944708f4 100644 --- a/farm-staking/farm-staking-nft/src/farm_actions/unstake_farm.rs +++ b/farm-staking/farm-staking-nft/src/farm_actions/unstake_farm.rs @@ -3,7 +3,7 @@ multiversx_sc::imports!(); use farm::ExitFarmWithPartialPosResultType; use crate::{ - base_impl_wrapper::FarmStakingWrapper, farm_hooks::hook_type::FarmHookType, + base_impl_wrapper::FarmStakingNftWrapper, farm_hooks::hook_type::FarmHookType, token_attributes::UnbondSftAttributes, }; @@ -16,7 +16,6 @@ pub trait UnstakeFarmModule: + events::EventsModule + token_send::TokenSendModule + farm_token::FarmTokenModule - + sc_whitelist_module::SCWhitelistModule + pausable::PausableModule + permissions_module::PermissionsModule + multiversx_sc_modules::default_issue_callbacks::DefaultIssueCallbacksModule @@ -39,62 +38,22 @@ pub trait UnstakeFarmModule: { #[payable("*")] #[endpoint(unstakeFarm)] - fn unstake_farm( - &self, - opt_original_caller: OptionalValue, - ) -> ExitFarmWithPartialPosResultType { + fn unstake_farm(&self) -> ExitFarmWithPartialPosResultType { let caller = self.blockchain().get_caller(); - let original_caller = self.get_orig_caller_from_opt(&caller, opt_original_caller); let payment = self.call_value().single_esdt(); - self.unstake_farm_common(original_caller, payment, None) - } - - #[payable("*")] - #[endpoint(unstakeFarmThroughProxy)] - fn unstake_farm_through_proxy( - &self, - original_caller: ManagedAddress, - ) -> ExitFarmWithPartialPosResultType { - let caller = self.blockchain().get_caller(); - self.require_sc_address_whitelisted(&caller); - - let [first_payment, second_payment] = self.call_value().multi_esdt(); - - // first payment are the staking tokens, taken from the liquidity pool - // they will be sent to the user on unbond - let staking_token_id = self.farming_token_id().get(); - require!( - first_payment.token_identifier == staking_token_id, - "Invalid staking token received" - ); - - self.unstake_farm_common(original_caller, second_payment, Some(first_payment.amount)) - } - - fn unstake_farm_common( - &self, - original_caller: ManagedAddress, - payment: EsdtTokenPayment, - opt_unbond_amount: Option, - ) -> ExitFarmWithPartialPosResultType { - let migrated_amount = self.migrate_old_farm_positions(&original_caller); - let payments_after_hook = self.call_hook( FarmHookType::BeforeUnstake, - original_caller.clone(), + caller.clone(), ManagedVec::from_single_item(payment), ManagedVec::new(), ); let payment = payments_after_hook.get(0); let mut exit_result = - self.exit_farm_base::>(original_caller.clone(), payment); - - self.decrease_old_farm_positions(migrated_amount, &original_caller); + self.exit_farm_base::>(caller.clone(), payment); - let unbond_token_amount = - opt_unbond_amount.unwrap_or(exit_result.farming_token_payment.amount); + let unbond_token_amount = exit_result.farming_token_payment.amount; let farm_token_id = exit_result.storage_cache.farm_token_id.clone(); let unbond_farm_token = self.create_unbond_tokens(farm_token_id, unbond_token_amount); @@ -104,7 +63,7 @@ pub trait UnstakeFarmModule: let mut output_payments_after_hook = self.call_hook( FarmHookType::AfterUnstake, - original_caller.clone(), + caller.clone(), output_payments, ManagedVec::new(), ); @@ -116,7 +75,7 @@ pub trait UnstakeFarmModule: self.send_payment_non_zero(&caller, &unbond_farm_token); self.send_payment_non_zero(&caller, &exit_result.reward_payment); - self.clear_user_energy_if_needed(&original_caller); + self.clear_user_energy_if_needed(&caller); self.set_farm_supply_for_current_week(&exit_result.storage_cache.farm_token_supply); self.emit_exit_farm_event( diff --git a/farm-staking/farm-staking-nft/src/farm_hooks/change_hooks.rs b/farm-staking/farm-staking-nft/src/farm_hooks/change_hooks.rs index a3f9f40ff..bf559726b 100644 --- a/farm-staking/farm-staking-nft/src/farm_hooks/change_hooks.rs +++ b/farm-staking/farm-staking-nft/src/farm_hooks/change_hooks.rs @@ -1,4 +1,4 @@ -use super::hook_type::{Hook, FarmHookType}; +use super::hook_type::{FarmHookType, Hook}; multiversx_sc::imports!(); diff --git a/farm-staking/farm-staking-nft/src/lib.rs b/farm-staking/farm-staking-nft/src/lib.rs index fad61bf5f..136e57c3a 100644 --- a/farm-staking/farm-staking-nft/src/lib.rs +++ b/farm-staking/farm-staking-nft/src/lib.rs @@ -5,7 +5,7 @@ multiversx_sc::imports!(); multiversx_sc::derive_imports!(); -use base_impl_wrapper::FarmStakingWrapper; +use base_impl_wrapper::FarmStakingNftWrapper; use contexts::storage_cache::StorageCache; use farm::base_functions::DoubleMultiPayment; use farm_base_impl::base_traits_impl::FarmContract; @@ -29,7 +29,6 @@ pub trait FarmStaking: + events::EventsModule + token_send::TokenSendModule + farm_token::FarmTokenModule - + sc_whitelist_module::SCWhitelistModule + pausable::PausableModule + permissions_module::PermissionsModule + multiversx_sc_modules::default_issue_callbacks::DefaultIssueCallbacksModule @@ -93,18 +92,12 @@ pub trait FarmStaking: } #[endpoint] - fn upgrade(&self) { - // Farm position migration code - let farm_token_mapper = self.farm_token(); - self.try_set_farm_position_migration_nonce(farm_token_mapper); - } + fn upgrade(&self) {} #[payable("*")] #[endpoint(mergeFarmTokens)] fn merge_farm_tokens_endpoint(&self) -> DoubleMultiPayment { let caller = self.blockchain().get_caller(); - self.migrate_old_farm_positions(&caller); - let boosted_rewards = self.claim_only_boosted_payment(&caller); let boosted_rewards_payment = EsdtTokenPayment::new(self.reward_token_id().get(), 0, boosted_rewards); @@ -131,9 +124,9 @@ pub trait FarmStaking: self.require_queried(); let mut storage_cache = StorageCache::new(self); - FarmStakingWrapper::::generate_aggregated_rewards(self, &mut storage_cache); + FarmStakingNftWrapper::::generate_aggregated_rewards(self, &mut storage_cache); - FarmStakingWrapper::::calculate_rewards( + FarmStakingNftWrapper::::calculate_rewards( self, &ManagedAddress::zero(), &farm_token_amount, diff --git a/farm-staking/farm-staking-nft/tests/farm_staking_energy_test.rs b/farm-staking/farm-staking-nft/tests/farm_staking_energy_test.rs index 4938c37ad..19a47b353 100644 --- a/farm-staking/farm-staking-nft/tests/farm_staking_energy_test.rs +++ b/farm-staking/farm-staking-nft/tests/farm_staking_energy_test.rs @@ -6,7 +6,6 @@ use farm_staking_nft::farm_actions::{ unstake_farm::UnstakeFarmModule, }; use farm_staking_setup::*; -use multiversx_sc::codec::multi_types::OptionalValue; use multiversx_sc_scenario::{rust_biguint, DebugApi}; #[test] @@ -79,7 +78,7 @@ fn farm_staking_boosted_rewards_with_energy_test() { 1, &rust_biguint!(farm_in_amount), |sc| { - let _ = sc.claim_rewards(OptionalValue::None); + let _ = sc.claim_rewards(); }, ) .assert_ok(); @@ -107,7 +106,7 @@ fn farm_staking_boosted_rewards_with_energy_test() { 0, &rust_biguint!(10), |sc| { - let _ = sc.stake_farm_endpoint(OptionalValue::None); + let _ = sc.stake_farm_endpoint(); }, ) .assert_ok(); @@ -121,7 +120,7 @@ fn farm_staking_boosted_rewards_with_energy_test() { 3, &rust_biguint!(10), |sc| { - let _ = sc.unstake_farm(OptionalValue::None); + let _ = sc.unstake_farm(); }, ) .assert_ok(); @@ -176,7 +175,7 @@ fn farm_staking_claim_boosted_rewards_for_user_test() { 1, &rust_biguint!(farm_in_amount), |sc| { - let _ = sc.claim_rewards(OptionalValue::None); + let _ = sc.claim_rewards(); }, ) .assert_ok(); @@ -203,7 +202,7 @@ fn farm_staking_claim_boosted_rewards_for_user_test() { 0, &rust_biguint!(10), |sc| { - let _ = sc.stake_farm_endpoint(OptionalValue::None); + let _ = sc.stake_farm_endpoint(); }, ) .assert_ok(); @@ -217,7 +216,7 @@ fn farm_staking_claim_boosted_rewards_for_user_test() { 3, &rust_biguint!(10), |sc| { - let _ = sc.unstake_farm(OptionalValue::None); + let _ = sc.unstake_farm(); }, ) .assert_ok(); @@ -272,7 +271,7 @@ fn farm_staking_full_position_boosted_rewards_test() { 1, &rust_biguint!(farm_in_amount), |sc| { - let _ = sc.claim_rewards(OptionalValue::None); + let _ = sc.claim_rewards(); }, ) .assert_ok(); @@ -300,7 +299,7 @@ fn farm_staking_full_position_boosted_rewards_test() { 0, &rust_biguint!(10), |sc| { - let _ = sc.stake_farm_endpoint(OptionalValue::None); + let _ = sc.stake_farm_endpoint(); }, ) .assert_ok(); @@ -314,7 +313,7 @@ fn farm_staking_full_position_boosted_rewards_test() { 4, &rust_biguint!(10), |sc| { - let _ = sc.unstake_farm(OptionalValue::None); + let _ = sc.unstake_farm(); }, ) .assert_ok(); diff --git a/farm-staking/farm-staking-nft/tests/farm_staking_setup/mod.rs b/farm-staking/farm-staking-nft/tests/farm_staking_setup/mod.rs index f9a18fe42..52fbb5aad 100644 --- a/farm-staking/farm-staking-nft/tests/farm_staking_setup/mod.rs +++ b/farm-staking/farm-staking-nft/tests/farm_staking_setup/mod.rs @@ -177,8 +177,7 @@ where self.b_mock .execute_esdt_multi_transfer(&self.user_address, &self.farm_wrapper, &payments, |sc| { - let (new_farm_token_payment, _) = - sc.stake_farm_endpoint(OptionalValue::None).into_tuple(); + let (new_farm_token_payment, _) = sc.stake_farm_endpoint().into_tuple(); assert_eq!( new_farm_token_payment.token_identifier, managed_token_id!(FARM_TOKEN_ID) @@ -228,7 +227,7 @@ where farm_token_nonce, &rust_biguint!(farm_token_amount), |sc| { - let multi_result = sc.claim_rewards(OptionalValue::None); + let multi_result = sc.claim_rewards(); let (first_result, second_result) = multi_result.into_tuple(); assert_eq!( @@ -328,7 +327,7 @@ where farm_token_nonce, &rust_biguint!(farm_token_amount), |sc| { - let multi_result = sc.unstake_farm(OptionalValue::None); + let multi_result = sc.unstake_farm(); let (first_result, second_result) = multi_result.into_tuple(); diff --git a/farm-staking/farm-staking-nft/wasm/Cargo.lock b/farm-staking/farm-staking-nft/wasm/Cargo.lock index bee22cf7d..887fc3b66 100644 --- a/farm-staking/farm-staking-nft/wasm/Cargo.lock +++ b/farm-staking/farm-staking-nft/wasm/Cargo.lock @@ -194,7 +194,6 @@ dependencies = [ "pausable", "permissions_module", "rewards", - "sc_whitelist_module", "token_send", "utils", "week-timekeeping", diff --git a/farm-staking/farm-staking-nft/wasm/src/lib.rs b/farm-staking/farm-staking-nft/wasm/src/lib.rs index 104f47963..480b91ef6 100644 --- a/farm-staking/farm-staking-nft/wasm/src/lib.rs +++ b/farm-staking/farm-staking-nft/wasm/src/lib.rs @@ -5,9 +5,9 @@ //////////////////////////////////////////////////// // Init: 1 -// Endpoints: 75 +// Endpoints: 69 // Async Callback: 1 -// Total number of exported functions: 77 +// Total number of exported functions: 71 #![no_std] #![allow(internal_features)] @@ -48,9 +48,6 @@ multiversx_sc_wasm_adapter::endpoints! { registerFarmToken => register_farm_token getFarmTokenId => farm_token getFarmTokenSupply => farm_token_supply - addSCAddressToWhitelist => add_sc_address_to_whitelist - removeSCAddressFromWhitelist => remove_sc_address_from_whitelist - isSCAddressWhitelisted => is_sc_address_whitelisted addToPauseWhitelist => add_to_pause_whitelist removeFromPauseWhitelist => remove_from_pause_whitelist pause => pause @@ -61,13 +58,10 @@ multiversx_sc_wasm_adapter::endpoints! { updateOwnerOrAdmin => update_owner_or_admin_endpoint getPermissions => permissions setBurnRoleForAddress => set_burn_role_for_address - stakeFarmThroughProxy => stake_farm_through_proxy stakeFarm => stake_farm_endpoint claimRewards => claim_rewards - claimRewardsWithNewValue => claim_rewards_with_new_value compoundRewards => compound_rewards unstakeFarm => unstake_farm - unstakeFarmThroughProxy => unstake_farm_through_proxy unbondFarm => unbond_farm claimBoostedRewards => claim_boosted_rewards setBoostedYieldsRewardsPercentage => set_boosted_yields_rewards_percentage