From 9ca985e04f6ac6ce897cf18d6e1bec4886ab4aeb Mon Sep 17 00:00:00 2001 From: Grigoriy Simonov Date: Tue, 28 Jun 2022 12:51:04 +0000 Subject: [PATCH] decoupling of unique and refungible pallets --- --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ /.idea/ /.cargo/ +/.vscode/ tests/.vscode cumulus-parachain/ --- a/Cargo.lock +++ b/Cargo.lock @@ -6608,7 +6608,6 @@ "pallet-evm", "pallet-evm-coder-substrate", "pallet-nonfungible", - "pallet-refungible", "parity-scale-codec 3.1.5", "scale-info", "serde", --- a/pallets/common/src/lib.rs +++ b/pallets/common/src/lib.rs @@ -1258,6 +1258,10 @@ } } +pub trait RefungibleExtensionsWeightInfo { + fn repartition() -> Weight; +} + pub trait CommonCollectionOperations { fn create_item( &self, @@ -1384,6 +1388,19 @@ spender: T::CrossAccountId, token: TokenId, ) -> u128; + fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions>; +} + +pub trait RefungibleExtensions +where + T: Config, +{ + fn repartition( + &self, + owner: &T::CrossAccountId, + token: TokenId, + amount: u128, + ) -> DispatchResultWithPostInfo; } // Flexible enough for implementing CommonCollectionOperations --- a/pallets/fungible/src/common.rs +++ b/pallets/fungible/src/common.rs @@ -18,7 +18,7 @@ use frame_support::{dispatch::DispatchResultWithPostInfo, ensure, fail, weights::Weight, traits::Get}; use up_data_structs::{TokenId, CollectionId, CreateItemExData, budget::Budget, CreateItemData}; -use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight}; +use pallet_common::{CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight}; use pallet_structure::Error as StructureError; use sp_runtime::ArithmeticError; use sp_std::{vec::Vec, vec}; @@ -399,4 +399,8 @@ } >::get((self.id, sender, spender)) } + + fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions> { + None + } } --- a/pallets/nonfungible/src/common.rs +++ b/pallets/nonfungible/src/common.rs @@ -22,7 +22,8 @@ PropertyKeyPermission, PropertyValue, }; use pallet_common::{ - CommonCollectionOperations, CommonWeightInfo, with_weight, weights::WeightInfo as _, + CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight, + weights::WeightInfo as _, }; use sp_runtime::DispatchError; use sp_std::vec::Vec; @@ -467,4 +468,8 @@ 0 } } + + fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions> { + None + } } --- a/pallets/refungible/src/benchmarking.rs +++ b/pallets/refungible/src/benchmarking.rs @@ -203,4 +203,12 @@ let item = create_max_item(&collection, &owner, [(sender.clone(), 200)])?; >::set_allowance(&collection, &sender, &burner, item, 200)?; }: {>::burn_from(&collection, &burner, &sender, item, 200, &Unlimited)?} + + repartition_item { + bench_init!{ + owner: sub; collection: collection(owner); + sender: cross_from_sub(owner); owner: cross_sub; + }; + let item = create_max_item(&collection, &sender, [(owner.clone(), 100)])?; + }: {>::repartition(&collection, &owner, item, 200)?} } --- a/pallets/refungible/src/common.rs +++ b/pallets/refungible/src/common.rs @@ -22,9 +22,9 @@ CollectionId, TokenId, CreateItemExData, CreateRefungibleExData, budget::Budget, Property, PropertyKey, PropertyValue, PropertyKeyPermission, CreateItemData, }; -use pallet_common::{CommonCollectionOperations, CommonWeightInfo, with_weight}; +use pallet_common::{CommonCollectionOperations, CommonWeightInfo, RefungibleExtensions, with_weight}; use pallet_structure::Error as StructureError; -use sp_runtime::DispatchError; +use sp_runtime::{DispatchError}; use sp_std::{vec::Vec, vec}; use crate::{ @@ -405,4 +405,22 @@ ) -> u128 { >::get((self.id, token, sender, spender)) } + + fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions> { + Some(self) + } +} + +impl RefungibleExtensions for RefungibleHandle { + fn repartition( + &self, + owner: &T::CrossAccountId, + token: TokenId, + amount: u128, + ) -> DispatchResultWithPostInfo { + with_weight( + >::repartition(self, owner, token, amount), + >::repartition_item(), + ) + } } --- a/pallets/refungible/src/lib.rs +++ b/pallets/refungible/src/lib.rs @@ -688,8 +688,8 @@ } pub fn repartition( + collection: &RefungibleHandle, owner: &T::CrossAccountId, - collection: &RefungibleHandle, token: TokenId, amount: u128, ) -> DispatchResult { --- a/pallets/refungible/src/weights.rs +++ b/pallets/refungible/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_refungible //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-06-27, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -49,6 +49,7 @@ fn transfer_from_removing() -> Weight; fn transfer_from_creating_removing() -> Weight; fn burn_from() -> Weight; + fn repartition_item() -> Weight; } /// Weights for pallet_refungible using the Substrate node and recommended hardware. @@ -61,7 +62,7 @@ // Storage: Refungible TokenData (r:0 w:1) // Storage: Refungible Owned (r:0 w:1) fn create_item() -> Weight { - (21_321_000 as Weight) + (17_553_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } @@ -72,9 +73,9 @@ // Storage: Refungible TokenData (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items(b: u32, ) -> Weight { - (16_313_000 as Weight) - // Standard Error: 4_000 - .saturating_add((5_464_000 as Weight).saturating_mul(b as Weight)) + (10_654_000 as Weight) + // Standard Error: 1_000 + .saturating_add((5_114_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) .saturating_add(T::DbWeight::get().writes((4 as Weight).saturating_mul(b as Weight))) @@ -86,9 +87,9 @@ // Storage: Refungible TokenData (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight { - (15_631_000 as Weight) - // Standard Error: 5_000 - .saturating_add((8_141_000 as Weight).saturating_mul(b as Weight)) + (3_587_000 as Weight) + // Standard Error: 2_000 + .saturating_add((7_931_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(1 as Weight)) @@ -101,9 +102,9 @@ // Storage: Refungible Balance (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight { - (11_191_000 as Weight) - // Standard Error: 4_000 - .saturating_add((6_321_000 as Weight).saturating_mul(b as Weight)) + (1_980_000 as Weight) + // Standard Error: 2_000 + .saturating_add((6_305_000 as Weight).saturating_mul(b as Weight)) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(T::DbWeight::get().writes(3 as Weight)) @@ -114,7 +115,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn burn_item_partial() -> Weight { - (24_421_000 as Weight) + (21_010_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -125,13 +126,13 @@ // Storage: Refungible TokenData (r:0 w:1) // Storage: Refungible Owned (r:0 w:1) fn burn_item_fully() -> Weight { - (32_900_000 as Weight) + (28_413_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } // Storage: Refungible Balance (r:2 w:2) fn transfer_normal() -> Weight { - (20_215_000 as Weight) + (17_513_000 as Weight) .saturating_add(T::DbWeight::get().reads(2 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -139,7 +140,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn transfer_creating() -> Weight { - (24_809_000 as Weight) + (20_469_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -147,7 +148,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn transfer_removing() -> Weight { - (26_704_000 as Weight) + (22_472_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(4 as Weight)) } @@ -155,21 +156,21 @@ // Storage: Refungible AccountBalance (r:2 w:2) // Storage: Refungible Owned (r:0 w:2) fn transfer_creating_removing() -> Weight { - (28_728_000 as Weight) + (24_866_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } // Storage: Refungible Balance (r:1 w:0) // Storage: Refungible Allowance (r:0 w:1) fn approve() -> Weight { - (16_107_000 as Weight) + (13_475_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Refungible Allowance (r:1 w:1) // Storage: Refungible Balance (r:2 w:2) fn transfer_from_normal() -> Weight { - (28_765_000 as Weight) + (24_707_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(3 as Weight)) } @@ -178,7 +179,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn transfer_from_creating() -> Weight { - (32_788_000 as Weight) + (27_812_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } @@ -187,7 +188,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn transfer_from_removing() -> Weight { - (34_523_000 as Weight) + (29_966_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(5 as Weight)) } @@ -196,7 +197,7 @@ // Storage: Refungible AccountBalance (r:2 w:2) // Storage: Refungible Owned (r:0 w:2) fn transfer_from_creating_removing() -> Weight { - (36_749_000 as Weight) + (31_660_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(7 as Weight)) } @@ -208,10 +209,17 @@ // Storage: Refungible TokenData (r:0 w:1) // Storage: Refungible Owned (r:0 w:1) fn burn_from() -> Weight { - (42_259_000 as Weight) + (36_248_000 as Weight) .saturating_add(T::DbWeight::get().reads(5 as Weight)) .saturating_add(T::DbWeight::get().writes(7 as Weight)) } + // Storage: Refungible TotalSupply (r:1 w:1) + // Storage: Refungible Balance (r:1 w:1) + fn repartition_item() -> Weight { + (8_226_000 as Weight) + .saturating_add(T::DbWeight::get().reads(2 as Weight)) + .saturating_add(T::DbWeight::get().writes(2 as Weight)) + } } // For backwards compatibility and tests @@ -223,7 +231,7 @@ // Storage: Refungible TokenData (r:0 w:1) // Storage: Refungible Owned (r:0 w:1) fn create_item() -> Weight { - (21_321_000 as Weight) + (17_553_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(6 as Weight)) } @@ -234,9 +242,9 @@ // Storage: Refungible TokenData (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items(b: u32, ) -> Weight { - (16_313_000 as Weight) - // Standard Error: 4_000 - .saturating_add((5_464_000 as Weight).saturating_mul(b as Weight)) + (10_654_000 as Weight) + // Standard Error: 1_000 + .saturating_add((5_114_000 as Weight).saturating_mul(b as Weight)) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) .saturating_add(RocksDbWeight::get().writes((4 as Weight).saturating_mul(b as Weight))) @@ -248,9 +256,9 @@ // Storage: Refungible TokenData (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items_ex_multiple_items(b: u32, ) -> Weight { - (15_631_000 as Weight) - // Standard Error: 5_000 - .saturating_add((8_141_000 as Weight).saturating_mul(b as Weight)) + (3_587_000 as Weight) + // Standard Error: 2_000 + .saturating_add((7_931_000 as Weight).saturating_mul(b as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) @@ -263,9 +271,9 @@ // Storage: Refungible Balance (r:0 w:4) // Storage: Refungible Owned (r:0 w:4) fn create_multiple_items_ex_multiple_owners(b: u32, ) -> Weight { - (11_191_000 as Weight) - // Standard Error: 4_000 - .saturating_add((6_321_000 as Weight).saturating_mul(b as Weight)) + (1_980_000 as Weight) + // Standard Error: 2_000 + .saturating_add((6_305_000 as Weight).saturating_mul(b as Weight)) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().reads((1 as Weight).saturating_mul(b as Weight))) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) @@ -276,7 +284,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn burn_item_partial() -> Weight { - (24_421_000 as Weight) + (21_010_000 as Weight) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(4 as Weight)) } @@ -287,13 +295,13 @@ // Storage: Refungible TokenData (r:0 w:1) // Storage: Refungible Owned (r:0 w:1) fn burn_item_fully() -> Weight { - (32_900_000 as Weight) + (28_413_000 as Weight) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(6 as Weight)) } // Storage: Refungible Balance (r:2 w:2) fn transfer_normal() -> Weight { - (20_215_000 as Weight) + (17_513_000 as Weight) .saturating_add(RocksDbWeight::get().reads(2 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } @@ -301,7 +309,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn transfer_creating() -> Weight { - (24_809_000 as Weight) + (20_469_000 as Weight) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(4 as Weight)) } @@ -309,7 +317,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn transfer_removing() -> Weight { - (26_704_000 as Weight) + (22_472_000 as Weight) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(4 as Weight)) } @@ -317,21 +325,21 @@ // Storage: Refungible AccountBalance (r:2 w:2) // Storage: Refungible Owned (r:0 w:2) fn transfer_creating_removing() -> Weight { - (28_728_000 as Weight) + (24_866_000 as Weight) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(6 as Weight)) } // Storage: Refungible Balance (r:1 w:0) // Storage: Refungible Allowance (r:0 w:1) fn approve() -> Weight { - (16_107_000 as Weight) + (13_475_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Refungible Allowance (r:1 w:1) // Storage: Refungible Balance (r:2 w:2) fn transfer_from_normal() -> Weight { - (28_765_000 as Weight) + (24_707_000 as Weight) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(3 as Weight)) } @@ -340,7 +348,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn transfer_from_creating() -> Weight { - (32_788_000 as Weight) + (27_812_000 as Weight) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(5 as Weight)) } @@ -349,7 +357,7 @@ // Storage: Refungible AccountBalance (r:1 w:1) // Storage: Refungible Owned (r:0 w:1) fn transfer_from_removing() -> Weight { - (34_523_000 as Weight) + (29_966_000 as Weight) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(5 as Weight)) } @@ -358,7 +366,7 @@ // Storage: Refungible AccountBalance (r:2 w:2) // Storage: Refungible Owned (r:0 w:2) fn transfer_from_creating_removing() -> Weight { - (36_749_000 as Weight) + (31_660_000 as Weight) .saturating_add(RocksDbWeight::get().reads(5 as Weight)) .saturating_add(RocksDbWeight::get().writes(7 as Weight)) } @@ -370,8 +378,15 @@ // Storage: Refungible TokenData (r:0 w:1) // Storage: Refungible Owned (r:0 w:1) fn burn_from() -> Weight { - (42_259_000 as Weight) + (36_248_000 as Weight) .saturating_add(RocksDbWeight::get().reads(5 as Weight)) .saturating_add(RocksDbWeight::get().writes(7 as Weight)) } + // Storage: Refungible TotalSupply (r:1 w:1) + // Storage: Refungible Balance (r:1 w:1) + fn repartition_item() -> Weight { + (8_226_000 as Weight) + .saturating_add(RocksDbWeight::get().reads(2 as Weight)) + .saturating_add(RocksDbWeight::get().writes(2 as Weight)) + } } --- a/pallets/unique/Cargo.toml +++ b/pallets/unique/Cargo.toml @@ -103,4 +103,3 @@ evm-coder = { default-features = false, path = '../../crates/evm-coder' } pallet-evm-coder-substrate = { default-features = false, path = '../../pallets/evm-coder-substrate' } pallet-nonfungible = { default-features = false, path = '../../pallets/nonfungible' } -pallet-refungible = { default-features = false, path = '../../pallets/refungible' } --- a/pallets/unique/src/lib.rs +++ b/pallets/unique/src/lib.rs @@ -45,9 +45,8 @@ use pallet_evm::account::CrossAccountId; use pallet_common::{ CollectionHandle, Pallet as PalletCommon, CommonWeightInfo, dispatch::dispatch_tx, - dispatch::CollectionDispatch, + dispatch::CollectionDispatch, RefungibleExtensionsWeightInfo, }; -use pallet_refungible::{Pallet as PalletRefungible, RefungibleHandle}; pub mod eth; #[cfg(feature = "runtime-benchmarks")] @@ -71,14 +70,13 @@ } } -pub trait Config: - system::Config + pallet_common::Config + pallet_refungible::Config + Sized + TypeInfo -{ +pub trait Config: system::Config + pallet_common::Config + Sized + TypeInfo { type Event: From> + Into<::Event>; /// Weight information for extrinsics in this pallet. type WeightInfo: WeightInfo; type CommonWeightInfo: CommonWeightInfo; + type RefungibleExtensionsWeightInfo: RefungibleExtensionsWeightInfo; } decl_event! { @@ -904,23 +902,22 @@ target_collection.save() } - #[weight = >::set_collection_limits()] + #[weight = T::RefungibleExtensionsWeightInfo::repartition()] #[transactional] pub fn repartition( origin, collection_id: CollectionId, token: TokenId, amount: u128, - ) -> DispatchResult { + ) -> DispatchResultWithPostInfo { let sender = T::CrossAccountId::from_sub(ensure_signed(origin)?); - let target_collection = >::try_get(collection_id)?; - target_collection.check_is_internal()?; - let refungible_collection = match target_collection.mode { - CollectionMode::ReFungible => RefungibleHandle::cast(target_collection), - _ => fail!(>::RepartitionCalledOnNonRefungibleCollection), - }; - >::repartition(&sender, &refungible_collection, token, amount)?; - Ok(()) + dispatch_tx::(collection_id, |d| { + if let Some(refungible_extensions) = d.refungible_extensions() { + refungible_extensions.repartition(&sender, token, amount) + } else { + fail!(>::RepartitionCalledOnNonRefungibleCollection) + } + }) } } } --- a/pallets/unique/src/weights.rs +++ b/pallets/unique/src/weights.rs @@ -3,7 +3,7 @@ //! Autogenerated weights for pallet_unique //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev -//! DATE: 2022-06-15, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2022-06-28, STEPS: `50`, REPEAT: 80, LOW RANGE: `[]`, HIGH RANGE: `[]` //! EXECUTION: None, WASM-EXECUTION: Compiled, CHAIN: None, DB CACHE: 1024 // Executed Command: @@ -57,7 +57,7 @@ // Storage: Common CollectionProperties (r:0 w:1) // Storage: Common CollectionById (r:0 w:1) fn create_collection() -> Weight { - (39_427_000 as Weight) + (53_511_000 as Weight) .saturating_add(T::DbWeight::get().reads(4 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } @@ -69,27 +69,27 @@ // Storage: Common AdminAmount (r:0 w:1) // Storage: Common CollectionProperties (r:0 w:1) fn destroy_collection() -> Weight { - (48_339_000 as Weight) + (69_481_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(6 as Weight)) } // Storage: Common CollectionById (r:1 w:0) // Storage: Common Allowlist (r:0 w:1) fn add_to_allow_list() -> Weight { - (17_379_000 as Weight) + (22_892_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:0) // Storage: Common Allowlist (r:0 w:1) fn remove_from_allow_list() -> Weight { - (17_490_000 as Weight) + (22_973_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn change_collection_owner() -> Weight { - (17_701_000 as Weight) + (22_392_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -97,7 +97,7 @@ // Storage: Common IsAdmin (r:1 w:1) // Storage: Common AdminAmount (r:1 w:1) fn add_collection_admin() -> Weight { - (23_301_000 as Weight) + (30_298_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } @@ -105,37 +105,37 @@ // Storage: Common IsAdmin (r:1 w:1) // Storage: Common AdminAmount (r:1 w:1) fn remove_collection_admin() -> Weight { - (24_859_000 as Weight) + (32_842_000 as Weight) .saturating_add(T::DbWeight::get().reads(3 as Weight)) .saturating_add(T::DbWeight::get().writes(2 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn set_collection_sponsor() -> Weight { - (17_795_000 as Weight) + (22_613_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn confirm_sponsorship() -> Weight { - (17_297_000 as Weight) + (22_462_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn remove_collection_sponsor() -> Weight { - (17_079_000 as Weight) + (21_730_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn set_transfers_enabled_flag() -> Weight { - (9_734_000 as Weight) + (10_941_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn set_collection_limits() -> Weight { - (17_998_000 as Weight) + (22_363_000 as Weight) .saturating_add(T::DbWeight::get().reads(1 as Weight)) .saturating_add(T::DbWeight::get().writes(1 as Weight)) } @@ -150,7 +150,7 @@ // Storage: Common CollectionProperties (r:0 w:1) // Storage: Common CollectionById (r:0 w:1) fn create_collection() -> Weight { - (39_427_000 as Weight) + (53_511_000 as Weight) .saturating_add(RocksDbWeight::get().reads(4 as Weight)) .saturating_add(RocksDbWeight::get().writes(6 as Weight)) } @@ -162,27 +162,27 @@ // Storage: Common AdminAmount (r:0 w:1) // Storage: Common CollectionProperties (r:0 w:1) fn destroy_collection() -> Weight { - (48_339_000 as Weight) + (69_481_000 as Weight) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(6 as Weight)) } // Storage: Common CollectionById (r:1 w:0) // Storage: Common Allowlist (r:0 w:1) fn add_to_allow_list() -> Weight { - (17_379_000 as Weight) + (22_892_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:0) // Storage: Common Allowlist (r:0 w:1) fn remove_from_allow_list() -> Weight { - (17_490_000 as Weight) + (22_973_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn change_collection_owner() -> Weight { - (17_701_000 as Weight) + (22_392_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } @@ -190,7 +190,7 @@ // Storage: Common IsAdmin (r:1 w:1) // Storage: Common AdminAmount (r:1 w:1) fn add_collection_admin() -> Weight { - (23_301_000 as Weight) + (30_298_000 as Weight) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } @@ -198,37 +198,37 @@ // Storage: Common IsAdmin (r:1 w:1) // Storage: Common AdminAmount (r:1 w:1) fn remove_collection_admin() -> Weight { - (24_859_000 as Weight) + (32_842_000 as Weight) .saturating_add(RocksDbWeight::get().reads(3 as Weight)) .saturating_add(RocksDbWeight::get().writes(2 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn set_collection_sponsor() -> Weight { - (17_795_000 as Weight) + (22_613_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn confirm_sponsorship() -> Weight { - (17_297_000 as Weight) + (22_462_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn remove_collection_sponsor() -> Weight { - (17_079_000 as Weight) + (21_730_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn set_transfers_enabled_flag() -> Weight { - (9_734_000 as Weight) + (10_941_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } // Storage: Common CollectionById (r:1 w:1) fn set_collection_limits() -> Weight { - (17_998_000 as Weight) + (22_363_000 as Weight) .saturating_add(RocksDbWeight::get().reads(1 as Weight)) .saturating_add(RocksDbWeight::get().writes(1 as Weight)) } --- a/runtime/common/src/weights.rs +++ b/runtime/common/src/weights.rs @@ -16,11 +16,13 @@ use core::marker::PhantomData; use frame_support::{weights::Weight}; -use pallet_common::{CommonWeightInfo, dispatch::dispatch_weight}; +use pallet_common::{CommonWeightInfo, dispatch::dispatch_weight, RefungibleExtensionsWeightInfo}; use pallet_fungible::{Config as FungibleConfig, common::CommonWeights as FungibleWeights}; use pallet_nonfungible::{Config as NonfungibleConfig, common::CommonWeights as NonfungibleWeights}; -use pallet_refungible::{Config as RefungibleConfig, common::CommonWeights as RefungibleWeights}; +use pallet_refungible::{ + Config as RefungibleConfig, weights::WeightInfo, common::CommonWeights as RefungibleWeights, +}; use up_data_structs::{CreateItemExData, CreateItemData}; macro_rules! max_weight_of { @@ -98,3 +100,12 @@ max_weight_of!(burn_recursively_breadth_raw(amount)) } } + +impl RefungibleExtensionsWeightInfo for CommonWeights +where + T: FungibleConfig + NonfungibleConfig + RefungibleConfig, +{ + fn repartition() -> Weight { + dispatch_weight::() + <::WeightInfo>::repartition_item() + } +} --- a/runtime/opal/src/lib.rs +++ b/runtime/opal/src/lib.rs @@ -925,6 +925,7 @@ type Event = Event; type WeightInfo = pallet_unique::weights::SubstrateWeight; type CommonWeightInfo = CommonWeights; + type RefungibleExtensionsWeightInfo = CommonWeights; } parameter_types! { --- a/runtime/tests/src/lib.rs +++ b/runtime/tests/src/lib.rs @@ -255,6 +255,7 @@ type Event = (); type WeightInfo = (); type CommonWeightInfo = CommonWeights; + type RefungibleExtensionsWeightInfo = CommonWeights; } // Build genesis storage according to the mock runtime. --- a/runtime/tests/src/tests.rs +++ b/runtime/tests/src/tests.rs @@ -21,7 +21,7 @@ CreateReFungibleData, MAX_DECIMAL_POINTS, COLLECTION_ADMINS_LIMIT, TokenId, MAX_TOKEN_OWNERSHIP, CreateCollectionData, CollectionMode, AccessMode, CollectionPermissions, PropertyKeyPermission, PropertyPermission, Property, CollectionPropertiesVec, - CollectionPropertiesPermissionsVec, TokenChild, + CollectionPropertiesPermissionsVec, }; use frame_support::{assert_noop, assert_ok, assert_err}; use sp_std::convert::TryInto; -- gitstuff