--- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -434,6 +434,8 @@ /// Weight information for extrinsics in this pallet. type WeightInfo: WeightInfo; + + type CollectionCreationPrice: Get>; } #[cfg(feature = "runtime-benchmarks")] @@ -2535,14 +2537,10 @@ > { let tip = self.0; - // Set fee based on call type. Creating collection costs 1 Unique. - // All other transactions have traditional fees so far - // let fee = match call.is_sub_type() { - // Some(Call::create_collection(..)) => >::from(1_000_000_000), - // _ => Self::traditional_fee(len, info, tip), // Flat fee model, use only for testing purposes - // // _ => >::from(100) - // }; - let fee = Self::traditional_fee(len, info, tip); + let fee = match call.is_sub_type() { + Some(Call::create_collection(..)) => T::CollectionCreationPrice::get(), + _ => Self::traditional_fee(len, info, tip), + }; // Only mess with balances if fee is not zero. if fee.is_zero() { --- a/pallets/nft/src/mock.rs +++ b/pallets/nft/src/mock.rs @@ -133,9 +133,14 @@ type WeightInfo = pallet_contracts::weights::SubstrateWeight; } +parameter_types! { + pub const CollectionCreationPrice: u64 = 1_000_000_000_000; +} + impl pallet_template::Config for Test { type Event = (); type WeightInfo = (); + type CollectionCreationPrice = CollectionCreationPrice; } // Build genesis storage according to the mock runtime. --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -510,6 +510,7 @@ parameter_types! { pub const MinVestedTransfer: Balance = 10 * UNIQUE; + pub const CollectionCreationPrice: Balance = 100 * UNIQUE; } impl pallet_vesting::Config for Runtime { @@ -524,6 +525,7 @@ impl pallet_nft::Config for Runtime { type Event = Event; type WeightInfo = nft_weights::WeightInfo; + type CollectionCreationPrice = CollectionCreationPrice; } construct_runtime!(