difftreelog
decoupling of unique and refungible pallets
in: master
16 files changed
.gitignorediffbeforeafterboth--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,7 @@
/.idea/
/.cargo/
+/.vscode/
tests/.vscode
cumulus-parachain/
Cargo.lockdiffbeforeafterboth--- 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",
pallets/common/src/lib.rsdiffbeforeafterboth--- 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<T: Config> {
fn create_item(
&self,
@@ -1384,6 +1388,19 @@
spender: T::CrossAccountId,
token: TokenId,
) -> u128;
+ fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions<T>>;
+}
+
+pub trait RefungibleExtensions<T>
+where
+ T: Config,
+{
+ fn repartition(
+ &self,
+ owner: &T::CrossAccountId,
+ token: TokenId,
+ amount: u128,
+ ) -> DispatchResultWithPostInfo;
}
// Flexible enough for implementing CommonCollectionOperations
pallets/fungible/src/common.rsdiffbeforeafterboth--- 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 @@
}
<Allowance<T>>::get((self.id, sender, spender))
}
+
+ fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions<T>> {
+ None
+ }
}
pallets/nonfungible/src/common.rsdiffbeforeafterboth--- 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<T>> {
+ None
+ }
}
pallets/refungible/src/benchmarking.rsdiffbeforeafterboth--- 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)])?;
<Pallet<T>>::set_allowance(&collection, &sender, &burner, item, 200)?;
}: {<Pallet<T>>::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)])?;
+ }: {<Pallet<T>>::repartition(&collection, &owner, item, 200)?}
}
pallets/refungible/src/common.rsdiffbeforeafterboth--- 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 {
<Allowance<T>>::get((self.id, token, sender, spender))
}
+
+ fn refungible_extensions(&self) -> Option<&dyn RefungibleExtensions<T>> {
+ Some(self)
+ }
+}
+
+impl<T: Config> RefungibleExtensions<T> for RefungibleHandle<T> {
+ fn repartition(
+ &self,
+ owner: &T::CrossAccountId,
+ token: TokenId,
+ amount: u128,
+ ) -> DispatchResultWithPostInfo {
+ with_weight(
+ <Pallet<T>>::repartition(self, owner, token, amount),
+ <SelfWeightOf<T>>::repartition_item(),
+ )
+ }
}
pallets/refungible/src/lib.rsdiffbeforeafterboth--- a/pallets/refungible/src/lib.rs
+++ b/pallets/refungible/src/lib.rs
@@ -688,8 +688,8 @@
}
pub fn repartition(
+ collection: &RefungibleHandle<T>,
owner: &T::CrossAccountId,
- collection: &RefungibleHandle<T>,
token: TokenId,
amount: u128,
) -> DispatchResult {
pallets/refungible/src/weights.rsdiffbeforeafterboth--- 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))
+ }
}
pallets/unique/Cargo.tomldiffbeforeafterboth--- 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' }
pallets/unique/src/lib.rsdiffbeforeafterboth--- 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<Event<Self>> + Into<<Self as frame_system::Config>::Event>;
/// Weight information for extrinsics in this pallet.
type WeightInfo: WeightInfo;
type CommonWeightInfo: CommonWeightInfo<Self::CrossAccountId>;
+ type RefungibleExtensionsWeightInfo: RefungibleExtensionsWeightInfo;
}
decl_event! {
@@ -904,23 +902,22 @@
target_collection.save()
}
- #[weight = <SelfWeightOf<T>>::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 = <CollectionHandle<T>>::try_get(collection_id)?;
- target_collection.check_is_internal()?;
- let refungible_collection = match target_collection.mode {
- CollectionMode::ReFungible => RefungibleHandle::cast(target_collection),
- _ => fail!(<Error<T>>::RepartitionCalledOnNonRefungibleCollection),
- };
- <PalletRefungible<T>>::repartition(&sender, &refungible_collection, token, amount)?;
- Ok(())
+ dispatch_tx::<T, _>(collection_id, |d| {
+ if let Some(refungible_extensions) = d.refungible_extensions() {
+ refungible_extensions.repartition(&sender, token, amount)
+ } else {
+ fail!(<Error<T>>::RepartitionCalledOnNonRefungibleCollection)
+ }
+ })
}
}
}
pallets/unique/src/weights.rsdiffbeforeafterboth--- 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))
}
runtime/common/src/weights.rsdiffbeforeafterboth--- 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<T> RefungibleExtensionsWeightInfo for CommonWeights<T>
+where
+ T: FungibleConfig + NonfungibleConfig + RefungibleConfig,
+{
+ fn repartition() -> Weight {
+ dispatch_weight::<T>() + <<T as RefungibleConfig>::WeightInfo>::repartition_item()
+ }
+}
runtime/opal/src/lib.rsdiffbeforeafterboth--- 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<Self>;
type CommonWeightInfo = CommonWeights<Self>;
+ type RefungibleExtensionsWeightInfo = CommonWeights<Self>;
}
parameter_types! {
runtime/tests/src/lib.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![allow(clippy::from_over_into)]1819use sp_core::{H160, H256, U256};20use frame_support::{21 parameter_types,22 traits::{Everything, ConstU32, ConstU64},23 weights::IdentityFee,24};25use sp_runtime::{26 traits::{BlakeTwo256, IdentityLookup},27 testing::Header,28};29use pallet_transaction_payment::{CurrencyAdapter};30use frame_system as system;31use pallet_evm::{32 AddressMapping, account::CrossAccountId, EnsureAddressNever, SubstrateBlockHashMapping,33};34use fp_evm_mapping::EvmBackwardsAddressMapping;35use parity_scale_codec::{Encode, Decode, MaxEncodedLen};36use scale_info::TypeInfo;3738use unique_runtime_common::{dispatch::CollectionDispatchT, weights::CommonWeights};39use up_data_structs::mapping::{CrossTokenAddressMapping, EvmTokenAddressMapping};4041type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;42type Block = frame_system::mocking::MockBlock<Test>;4344#[cfg(test)]45mod tests;4647// Configure a mock runtime to test the pallet.48frame_support::construct_runtime!(49 pub enum Test where50 Block = Block,51 NodeBlock = Block,52 UncheckedExtrinsic = UncheckedExtrinsic,53 {54 System: frame_system::{Pallet, Call, Config, Storage, Event<T>},55 Unique: pallet_unique::{Pallet, Call, Storage},56 Balances: pallet_balances::{Pallet, Call, Storage},57 Common: pallet_common::{Pallet, Storage, Event<T>},58 Fungible: pallet_fungible::{Pallet, Storage},59 Refungible: pallet_refungible::{Pallet, Storage},60 Nonfungible: pallet_nonfungible::{Pallet, Storage},61 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>},62 }63);6465parameter_types! {66 pub const BlockHashCount: u64 = 250;67 pub const SS58Prefix: u8 = 42;68}6970impl system::Config for Test {71 type BaseCallFilter = Everything;72 type BlockWeights = ();73 type BlockLength = ();74 type DbWeight = ();75 type Origin = Origin;76 type Call = Call;77 type Index = u64;78 type BlockNumber = u64;79 type Hash = H256;80 type Hashing = BlakeTwo256;81 type AccountId = u64;82 type Lookup = IdentityLookup<Self::AccountId>;83 type Header = Header;84 type Event = ();85 type BlockHashCount = BlockHashCount;86 type Version = ();87 type PalletInfo = PalletInfo;88 type AccountData = pallet_balances::AccountData<u64>;89 type OnNewAccount = ();90 type OnKilledAccount = ();91 type SystemWeightInfo = ();92 type SS58Prefix = SS58Prefix;93 type OnSetCode = ();94 type MaxConsumers = ConstU32<16>;95}9697parameter_types! {98 pub const ExistentialDeposit: u64 = 1;99 pub const MaxLocks: u32 = 50;100}101//frame_system::Module<Test>;102impl pallet_balances::Config for Test {103 type AccountStore = System;104 type Balance = u64;105 type DustRemoval = ();106 type Event = ();107 type ExistentialDeposit = ExistentialDeposit;108 type WeightInfo = ();109 type MaxLocks = MaxLocks;110 type MaxReserves = ();111 type ReserveIdentifier = [u8; 8];112}113114parameter_types! {115 pub const OperationalFeeMultiplier: u8 = 5;116}117118impl pallet_transaction_payment::Config for Test {119 type OnChargeTransaction = CurrencyAdapter<pallet_balances::Pallet<Test>, ()>;120 type LengthToFee = IdentityFee<u64>;121 type WeightToFee = IdentityFee<u64>;122 type FeeMultiplierUpdate = ();123 type OperationalFeeMultiplier = OperationalFeeMultiplier;124}125126parameter_types! {127 pub const MinimumPeriod: u64 = 1;128}129impl pallet_timestamp::Config for Test {130 type Moment = u64;131 type OnTimestampSet = ();132 type MinimumPeriod = MinimumPeriod;133 type WeightInfo = ();134}135136parameter_types! {137 pub const CollectionCreationPrice: u32 = 100;138 pub TreasuryAccountId: u64 = 1234;139 pub EthereumChainId: u32 = 1111;140}141142pub struct TestEvmAddressMapping;143impl AddressMapping<u64> for TestEvmAddressMapping {144 fn into_account_id(_addr: sp_core::H160) -> u64 {145 unimplemented!()146 }147}148149pub struct TestEvmBackwardsAddressMapping;150impl EvmBackwardsAddressMapping<u64> for TestEvmBackwardsAddressMapping {151 fn from_account_id(_account_id: u64) -> sp_core::H160 {152 unimplemented!()153 }154}155156#[derive(Encode, Decode, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, TypeInfo, MaxEncodedLen)]157pub struct TestCrossAccountId(u64, sp_core::H160);158impl CrossAccountId<u64> for TestCrossAccountId {159 fn as_sub(&self) -> &u64 {160 &self.0161 }162 fn as_eth(&self) -> &sp_core::H160 {163 &self.1164 }165 fn from_sub(sub: u64) -> Self {166 let mut eth = [0; 20];167 eth[12..20].copy_from_slice(&sub.to_be_bytes());168 Self(sub, sp_core::H160(eth))169 }170 fn from_eth(eth: sp_core::H160) -> Self {171 let mut sub_raw = [0; 8];172 sub_raw.copy_from_slice(ð.0[0..8]);173 let sub = u64::from_be_bytes(sub_raw);174 Self(sub, eth)175 }176 fn conv_eq(&self, other: &Self) -> bool {177 self.as_sub() == other.as_sub()178 }179}180181impl Default for TestCrossAccountId {182 fn default() -> Self {183 Self::from_sub(0)184 }185}186187parameter_types! {188 pub BlockGasLimit: U256 = 0u32.into();189}190191impl pallet_evm::Config for Test {192 type Event = ();193 type FeeCalculator = ();194 type GasWeightMapping = ();195 type CallOrigin = EnsureAddressNever<Self::CrossAccountId>;196 type WithdrawOrigin = EnsureAddressNever<Self::CrossAccountId>;197 type AddressMapping = TestEvmAddressMapping;198 type Currency = Balances;199 type PrecompilesType = ();200 type PrecompilesValue = ();201 type Runner = pallet_evm::runner::stack::Runner<Self>;202 type ChainId = ConstU64<0>;203 type BlockGasLimit = BlockGasLimit;204 type OnMethodCall = ();205 type OnCreate = ();206 type OnChargeTransaction = ();207 type FindAuthor = ();208 type BlockHashMapping = SubstrateBlockHashMapping<Self>;209 type TransactionValidityHack = ();210}211impl pallet_evm_coder_substrate::Config for Test {}212213impl pallet_common::Config for Test {214 type WeightInfo = ();215 type Event = ();216 type Currency = Balances;217 type CollectionCreationPrice = CollectionCreationPrice;218 type TreasuryAccountId = TreasuryAccountId;219220 type CollectionDispatch = CollectionDispatchT<Self>;221 type EvmTokenAddressMapping = EvmTokenAddressMapping;222 type CrossTokenAddressMapping = CrossTokenAddressMapping<Self::AccountId>;223 type ContractAddress = EvmCollectionHelpersAddress;224}225226impl pallet_evm::account::Config for Test {227 type CrossAccountId = TestCrossAccountId;228 type EvmAddressMapping = TestEvmAddressMapping;229 type EvmBackwardsAddressMapping = TestEvmBackwardsAddressMapping;230}231232impl pallet_structure::Config for Test {233 type WeightInfo = ();234 type Event = ();235 type Call = Call;236}237impl pallet_fungible::Config for Test {238 type WeightInfo = ();239}240impl pallet_refungible::Config for Test {241 type WeightInfo = ();242}243impl pallet_nonfungible::Config for Test {244 type WeightInfo = ();245}246247parameter_types! {248 // 0x6c4e9fe1ae37a41e93cee429e8e1881abdcbb54f249 pub const EvmCollectionHelpersAddress: H160 = H160([250 0x6c, 0x4e, 0x9f, 0xe1, 0xae, 0x37, 0xa4, 0x1e, 0x93, 0xce, 0xe4, 0x29, 0xe8, 0xe1, 0x88, 0x1a, 0xbd, 0xcb, 0xb5, 0x4f,251 ]);252}253254impl pallet_unique::Config for Test {255 type Event = ();256 type WeightInfo = ();257 type CommonWeightInfo = CommonWeights<Self>;258}259260// Build genesis storage according to the mock runtime.261pub fn new_test_ext() -> sp_io::TestExternalities {262 system::GenesisConfig::default()263 .build_storage::<Test>()264 .unwrap()265 .into()266}1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![allow(clippy::from_over_into)]1819use sp_core::{H160, H256, U256};20use frame_support::{21 parameter_types,22 traits::{Everything, ConstU32, ConstU64},23 weights::IdentityFee,24};25use sp_runtime::{26 traits::{BlakeTwo256, IdentityLookup},27 testing::Header,28};29use pallet_transaction_payment::{CurrencyAdapter};30use frame_system as system;31use pallet_evm::{32 AddressMapping, account::CrossAccountId, EnsureAddressNever, SubstrateBlockHashMapping,33};34use fp_evm_mapping::EvmBackwardsAddressMapping;35use parity_scale_codec::{Encode, Decode, MaxEncodedLen};36use scale_info::TypeInfo;3738use unique_runtime_common::{dispatch::CollectionDispatchT, weights::CommonWeights};39use up_data_structs::mapping::{CrossTokenAddressMapping, EvmTokenAddressMapping};4041type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;42type Block = frame_system::mocking::MockBlock<Test>;4344#[cfg(test)]45mod tests;4647// Configure a mock runtime to test the pallet.48frame_support::construct_runtime!(49 pub enum Test where50 Block = Block,51 NodeBlock = Block,52 UncheckedExtrinsic = UncheckedExtrinsic,53 {54 System: frame_system::{Pallet, Call, Config, Storage, Event<T>},55 Unique: pallet_unique::{Pallet, Call, Storage},56 Balances: pallet_balances::{Pallet, Call, Storage},57 Common: pallet_common::{Pallet, Storage, Event<T>},58 Fungible: pallet_fungible::{Pallet, Storage},59 Refungible: pallet_refungible::{Pallet, Storage},60 Nonfungible: pallet_nonfungible::{Pallet, Storage},61 EVM: pallet_evm::{Pallet, Config, Call, Storage, Event<T>},62 }63);6465parameter_types! {66 pub const BlockHashCount: u64 = 250;67 pub const SS58Prefix: u8 = 42;68}6970impl system::Config for Test {71 type BaseCallFilter = Everything;72 type BlockWeights = ();73 type BlockLength = ();74 type DbWeight = ();75 type Origin = Origin;76 type Call = Call;77 type Index = u64;78 type BlockNumber = u64;79 type Hash = H256;80 type Hashing = BlakeTwo256;81 type AccountId = u64;82 type Lookup = IdentityLookup<Self::AccountId>;83 type Header = Header;84 type Event = ();85 type BlockHashCount = BlockHashCount;86 type Version = ();87 type PalletInfo = PalletInfo;88 type AccountData = pallet_balances::AccountData<u64>;89 type OnNewAccount = ();90 type OnKilledAccount = ();91 type SystemWeightInfo = ();92 type SS58Prefix = SS58Prefix;93 type OnSetCode = ();94 type MaxConsumers = ConstU32<16>;95}9697parameter_types! {98 pub const ExistentialDeposit: u64 = 1;99 pub const MaxLocks: u32 = 50;100}101//frame_system::Module<Test>;102impl pallet_balances::Config for Test {103 type AccountStore = System;104 type Balance = u64;105 type DustRemoval = ();106 type Event = ();107 type ExistentialDeposit = ExistentialDeposit;108 type WeightInfo = ();109 type MaxLocks = MaxLocks;110 type MaxReserves = ();111 type ReserveIdentifier = [u8; 8];112}113114parameter_types! {115 pub const OperationalFeeMultiplier: u8 = 5;116}117118impl pallet_transaction_payment::Config for Test {119 type OnChargeTransaction = CurrencyAdapter<pallet_balances::Pallet<Test>, ()>;120 type LengthToFee = IdentityFee<u64>;121 type WeightToFee = IdentityFee<u64>;122 type FeeMultiplierUpdate = ();123 type OperationalFeeMultiplier = OperationalFeeMultiplier;124}125126parameter_types! {127 pub const MinimumPeriod: u64 = 1;128}129impl pallet_timestamp::Config for Test {130 type Moment = u64;131 type OnTimestampSet = ();132 type MinimumPeriod = MinimumPeriod;133 type WeightInfo = ();134}135136parameter_types! {137 pub const CollectionCreationPrice: u32 = 100;138 pub TreasuryAccountId: u64 = 1234;139 pub EthereumChainId: u32 = 1111;140}141142pub struct TestEvmAddressMapping;143impl AddressMapping<u64> for TestEvmAddressMapping {144 fn into_account_id(_addr: sp_core::H160) -> u64 {145 unimplemented!()146 }147}148149pub struct TestEvmBackwardsAddressMapping;150impl EvmBackwardsAddressMapping<u64> for TestEvmBackwardsAddressMapping {151 fn from_account_id(_account_id: u64) -> sp_core::H160 {152 unimplemented!()153 }154}155156#[derive(Encode, Decode, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, TypeInfo, MaxEncodedLen)]157pub struct TestCrossAccountId(u64, sp_core::H160);158impl CrossAccountId<u64> for TestCrossAccountId {159 fn as_sub(&self) -> &u64 {160 &self.0161 }162 fn as_eth(&self) -> &sp_core::H160 {163 &self.1164 }165 fn from_sub(sub: u64) -> Self {166 let mut eth = [0; 20];167 eth[12..20].copy_from_slice(&sub.to_be_bytes());168 Self(sub, sp_core::H160(eth))169 }170 fn from_eth(eth: sp_core::H160) -> Self {171 let mut sub_raw = [0; 8];172 sub_raw.copy_from_slice(ð.0[0..8]);173 let sub = u64::from_be_bytes(sub_raw);174 Self(sub, eth)175 }176 fn conv_eq(&self, other: &Self) -> bool {177 self.as_sub() == other.as_sub()178 }179}180181impl Default for TestCrossAccountId {182 fn default() -> Self {183 Self::from_sub(0)184 }185}186187parameter_types! {188 pub BlockGasLimit: U256 = 0u32.into();189}190191impl pallet_evm::Config for Test {192 type Event = ();193 type FeeCalculator = ();194 type GasWeightMapping = ();195 type CallOrigin = EnsureAddressNever<Self::CrossAccountId>;196 type WithdrawOrigin = EnsureAddressNever<Self::CrossAccountId>;197 type AddressMapping = TestEvmAddressMapping;198 type Currency = Balances;199 type PrecompilesType = ();200 type PrecompilesValue = ();201 type Runner = pallet_evm::runner::stack::Runner<Self>;202 type ChainId = ConstU64<0>;203 type BlockGasLimit = BlockGasLimit;204 type OnMethodCall = ();205 type OnCreate = ();206 type OnChargeTransaction = ();207 type FindAuthor = ();208 type BlockHashMapping = SubstrateBlockHashMapping<Self>;209 type TransactionValidityHack = ();210}211impl pallet_evm_coder_substrate::Config for Test {}212213impl pallet_common::Config for Test {214 type WeightInfo = ();215 type Event = ();216 type Currency = Balances;217 type CollectionCreationPrice = CollectionCreationPrice;218 type TreasuryAccountId = TreasuryAccountId;219220 type CollectionDispatch = CollectionDispatchT<Self>;221 type EvmTokenAddressMapping = EvmTokenAddressMapping;222 type CrossTokenAddressMapping = CrossTokenAddressMapping<Self::AccountId>;223 type ContractAddress = EvmCollectionHelpersAddress;224}225226impl pallet_evm::account::Config for Test {227 type CrossAccountId = TestCrossAccountId;228 type EvmAddressMapping = TestEvmAddressMapping;229 type EvmBackwardsAddressMapping = TestEvmBackwardsAddressMapping;230}231232impl pallet_structure::Config for Test {233 type WeightInfo = ();234 type Event = ();235 type Call = Call;236}237impl pallet_fungible::Config for Test {238 type WeightInfo = ();239}240impl pallet_refungible::Config for Test {241 type WeightInfo = ();242}243impl pallet_nonfungible::Config for Test {244 type WeightInfo = ();245}246247parameter_types! {248 // 0x6c4e9fe1ae37a41e93cee429e8e1881abdcbb54f249 pub const EvmCollectionHelpersAddress: H160 = H160([250 0x6c, 0x4e, 0x9f, 0xe1, 0xae, 0x37, 0xa4, 0x1e, 0x93, 0xce, 0xe4, 0x29, 0xe8, 0xe1, 0x88, 0x1a, 0xbd, 0xcb, 0xb5, 0x4f,251 ]);252}253254impl pallet_unique::Config for Test {255 type Event = ();256 type WeightInfo = ();257 type CommonWeightInfo = CommonWeights<Self>;258 type RefungibleExtensionsWeightInfo = CommonWeights<Self>;259}260261// Build genesis storage according to the mock runtime.262pub fn new_test_ext() -> sp_io::TestExternalities {263 system::GenesisConfig::default()264 .build_storage::<Test>()265 .unwrap()266 .into()267}runtime/tests/src/tests.rsdiffbeforeafterboth--- 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;