From c0a47913a60c9ade2c0b3d889fae03b397a3fb62 Mon Sep 17 00:00:00 2001 From: Sorin Petreasca Date: Fri, 5 Aug 2022 12:58:53 +0300 Subject: [PATCH 1/3] Unset transfer role endpoint --- launchpad-with-nft/src/mystery_sft.rs | 25 +++++++++++++++++++++++++ launchpad-with-nft/wasm/src/lib.rs | 1 + 2 files changed, 26 insertions(+) diff --git a/launchpad-with-nft/src/mystery_sft.rs b/launchpad-with-nft/src/mystery_sft.rs index 29f6b93..ffc6d2f 100644 --- a/launchpad-with-nft/src/mystery_sft.rs +++ b/launchpad-with-nft/src/mystery_sft.rs @@ -104,6 +104,31 @@ pub trait MysterySftModule: ); } + #[endpoint(unsetTransferRole)] + fn unset_transfer_role(&self, opt_addr_to_set: OptionalValue) { + self.require_extended_permissions(); + + let addr = match opt_addr_to_set { + OptionalValue::Some(addr) => addr, + OptionalValue::None => { + self.sft_setup_steps() + .update(|steps| steps.set_transfer_role = false); + + self.blockchain().get_sc_address() + } + }; + + self.send() + .esdt_system_sc_proxy() + .unset_special_roles( + &addr, + &self.mystery_sft().get_token_id(), + [EsdtLocalRole::Transfer][..].iter().cloned(), + ) + .async_call() + .call_and_exit(); + } + #[storage_mapper("mysterySftTokenId")] fn mystery_sft(&self) -> NonFungibleTokenMapper; diff --git a/launchpad-with-nft/wasm/src/lib.rs b/launchpad-with-nft/wasm/src/lib.rs index cbc763d..d10d5af 100644 --- a/launchpad-with-nft/wasm/src/lib.rs +++ b/launchpad-with-nft/wasm/src/lib.rs @@ -46,5 +46,6 @@ elrond_wasm_node::wasm_endpoints! { setTicketPrice setTransferRole setWinnerSelectionStartEpoch + unsetTransferRole ) } From 956acf50b08ca98115eb76fc09bd12446927a542 Mon Sep 17 00:00:00 2001 From: Sorin Petreasca Date: Fri, 5 Aug 2022 13:30:44 +0300 Subject: [PATCH 2/3] clean init function --- launchpad-with-nft/src/lib.rs | 38 ++--------------------------------- 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/launchpad-with-nft/src/lib.rs b/launchpad-with-nft/src/lib.rs index a3aa342..0a75b87 100644 --- a/launchpad-with-nft/src/lib.rs +++ b/launchpad-with-nft/src/lib.rs @@ -3,8 +3,7 @@ elrond_wasm::imports!(); elrond_wasm::derive_imports!(); -use crate::mystery_sft::SftSetupSteps; -use launchpad_common::{launch_stage::Flags, random::Random}; +use launchpad_common::{random::Random}; pub mod claim_nft; pub mod confirm_nft; @@ -32,41 +31,8 @@ pub trait Launchpad: + nft_winners_selection::NftWinnersSelectionModule + claim_nft::ClaimNftModule { - #[allow(clippy::too_many_arguments)] #[init] - fn init( - &self, - launchpad_token_id: TokenIdentifier, - launchpad_tokens_per_winning_ticket: BigUint, - ticket_payment_token: EgldOrEsdtTokenIdentifier, - ticket_price: BigUint, - nr_winning_tickets: usize, - confirmation_period_start_epoch: u64, - winner_selection_start_epoch: u64, - claim_start_epoch: u64, - nft_cost: EgldOrEsdtTokenPayment, - total_available_nfts: usize, - ) { - self.require_valid_cost(&nft_cost); - require!(total_available_nfts > 0, "Invalid total_available_nfts"); - - self.init_base( - launchpad_token_id, - launchpad_tokens_per_winning_ticket, - ticket_payment_token, - ticket_price, - nr_winning_tickets, - confirmation_period_start_epoch, - winner_selection_start_epoch, - claim_start_epoch, - Flags::default(), - ); - - self.nft_cost().set(&nft_cost); - self.total_available_nfts().set(total_available_nfts); - self.sft_setup_steps() - .set_if_empty(&SftSetupSteps::default()); - } + fn init(&self) {} #[only_owner] #[endpoint(addTickets)] From 24f706b892621dd164e59deeae3a387c31d7337c Mon Sep 17 00:00:00 2001 From: Sorin Petreasca Date: Fri, 5 Aug 2022 13:38:32 +0300 Subject: [PATCH 3/3] launchpad-nft-and-guaranteed-tickets sc clean init --- .../src/lib.rs | 54 +------------------ .../wasm/src/lib.rs | 1 + launchpad-with-nft/src/lib.rs | 38 ++++++++++++- 3 files changed, 38 insertions(+), 55 deletions(-) diff --git a/launchpad-nft-and-guaranteed-tickets/src/lib.rs b/launchpad-nft-and-guaranteed-tickets/src/lib.rs index 8df41fc..11f4027 100644 --- a/launchpad-nft-and-guaranteed-tickets/src/lib.rs +++ b/launchpad-nft-and-guaranteed-tickets/src/lib.rs @@ -3,9 +3,6 @@ elrond_wasm::imports!(); elrond_wasm::derive_imports!(); -use launchpad_common::launch_stage::Flags; -use launchpad_with_nft::mystery_sft::SftSetupSteps; - pub mod combined_selection; #[elrond_wasm::contract] @@ -31,57 +28,8 @@ pub trait Launchpad: + launchpad_with_nft::claim_nft::ClaimNftModule + combined_selection::CombinedSelectionModule { - #[allow(clippy::too_many_arguments)] #[init] - fn init( - &self, - launchpad_token_id: TokenIdentifier, - launchpad_tokens_per_winning_ticket: BigUint, - ticket_payment_token: EgldOrEsdtTokenIdentifier, - ticket_price: BigUint, - nr_winning_tickets: usize, - confirmation_period_start_epoch: u64, - winner_selection_start_epoch: u64, - claim_start_epoch: u64, - nft_cost_token_id: EgldOrEsdtTokenIdentifier, - nft_cost_token_nonce: u64, - nft_cost_token_amount: BigUint, - total_available_nfts: usize, - min_confirmed_for_guaranteed_ticket: usize, - ) { - let nft_cost = EgldOrEsdtTokenPayment::new( - nft_cost_token_id, - nft_cost_token_nonce, - nft_cost_token_amount, - ); - - self.require_valid_cost(&nft_cost); - require!(total_available_nfts > 0, "Invalid total_available_nfts"); - - require!( - min_confirmed_for_guaranteed_ticket > 0, - "Invalid minimum tickets confirmed for guaranteed winning ticket" - ); - self.min_confirmed_for_guaranteed_ticket() - .set(min_confirmed_for_guaranteed_ticket); - - self.init_base( - launchpad_token_id, - launchpad_tokens_per_winning_ticket, - ticket_payment_token, - ticket_price, - nr_winning_tickets, - confirmation_period_start_epoch, - winner_selection_start_epoch, - claim_start_epoch, - Flags::default(), - ); - - self.nft_cost().set(&nft_cost); - self.total_available_nfts().set(total_available_nfts); - self.sft_setup_steps() - .set_if_empty(&SftSetupSteps::default()); - } + fn init(&self) {} #[only_owner] #[endpoint(addTickets)] diff --git a/launchpad-nft-and-guaranteed-tickets/wasm/src/lib.rs b/launchpad-nft-and-guaranteed-tickets/wasm/src/lib.rs index b020ddd..361e535 100644 --- a/launchpad-nft-and-guaranteed-tickets/wasm/src/lib.rs +++ b/launchpad-nft-and-guaranteed-tickets/wasm/src/lib.rs @@ -46,5 +46,6 @@ elrond_wasm_node::wasm_endpoints! { setTicketPrice setTransferRole setWinnerSelectionStartEpoch + unsetTransferRole ) } diff --git a/launchpad-with-nft/src/lib.rs b/launchpad-with-nft/src/lib.rs index 0a75b87..a3aa342 100644 --- a/launchpad-with-nft/src/lib.rs +++ b/launchpad-with-nft/src/lib.rs @@ -3,7 +3,8 @@ elrond_wasm::imports!(); elrond_wasm::derive_imports!(); -use launchpad_common::{random::Random}; +use crate::mystery_sft::SftSetupSteps; +use launchpad_common::{launch_stage::Flags, random::Random}; pub mod claim_nft; pub mod confirm_nft; @@ -31,8 +32,41 @@ pub trait Launchpad: + nft_winners_selection::NftWinnersSelectionModule + claim_nft::ClaimNftModule { + #[allow(clippy::too_many_arguments)] #[init] - fn init(&self) {} + fn init( + &self, + launchpad_token_id: TokenIdentifier, + launchpad_tokens_per_winning_ticket: BigUint, + ticket_payment_token: EgldOrEsdtTokenIdentifier, + ticket_price: BigUint, + nr_winning_tickets: usize, + confirmation_period_start_epoch: u64, + winner_selection_start_epoch: u64, + claim_start_epoch: u64, + nft_cost: EgldOrEsdtTokenPayment, + total_available_nfts: usize, + ) { + self.require_valid_cost(&nft_cost); + require!(total_available_nfts > 0, "Invalid total_available_nfts"); + + self.init_base( + launchpad_token_id, + launchpad_tokens_per_winning_ticket, + ticket_payment_token, + ticket_price, + nr_winning_tickets, + confirmation_period_start_epoch, + winner_selection_start_epoch, + claim_start_epoch, + Flags::default(), + ); + + self.nft_cost().set(&nft_cost); + self.total_available_nfts().set(total_available_nfts); + self.sft_setup_steps() + .set_if_empty(&SftSetupSteps::default()); + } #[only_owner] #[endpoint(addTickets)]