git.delta.rocks / unique-network / refs/commits / e90158d94962

difftreelog

refactor drop rmrk compatibility layer

Yaroslav Bolyukin2023-02-05parent: #d110539.patch.diff
in: master

85 files changed

modifiedCargo.lockdiffbeforeafterboth
5543 "pallet-nonfungible",5543 "pallet-nonfungible",
5544 "pallet-randomness-collective-flip",5544 "pallet-randomness-collective-flip",
5545 "pallet-refungible",5545 "pallet-refungible",
5546 "pallet-rmrk-core",
5547 "pallet-rmrk-equip",
5548 "pallet-session",5546 "pallet-session",
5549 "pallet-structure",5547 "pallet-structure",
5550 "pallet-sudo",5548 "pallet-sudo",
5561 "parity-scale-codec",5559 "parity-scale-codec",
5562 "polkadot-parachain",5560 "polkadot-parachain",
5563 "precompile-utils-macro",5561 "precompile-utils-macro",
5564 "rmrk-rpc",
5565 "scale-info",5562 "scale-info",
5566 "serde",5563 "serde",
5567 "smallvec",5564 "smallvec",
6777 "up-data-structs",6774 "up-data-structs",
6778]6775]
6779
6780[[package]]
6781name = "pallet-rmrk-core"
6782version = "0.1.2"
6783dependencies = [
6784 "frame-benchmarking",
6785 "frame-support",
6786 "frame-system",
6787 "pallet-common",
6788 "pallet-evm",
6789 "pallet-nonfungible",
6790 "pallet-structure",
6791 "parity-scale-codec",
6792 "rmrk-traits",
6793 "scale-info",
6794 "sp-runtime",
6795 "sp-std",
6796 "up-data-structs",
6797]
6798
6799[[package]]
6800name = "pallet-rmrk-equip"
6801version = "0.1.2"
6802dependencies = [
6803 "frame-benchmarking",
6804 "frame-support",
6805 "frame-system",
6806 "pallet-common",
6807 "pallet-evm",
6808 "pallet-nonfungible",
6809 "pallet-rmrk-core",
6810 "parity-scale-codec",
6811 "scale-info",
6812 "sp-runtime",
6813 "sp-std",
6814 "up-data-structs",
6815]
68166776
6817[[package]]6777[[package]]
6818name = "pallet-scheduler"6778name = "pallet-scheduler"
9009 "pallet-nonfungible",8969 "pallet-nonfungible",
9010 "pallet-randomness-collective-flip",8970 "pallet-randomness-collective-flip",
9011 "pallet-refungible",8971 "pallet-refungible",
9012 "pallet-rmrk-core",
9013 "pallet-rmrk-equip",
9014 "pallet-session",8972 "pallet-session",
9015 "pallet-structure",8973 "pallet-structure",
9016 "pallet-sudo",8974 "pallet-sudo",
9026 "parity-scale-codec",8984 "parity-scale-codec",
9027 "polkadot-parachain",8985 "polkadot-parachain",
9028 "precompile-utils-macro",8986 "precompile-utils-macro",
9029 "rmrk-rpc",
9030 "scale-info",8987 "scale-info",
9031 "serde",8988 "serde",
9032 "smallvec",8989 "smallvec",
9414 "syn",9371 "syn",
9415]9372]
9416
9417[[package]]
9418name = "rmrk-rpc"
9419version = "0.0.2"
9420dependencies = [
9421 "parity-scale-codec",
9422 "rmrk-traits",
9423 "sp-api",
9424 "sp-runtime",
9425 "sp-std",
9426]
9427
9428[[package]]
9429name = "rmrk-traits"
9430version = "0.1.0"
9431dependencies = [
9432 "parity-scale-codec",
9433 "scale-info",
9434 "serde",
9435]
94369373
9437[[package]]9374[[package]]
9438name = "rocksdb"9375name = "rocksdb"
13026 "pallet-evm",12963 "pallet-evm",
13027 "parity-scale-codec",12964 "parity-scale-codec",
13028 "quartz-runtime",12965 "quartz-runtime",
13029 "rmrk-rpc",
13030 "sc-client-api",12966 "sc-client-api",
13031 "sc-executor",12967 "sc-executor",
13032 "sc-rpc-api",12968 "sc-rpc-api",
13132 "polkadot-primitives",13068 "polkadot-primitives",
13133 "polkadot-service",13069 "polkadot-service",
13134 "quartz-runtime",13070 "quartz-runtime",
13135 "rmrk-rpc",
13136 "sc-basic-authorship",13071 "sc-basic-authorship",
13137 "sc-chain-spec",13072 "sc-chain-spec",
13138 "sc-cli",13073 "sc-cli",
13186 "fp-storage",13121 "fp-storage",
13187 "jsonrpsee",13122 "jsonrpsee",
13188 "pallet-transaction-payment-rpc",13123 "pallet-transaction-payment-rpc",
13189 "rmrk-rpc",
13190 "sc-client-api",13124 "sc-client-api",
13191 "sc-finality-grandpa",13125 "sc-finality-grandpa",
13192 "sc-network",13126 "sc-network",
13265 "pallet-nonfungible",13199 "pallet-nonfungible",
13266 "pallet-randomness-collective-flip",13200 "pallet-randomness-collective-flip",
13267 "pallet-refungible",13201 "pallet-refungible",
13268 "pallet-rmrk-core",
13269 "pallet-rmrk-equip",
13270 "pallet-session",13202 "pallet-session",
13271 "pallet-structure",13203 "pallet-structure",
13272 "pallet-sudo",13204 "pallet-sudo",
13282 "parity-scale-codec",13214 "parity-scale-codec",
13283 "polkadot-parachain",13215 "polkadot-parachain",
13284 "precompile-utils-macro",13216 "precompile-utils-macro",
13285 "rmrk-rpc",
13286 "scale-info",13217 "scale-info",
13287 "serde",13218 "serde",
13288 "smallvec",13219 "smallvec",
13361 "frame-support",13292 "frame-support",
13362 "pallet-evm",13293 "pallet-evm",
13363 "parity-scale-codec",13294 "parity-scale-codec",
13364 "rmrk-traits",
13365 "scale-info",13295 "scale-info",
13366 "serde",13296 "serde",
13367 "sp-core",13297 "sp-core",
modifiedCargo.tomldiffbeforeafterboth
43pallet-inflation = { path = "pallets/inflation", default-features = false }43pallet-inflation = { path = "pallets/inflation", default-features = false }
44pallet-maintenance = { default-features = false, path = "pallets/maintenance" }44pallet-maintenance = { default-features = false, path = "pallets/maintenance" }
45pallet-nonfungible = { default-features = false, path = "pallets/nonfungible" }45pallet-nonfungible = { default-features = false, path = "pallets/nonfungible" }
46pallet-proxy-rmrk-core = { default-features = false, path = "pallets/proxy-rmrk-core", package = "pallet-rmrk-core" }
47pallet-proxy-rmrk-equip = { default-features = false, path = "pallets/proxy-rmrk-equip", package = "pallet-rmrk-equip" }
48rmrk-traits = { default-features = false, path = "primitives/rmrk-traits" }
49pallet-refungible = { default-features = false, path = "pallets/refungible" }46pallet-refungible = { default-features = false, path = "pallets/refungible" }
50pallet-structure = { default-features = false, path = "pallets/structure" }47pallet-structure = { default-features = false, path = "pallets/structure" }
51pallet-unique = { path = "pallets/unique", default-features = false }48pallet-unique = { path = "pallets/unique", default-features = false }
52pallet-unique-scheduler-v2 = { path = "pallets/scheduler-v2", default-features = false }49pallet-unique-scheduler-v2 = { path = "pallets/scheduler-v2", default-features = false }
53pallet-test-utils = { default-features = false, path = "test-pallets/utils" }50pallet-test-utils = { default-features = false, path = "test-pallets/utils" }
54pallet-app-promotion = { path = "pallets/app-promotion", default-features = false }51pallet-app-promotion = { path = "pallets/app-promotion", default-features = false }
55app-promotion-rpc = { path = "primitives/app_promotion_rpc", default-features = false }52app-promotion-rpc = { path = "primitives/app_promotion_rpc", default-features = false }
56rmrk-rpc = { path = "primitives/rmrk-rpc", default-features = false }
5753
58# Unique: Runtimes54# Unique: Runtimes
59unique-runtime = { path = "runtime/unique" }55unique-runtime = { path = "runtime/unique" }
modifiedMakefilediffbeforeafterboth
121bench-scheduler:121bench-scheduler:
122 make _bench PALLET=unique-scheduler-v2 PALLET_DIR=scheduler-v2122 make _bench PALLET=unique-scheduler-v2 PALLET_DIR=scheduler-v2
123
124.PHONY: bench-rmrk-core
125bench-rmrk-core:
126 make _bench PALLET=proxy-rmrk-core
127
128.PHONY: bench-rmrk-equip
129bench-rmrk-equip:
130 make _bench PALLET=proxy-rmrk-equip
131123
132.PHONY: bench-foreign-assets124.PHONY: bench-foreign-assets
133bench-foreign-assets:125bench-foreign-assets:
146 make _bench PALLET=app-promotion PALLET_DIR=app-promotion138 make _bench PALLET=app-promotion PALLET_DIR=app-promotion
147139
148.PHONY: bench140.PHONY: bench
149# Disabled: bench-scheduler, bench-collator-selection, bench-identity, bench-rmrk-core, bench-rmrk-equip141# Disabled: bench-scheduler, bench-collator-selection, bench-identity
150bench: bench-common bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-configuration bench-foreign-assets142bench: bench-common bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-configuration bench-foreign-assets
151143
152.PHONY: check144.PHONY: check
modifiedclient/rpc/Cargo.tomldiffbeforeafterboth
14codec = { workspace = true, package = "parity-scale-codec" }14codec = { workspace = true, package = "parity-scale-codec" }
1515
16app-promotion-rpc = { workspace = true }16app-promotion-rpc = { workspace = true }
17rmrk-rpc = { workspace = true }
18up-common = { workspace = true }17up-common = { workspace = true }
19up-data-structs = { workspace = true }18up-data-structs = { workspace = true }
20up-pov-estimate-rpc = { workspace = true, optional = true }19up-pov-estimate-rpc = { workspace = true, optional = true }
modifiedclient/rpc/src/lib.rsdiffbeforeafterboth
17// Original License17// Original License
18use std::sync::Arc;18use std::sync::Arc;
1919
20use codec::{Decode, Encode};20use codec::Decode;
21use jsonrpsee::{21use jsonrpsee::{
22 core::{RpcResult as Result},22 core::{RpcResult as Result},
23 proc_macros::rpc,23 proc_macros::rpc,
33use up_rpc::UniqueApi as UniqueRuntimeApi;33use up_rpc::UniqueApi as UniqueRuntimeApi;
34use app_promotion_rpc::AppPromotionApi as AppPromotionRuntimeApi;34use app_promotion_rpc::AppPromotionApi as AppPromotionRuntimeApi;
35
36// RMRK
37use rmrk_rpc::RmrkApi as RmrkRuntimeApi;
38use up_data_structs::{
39 RmrkCollectionId, RmrkNftId, RmrkBaseId, RmrkNftChild, RmrkThemeName, RmrkResourceId,
40};
4135
42pub use app_promotion_unique_rpc::AppPromotionApiServer;36pub use app_promotion_unique_rpc::AppPromotionApiServer;
43pub use rmrk_unique_rpc::RmrkApiServer;
4437
45#[cfg(feature = "pov-estimate")]38#[cfg(feature = "pov-estimate")]
46pub mod pov_estimate;39pub mod pov_estimate;
301 }294 }
302}295}
303
304mod rmrk_unique_rpc {
305 use super::*;
306
307 #[rpc(server)]
308 #[async_trait]
309 pub trait RmrkApi<
310 BlockHash,
311 AccountId,
312 CollectionInfo,
313 NftInfo,
314 ResourceInfo,
315 PropertyInfo,
316 BaseInfo,
317 PartType,
318 Theme,
319 >
320 {
321 /// Get the latest created collection ID.
322 #[method(name = "rmrk_lastCollectionIdx")]
323 fn last_collection_idx(&self, at: Option<BlockHash>) -> Result<RmrkCollectionId>;
324
325 /// Get collection info by ID.
326 #[method(name = "rmrk_collectionById")]
327 fn collection_by_id(
328 &self,
329 id: RmrkCollectionId,
330 at: Option<BlockHash>,
331 ) -> Result<Option<CollectionInfo>>;
332
333 /// Get NFT info by collection and NFT IDs.
334 #[method(name = "rmrk_nftById")]
335 fn nft_by_id(
336 &self,
337 collection_id: RmrkCollectionId,
338 nft_id: RmrkNftId,
339 at: Option<BlockHash>,
340 ) -> Result<Option<NftInfo>>;
341
342 /// Get tokens owned by an account in a collection.
343 #[method(name = "rmrk_accountTokens")]
344 fn account_tokens(
345 &self,
346 account_id: AccountId,
347 collection_id: RmrkCollectionId,
348 at: Option<BlockHash>,
349 ) -> Result<Vec<RmrkNftId>>;
350
351 /// Get tokens nested in an NFT - its direct children (not the children's children).
352 #[method(name = "rmrk_nftChildren")]
353 fn nft_children(
354 &self,
355 collection_id: RmrkCollectionId,
356 nft_id: RmrkNftId,
357 at: Option<BlockHash>,
358 ) -> Result<Vec<RmrkNftChild>>;
359
360 /// Get collection properties, created by the user - not the proxy-specific properties.
361 #[method(name = "rmrk_collectionProperties")]
362 fn collection_properties(
363 &self,
364 collection_id: RmrkCollectionId,
365 filter_keys: Option<Vec<String>>,
366 at: Option<BlockHash>,
367 ) -> Result<Vec<PropertyInfo>>;
368
369 /// Get NFT properties, created by the user - not the proxy-specific properties.
370 #[method(name = "rmrk_nftProperties")]
371 fn nft_properties(
372 &self,
373 collection_id: RmrkCollectionId,
374 nft_id: RmrkNftId,
375 filter_keys: Option<Vec<String>>,
376 at: Option<BlockHash>,
377 ) -> Result<Vec<PropertyInfo>>;
378
379 /// Get data of resources of an NFT.
380 #[method(name = "rmrk_nftResources")]
381 fn nft_resources(
382 &self,
383 collection_id: RmrkCollectionId,
384 nft_id: RmrkNftId,
385 at: Option<BlockHash>,
386 ) -> Result<Vec<ResourceInfo>>;
387
388 /// Get the priority of a resource in an NFT.
389 #[method(name = "rmrk_nftResourcePriority")]
390 fn nft_resource_priority(
391 &self,
392 collection_id: RmrkCollectionId,
393 nft_id: RmrkNftId,
394 resource_id: RmrkResourceId,
395 at: Option<BlockHash>,
396 ) -> Result<Option<u32>>;
397
398 /// Get base info by its ID.
399 #[method(name = "rmrk_base")]
400 fn base(&self, base_id: RmrkBaseId, at: Option<BlockHash>) -> Result<Option<BaseInfo>>;
401
402 /// Get all parts of a base.
403 #[method(name = "rmrk_baseParts")]
404 fn base_parts(&self, base_id: RmrkBaseId, at: Option<BlockHash>) -> Result<Vec<PartType>>;
405
406 /// Get the theme names belonging to a base.
407 #[method(name = "rmrk_themeNames")]
408 fn theme_names(
409 &self,
410 base_id: RmrkBaseId,
411 at: Option<BlockHash>,
412 ) -> Result<Vec<RmrkThemeName>>;
413
414 /// Get theme info, including properties, optionally limited to the provided keys.
415 #[method(name = "rmrk_themes")]
416 fn theme(
417 &self,
418 base_id: RmrkBaseId,
419 theme_name: String,
420 filter_keys: Option<Vec<String>>,
421 at: Option<BlockHash>,
422 ) -> Result<Option<Theme>>;
423 }
424}
425296
426#[macro_export]297#[macro_export]
427macro_rules! define_struct_for_server_api {298macro_rules! define_struct_for_server_api {
454 }325 }
455}326}
456
457define_struct_for_server_api! {
458 Rmrk {
459 client: Arc<Client>
460 }
461}
462327
463macro_rules! pass_method {328macro_rules! pass_method {
464 (329 (
511 };376 };
512}377}
513
514macro_rules! rmrk_api {
515 () => {
516 dyn RmrkRuntimeApi<Block, AccountId, CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme>
517 };
518}
519378
520#[allow(deprecated)]379#[allow(deprecated)]
521impl<C, Block, CrossAccountId, AccountId>380impl<C, Block, CrossAccountId, AccountId>
629 .collect::<Vec<_>>(), app_promotion_api);488 .collect::<Vec<_>>(), app_promotion_api);
630}489}
631
632#[allow(deprecated)]
633impl<
634 C,
635 Block,
636 AccountId,
637 CollectionInfo,
638 NftInfo,
639 ResourceInfo,
640 PropertyInfo,
641 BaseInfo,
642 PartType,
643 Theme,
644 >
645 rmrk_unique_rpc::RmrkApiServer<
646 <Block as BlockT>::Hash,
647 AccountId,
648 CollectionInfo,
649 NftInfo,
650 ResourceInfo,
651 PropertyInfo,
652 BaseInfo,
653 PartType,
654 Theme,
655 > for Rmrk<C, Block>
656where
657 C: Send + Sync + 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,
658 C::Api: RmrkRuntimeApi<
659 Block,
660 AccountId,
661 CollectionInfo,
662 NftInfo,
663 ResourceInfo,
664 PropertyInfo,
665 BaseInfo,
666 PartType,
667 Theme,
668 >,
669 AccountId: Decode + Encode,
670 CollectionInfo: Decode,
671 NftInfo: Decode,
672 ResourceInfo: Decode,
673 PropertyInfo: Decode,
674 BaseInfo: Decode,
675 PartType: Decode,
676 Theme: Decode,
677 Block: BlockT,
678{
679 pass_method!(last_collection_idx() -> RmrkCollectionId, rmrk_api);
680 pass_method!(collection_by_id(id: RmrkCollectionId) -> Option<CollectionInfo>, rmrk_api);
681 pass_method!(nft_by_id(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Option<NftInfo>, rmrk_api);
682 pass_method!(account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Vec<RmrkNftId>, rmrk_api);
683 pass_method!(nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<RmrkNftChild>, rmrk_api);
684 pass_method!(
685 collection_properties(
686 collection_id: RmrkCollectionId,
687
688 #[map(|keys| string_keys_to_bytes_keys(keys))]
689 filter_keys: Option<Vec<String>>
690 ) -> Vec<PropertyInfo>,
691 rmrk_api
692 );
693 pass_method!(
694 nft_properties(
695 collection_id: RmrkCollectionId,
696 nft_id: RmrkNftId,
697
698 #[map(|keys| string_keys_to_bytes_keys(keys))]
699 filter_keys: Option<Vec<String>>
700 ) -> Vec<PropertyInfo>,
701 rmrk_api
702 );
703 pass_method!(nft_resources(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Vec<ResourceInfo>, rmrk_api);
704 pass_method!(nft_resource_priority(collection_id: RmrkCollectionId, nft_id: RmrkNftId, resource_id: RmrkResourceId) -> Option<u32>, rmrk_api);
705 pass_method!(base(base_id: RmrkBaseId) -> Option<BaseInfo>, rmrk_api);
706 pass_method!(base_parts(base_id: RmrkBaseId) -> Vec<PartType>, rmrk_api);
707 pass_method!(theme_names(base_id: RmrkBaseId) -> Vec<RmrkThemeName>, rmrk_api);
708 pass_method!(
709 theme(
710 base_id: RmrkBaseId,
711
712 #[map(|n| n.into_bytes())]
713 theme_name: String,
714
715 #[map(|keys| string_keys_to_bytes_keys(keys))]
716 filter_keys: Option<Vec<String>>
717 ) -> Option<Theme>, rmrk_api);
718}
719490
720fn string_keys_to_bytes_keys(keys: Option<Vec<String>>) -> Option<Vec<Vec<u8>>> {491fn string_keys_to_bytes_keys(keys: Option<Vec<String>>) -> Option<Vec<Vec<u8>>> {
721 keys.map(|keys| keys.into_iter().map(|key| key.into_bytes()).collect())492 keys.map(|keys| keys.into_iter().map(|key| key.into_bytes()).collect())
modifiednode/cli/Cargo.tomldiffbeforeafterboth
89fp-rpc = { workspace = true }89fp-rpc = { workspace = true }
9090
91app-promotion-rpc = { workspace = true }91app-promotion-rpc = { workspace = true }
92rmrk-rpc = { workspace = true }
93uc-rpc = { workspace = true }92uc-rpc = { workspace = true }
94unique-rpc = { workspace = true }93unique-rpc = { workspace = true }
95up-pov-estimate-rpc = { workspace = true }94up-pov-estimate-rpc = { workspace = true }
modifiednode/cli/src/service.rsdiffbeforeafterboth
71#[cfg(feature = "pov-estimate")]71#[cfg(feature = "pov-estimate")]
72use crate::chain_spec::RuntimeIdentification;72use crate::chain_spec::RuntimeIdentification;
73
74// RMRK
75use up_data_structs::{
76 RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,
77 RmrkPartType, RmrkTheme,
78};
7973
80/// Unique native executor instance.74/// Unique native executor instance.
81#[cfg(feature = "unique-runtime")]75#[cfg(feature = "unique-runtime")]
403 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>397 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
404 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>398 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
405 + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>399 + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
406 + rmrk_rpc::RmrkApi<
407 Block,
408 AccountId,
409 RmrkCollectionInfo<AccountId>,
410 RmrkInstanceInfo<AccountId>,
411 RmrkResourceInfo,
412 RmrkPropertyInfo,
413 RmrkBaseInfo<AccountId>,
414 RmrkPartType,
415 RmrkTheme,
416 > + up_pov_estimate_rpc::PovEstimateApi<Block>400 + up_pov_estimate_rpc::PovEstimateApi<Block>
417 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>401 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
418 + sp_api::Metadata<Block>402 + sp_api::Metadata<Block>
419 + sp_offchain::OffchainWorkerApi<Block>403 + sp_offchain::OffchainWorkerApi<Block>
732 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>716 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
733 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>717 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
734 + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>718 + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
735 + rmrk_rpc::RmrkApi<
736 Block,
737 AccountId,
738 RmrkCollectionInfo<AccountId>,
739 RmrkInstanceInfo<AccountId>,
740 RmrkResourceInfo,
741 RmrkPropertyInfo,
742 RmrkBaseInfo<AccountId>,
743 RmrkPartType,
744 RmrkTheme,
745 > + up_pov_estimate_rpc::PovEstimateApi<Block>719 + up_pov_estimate_rpc::PovEstimateApi<Block>
746 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>720 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
747 + sp_api::Metadata<Block>721 + sp_api::Metadata<Block>
748 + sp_offchain::OffchainWorkerApi<Block>722 + sp_offchain::OffchainWorkerApi<Block>
882 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>856 + sp_api::ApiExt<Block, StateBackend = sc_client_api::StateBackendFor<FullBackend, Block>>
883 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>857 + up_rpc::UniqueApi<Block, Runtime::CrossAccountId, AccountId>
884 + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>858 + app_promotion_rpc::AppPromotionApi<Block, BlockNumber, Runtime::CrossAccountId, AccountId>
885 + rmrk_rpc::RmrkApi<
886 Block,
887 AccountId,
888 RmrkCollectionInfo<AccountId>,
889 RmrkInstanceInfo<AccountId>,
890 RmrkResourceInfo,
891 RmrkPropertyInfo,
892 RmrkBaseInfo<AccountId>,
893 RmrkPartType,
894 RmrkTheme,
895 > + up_pov_estimate_rpc::PovEstimateApi<Block>859 + up_pov_estimate_rpc::PovEstimateApi<Block>
896 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>860 + substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>
897 + sp_api::Metadata<Block>861 + sp_api::Metadata<Block>
898 + sp_offchain::OffchainWorkerApi<Block>862 + sp_offchain::OffchainWorkerApi<Block>
modifiednode/rpc/Cargo.tomldiffbeforeafterboth
33fp-storage = { workspace = true }33fp-storage = { workspace = true }
3434
35app-promotion-rpc = { workspace = true }35app-promotion-rpc = { workspace = true }
36rmrk-rpc = { workspace = true }
37serde = { workspace = true }36serde = { workspace = true }
38uc-rpc = { workspace = true }37uc-rpc = { workspace = true }
39up-common = { workspace = true }38up-common = { workspace = true }
modifiednode/rpc/src/lib.rsdiffbeforeafterboth
4242
43use up_common::types::opaque::*;43use up_common::types::opaque::*;
44
45// RMRK
46use up_data_structs::{
47 RmrkCollectionInfo, RmrkInstanceInfo, RmrkResourceInfo, RmrkPropertyInfo, RmrkBaseInfo,
48 RmrkPartType, RmrkTheme,
49};
5044
51#[cfg(feature = "pov-estimate")]45#[cfg(feature = "pov-estimate")]
52type FullBackend = sc_service::TFullBackend<Block>;46type FullBackend = sc_service::TFullBackend<Block>;
164 <R as RuntimeInstance>::CrossAccountId,158 <R as RuntimeInstance>::CrossAccountId,
165 AccountId,159 AccountId,
166 >,160 >,
167 C::Api: rmrk_rpc::RmrkApi<
168 Block,
169 AccountId,
170 RmrkCollectionInfo<AccountId>,
171 RmrkInstanceInfo<AccountId>,
172 RmrkResourceInfo,
173 RmrkPropertyInfo,
174 RmrkBaseInfo<AccountId>,
175 RmrkPartType,
176 RmrkTheme,
177 >,
178 C::Api: up_pov_estimate_rpc::PovEstimateApi<Block>,161 C::Api: up_pov_estimate_rpc::PovEstimateApi<Block>,
179 B: sc_client_api::Backend<Block> + Send + Sync + 'static,162 B: sc_client_api::Backend<Block> + Send + Sync + 'static,
180 B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,163 B::State: sc_client_api::backend::StateBackend<sp_runtime::traits::HashFor<Block>>,
193 #[cfg(not(feature = "unique-runtime"))]176 #[cfg(not(feature = "unique-runtime"))]
194 use uc_rpc::{AppPromotionApiServer, AppPromotion};177 use uc_rpc::{AppPromotionApiServer, AppPromotion};
195
196 #[cfg(not(feature = "unique-runtime"))]
197 use uc_rpc::{RmrkApiServer, Rmrk};
198178
199 #[cfg(feature = "pov-estimate")]179 #[cfg(feature = "pov-estimate")]
200 use uc_rpc::pov_estimate::{PovEstimateApiServer, PovEstimate};180 use uc_rpc::pov_estimate::{PovEstimateApiServer, PovEstimate};
268 #[cfg(not(feature = "unique-runtime"))]248 #[cfg(not(feature = "unique-runtime"))]
269 io.merge(AppPromotion::new(client.clone()).into_rpc())?;249 io.merge(AppPromotion::new(client.clone()).into_rpc())?;
270
271 #[cfg(not(feature = "unique-runtime"))]
272 io.merge(Rmrk::new(client.clone()).into_rpc())?;
273250
274 #[cfg(feature = "pov-estimate")]251 #[cfg(feature = "pov-estimate")]
275 io.merge(252 io.merge(
modifiedpallets/common/src/erc.rsdiffbeforeafterboth
33};33};
3434
35use crate::{35use crate::{
36 Pallet, CollectionHandle, Config, CollectionProperties, SelfWeightOf, eth, weights::WeightInfo,36 Pallet, CollectionHandle, Config, CollectionProperties, eth, SelfWeightOf, weights::WeightInfo,
37};37};
3838
39frontier_contract! {39frontier_contract! {
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
109 TokenData,109 TokenData,
110 TrySetProperty,110 TrySetProperty,
111 PropertyScope,111 PropertyScope,
112 // RMRK
113 RmrkCollectionInfo,
114 RmrkInstanceInfo,
115 RmrkResourceInfo,
116 RmrkPropertyInfo,
117 RmrkBaseInfo,
118 RmrkPartType,
119 RmrkBoundedTheme,
120 RmrkNftChild,
121 CollectionPermissions,112 CollectionPermissions,
122};113};
123use up_pov_estimate_rpc::PovInfo;114use up_pov_estimate_rpc::PovInfo;
898 PhantomType<(889 PhantomType<(
899 TokenData<T::CrossAccountId>,890 TokenData<T::CrossAccountId>,
900 RpcCollection<T::AccountId>,891 RpcCollection<T::AccountId>,
901 // RMRK
902 RmrkCollectionInfo<T::AccountId>,
903 RmrkInstanceInfo<T::AccountId>,
904 RmrkResourceInfo,
905 RmrkPropertyInfo,
906 RmrkBaseInfo<T::AccountId>,
907 RmrkPartType,
908 RmrkBoundedTheme,
909 RmrkNftChild,
910 // PoV Estimate Info892 // PoV Estimate Info
911 PovInfo,893 PovInfo,
912 )>,894 )>,
modifiedpallets/fungible/src/erc.rsdiffbeforeafterboth
38use sp_core::{U256, Get};38use sp_core::{U256, Get};
3939
40use crate::{40use crate::{
41 Allowance, Balance, Config, FungibleHandle, Pallet, SelfWeightOf, TotalSupply,41 Allowance, Balance, Config, FungibleHandle, Pallet, TotalSupply,
42 weights::WeightInfo,42 SelfWeightOf, weights::WeightInfo,
43};43};
4444
45frontier_contract! {45frontier_contract! {
modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
4747
48use crate::{48use crate::{
49 AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted,49 AccountBalance, Config, CreateItemData, NonfungibleHandle, Pallet, TokenData, TokensMinted,
50 SelfWeightOf, weights::WeightInfo, TokenProperties,50 TokenProperties, SelfWeightOf, weights::WeightInfo,
51};51};
5252
53frontier_contract! {53frontier_contract! {
modifiedpallets/nonfungible/src/lib.rsdiffbeforeafterboth
214 /// usual [`TokenProperties`] due to an unlimited number214 /// usual [`TokenProperties`] due to an unlimited number
215 /// and separately stored and written-to key-value pairs.215 /// and separately stored and written-to key-value pairs.
216 ///216 ///
217 /// Currently used to store RMRK data.217 /// Currently unused.
218 #[pallet::storage]218 #[pallet::storage]
219 #[pallet::getter(fn token_aux_property)]219 #[pallet::getter(fn token_aux_property)]
220 pub type TokenAuxProperties<T: Config> = StorageNMap<220 pub type TokenAuxProperties<T: Config> = StorageNMap<
deletedpallets/proxy-rmrk-core/CHANGELOG.mddiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-core/Cargo.tomldiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-core/src/benchmarking.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-core/src/lib.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-core/src/misc.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-core/src/property.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-core/src/rpc.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-core/src/weights.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-equip/CHANGELOG.mddiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-equip/Cargo.tomldiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-equip/src/benchmarking.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-equip/src/lib.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-equip/src/rpc.rsdiffbeforeafterboth

no changes

deletedpallets/proxy-rmrk-equip/src/weights.rsdiffbeforeafterboth

no changes

modifiedpallets/refungible/src/erc.rsdiffbeforeafterboth
48};48};
4949
50use crate::{50use crate::{
51 AccountBalance, Balance, Config, CreateItemData, Pallet, RefungibleHandle, SelfWeightOf,51 AccountBalance, Balance, Config, CreateItemData, Pallet, RefungibleHandle,
52 TokenProperties, TokensMinted, TotalSupply, weights::WeightInfo,52 TokenProperties, TokensMinted, TotalSupply, SelfWeightOf, weights::WeightInfo,
53};53};
5454
55frontier_contract! {55frontier_contract! {
modifiedpallets/refungible/src/erc_token.rsdiffbeforeafterboth
28use pallet_common::{28use pallet_common::{
29 erc::{CommonEvmHandler, PrecompileResult},29 erc::{CommonEvmHandler, PrecompileResult},
30 eth::{collection_id_to_address, CrossAddress},30 eth::{collection_id_to_address, CrossAddress},
31 CommonWeightInfo,
31};32};
32use pallet_evm::{account::CrossAccountId, PrecompileHandle};33use pallet_evm::{account::CrossAccountId, PrecompileHandle};
33use pallet_evm_coder_substrate::{34use pallet_evm_coder_substrate::{
39use sp_core::U256;40use sp_core::U256;
40use up_data_structs::TokenId;41use up_data_structs::TokenId;
4142
42use crate::{Allowance, Balance, Config, Pallet, RefungibleHandle, TotalSupply};43use crate::{Allowance, Balance, Config, Pallet, RefungibleHandle, TotalSupply, common::CommonWeights, SelfWeightOf, weights::WeightInfo};
4344
44/// Refungible token handle contains information about token's collection and id45/// Refungible token handle contains information about token's collection and id
45///46///
modifiedprimitives/data-structs/Cargo.tomldiffbeforeafterboth
15derivative = { workspace = true }15derivative = { workspace = true }
16frame-support = { workspace = true }16frame-support = { workspace = true }
17pallet-evm = { workspace = true }17pallet-evm = { workspace = true }
18rmrk-traits = { workspace = true }
19scale-info = { workspace = true }18scale-info = { workspace = true }
20serde = { workspace = true, optional = true }19serde = { workspace = true, optional = true }
21sp-core = { workspace = true }20sp-core = { workspace = true }
33 "codec/std",32 "codec/std",
34 "frame-support/std",33 "frame-support/std",
35 "pallet-evm/std",34 "pallet-evm/std",
36 "rmrk-traits/std",
37 "serde/std",35 "serde/std",
38 "serde1",36 "serde1",
39 "sp-core/std",37 "sp-core/std",
modifiedprimitives/data-structs/src/lib.rsdiffbeforeafterboth
27use frame_support::{27use frame_support::{
28 storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet},28 storage::{bounded_btree_map::BoundedBTreeMap, bounded_btree_set::BoundedBTreeSet},
29 traits::Get,29 traits::Get,
30 parameter_types,
31};30};
3231
33#[cfg(feature = "serde")]32#[cfg(feature = "serde")]
34use serde::{Serialize, Deserialize};33use serde::{Serialize, Deserialize};
3534
36use sp_core::U256;35use sp_core::U256;
37use sp_runtime::{ArithmeticError, sp_std::prelude::Vec, Permill};36use sp_runtime::{ArithmeticError, sp_std::prelude::Vec};
38use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};37use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
39use bondrewd::Bitfields;38use bondrewd::Bitfields;
40use frame_support::{BoundedVec, traits::ConstU32};39use frame_support::{BoundedVec, traits::ConstU32};
41use derivative::Derivative;40use derivative::Derivative;
42use scale_info::TypeInfo;41use scale_info::TypeInfo;
43
44// RMRK
45use rmrk_traits::{
46 CollectionInfo, NftInfo, ResourceInfo, PropertyInfo, BaseInfo, PartType, Theme, ThemeProperty,
47 ResourceTypes, BasicResource, ComposableResource, SlotResource, EquippableList,
48};
49pub use rmrk_traits::{
50 primitives::{
51 CollectionId as RmrkCollectionId, NftId as RmrkNftId, BaseId as RmrkBaseId,
52 SlotId as RmrkSlotId, PartId as RmrkPartId, ResourceId as RmrkResourceId,
53 },
54 NftChild as RmrkNftChild, AccountIdOrCollectionNftTuple as RmrkAccountIdOrCollectionNftTuple,
55 FixedPart as RmrkFixedPart, SlotPart as RmrkSlotPart,
56};
5742
58mod bondrewd_codec;43mod bondrewd_codec;
59mod bounded;44mod bounded;
174impl EncodeLike<u32> for CollectionId {}159impl EncodeLike<u32> for CollectionId {}
175impl EncodeLike<CollectionId> for u32 {}160impl EncodeLike<CollectionId> for u32 {}
161
162impl From<u32> for CollectionId {
163 fn from(value: u32) -> Self {
164 Self(value)
165 }
166}
176167
177/// Token id.168/// Token id.
178#[derive(169#[derive(
1368 }1359 }
1369}1360}
1370
1371// RMRK
1372// todo document?
1373parameter_types! {
1374 #[derive(PartialEq, TypeInfo)]
1375 pub const RmrkStringLimit: u32 = 128;
1376 #[derive(PartialEq)]
1377 pub const RmrkCollectionSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;
1378 #[derive(PartialEq)]
1379 pub const RmrkResourceSymbolLimit: u32 = 10;
1380 #[derive(PartialEq)]
1381 pub const RmrkBaseSymbolLimit: u32 = MAX_TOKEN_PREFIX_LENGTH;
1382 #[derive(PartialEq)]
1383 pub const RmrkKeyLimit: u32 = 32;
1384 #[derive(PartialEq)]
1385 pub const RmrkValueLimit: u32 = 256;
1386 #[derive(PartialEq)]
1387 pub const RmrkMaxCollectionsEquippablePerPart: u32 = 100;
1388 #[derive(PartialEq)]
1389 pub const MaxPropertiesPerTheme: u32 = 5;
1390 #[derive(PartialEq)]
1391 pub const RmrkPartsLimit: u32 = 25;
1392 #[derive(PartialEq)]
1393 pub const RmrkMaxPriorities: u32 = 25;
1394 #[derive(PartialEq)]
1395 pub const MaxResourcesOnMint: u32 = 100;
1396}
1397
1398impl From<RmrkCollectionId> for CollectionId {
1399 fn from(id: RmrkCollectionId) -> Self {
1400 Self(id)
1401 }
1402}
1403
1404impl From<RmrkNftId> for TokenId {
1405 fn from(id: RmrkNftId) -> Self {
1406 Self(id)
1407 }
1408}
1409
1410pub type RmrkCollectionInfo<AccountId> =
1411 CollectionInfo<RmrkString, RmrkCollectionSymbol, AccountId>;
1412pub type RmrkInstanceInfo<AccountId> = NftInfo<AccountId, Permill, RmrkString>;
1413pub type RmrkResourceInfo = ResourceInfo<RmrkString, RmrkBoundedParts>;
1414pub type RmrkPropertyInfo = PropertyInfo<RmrkKeyString, RmrkValueString>;
1415pub type RmrkBaseInfo<AccountId> = BaseInfo<AccountId, RmrkString>;
1416pub type BoundedEquippableCollectionIds =
1417 BoundedVec<RmrkCollectionId, RmrkMaxCollectionsEquippablePerPart>;
1418pub type RmrkPartType = PartType<RmrkString, BoundedEquippableCollectionIds>;
1419pub type RmrkEquippableList = EquippableList<BoundedEquippableCollectionIds>;
1420pub type RmrkThemeProperty = ThemeProperty<RmrkString>;
1421pub type RmrkTheme = Theme<RmrkString, Vec<RmrkThemeProperty>>;
1422pub type RmrkBoundedTheme = Theme<RmrkString, BoundedVec<RmrkThemeProperty, MaxPropertiesPerTheme>>;
1423pub type RmrkResourceTypes = ResourceTypes<RmrkString, RmrkBoundedParts>;
1424
1425pub type RmrkBasicResource = BasicResource<RmrkString>;
1426pub type RmrkComposableResource = ComposableResource<RmrkString, RmrkBoundedParts>;
1427pub type RmrkSlotResource = SlotResource<RmrkString>;
1428
1429pub type RmrkString = BoundedVec<u8, RmrkStringLimit>;
1430pub type RmrkCollectionSymbol = BoundedVec<u8, RmrkCollectionSymbolLimit>;
1431pub type RmrkBaseSymbol = BoundedVec<u8, RmrkBaseSymbolLimit>;
1432pub type RmrkKeyString = BoundedVec<u8, RmrkKeyLimit>;
1433pub type RmrkValueString = BoundedVec<u8, RmrkValueLimit>;
1434pub type RmrkBoundedResource = BoundedVec<u8, RmrkResourceSymbolLimit>;
1435pub type RmrkBoundedParts = BoundedVec<RmrkPartId, RmrkPartsLimit>; // todo make sure it is needed
1436
1437pub type RmrkRpcString = Vec<u8>;
1438pub type RmrkThemeName = RmrkRpcString;
1439pub type RmrkPropertyKey = RmrkRpcString;
14401361
deletedprimitives/rmrk-rpc/CHANGELOG.mddiffbeforeafterboth

no changes

deletedprimitives/rmrk-rpc/Cargo.tomldiffbeforeafterboth

no changes

deletedprimitives/rmrk-rpc/src/lib.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/Cargo.tomldiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/base.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/collection.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/lib.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/nft.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/part.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/property.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/resource.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/serialize.rsdiffbeforeafterboth

no changes

deletedprimitives/rmrk-traits/src/theme.rsdiffbeforeafterboth

no changes

modifiedruntime/common/config/pallets/mod.rsdiffbeforeafterboth
35};35};
36use sp_arithmetic::Perbill;36use sp_arithmetic::Perbill;
37
38#[cfg(feature = "rmrk")]
39pub mod rmrk;
4037
41#[cfg(feature = "scheduler")]38#[cfg(feature = "scheduler")]
42pub mod scheduler;39pub mod scheduler;
deletedruntime/common/config/pallets/rmrk.rsdiffbeforeafterboth

no changes

modifiedruntime/common/construct_runtime.rsdiffbeforeafterboth
82 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,82 Nonfungible: pallet_nonfungible::{Pallet, Storage} = 69,
83 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,83 Structure: pallet_structure::{Pallet, Call, Storage, Event<T>} = 70,
8484
85 #[cfg(feature = "rmrk")]85 // RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,
86 RmrkCore: pallet_proxy_rmrk_core::{Pallet, Call, Storage, Event<T>} = 71,86
8787 // RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,
88 #[cfg(feature = "rmrk")]
89 RmrkEquip: pallet_proxy_rmrk_equip::{Pallet, Call, Storage, Event<T>} = 72,
9088
91 #[cfg(feature = "app-promotion")]89 #[cfg(feature = "app-promotion")]
92 AppPromotion: pallet_app_promotion::{Pallet, Call, Storage, Event<T>} = 73,90 AppPromotion: pallet_app_promotion::{Pallet, Call, Storage, Event<T>} = 73,
modifiedruntime/common/maintenance.rsdiffbeforeafterboth
70 #[cfg(feature = "scheduler")]70 #[cfg(feature = "scheduler")]
71 RuntimeCall::Scheduler(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),71 RuntimeCall::Scheduler(_) => Err(TransactionValidityError::Invalid(InvalidTransaction::Call)),
72
73 #[cfg(feature = "rmrk")]
74 RuntimeCall::RmrkCore(_) | RuntimeCall::RmrkEquip(_) => {
75 Err(TransactionValidityError::Invalid(InvalidTransaction::Call))
76 }
7772
78 #[cfg(feature = "app-promotion")]73 #[cfg(feature = "app-promotion")]
79 RuntimeCall::AppPromotion(_) => {74 RuntimeCall::AppPromotion(_) => {
modifiedruntime/common/runtime_apis.rsdiffbeforeafterboth
231 }231 }
232 }232 }
233
234 impl rmrk_rpc::RmrkApi<
235 Block,
236 AccountId,
237 RmrkCollectionInfo<AccountId>,
238 RmrkInstanceInfo<AccountId>,
239 RmrkResourceInfo,
240 RmrkPropertyInfo,
241 RmrkBaseInfo<AccountId>,
242 RmrkPartType,
243 RmrkTheme
244 > for Runtime {
245 fn last_collection_idx() -> Result<RmrkCollectionId, DispatchError> {
246 #[cfg(feature = "rmrk")]
247 return pallet_proxy_rmrk_core::rpc::last_collection_idx::<Runtime>();
248
249 #[cfg(not(feature = "rmrk"))]
250 return unsupported!();
251 }
252
253 #[allow(unused_variables)]
254 fn collection_by_id(collection_id: RmrkCollectionId) -> Result<Option<RmrkCollectionInfo<AccountId>>, DispatchError> {
255 #[cfg(feature = "rmrk")]
256 return pallet_proxy_rmrk_core::rpc::collection_by_id::<Runtime>(collection_id);
257
258 #[cfg(not(feature = "rmrk"))]
259 return unsupported!();
260 }
261
262 #[allow(unused_variables)]
263 fn nft_by_id(collection_id: RmrkCollectionId, nft_by_id: RmrkNftId) -> Result<Option<RmrkInstanceInfo<AccountId>>, DispatchError> {
264 #[cfg(feature = "rmrk")]
265 return pallet_proxy_rmrk_core::rpc::nft_by_id::<Runtime>(collection_id, nft_by_id);
266
267 #[cfg(not(feature = "rmrk"))]
268 return unsupported!();
269 }
270
271 #[allow(unused_variables)]
272 fn account_tokens(account_id: AccountId, collection_id: RmrkCollectionId) -> Result<Vec<RmrkNftId>, DispatchError> {
273 #[cfg(feature = "rmrk")]
274 return pallet_proxy_rmrk_core::rpc::account_tokens::<Runtime>(account_id, collection_id);
275
276 #[cfg(not(feature = "rmrk"))]
277 return unsupported!();
278 }
279
280 #[allow(unused_variables)]
281 fn nft_children(collection_id: RmrkCollectionId, nft_id: RmrkNftId) -> Result<Vec<RmrkNftChild>, DispatchError> {
282 #[cfg(feature = "rmrk")]
283 return pallet_proxy_rmrk_core::rpc::nft_children::<Runtime>(collection_id, nft_id);
284
285 #[cfg(not(feature = "rmrk"))]
286 return unsupported!();
287 }
288
289 #[allow(unused_variables)]
290 fn collection_properties(
291 collection_id: RmrkCollectionId,
292 filter_keys: Option<Vec<RmrkPropertyKey>>
293 ) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
294 #[cfg(feature = "rmrk")]
295 return pallet_proxy_rmrk_core::rpc::collection_properties::<Runtime>(collection_id, filter_keys);
296
297 #[cfg(not(feature = "rmrk"))]
298 return unsupported!();
299 }
300
301 #[allow(unused_variables)]
302 fn nft_properties(
303 collection_id: RmrkCollectionId,
304 nft_id: RmrkNftId,
305 filter_keys: Option<Vec<RmrkPropertyKey>>
306 ) -> Result<Vec<RmrkPropertyInfo>, DispatchError> {
307 #[cfg(feature = "rmrk")]
308 return pallet_proxy_rmrk_core::rpc::nft_properties::<Runtime>(collection_id, nft_id, filter_keys);
309
310 #[cfg(not(feature = "rmrk"))]
311 return unsupported!();
312 }
313
314 #[allow(unused_variables)]
315 fn nft_resources(collection_id: RmrkCollectionId,nft_id: RmrkNftId) -> Result<Vec<RmrkResourceInfo>, DispatchError> {
316 #[cfg(feature = "rmrk")]
317 return pallet_proxy_rmrk_core::rpc::nft_resources::<Runtime>(collection_id, nft_id);
318
319 #[cfg(not(feature = "rmrk"))]
320 return unsupported!();
321 }
322
323 #[allow(unused_variables)]
324 fn nft_resource_priority(
325 collection_id: RmrkCollectionId,
326 nft_id: RmrkNftId,
327 resource_id: RmrkResourceId
328 ) -> Result<Option<u32>, DispatchError> {
329 #[cfg(feature = "rmrk")]
330 return pallet_proxy_rmrk_core::rpc::nft_resource_priority::<Runtime>(collection_id, nft_id, resource_id);
331
332 #[cfg(not(feature = "rmrk"))]
333 return unsupported!();
334 }
335
336 #[allow(unused_variables)]
337 fn base(base_id: RmrkBaseId) -> Result<Option<RmrkBaseInfo<AccountId>>, DispatchError> {
338 #[cfg(feature = "rmrk")]
339 return pallet_proxy_rmrk_equip::rpc::base::<Runtime>(base_id);
340
341 #[cfg(not(feature = "rmrk"))]
342 return unsupported!();
343 }
344
345 #[allow(unused_variables)]
346 fn base_parts(base_id: RmrkBaseId) -> Result<Vec<RmrkPartType>, DispatchError> {
347 #[cfg(feature = "rmrk")]
348 return pallet_proxy_rmrk_equip::rpc::base_parts::<Runtime>(base_id);
349
350 #[cfg(not(feature = "rmrk"))]
351 return unsupported!();
352 }
353
354 #[allow(unused_variables)]
355 fn theme_names(base_id: RmrkBaseId) -> Result<Vec<RmrkThemeName>, DispatchError> {
356 #[cfg(feature = "rmrk")]
357 return pallet_proxy_rmrk_equip::rpc::theme_names::<Runtime>(base_id);
358
359 #[cfg(not(feature = "rmrk"))]
360 return unsupported!();
361 }
362
363 #[allow(unused_variables)]
364 fn theme(
365 base_id: RmrkBaseId,
366 theme_name: RmrkThemeName,
367 filter_keys: Option<Vec<RmrkPropertyKey>>
368 ) -> Result<Option<RmrkTheme>, DispatchError> {
369 #[cfg(feature = "rmrk")]
370 return pallet_proxy_rmrk_equip::rpc::theme::<Runtime>(base_id, theme_name, filter_keys);
371
372 #[cfg(not(feature = "rmrk"))]
373 return unsupported!();
374 }
375 }
376233
377 impl sp_api::Core<Block> for Runtime {234 impl sp_api::Core<Block> for Runtime {
378 fn version() -> RuntimeVersion {235 fn version() -> RuntimeVersion {
702 #[cfg(feature = "scheduler")]559 #[cfg(feature = "scheduler")]
703 list_benchmark!(list, extra, pallet_unique_scheduler_v2, Scheduler);560 list_benchmark!(list, extra, pallet_unique_scheduler_v2, Scheduler);
704
705 #[cfg(feature = "rmrk")]
706 list_benchmark!(list, extra, pallet_proxy_rmrk_core, RmrkCore);
707
708 #[cfg(feature = "rmrk")]
709 list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);
710561
711 #[cfg(feature = "collator-selection")]562 #[cfg(feature = "collator-selection")]
712 list_benchmark!(list, extra, pallet_collator_selection, CollatorSelection);563 list_benchmark!(list, extra, pallet_collator_selection, CollatorSelection);
772 #[cfg(feature = "scheduler")]623 #[cfg(feature = "scheduler")]
773 add_benchmark!(params, batches, pallet_unique_scheduler_v2, Scheduler);624 add_benchmark!(params, batches, pallet_unique_scheduler_v2, Scheduler);
774
775 #[cfg(feature = "rmrk")]
776 add_benchmark!(params, batches, pallet_proxy_rmrk_core, RmrkCore);
777
778 #[cfg(feature = "rmrk")]
779 add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);
780625
781 #[cfg(feature = "collator-selection")]626 #[cfg(feature = "collator-selection")]
782 add_benchmark!(params, batches, pallet_collator_selection, CollatorSelection);627 add_benchmark!(params, batches, pallet_collator_selection, CollatorSelection);
modifiedruntime/opal/Cargo.tomldiffbeforeafterboth
41 'pallet-inflation/runtime-benchmarks',41 'pallet-inflation/runtime-benchmarks',
42 'pallet-maintenance/runtime-benchmarks',42 'pallet-maintenance/runtime-benchmarks',
43 'pallet-nonfungible/runtime-benchmarks',43 'pallet-nonfungible/runtime-benchmarks',
44 'pallet-proxy-rmrk-core/runtime-benchmarks',
45 'pallet-proxy-rmrk-equip/runtime-benchmarks',
46 'pallet-refungible/runtime-benchmarks',44 'pallet-refungible/runtime-benchmarks',
47 'pallet-structure/runtime-benchmarks',45 'pallet-structure/runtime-benchmarks',
48 'pallet-timestamp/runtime-benchmarks',46 'pallet-timestamp/runtime-benchmarks',
95 'pallet-identity/std',93 'pallet-identity/std',
96 'pallet-inflation/std',94 'pallet-inflation/std',
97 'pallet-nonfungible/std',95 'pallet-nonfungible/std',
98 'pallet-proxy-rmrk-core/std',
99 'pallet-proxy-rmrk-equip/std',
100 'pallet-randomness-collective-flip/std',96 'pallet-randomness-collective-flip/std',
101 'pallet-refungible/std',97 'pallet-refungible/std',
102 'pallet-structure/std',98 'pallet-structure/std',
108 'pallet-unique-scheduler-v2/std',104 'pallet-unique-scheduler-v2/std',
109 'pallet-unique/std',105 'pallet-unique/std',
110 'parachain-info/std',106 'parachain-info/std',
111 'rmrk-rpc/std',
112 'serde',107 'serde',
113 'sp-api/std',108 'sp-api/std',
114 'sp-block-builder/std',109 'sp-block-builder/std',
176 'pallet-inflation/try-runtime',171 'pallet-inflation/try-runtime',
177 'pallet-maintenance/try-runtime',172 'pallet-maintenance/try-runtime',
178 'pallet-nonfungible/try-runtime',173 'pallet-nonfungible/try-runtime',
179 'pallet-proxy-rmrk-core/try-runtime',
180 'pallet-proxy-rmrk-equip/try-runtime',
181 'pallet-randomness-collective-flip/try-runtime',174 'pallet-randomness-collective-flip/try-runtime',
182 'pallet-refungible/try-runtime',175 'pallet-refungible/try-runtime',
183 'pallet-structure/try-runtime',176 'pallet-structure/try-runtime',
197foreign-assets = []190foreign-assets = []
198pallet-test-utils = []191pallet-test-utils = []
199refungible = []192refungible = []
200rmrk = []
201scheduler = []193scheduler = []
202194
203################################################################################195################################################################################
282pallet-inflation = { workspace = true }274pallet-inflation = { workspace = true }
283pallet-maintenance = { workspace = true }275pallet-maintenance = { workspace = true }
284pallet-nonfungible = { workspace = true }276pallet-nonfungible = { workspace = true }
285pallet-proxy-rmrk-core = { workspace = true }
286pallet-proxy-rmrk-equip = { workspace = true }
287pallet-refungible = { workspace = true }277pallet-refungible = { workspace = true }
288pallet-structure = { workspace = true }278pallet-structure = { workspace = true }
289pallet-unique = { workspace = true }279pallet-unique = { workspace = true }
290pallet-unique-scheduler-v2 = { workspace = true }280pallet-unique-scheduler-v2 = { workspace = true }
291precompile-utils-macro = { workspace = true }281precompile-utils-macro = { workspace = true }
292rmrk-rpc = { workspace = true }
293scale-info = { workspace = true }282scale-info = { workspace = true }
294up-common = { workspace = true }283up-common = { workspace = true }
295up-data-structs = { workspace = true }284up-data-structs = { workspace = true }
modifiedruntime/quartz/Cargo.tomldiffbeforeafterboth
42 'pallet-inflation/runtime-benchmarks',42 'pallet-inflation/runtime-benchmarks',
43 'pallet-maintenance/runtime-benchmarks',43 'pallet-maintenance/runtime-benchmarks',
44 'pallet-nonfungible/runtime-benchmarks',44 'pallet-nonfungible/runtime-benchmarks',
45 'pallet-proxy-rmrk-core/runtime-benchmarks',
46 'pallet-proxy-rmrk-equip/runtime-benchmarks',
47 'pallet-refungible/runtime-benchmarks',45 'pallet-refungible/runtime-benchmarks',
48 'pallet-structure/runtime-benchmarks',46 'pallet-structure/runtime-benchmarks',
49 'pallet-timestamp/runtime-benchmarks',47 'pallet-timestamp/runtime-benchmarks',
95 'pallet-fungible/std',93 'pallet-fungible/std',
96 'pallet-inflation/std',94 'pallet-inflation/std',
97 'pallet-nonfungible/std',95 'pallet-nonfungible/std',
98 'pallet-proxy-rmrk-core/std',
99 'pallet-proxy-rmrk-equip/std',
100 'pallet-randomness-collective-flip/std',96 'pallet-randomness-collective-flip/std',
101 'pallet-refungible/std',97 'pallet-refungible/std',
102 'pallet-structure/std',98 'pallet-structure/std',
107 'pallet-treasury/std',103 'pallet-treasury/std',
108 'pallet-unique/std',104 'pallet-unique/std',
109 'parachain-info/std',105 'parachain-info/std',
110 'rmrk-rpc/std',
111 'serde',106 'serde',
112 'sp-api/std',107 'sp-api/std',
113 'sp-block-builder/std',108 'sp-block-builder/std',
171 'pallet-inflation/try-runtime',166 'pallet-inflation/try-runtime',
172 'pallet-maintenance/try-runtime',167 'pallet-maintenance/try-runtime',
173 'pallet-nonfungible/try-runtime',168 'pallet-nonfungible/try-runtime',
174 'pallet-proxy-rmrk-core/try-runtime',
175 'pallet-proxy-rmrk-equip/try-runtime',
176 'pallet-randomness-collective-flip/try-runtime',169 'pallet-randomness-collective-flip/try-runtime',
177 'pallet-refungible/try-runtime',170 'pallet-refungible/try-runtime',
178 'pallet-structure/try-runtime',171 'pallet-structure/try-runtime',
189collator-selection = []182collator-selection = []
190foreign-assets = []183foreign-assets = []
191refungible = []184refungible = []
192rmrk = []
193scheduler = []185scheduler = []
194186
195################################################################################187################################################################################
228pallet-xcm = { workspace = true }220pallet-xcm = { workspace = true }
229parachain-info = { workspace = true }221parachain-info = { workspace = true }
230polkadot-parachain = { workspace = true }222polkadot-parachain = { workspace = true }
231rmrk-rpc = { workspace = true }
232smallvec = { workspace = true }223smallvec = { workspace = true }
233sp-api = { workspace = true }224sp-api = { workspace = true }
234sp-arithmetic = { workspace = true }225sp-arithmetic = { workspace = true }
260pallet-identity = { workspace = true }251pallet-identity = { workspace = true }
261pallet-inflation = { workspace = true }252pallet-inflation = { workspace = true }
262pallet-nonfungible = { workspace = true }253pallet-nonfungible = { workspace = true }
263pallet-proxy-rmrk-core = { workspace = true }
264pallet-proxy-rmrk-equip = { workspace = true }
265pallet-refungible = { workspace = true }254pallet-refungible = { workspace = true }
266pallet-structure = { workspace = true }255pallet-structure = { workspace = true }
267pallet-unique = { workspace = true }256pallet-unique = { workspace = true }
modifiedruntime/unique/Cargo.tomldiffbeforeafterboth
39 'pallet-inflation/runtime-benchmarks',39 'pallet-inflation/runtime-benchmarks',
40 'pallet-maintenance/runtime-benchmarks',40 'pallet-maintenance/runtime-benchmarks',
41 'pallet-nonfungible/runtime-benchmarks',41 'pallet-nonfungible/runtime-benchmarks',
42 'pallet-proxy-rmrk-core/runtime-benchmarks',
43 'pallet-proxy-rmrk-equip/runtime-benchmarks',
44 'pallet-refungible/runtime-benchmarks',42 'pallet-refungible/runtime-benchmarks',
45 'pallet-structure/runtime-benchmarks',43 'pallet-structure/runtime-benchmarks',
46 'pallet-timestamp/runtime-benchmarks',44 'pallet-timestamp/runtime-benchmarks',
93 'pallet-fungible/std',91 'pallet-fungible/std',
94 'pallet-inflation/std',92 'pallet-inflation/std',
95 'pallet-nonfungible/std',93 'pallet-nonfungible/std',
96 'pallet-proxy-rmrk-core/std',
97 'pallet-proxy-rmrk-equip/std',
98 'pallet-randomness-collective-flip/std',94 'pallet-randomness-collective-flip/std',
99 'pallet-refungible/std',95 'pallet-refungible/std',
100 'pallet-structure/std',96 'pallet-structure/std',
105 'pallet-treasury/std',101 'pallet-treasury/std',
106 'pallet-unique/std',102 'pallet-unique/std',
107 'parachain-info/std',103 'parachain-info/std',
108 'rmrk-rpc/std',
109 'sp-api/std',104 'sp-api/std',
110 'sp-block-builder/std',105 'sp-block-builder/std',
111 'sp-core/std',106 'sp-core/std',
169 'pallet-inflation/try-runtime',164 'pallet-inflation/try-runtime',
170 'pallet-maintenance/try-runtime',165 'pallet-maintenance/try-runtime',
171 'pallet-nonfungible/try-runtime',166 'pallet-nonfungible/try-runtime',
172 'pallet-proxy-rmrk-core/try-runtime',
173 'pallet-proxy-rmrk-equip/try-runtime',
174 'pallet-randomness-collective-flip/try-runtime',167 'pallet-randomness-collective-flip/try-runtime',
175 'pallet-refungible/try-runtime',168 'pallet-refungible/try-runtime',
176 'pallet-structure/try-runtime',169 'pallet-structure/try-runtime',
187collator-selection = []180collator-selection = []
188foreign-assets = []181foreign-assets = []
189refungible = []182refungible = []
190rmrk = []
191scheduler = []183scheduler = []
192184
193################################################################################185################################################################################
255pallet-identity = { workspace = true }247pallet-identity = { workspace = true }
256pallet-inflation = { workspace = true }248pallet-inflation = { workspace = true }
257pallet-nonfungible = { workspace = true }249pallet-nonfungible = { workspace = true }
258pallet-proxy-rmrk-core = { workspace = true }
259pallet-proxy-rmrk-equip = { workspace = true }
260pallet-refungible = { workspace = true }250pallet-refungible = { workspace = true }
261pallet-structure = { workspace = true }251pallet-structure = { workspace = true }
262pallet-unique = { workspace = true }252pallet-unique = { workspace = true }
263rmrk-rpc = { workspace = true }
264scale-info = { workspace = true }253scale-info = { workspace = true }
265up-common = { workspace = true }254up-common = { workspace = true }
266up-data-structs = { workspace = true }255up-data-structs = { workspace = true }
modifiedtests/package.jsondiffbeforeafterboth
43 "testEthFractionalizer": "yarn setup && mocha --timeout 9999999 -r ts-node/register './**/eth/fractionalizer/**/*.*test.ts'",43 "testEthFractionalizer": "yarn setup && mocha --timeout 9999999 -r ts-node/register './**/eth/fractionalizer/**/*.*test.ts'",
44 "testEthMarketplace": "yarn setup && mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.*test.ts'",44 "testEthMarketplace": "yarn setup && mocha --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.*test.ts'",
45 "testEvent": "yarn setup && mocha --timeout 9999999 -r ts-node/register ./src/check-event/*.*test.ts",45 "testEvent": "yarn setup && mocha --timeout 9999999 -r ts-node/register ./src/check-event/*.*test.ts",
46 "testRmrk": "yarn setup && mocha --timeout 9999999 -r ts-node/register ./**/rmrk/*.*test.ts",
47 "testEthPayable": "mocha --timeout 9999999 -r ts-node/register './**/eth/payable.test.ts'",46 "testEthPayable": "mocha --timeout 9999999 -r ts-node/register './**/eth/payable.test.ts'",
48 "testEvmCoder": "mocha --timeout 9999999 -r ts-node/register './**/eth/evmCoder.test.ts'",47 "testEvmCoder": "mocha --timeout 9999999 -r ts-node/register './**/eth/evmCoder.test.ts'",
49 "testNesting": "mocha --timeout 9999999 -r ts-node/register ./**/nest.test.ts",48 "testNesting": "mocha --timeout 9999999 -r ts-node/register ./**/nest.test.ts",
deletedtests/src/.outdated/rmrk/acceptNft.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/addResource.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/addTheme.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/burnNft.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/changeCollectionIssuer.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/createBase.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/createCollection.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/deleteCollection.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/equipNft.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/getOwnedNfts.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/lockCollection.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/mintNft.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/rejectNft.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/removeResource.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/rmrkIsolation.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/sendNft.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/setCollectionProperty.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/setEquippableList.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/setNftProperty.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/setResourcePriorities.seqtest.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/util/fetch.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/util/helpers.tsdiffbeforeafterboth

no changes

deletedtests/src/.outdated/rmrk/util/tx.tsdiffbeforeafterboth

no changes

modifiedtests/src/.outdated/substrate/substrate-api.tsdiffbeforeafterboth
53 rpc: {53 rpc: {
54 unique: defs.unique.rpc,54 unique: defs.unique.rpc,
55 appPromotion: defs.appPromotion.rpc,55 appPromotion: defs.appPromotion.rpc,
56 rmrk: defs.rmrk.rpc,
57 eth: {56 eth: {
58 feeHistory: {57 feeHistory: {
59 description: 'Dummy',58 description: 'Dummy',
modifiedtests/src/interfaces/definitions.tsdiffbeforeafterboth
1616
17export {default as unique} from './unique/definitions';17export {default as unique} from './unique/definitions';
18export {default as appPromotion} from './appPromotion/definitions';18export {default as appPromotion} from './appPromotion/definitions';
19export {default as rmrk} from './rmrk/definitions';
20export {default as povinfo} from './povinfo/definitions';19export {default as povinfo} from './povinfo/definitions';
21export {default as default} from './default/definitions';20export {default as default} from './default/definitions';
2221
deletedtests/src/interfaces/rmrk/definitions.tsdiffbeforeafterboth

no changes

deletedtests/src/interfaces/rmrk/index.tsdiffbeforeafterboth

no changes

deletedtests/src/interfaces/rmrk/types.tsdiffbeforeafterboth

no changes

modifiedtests/src/pallet-presence.test.tsdiffbeforeafterboth
6464
65 const refungible = 'refungible';65 const refungible = 'refungible';
66 const foreignAssets = 'foreignassets';66 const foreignAssets = 'foreignassets';
67 const _rmrkPallets = ['rmrkcore', 'rmrkequip'];
68 const appPromotion = 'apppromotion';67 const appPromotion = 'apppromotion';
69 const collatorSelection = ['authorship', 'session', 'collatorselection', 'identity'];68 const collatorSelection = ['authorship', 'session', 'collatorselection', 'identity'];
70 const testUtils = 'testutils';69 const testUtils = 'testutils';
modifiedtests/src/util/index.tsdiffbeforeafterboth
106106
107export enum Pallets {107export enum Pallets {
108 Inflation = 'inflation',108 Inflation = 'inflation',
109 RmrkCore = 'rmrkcore',
110 RmrkEquip = 'rmrkequip',
111 ReFungible = 'refungible',109 ReFungible = 'refungible',
112 Fungible = 'fungible',110 Fungible = 'fungible',
113 NFT = 'nonfungible',111 NFT = 'nonfungible',
modifiedtests/src/util/playgrounds/unique.dev.tsdiffbeforeafterboth
106 unique: defs.unique.rpc,106 unique: defs.unique.rpc,
107 appPromotion: defs.appPromotion.rpc,107 appPromotion: defs.appPromotion.rpc,
108 povinfo: defs.povinfo.rpc,108 povinfo: defs.povinfo.rpc,
109 rmrk: defs.rmrk.rpc,
110 eth: {109 eth: {
111 feeHistory: {110 feeHistory: {
112 description: 'Dummy',111 description: 'Dummy',