From c13ccd4abb0c7a1bf0e9d332ea9a6e8fac72eaac Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Thu, 7 Sep 2023 15:03:38 +0100 Subject: [PATCH 1/7] add missing nft apis --- .../assets/asset-hub-kusama/src/lib.rs | 44 +++++++++++++++++++ .../assets/asset-hub-polkadot/src/lib.rs | 43 ++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs index 828d1b4750a3..623f010474f1 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs @@ -1026,6 +1026,50 @@ impl_runtime_apis! { } } + impl pallet_nfts_runtime_api::NftsApi for Runtime { + fn owner(collection: u32, item: u32) -> Option { + >::owner(&collection, &item) + } + + fn collection_owner(collection: u32) -> Option { + >::collection_owner(&collection) + } + + fn attribute( + collection: u32, + item: u32, + key: Vec, + ) -> Option> { + >::attribute(&collection, &item, &key) + } + + fn custom_attribute( + account: AccountId, + collection: u32, + item: u32, + key: Vec, + ) -> Option> { + >::custom_attribute( + &account, + &collection, + &item, + &key, + ) + } + + fn system_attribute( + collection: u32, + item: u32, + key: Vec, + ) -> Option> { + >::system_attribute(&collection, &item, &key) + } + + fn collection_attribute(collection: u32, key: Vec) -> Option> { + >::collection_attribute(&collection, &key) + } + } + impl pallet_asset_conversion::AssetConversionApi< Block, Balance, diff --git a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs index 0051af21f9a3..6312573ec628 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs @@ -930,6 +930,49 @@ impl_runtime_apis! { } } + impl pallet_nfts_runtime_api::NftsApi for Runtime { + fn owner(collection: u32, item: u32) -> Option { + >::owner(&collection, &item) + } + + fn collection_owner(collection: u32) -> Option { + >::collection_owner(&collection) + } + + fn attribute( + collection: u32, + item: u32, + key: Vec, + ) -> Option> { + >::attribute(&collection, &item, &key) + } + + fn custom_attribute( + account: AccountId, + collection: u32, + item: u32, + key: Vec, + ) -> Option> { + >::custom_attribute( + &account, + &collection, + &item, + &key, + ) + } + + fn system_attribute( + collection: u32, + item: u32, + key: Vec, + ) -> Option> { + >::system_attribute(&collection, &item, &key) + } + + fn collection_attribute(collection: u32, key: Vec) -> Option> { + >::collection_attribute(&collection, &key) + } + } impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi for Runtime { fn query_info( uxt: ::Extrinsic, From 88f905fa4503beeda7c068b166e1eabfda05dd96 Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Fri, 8 Sep 2023 13:02:55 +0100 Subject: [PATCH 2/7] missing import --- .../parachains/runtimes/assets/asset-hub-kusama/src/lib.rs | 4 ++-- .../parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs index 623f010474f1..3f74952ff1e6 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs @@ -54,8 +54,8 @@ use frame_support::{ dispatch::DispatchClass, ord_parameter_types, parameter_types, traits::{ - AsEnsureOriginWithArg, ConstBool, ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse, - InstanceFilter, + tokens::nonfungibles_v2::Inspect, AsEnsureOriginWithArg, ConstBool, ConstU128, ConstU32, + ConstU64, ConstU8, EitherOfDiverse, InstanceFilter, }, weights::{ConstantMultiplier, Weight}, BoundedVec, PalletId, diff --git a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs index 6312573ec628..e2391944aa09 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs @@ -70,7 +70,10 @@ use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; use sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, - traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, ConvertInto, Verify}, + traits::{ + tokens::nonfungibles_v2::Inspect, AccountIdLookup, BlakeTwo256, Block as BlockT, + ConvertInto, Verify, + }, transaction_validity::{TransactionSource, TransactionValidity}, ApplyExtrinsicResult, }; From b30d6471081f3cb7a1485598315f7ad5f192d387 Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Fri, 8 Sep 2023 13:05:17 +0100 Subject: [PATCH 3/7] correct location --- .../runtimes/assets/asset-hub-polkadot/src/lib.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs index e2391944aa09..fa523fb3e4d8 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs @@ -70,10 +70,7 @@ use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata}; use sp_runtime::{ create_runtime_str, generic, impl_opaque_keys, - traits::{ - tokens::nonfungibles_v2::Inspect, AccountIdLookup, BlakeTwo256, Block as BlockT, - ConvertInto, Verify, - }, + traits::{AccountIdLookup, BlakeTwo256, Block as BlockT, ConvertInto, Verify}, transaction_validity::{TransactionSource, TransactionValidity}, ApplyExtrinsicResult, }; @@ -89,8 +86,8 @@ use frame_support::{ dispatch::DispatchClass, parameter_types, traits::{ - AsEnsureOriginWithArg, ConstBool, ConstU32, ConstU64, ConstU8, EitherOfDiverse, - InstanceFilter, + tokens::nonfungibles_v2::Inspect, AsEnsureOriginWithArg, ConstBool, ConstU32, ConstU64, + ConstU8, EitherOfDiverse, InstanceFilter, }, weights::{ConstantMultiplier, Weight}, PalletId, From 778f4a9259a19ab893ccef86e1a162a5b5e07169 Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Wed, 13 Sep 2023 16:09:35 +0100 Subject: [PATCH 4/7] Use type alias rather than concrete type --- .../assets/asset-hub-kusama/src/lib.rs | 30 +++++++++--------- .../assets/asset-hub-polkadot/src/lib.rs | 31 ++++++++++--------- .../assets/asset-hub-westend/src/lib.rs | 30 +++++++++--------- .../runtimes/assets/common/src/lib.rs | 6 ++++ 4 files changed, 52 insertions(+), 45 deletions(-) diff --git a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs index 3f74952ff1e6..efbdd83421e9 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs @@ -31,7 +31,7 @@ use assets_common::{ foreign_creators::ForeignCreators, local_and_foreign_assets::{LocalAndForeignAssets, MultiLocationConverter}, matching::FromSiblingParachain, - AssetIdForTrustBackedAssetsConvert, MultiLocationForAssetId, + AssetIdForTrustBackedAssetsConvert, CollectionId, ItemId, MultiLocationForAssetId, }; use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use sp_api::impl_runtime_apis; @@ -730,8 +730,8 @@ parameter_types! { impl pallet_uniques::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type CollectionId = u32; - type ItemId = u32; + type CollectionId = CollectionId; + type ItemId = ItemId; type Currency = Balances; type ForceOrigin = AssetsForceOrigin; type CollectionDeposit = UniquesCollectionDeposit; @@ -788,8 +788,8 @@ parameter_types! { impl pallet_nfts::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type CollectionId = u32; - type ItemId = u32; + type CollectionId = CollectionId; + type ItemId = ItemId; type Currency = Balances; type CreateOrigin = AsEnsureOriginWithArg>; type ForceOrigin = AssetsForceOrigin; @@ -1026,18 +1026,18 @@ impl_runtime_apis! { } } - impl pallet_nfts_runtime_api::NftsApi for Runtime { - fn owner(collection: u32, item: u32) -> Option { + impl pallet_nfts_runtime_api::NftsApi for Runtime { + fn owner(collection: CollectionId, item: ItemId) -> Option { >::owner(&collection, &item) } - fn collection_owner(collection: u32) -> Option { + fn collection_owner(collection: CollectionId) -> Option { >::collection_owner(&collection) } fn attribute( - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::attribute(&collection, &item, &key) @@ -1045,8 +1045,8 @@ impl_runtime_apis! { fn custom_attribute( account: AccountId, - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::custom_attribute( @@ -1058,14 +1058,14 @@ impl_runtime_apis! { } fn system_attribute( - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::system_attribute(&collection, &item, &key) } - fn collection_attribute(collection: u32, key: Vec) -> Option> { + fn collection_attribute(collection: CollectionId, key: Vec) -> Option> { >::collection_attribute(&collection, &key) } } diff --git a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs index fa523fb3e4d8..f698ce15632b 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs @@ -63,7 +63,8 @@ mod weights; pub mod xcm_config; use assets_common::{ - foreign_creators::ForeignCreators, matching::FromSiblingParachain, MultiLocationForAssetId, + foreign_creators::ForeignCreators, matching::FromSiblingParachain, CollectionId, ItemId, + MultiLocationForAssetId, }; use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; use sp_api::impl_runtime_apis; @@ -670,8 +671,8 @@ parameter_types! { impl pallet_uniques::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type CollectionId = u32; - type ItemId = u32; + type CollectionId = CollectionId; + type ItemId = ItemId; type Currency = Balances; type ForceOrigin = AssetsForceOrigin; type CollectionDeposit = UniquesCollectionDeposit; @@ -702,8 +703,8 @@ parameter_types! { impl pallet_nfts::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type CollectionId = u32; - type ItemId = u32; + type CollectionId = CollectionId; + type ItemId = ItemId; type Currency = Balances; type CreateOrigin = AsEnsureOriginWithArg>; type ForceOrigin = AssetsForceOrigin; @@ -930,18 +931,18 @@ impl_runtime_apis! { } } - impl pallet_nfts_runtime_api::NftsApi for Runtime { - fn owner(collection: u32, item: u32) -> Option { + impl pallet_nfts_runtime_api::NftsApi for Runtime { + fn owner(collection: CollectionId, item: ItemId) -> Option { >::owner(&collection, &item) } - fn collection_owner(collection: u32) -> Option { + fn collection_owner(collection: CollectionId) -> Option { >::collection_owner(&collection) } fn attribute( - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::attribute(&collection, &item, &key) @@ -949,8 +950,8 @@ impl_runtime_apis! { fn custom_attribute( account: AccountId, - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::custom_attribute( @@ -962,14 +963,14 @@ impl_runtime_apis! { } fn system_attribute( - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::system_attribute(&collection, &item, &key) } - fn collection_attribute(collection: u32, key: Vec) -> Option> { + fn collection_attribute(collection: CollectionId, key: Vec) -> Option> { >::collection_attribute(&collection, &key) } } diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs index 4887fce1b0a4..2a23d527cb24 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs @@ -32,7 +32,7 @@ use crate::xcm_config::{ }; use assets_common::{ local_and_foreign_assets::{LocalAndForeignAssets, MultiLocationConverter}, - AssetIdForTrustBackedAssetsConvert, + AssetIdForTrustBackedAssetsConvert, CollectionId, ItemId, }; use codec::{Decode, Encode, MaxEncodedLen}; use cumulus_pallet_parachain_system::RelayNumberStrictlyIncreases; @@ -692,8 +692,8 @@ parameter_types! { impl pallet_uniques::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type CollectionId = u32; - type ItemId = u32; + type CollectionId = CollectionId; + type ItemId = ItemId; type Currency = Balances; type ForceOrigin = AssetsForceOrigin; type CollectionDeposit = UniquesCollectionDeposit; @@ -750,8 +750,8 @@ parameter_types! { impl pallet_nfts::Config for Runtime { type RuntimeEvent = RuntimeEvent; - type CollectionId = u32; - type ItemId = u32; + type CollectionId = CollectionId; + type ItemId = ItemId; type Currency = Balances; type CreateOrigin = AsEnsureOriginWithArg>; type ForceOrigin = AssetsForceOrigin; @@ -993,18 +993,18 @@ impl_runtime_apis! { } } - impl pallet_nfts_runtime_api::NftsApi for Runtime { - fn owner(collection: u32, item: u32) -> Option { + impl pallet_nfts_runtime_api::NftsApi for Runtime { + fn owner(collection: CollectionId, item: ItemId) -> Option { >::owner(&collection, &item) } - fn collection_owner(collection: u32) -> Option { + fn collection_owner(collection: CollectionId) -> Option { >::collection_owner(&collection) } fn attribute( - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::attribute(&collection, &item, &key) @@ -1012,8 +1012,8 @@ impl_runtime_apis! { fn custom_attribute( account: AccountId, - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::custom_attribute( @@ -1025,14 +1025,14 @@ impl_runtime_apis! { } fn system_attribute( - collection: u32, - item: u32, + collection: CollectionId, + item: ItemId, key: Vec, ) -> Option> { >::system_attribute(&collection, &item, &key) } - fn collection_attribute(collection: u32, key: Vec) -> Option> { + fn collection_attribute(collection: CollectionId, key: Vec) -> Option> { >::collection_attribute(&collection, &key) } } diff --git a/cumulus/parachains/runtimes/assets/common/src/lib.rs b/cumulus/parachains/runtimes/assets/common/src/lib.rs index 560a89b131c0..b0a9d91d9ebd 100644 --- a/cumulus/parachains/runtimes/assets/common/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/common/src/lib.rs @@ -93,6 +93,12 @@ pub type PoolAssetsConvertedConcreteId = JustTry, >; +/// Type to identify a particular NFT collection +pub type CollectionId = u32; + +/// Type to identify a paritcular NFT in a collection +pub type ItemId = u32; + #[cfg(test)] mod tests { use super::*; From ce7ff0ba742f4e1a3bb089ad96ac3700bf16dd11 Mon Sep 17 00:00:00 2001 From: Giles Cope Date: Thu, 26 Oct 2023 14:33:00 +0100 Subject: [PATCH 5/7] updating to Option --- .../parachains/runtimes/assets/asset-hub-kusama/src/lib.rs | 4 ++-- .../parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs index 055314019a8d..961296060f56 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs @@ -1063,10 +1063,10 @@ impl_runtime_apis! { fn system_attribute( collection: CollectionId, - item: ItemId, + item: Option, key: Vec, ) -> Option> { - >::system_attribute(&collection, &item, &key) + >::system_attribute(&collection, item.as_ref(), &key) } fn collection_attribute(collection: CollectionId, key: Vec) -> Option> { diff --git a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs index c3b564272fa4..be6dd29941ba 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-polkadot/src/lib.rs @@ -968,10 +968,10 @@ impl_runtime_apis! { fn system_attribute( collection: CollectionId, - item: ItemId, + item: Option, key: Vec, ) -> Option> { - >::system_attribute(&collection, &item, &key) + >::system_attribute(&collection, item.as_ref(), &key) } fn collection_attribute(collection: CollectionId, key: Vec) -> Option> { From ecbf74d809f30c409253ff75d9888712fdfe8c60 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Fri, 27 Oct 2023 10:32:05 +0100 Subject: [PATCH 6/7] Update cumulus/parachains/runtimes/assets/common/src/lib.rs Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- cumulus/parachains/runtimes/assets/common/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cumulus/parachains/runtimes/assets/common/src/lib.rs b/cumulus/parachains/runtimes/assets/common/src/lib.rs index 4f6bccc1d50c..f1e9ed89926b 100644 --- a/cumulus/parachains/runtimes/assets/common/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/common/src/lib.rs @@ -93,7 +93,7 @@ pub type PoolAssetsConvertedConcreteId = JustTry, >; -/// Type to identify a particular NFT collection +/// Type to identify a particular NFT collection. pub type CollectionId = u32; /// Type to identify a paritcular NFT in a collection From c84a2f06a2ece765b48909b3b3fdb8102e7ad511 Mon Sep 17 00:00:00 2001 From: Squirrel Date: Fri, 27 Oct 2023 10:32:11 +0100 Subject: [PATCH 7/7] Update cumulus/parachains/runtimes/assets/common/src/lib.rs Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> --- cumulus/parachains/runtimes/assets/common/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cumulus/parachains/runtimes/assets/common/src/lib.rs b/cumulus/parachains/runtimes/assets/common/src/lib.rs index f1e9ed89926b..c2f73e72f68e 100644 --- a/cumulus/parachains/runtimes/assets/common/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/common/src/lib.rs @@ -96,7 +96,7 @@ pub type PoolAssetsConvertedConcreteId = /// Type to identify a particular NFT collection. pub type CollectionId = u32; -/// Type to identify a paritcular NFT in a collection +/// Type to identify a particular NFT in a collection. pub type ItemId = u32; #[cfg(test)]