diff --git a/pallets/mixer/src/lib.rs b/pallets/mixer/src/lib.rs index cc1663a0..84ecd5ad 100644 --- a/pallets/mixer/src/lib.rs +++ b/pallets/mixer/src/lib.rs @@ -54,6 +54,8 @@ pub mod tests; mod benchmarking; pub mod weights; +pub mod traits; + use codec::{Decode, Encode}; use frame_support::{debug, dispatch, ensure, traits::Get, weights::Weight}; use frame_system::ensure_signed; @@ -70,6 +72,7 @@ use sp_runtime::{ ModuleId, }; use sp_std::prelude::*; +use traits::ExtendedMixer; use weights::WeightInfo; pub use pallet::*; @@ -528,3 +531,17 @@ impl Module { Ok(()) } } + +impl ExtendedMixer, BalanceOf> for Pallet { + fn create_new( + account_id: T::AccountId, + currency_id: CurrencyIdOf, + size: BalanceOf, + ) -> Result<(), dispatch::DispatchError> { + let depth: u8 = ::MaxTreeDepth::get(); + let mixer_id: T::GroupId = T::Group::create_group(Self::account_id(), true, depth)?; + let mixer_info = MixerInfo::::new(T::DepositLength::get(), size, Vec::new(), currency_id); + MixerGroups::::insert(mixer_id, mixer_info); + Ok(()) + } +} diff --git a/pallets/mixer/src/tests.rs b/pallets/mixer/src/tests.rs index a1a41646..f1c5d707 100644 --- a/pallets/mixer/src/tests.rs +++ b/pallets/mixer/src/tests.rs @@ -1,5 +1,8 @@ use super::*; -use crate::mock::{new_test_ext, AccountId, Balances, MerkleGroups, Mixer, MixerCall, Origin, System, Test, Tokens}; +use crate::mock::{ + new_test_ext, AccountId, Balance, Balances, CurrencyId, MerkleGroups, Mixer, MixerCall, Origin, System, Test, + Tokens, +}; use bulletproofs::{r1cs::Prover, BulletproofGens, PedersenGens}; use bulletproofs_gadgets::{ fixed_deposit_tree::builder::FixedDepositTreeBuilder, @@ -335,7 +338,11 @@ fn should_make_mixer_with_non_native_token() { new_test_ext().execute_with(|| { let currency_id = 1; assert_ok!(Mixer::initialize()); - assert_ok!(Mixer::create_new(Origin::signed(4), currency_id, 1_000)); + assert_ok!(>::create_new( + 4, + currency_id, + 1_000 + )); let pc_gens = PedersenGens::default(); let poseidon = default_hasher(16400); diff --git a/pallets/mixer/src/traits.rs b/pallets/mixer/src/traits.rs new file mode 100644 index 00000000..6f5474c6 --- /dev/null +++ b/pallets/mixer/src/traits.rs @@ -0,0 +1,6 @@ +use frame_support::dispatch; + +pub trait ExtendedMixer { + fn create_new(account_id: AccountId, currency_id: CurrencyId, size: Balance) + -> Result<(), dispatch::DispatchError>; +}