Skip to content

Commit 3f12aeb

Browse files
committed
refactor(nft-fractionalization): use asset-ops
1 parent 20cd25d commit 3f12aeb

File tree

3 files changed

+114
-94
lines changed
  • cumulus/parachains/runtimes/assets
  • substrate/frame/nft-fractionalization/src

3 files changed

+114
-94
lines changed

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

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,16 @@ use frame_support::{
6262
genesis_builder_helper::{build_state, get_preset},
6363
ord_parameter_types, parameter_types,
6464
traits::{
65-
fungible, fungibles, tokens::imbalance::ResolveAssetTo, AsEnsureOriginWithArg, ConstBool,
66-
ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse, InstanceFilter, TransformOrigin,
65+
fungible, fungibles,
66+
tokens::{
67+
asset_ops::{
68+
common_asset_kinds::Instance, common_strategies::Bytes, AssetDefinition,
69+
InspectMetadata,
70+
},
71+
imbalance::ResolveAssetTo,
72+
},
73+
AsEnsureOriginWithArg, ConstBool, ConstU128, ConstU32, ConstU64, ConstU8, EitherOfDiverse,
74+
Equals, InstanceFilter, TransformOrigin,
6775
},
6876
weights::{ConstantMultiplier, Weight, WeightToFee as _},
6977
BoundedVec, PalletId,
@@ -73,14 +81,16 @@ use frame_system::{
7381
EnsureRoot, EnsureSigned, EnsureSignedBy,
7482
};
7583
use pallet_asset_conversion_tx_payment::SwapAssetAdapter;
84+
use pallet_nft_fractionalization::{FractionalizedName, FractionalizedSymbol};
7685
use pallet_nfts::PalletFeatures;
7786
use parachains_common::{
7887
impls::DealWithFees,
7988
message_queue::{NarrowOriginToSibling, ParaIdToSibling},
8089
AccountId, AssetIdForTrustBackedAssets, AuraId, Balance, BlockNumber, CollectionId, Hash,
8190
Header, ItemId, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO, NORMAL_DISPATCH_RATIO,
8291
};
83-
use sp_runtime::{Perbill, RuntimeDebug};
92+
use scale_info::prelude::{format, string::String};
93+
use sp_runtime::{DispatchError, Perbill, RuntimeDebug};
8494
use testnet_parachains_constants::rococo::{consensus::*, currency::*, fee::WeightToFee, time::*};
8595
use xcm_config::{
8696
ForeignAssetsConvertedConcreteId, ForeignCreatorsSovereignAccountOf, GovernanceLocation,
@@ -848,23 +858,39 @@ impl pallet_uniques::Config for Runtime {
848858

849859
parameter_types! {
850860
pub const NftFractionalizationPalletId: PalletId = PalletId(*b"fraction");
851-
pub NewAssetSymbol: BoundedVec<u8, AssetsStringLimit> = (*b"FRAC").to_vec().try_into().unwrap();
852-
pub NewAssetName: BoundedVec<u8, AssetsStringLimit> = (*b"Frac").to_vec().try_into().unwrap();
861+
}
862+
863+
pub struct FractionalizedNfts;
864+
impl AssetDefinition<Instance> for FractionalizedNfts {
865+
type Id = <Nfts as AssetDefinition<Instance>>::Id;
866+
}
867+
impl InspectMetadata<Instance, Bytes<FractionalizedName>> for FractionalizedNfts {
868+
fn inspect_metadata(
869+
(collection_id, item_id): &Self::Id,
870+
_frac_name: Bytes<FractionalizedName>,
871+
) -> Result<Vec<u8>, DispatchError> {
872+
Ok(format!("Frac {collection_id}-{item_id}").into_bytes())
873+
}
874+
}
875+
impl InspectMetadata<Instance, Bytes<FractionalizedSymbol>> for FractionalizedNfts {
876+
fn inspect_metadata(
877+
_instance_id: &Self::Id,
878+
_frac_name: Bytes<FractionalizedSymbol>,
879+
) -> Result<Vec<u8>, DispatchError> {
880+
Ok(String::from("FRAC").into_bytes())
881+
}
853882
}
854883

855884
impl pallet_nft_fractionalization::Config for Runtime {
856885
type RuntimeEvent = RuntimeEvent;
857886
type Deposit = AssetDeposit;
858887
type Currency = Balances;
859-
type NewAssetSymbol = NewAssetSymbol;
860-
type NewAssetName = NewAssetName;
861-
type StringLimit = AssetsStringLimit;
862-
type NftCollectionId = <Self as pallet_nfts::Config>::CollectionId;
863-
type NftId = <Self as pallet_nfts::Config>::ItemId;
864888
type AssetBalance = <Self as pallet_balances::Config>::Balance;
865889
type AssetId = <Self as pallet_assets::Config<TrustBackedAssetsInstance>>::AssetId;
866890
type Assets = Assets;
891+
type NftId = <Nfts as AssetDefinition<Instance>>::Id;
867892
type Nfts = Nfts;
893+
type FractionalizedNfts = FractionalizedNfts;
868894
type PalletId = NftFractionalizationPalletId;
869895
type WeightInfo = pallet_nft_fractionalization::weights::SubstrateWeight<Runtime>;
870896
type RuntimeHoldReason = RuntimeHoldReason;

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

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,16 @@ use frame_support::{
4444
ord_parameter_types, parameter_types,
4545
traits::{
4646
fungible, fungibles,
47-
tokens::{imbalance::ResolveAssetTo, nonfungibles_v2::Inspect},
48-
AsEnsureOriginWithArg, ConstBool, ConstU128, ConstU32, ConstU64, ConstU8, InstanceFilter,
49-
TransformOrigin,
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+
},
55+
AsEnsureOriginWithArg, ConstBool, ConstU128, ConstU32, ConstU64, ConstU8, Equals,
56+
InstanceFilter, TransformOrigin,
5057
},
5158
weights::{ConstantMultiplier, Weight, WeightToFee as _},
5259
BoundedVec, PalletId,
@@ -56,19 +63,21 @@ 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 parachains_common::{
6169
impls::DealWithFees, message_queue::*, AccountId, AssetIdForTrustBackedAssets, AuraId, Balance,
6270
BlockNumber, CollectionId, Hash, Header, ItemId, Nonce, Signature, AVERAGE_ON_INITIALIZE_RATIO,
6371
NORMAL_DISPATCH_RATIO,
6472
};
73+
use scale_info::prelude::{format, string::String};
6574
use sp_api::impl_runtime_apis;
6675
use sp_core::{crypto::KeyTypeId, OpaqueMetadata};
6776
use sp_runtime::{
6877
create_runtime_str, generic, impl_opaque_keys,
6978
traits::{AccountIdConversion, BlakeTwo256, Block as BlockT, Saturating, Verify},
7079
transaction_validity::{TransactionSource, TransactionValidity},
71-
ApplyExtrinsicResult, Perbill, Permill, RuntimeDebug,
80+
ApplyExtrinsicResult, DispatchError, Perbill, Permill, RuntimeDebug,
7281
};
7382
#[cfg(feature = "std")]
7483
use sp_version::NativeVersion;
@@ -839,23 +848,39 @@ impl pallet_uniques::Config for Runtime {
839848

840849
parameter_types! {
841850
pub const NftFractionalizationPalletId: PalletId = PalletId(*b"fraction");
842-
pub NewAssetSymbol: BoundedVec<u8, AssetsStringLimit> = (*b"FRAC").to_vec().try_into().unwrap();
843-
pub NewAssetName: BoundedVec<u8, AssetsStringLimit> = (*b"Frac").to_vec().try_into().unwrap();
851+
}
852+
853+
pub struct FractionalizedNfts;
854+
impl AssetDefinition<Instance> for FractionalizedNfts {
855+
type Id = <Nfts as AssetDefinition<Instance>>::Id;
856+
}
857+
impl InspectMetadata<Instance, Bytes<FractionalizedName>> for FractionalizedNfts {
858+
fn inspect_metadata(
859+
(collection_id, item_id): &Self::Id,
860+
_frac_name: Bytes<FractionalizedName>,
861+
) -> Result<Vec<u8>, DispatchError> {
862+
Ok(format!("Frac {collection_id}-{item_id}").into_bytes())
863+
}
864+
}
865+
impl InspectMetadata<Instance, Bytes<FractionalizedSymbol>> for FractionalizedNfts {
866+
fn inspect_metadata(
867+
_instance_id: &Self::Id,
868+
_frac_name: Bytes<FractionalizedSymbol>,
869+
) -> Result<Vec<u8>, DispatchError> {
870+
Ok(String::from("FRAC").into_bytes())
871+
}
844872
}
845873

846874
impl pallet_nft_fractionalization::Config for Runtime {
847875
type RuntimeEvent = RuntimeEvent;
848876
type Deposit = AssetDeposit;
849877
type Currency = Balances;
850-
type NewAssetSymbol = NewAssetSymbol;
851-
type NewAssetName = NewAssetName;
852-
type StringLimit = AssetsStringLimit;
853-
type NftCollectionId = <Self as pallet_nfts::Config>::CollectionId;
854-
type NftId = <Self as pallet_nfts::Config>::ItemId;
855878
type AssetBalance = <Self as pallet_balances::Config>::Balance;
856879
type AssetId = <Self as pallet_assets::Config<TrustBackedAssetsInstance>>::AssetId;
857880
type Assets = Assets;
881+
type NftId = <Nfts as AssetDefinition<Instance>>::Id;
858882
type Nfts = Nfts;
883+
type FractionalizedNfts = FractionalizedNfts;
859884
type PalletId = NftFractionalizationPalletId;
860885
type WeightInfo = pallet_nft_fractionalization::weights::SubstrateWeight<Runtime>;
861886
type RuntimeHoldReason = RuntimeHoldReason;

0 commit comments

Comments
 (0)