Skip to content

Commit 21c2b30

Browse files
committed
refactor(nft-fractionalization): use asset-ops
1 parent 7a96ce8 commit 21c2b30

File tree

3 files changed

+112
-93
lines changed
  • cumulus/parachains/runtimes/assets
  • substrate/frame/nft-fractionalization/src

3 files changed

+112
-93
lines changed

cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,16 @@ use frame_support::{
6060
genesis_builder_helper::{build_state, get_preset},
6161
ord_parameter_types, parameter_types,
6262
traits::{
63-
fungible, fungibles, tokens::imbalance::ResolveAssetTo, AsEnsureOriginWithArg, ConstBool,
64-
ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse, Equals, InstanceFilter,
65-
TransformOrigin,
63+
fungible, fungibles,
64+
tokens::{
65+
asset_ops::{
66+
common_asset_kinds::Instance, common_strategies::Bytes, AssetDefinition,
67+
InspectMetadata,
68+
},
69+
imbalance::ResolveAssetTo,
70+
},
71+
AsEnsureOriginWithArg, ConstBool, ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse,
72+
Equals, InstanceFilter, TransformOrigin,
6673
},
6774
weights::{ConstantMultiplier, Weight, WeightToFee as _},
6875
BoundedVec, PalletId,
@@ -72,14 +79,16 @@ use frame_system::{
7279
EnsureRoot, EnsureSigned, EnsureSignedBy,
7380
};
7481
use pallet_asset_conversion_tx_payment::SwapAssetAdapter;
82+
use pallet_nft_fractionalization::{FractionalizedName, FractionalizedSymbol};
7583
use pallet_nfts::PalletFeatures;
7684
use parachains_common::{
7785
impls::DealWithFees,
7886
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
7987
AccountId, AssetIdForTrustBackedAssets, AuraId, Balance, BlockNumber, CollectionId, Hash,
8088
Header, ItemId, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO, NORMAL_DISPATCH_RATIO,
8189
};
82-
use sp_runtime::{Perbill, RuntimeDebug};
90+
use scale_info::prelude::{format, string::String};
91+
use sp_runtime::{DispatchError, Perbill, RuntimeDebug};
8392
use testnet_parachains_constants::rococo::{consensus::*, currency::*, fee::WeightToFee, time::*};
8493
use xcm_config::{
8594
ForeignAssetsConvertedConcreteId, ForeignCreatorsSovereignAccountOf, GovernanceLocation,
@@ -844,23 +853,39 @@ impl pallet_uniques::Config for Runtime {
844853

845854
parameter_types! {
846855
pub const NftFractionalizationPalletId: PalletId = PalletId(*b"fraction");
847-
pub NewAssetSymbol: BoundedVec<u8, AssetsStringLimit> = (*b"FRAC").to_vec().try_into().unwrap();
848-
pub NewAssetName: BoundedVec<u8, AssetsStringLimit> = (*b"Frac").to_vec().try_into().unwrap();
856+
}
857+
858+
pub struct FractionalizedNfts;
859+
impl AssetDefinition<Instance> for FractionalizedNfts {
860+
type Id = <Nfts as AssetDefinition<Instance>>::Id;
861+
}
862+
impl InspectMetadata<Instance, Bytes<FractionalizedName>> for FractionalizedNfts {
863+
fn inspect_metadata(
864+
(collection_id, item_id): &Self::Id,
865+
_frac_name: Bytes<FractionalizedName>,
866+
) -> Result<Vec<u8>, DispatchError> {
867+
Ok(format!("Frac {collection_id}-{item_id}").into_bytes())
868+
}
869+
}
870+
impl InspectMetadata<Instance, Bytes<FractionalizedSymbol>> for FractionalizedNfts {
871+
fn inspect_metadata(
872+
_instance_id: &Self::Id,
873+
_frac_name: Bytes<FractionalizedSymbol>,
874+
) -> Result<Vec<u8>, DispatchError> {
875+
Ok(String::from("FRAC").into_bytes())
876+
}
849877
}
850878

851879
impl pallet_nft_fractionalization::Config for Runtime {
852880
type RuntimeEvent = RuntimeEvent;
853881
type Deposit = AssetDeposit;
854882
type Currency = Balances;
855-
type NewAssetSymbol = NewAssetSymbol;
856-
type NewAssetName = NewAssetName;
857-
type StringLimit = AssetsStringLimit;
858-
type NftCollectionId = <Self as pallet_nfts::Config>::CollectionId;
859-
type NftId = <Self as pallet_nfts::Config>::ItemId;
860883
type AssetBalance = <Self as pallet_balances::Config>::Balance;
861884
type AssetId = <Self as pallet_assets::Config<TrustBackedAssetsInstance>>::AssetId;
862885
type Assets = Assets;
886+
type NftId = <Nfts as AssetDefinition<Instance>>::Id;
863887
type Nfts = Nfts;
888+
type FractionalizedNfts = FractionalizedNfts;
864889
type PalletId = NftFractionalizationPalletId;
865890
type WeightInfo = pallet_nft_fractionalization::weights::SubstrateWeight<Runtime>;
866891
type RuntimeHoldReason = RuntimeHoldReason;

cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,14 @@ use frame_support::{
4444
ord_parameter_types, parameter_types,
4545
traits::{
4646
fungible, fungibles,
47-
tokens::{imbalance::ResolveAssetTo, nonfungibles_v2::Inspect},
47+
tokens::{
48+
asset_ops::{
49+
common_asset_kinds::Instance, common_strategies::Bytes, AssetDefinition,
50+
InspectMetadata,
51+
},
52+
imbalance::ResolveAssetTo,
53+
nonfungibles_v2::Inspect,
54+
},
4855
AsEnsureOriginWithArg, ConstBool, ConstU128, ConstU32, ConstU64, ConstU8, Equals,
4956
InstanceFilter, TransformOrigin,
5057
},
@@ -56,20 +63,22 @@ use frame_system::{
5663
EnsureRoot, EnsureSigned, EnsureSignedBy,
5764
};
5865
use pallet_asset_conversion_tx_payment::SwapAssetAdapter;
66+
use pallet_nft_fractionalization::{FractionalizedName, FractionalizedSymbol};
5967
use pallet_nfts::{DestroyWitness, PalletFeatures};
6068
use pallet_xcm::EnsureXcm;
6169
use parachains_common::{
6270
impls::DealWithFees, message_queue::*, AccountId, AssetIdForTrustBackedAssets, AuraId, Balance,
6371
BlockNumber, CollectionId, Hash, Header, ItemId, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO,
6472
NORMAL_DISPATCH_RATIO,
6573
};
74+
use scale_info::prelude::{format, string::String};
6675
use sp_api::impl_runtime_apis;
6776
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
6877
use sp_runtime::{
6978
create_runtime_str, generic, impl_opaque_keys,
7079
traits::{AccountIdConversion, BlakeTwo256, Block as BlockT, Saturating, Verify},
7180
transaction_validity::{TransactionSource, TransactionValidity},
72-
ApplyExtrinsicResult, Perbill, Permill, RuntimeDebug,
81+
ApplyExtrinsicResult, DispatchError, Perbill, Permill, RuntimeDebug,
7382
};
7483
#[cfg(feature = "std")]
7584
use sp_version::NativeVersion;
@@ -833,23 +842,39 @@ impl pallet_uniques::Config for Runtime {
833842

834843
parameter_types! {
835844
pub const NftFractionalizationPalletId: PalletId = PalletId(*b"fraction");
836-
pub NewAssetSymbol: BoundedVec<u8, AssetsStringLimit> = (*b"FRAC").to_vec().try_into().unwrap();
837-
pub NewAssetName: BoundedVec<u8, AssetsStringLimit> = (*b"Frac").to_vec().try_into().unwrap();
845+
}
846+
847+
pub struct FractionalizedNfts;
848+
impl AssetDefinition<Instance> for FractionalizedNfts {
849+
type Id = <Nfts as AssetDefinition<Instance>>::Id;
850+
}
851+
impl InspectMetadata<Instance, Bytes<FractionalizedName>> for FractionalizedNfts {
852+
fn inspect_metadata(
853+
(collection_id, item_id): &Self::Id,
854+
_frac_name: Bytes<FractionalizedName>,
855+
) -> Result<Vec<u8>, DispatchError> {
856+
Ok(format!("Frac {collection_id}-{item_id}").into_bytes())
857+
}
858+
}
859+
impl InspectMetadata<Instance, Bytes<FractionalizedSymbol>> for FractionalizedNfts {
860+
fn inspect_metadata(
861+
_instance_id: &Self::Id,
862+
_frac_name: Bytes<FractionalizedSymbol>,
863+
) -> Result<Vec<u8>, DispatchError> {
864+
Ok(String::from("FRAC").into_bytes())
865+
}
838866
}
839867

840868
impl pallet_nft_fractionalization::Config for Runtime {
841869
type RuntimeEvent = RuntimeEvent;
842870
type Deposit = AssetDeposit;
843871
type Currency = Balances;
844-
type NewAssetSymbol = NewAssetSymbol;
845-
type NewAssetName = NewAssetName;
846-
type StringLimit = AssetsStringLimit;
847-
type NftCollectionId = <Self as pallet_nfts::Config>::CollectionId;
848-
type NftId = <Self as pallet_nfts::Config>::ItemId;
849872
type AssetBalance = <Self as pallet_balances::Config>::Balance;
850873
type AssetId = <Self as pallet_assets::Config<TrustBackedAssetsInstance>>::AssetId;
851874
type Assets = Assets;
875+
type NftId = <Nfts as AssetDefinition<Instance>>::Id;
852876
type Nfts = Nfts;
877+
type FractionalizedNfts = FractionalizedNfts;
853878
type PalletId = NftFractionalizationPalletId;
854879
type WeightInfo = pallet_nft_fractionalization::weights::SubstrateWeight<Runtime>;
855880
type RuntimeHoldReason = RuntimeHoldReason;

0 commit comments

Comments
 (0)