From 5eb4ab4307cf2597e0cfdc85559c28f49dfb65eb Mon Sep 17 00:00:00 2001 From: vedhavyas Date: Tue, 6 Feb 2024 14:34:46 +0530 Subject: [PATCH 1/2] move `ChainId` definition from messenger to domains primitives --- Cargo.lock | 3 + crates/sp-domains/src/lib.rs | 59 +++++++++++++++++ .../src/bin/subspace-malicious-operator.rs | 3 +- crates/subspace-node/src/commands/run.rs | 2 +- crates/subspace-runtime/src/lib.rs | 6 +- .../cross-domain-message-gossip/Cargo.toml | 1 + .../src/gossip_worker.rs | 2 +- .../src/message_listener.rs | 2 +- domains/client/relayer/src/lib.rs | 4 +- domains/client/relayer/src/worker.rs | 3 +- domains/pallets/messenger/src/fees.rs | 3 +- domains/pallets/messenger/src/lib.rs | 10 +-- domains/pallets/messenger/src/messages.rs | 6 +- domains/pallets/messenger/src/mock.rs | 4 +- domains/pallets/messenger/src/tests.rs | 3 +- domains/pallets/transporter/Cargo.toml | 40 ++++++------ domains/pallets/transporter/src/lib.rs | 4 +- domains/pallets/transporter/src/mock.rs | 2 +- domains/pallets/transporter/src/tests.rs | 2 +- .../src/host_functions.rs | 3 +- .../messenger-host-functions/src/lib.rs | 4 +- domains/primitives/messenger/src/endpoint.rs | 2 +- domains/primitives/messenger/src/lib.rs | 4 +- domains/primitives/messenger/src/messages.rs | 64 +------------------ domains/runtime/evm/src/lib.rs | 4 +- domains/service/src/domain.rs | 3 +- domains/test/primitives/Cargo.toml | 4 +- domains/test/primitives/src/lib.rs | 3 +- domains/test/runtime/evm/src/lib.rs | 4 +- domains/test/service/src/domain.rs | 3 +- test/subspace-test-runtime/src/lib.rs | 6 +- 31 files changed, 134 insertions(+), 129 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 62456cc5ba..bcf0cdbcac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2038,6 +2038,7 @@ dependencies = [ "sc-utils", "sp-blockchain", "sp-core", + "sp-domains", "sp-messenger", "sp-runtime", "tracing", @@ -2728,6 +2729,7 @@ version = "0.1.0" dependencies = [ "parity-scale-codec", "sp-api", + "sp-domains", "sp-messenger", "subspace-runtime-primitives", ] @@ -7588,6 +7590,7 @@ dependencies = [ "parity-scale-codec", "scale-info", "sp-core", + "sp-domains", "sp-io", "sp-messenger", "sp-runtime", diff --git a/crates/sp-domains/src/lib.rs b/crates/sp-domains/src/lib.rs index 91fe69cc6f..253c4bcc87 100644 --- a/crates/sp-domains/src/lib.rs +++ b/crates/sp-domains/src/lib.rs @@ -947,6 +947,65 @@ impl ExtrinsicDigest { } } +/// Identifier of a chain. +#[derive( + Clone, + Copy, + Debug, + Hash, + Eq, + PartialEq, + Ord, + PartialOrd, + Encode, + Decode, + TypeInfo, + Serialize, + Deserialize, + MaxEncodedLen, +)] +pub enum ChainId { + Consensus, + Domain(DomainId), +} + +impl ChainId { + #[inline] + pub fn consensus_chain_id() -> Self { + Self::Consensus + } + + #[inline] + pub fn is_consensus_chain(&self) -> bool { + match self { + ChainId::Consensus => true, + ChainId::Domain(_) => false, + } + } + + #[inline] + pub fn is_domain_chain(&self) -> Option { + match self { + ChainId::Consensus => None, + ChainId::Domain(domain_id) => Some(*domain_id), + } + } +} + +impl From for ChainId { + #[inline] + fn from(x: u32) -> Self { + Self::Domain(DomainId::new(x)) + } +} + +impl From for ChainId { + #[inline] + fn from(x: DomainId) -> Self { + Self::Domain(x) + } +} + pub type ExecutionReceiptFor = ExecutionReceipt< NumberFor, ::Hash, diff --git a/crates/subspace-malicious-operator/src/bin/subspace-malicious-operator.rs b/crates/subspace-malicious-operator/src/bin/subspace-malicious-operator.rs index 7a94dd59cc..9c0f8cd464 100644 --- a/crates/subspace-malicious-operator/src/bin/subspace-malicious-operator.rs +++ b/crates/subspace-malicious-operator/src/bin/subspace-malicious-operator.rs @@ -27,8 +27,7 @@ use sc_utils::mpsc::tracing_unbounded; use serde_json::Value; use sp_core::crypto::Ss58AddressFormat; use sp_core::traits::SpawnEssentialNamed; -use sp_domains::DomainId; -use sp_messenger::messages::ChainId; +use sp_domains::{ChainId, DomainId}; use std::collections::HashMap; use subspace_malicious_operator::malicious_domain_instance_starter::DomainInstanceStarter; use subspace_malicious_operator::{Cli, DomainCli}; diff --git a/crates/subspace-node/src/commands/run.rs b/crates/subspace-node/src/commands/run.rs index 80bead8ccd..656e251975 100644 --- a/crates/subspace-node/src/commands/run.rs +++ b/crates/subspace-node/src/commands/run.rs @@ -21,7 +21,7 @@ use sc_storage_monitor::StorageMonitorService; use sc_transaction_pool_api::OffchainTransactionPoolFactory; use sc_utils::mpsc::tracing_unbounded; use sp_core::traits::SpawnEssentialNamed; -use sp_messenger::messages::ChainId; +use sp_domains::ChainId; use std::env; use subspace_runtime::{Block, RuntimeApi}; use tracing::{debug, error, info, info_span, warn}; diff --git a/crates/subspace-runtime/src/lib.rs b/crates/subspace-runtime/src/lib.rs index 61a874878c..f66831ce49 100644 --- a/crates/subspace-runtime/src/lib.rs +++ b/crates/subspace-runtime/src/lib.rs @@ -60,12 +60,12 @@ use sp_core::crypto::{ByteArray, KeyTypeId}; use sp_core::{OpaqueMetadata, H256}; use sp_domains::bundle_producer_election::BundleProducerElectionParams; use sp_domains::{ - DomainId, DomainInstanceData, DomainsHoldIdentifier, ExecutionReceiptFor, OpaqueBundle, - OperatorId, OperatorPublicKey, StakingHoldIdentifier, + ChainId, DomainId, DomainInstanceData, DomainsHoldIdentifier, ExecutionReceiptFor, + OpaqueBundle, OperatorId, OperatorPublicKey, StakingHoldIdentifier, }; use sp_domains_fraud_proof::fraud_proof::FraudProof; use sp_messenger::endpoint::{Endpoint, EndpointHandler as EndpointHandlerT, EndpointId}; -use sp_messenger::messages::{BlockMessagesWithStorageKey, ChainId, CrossDomainMessage, MessageId}; +use sp_messenger::messages::{BlockMessagesWithStorageKey, CrossDomainMessage, MessageId}; use sp_messenger_host_functions::{get_storage_key, StorageKeyRequest}; use sp_mmr_primitives::{EncodableOpaqueLeaf, Proof}; use sp_runtime::traits::{ diff --git a/domains/client/cross-domain-message-gossip/Cargo.toml b/domains/client/cross-domain-message-gossip/Cargo.toml index dd3f96346a..959b667fc3 100644 --- a/domains/client/cross-domain-message-gossip/Cargo.toml +++ b/domains/client/cross-domain-message-gossip/Cargo.toml @@ -21,6 +21,7 @@ sc-transaction-pool-api = { version = "4.0.0-dev", git = "https://github.com/sub sc-utils = { version = "4.0.0-dev", git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } sp-blockchain = { version = "4.0.0-dev", git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } sp-core = { version = "21.0.0", git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } +sp-domains = { version = "0.1.0", default-features = false, path = "../../../crates/sp-domains" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } sp-runtime = { version = "24.0.0", git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } tracing = "0.1.40" diff --git a/domains/client/cross-domain-message-gossip/src/gossip_worker.rs b/domains/client/cross-domain-message-gossip/src/gossip_worker.rs index 05f9d05beb..417eaaba6f 100644 --- a/domains/client/cross-domain-message-gossip/src/gossip_worker.rs +++ b/domains/client/cross-domain-message-gossip/src/gossip_worker.rs @@ -9,7 +9,7 @@ use sc_network_gossip::{ }; use sc_utils::mpsc::{tracing_unbounded, TracingUnboundedReceiver, TracingUnboundedSender}; use sp_core::twox_256; -use sp_messenger::messages::ChainId; +use sp_domains::ChainId; use sp_runtime::traits::{Block as BlockT, Hash as HashT, Header as HeaderT}; use std::collections::{BTreeMap, HashSet}; use std::future::poll_fn; diff --git a/domains/client/cross-domain-message-gossip/src/message_listener.rs b/domains/client/cross-domain-message-gossip/src/message_listener.rs index 0fb5aaa9bb..593ab68b8d 100644 --- a/domains/client/cross-domain-message-gossip/src/message_listener.rs +++ b/domains/client/cross-domain-message-gossip/src/message_listener.rs @@ -3,7 +3,7 @@ use futures::{Stream, StreamExt}; use sc_network::NetworkPeers; use sc_transaction_pool_api::{TransactionPool, TransactionSource}; use sp_blockchain::HeaderBackend; -use sp_messenger::messages::ChainId; +use sp_domains::ChainId; use sp_runtime::codec::Decode; use sp_runtime::traits::Block as BlockT; use std::sync::Arc; diff --git a/domains/client/relayer/src/lib.rs b/domains/client/relayer/src/lib.rs index 8e9ab5be80..42ad04145e 100644 --- a/domains/client/relayer/src/lib.rs +++ b/domains/client/relayer/src/lib.rs @@ -9,9 +9,9 @@ use sc_client_api::{AuxStore, HeaderBackend, ProofProvider, StorageProof}; use sc_utils::mpsc::TracingUnboundedSender; use scale_info::TypeInfo; use sp_api::ProvideRuntimeApi; -use sp_domains::DomainsApi; +use sp_domains::{ChainId, DomainsApi}; use sp_messenger::messages::{ - BlockMessageWithStorageKey, BlockMessagesWithStorageKey, ChainId, ConsensusChainMmrLeafProof, + BlockMessageWithStorageKey, BlockMessagesWithStorageKey, ConsensusChainMmrLeafProof, CrossDomainMessage, Proof, }; use sp_messenger::{MessengerApi, RelayerApi}; diff --git a/domains/client/relayer/src/worker.rs b/domains/client/relayer/src/worker.rs index eda26b3461..e5ff2b49c2 100644 --- a/domains/client/relayer/src/worker.rs +++ b/domains/client/relayer/src/worker.rs @@ -5,8 +5,7 @@ use sc_client_api::{AuxStore, BlockchainEvents, ProofProvider}; use sc_state_db::PruningMode; use sp_api::{ApiError, ProvideRuntimeApi}; use sp_consensus::SyncOracle; -use sp_domains::DomainsApi; -use sp_messenger::messages::ChainId; +use sp_domains::{ChainId, DomainsApi}; use sp_messenger::{MessengerApi, RelayerApi}; use sp_runtime::scale_info::TypeInfo; use sp_runtime::traits::{CheckedSub, NumberFor, Zero}; diff --git a/domains/pallets/messenger/src/fees.rs b/domains/pallets/messenger/src/fees.rs index 2f7438762d..ab17de534a 100644 --- a/domains/pallets/messenger/src/fees.rs +++ b/domains/pallets/messenger/src/fees.rs @@ -3,8 +3,9 @@ use crate::{BalanceOf, Config, Error, Pallet}; use frame_support::traits::fungible::Mutate; use frame_support::traits::tokens::{Fortitude, Precision}; use frame_support::weights::WeightToFee; +use sp_domains::ChainId; use sp_messenger::endpoint::Endpoint; -use sp_messenger::messages::{ChainId, ChannelId, FeeModel, MessageId, Nonce}; +use sp_messenger::messages::{ChannelId, FeeModel, MessageId, Nonce}; use sp_messenger::OnXDMRewards; use sp_runtime::traits::CheckedAdd; use sp_runtime::DispatchResult; diff --git a/domains/pallets/messenger/src/lib.rs b/domains/pallets/messenger/src/lib.rs index 7b37771565..21ebd61ce7 100644 --- a/domains/pallets/messenger/src/lib.rs +++ b/domains/pallets/messenger/src/lib.rs @@ -38,9 +38,8 @@ use frame_support::traits::fungible::Inspect; pub use pallet::*; use scale_info::TypeInfo; use sp_core::U256; -use sp_messenger::messages::{ - ChainId, ChannelId, CrossDomainMessage, FeeModel, Message, MessageId, Nonce, -}; +use sp_domains::ChainId; +use sp_messenger::messages::{ChannelId, CrossDomainMessage, FeeModel, Message, MessageId, Nonce}; use sp_runtime::traits::{Extrinsic, Hash}; use sp_runtime::DispatchError; @@ -108,10 +107,11 @@ mod pallet { use frame_system::pallet_prelude::*; use sp_core::storage::StorageKey; use sp_domains::proof_provider_and_verifier::{StorageProofVerifier, VerificationError}; + use sp_domains::ChainId; use sp_messenger::endpoint::{Endpoint, EndpointHandler, EndpointRequest, Sender}; use sp_messenger::messages::{ - ChainId, CrossDomainMessage, InitiateChannelParams, Message, MessageId, MessageWeightTag, - Payload, ProtocolMessageRequest, RequestResponse, VersionedPayload, + CrossDomainMessage, InitiateChannelParams, Message, MessageId, MessageWeightTag, Payload, + ProtocolMessageRequest, RequestResponse, VersionedPayload, }; use sp_messenger::{MmrProofVerifier, OnXDMRewards, StorageKeys}; use sp_mmr_primitives::EncodableOpaqueLeaf; diff --git a/domains/pallets/messenger/src/messages.rs b/domains/pallets/messenger/src/messages.rs index f48746d743..343e34f7c7 100644 --- a/domains/pallets/messenger/src/messages.rs +++ b/domains/pallets/messenger/src/messages.rs @@ -5,10 +5,10 @@ use crate::{ use codec::{Decode, Encode}; use frame_support::ensure; use scale_info::TypeInfo; +use sp_domains::ChainId; use sp_messenger::messages::{ - BlockMessageWithStorageKey, BlockMessagesWithStorageKey, ChainId, Message, MessageId, - MessageWeightTag, Payload, ProtocolMessageRequest, ProtocolMessageResponse, RequestResponse, - VersionedPayload, + BlockMessageWithStorageKey, BlockMessagesWithStorageKey, Message, MessageId, MessageWeightTag, + Payload, ProtocolMessageRequest, ProtocolMessageResponse, RequestResponse, VersionedPayload, }; use sp_runtime::traits::Get; use sp_runtime::{ArithmeticError, DispatchError, DispatchResult}; diff --git a/domains/pallets/messenger/src/mock.rs b/domains/pallets/messenger/src/mock.rs index 29adda0890..d5c35c0dee 100644 --- a/domains/pallets/messenger/src/mock.rs +++ b/domains/pallets/messenger/src/mock.rs @@ -2,8 +2,8 @@ use crate::{ChannelId, Channels, Config, InboxResponses, Nonce, Outbox, StateRoo use frame_support::storage::generator::StorageDoubleMap; use frame_support::weights::Weight; use sp_core::storage::StorageKey; +use sp_domains::ChainId; use sp_messenger::endpoint::{EndpointHandler, EndpointRequest, EndpointResponse}; -use sp_messenger::messages::ChainId; use sp_runtime::traits::BlakeTwo256; use sp_runtime::DispatchResult; use sp_state_machine::backend::Backend; @@ -27,8 +27,8 @@ macro_rules! impl_runtime { use frame_support::parameter_types; use pallet_balances::AccountData; use sp_core::H256; + use sp_domains::ChainId; use sp_messenger::endpoint::{Endpoint, EndpointHandler, EndpointId}; - use sp_messenger::messages::ChainId; use sp_runtime::traits::{ BlakeTwo256, ConstU16, ConstU32, ConstU64, Convert, IdentityLookup, }; diff --git a/domains/pallets/messenger/src/tests.rs b/domains/pallets/messenger/src/tests.rs index 1c0dc4ef64..ec334bbbe4 100644 --- a/domains/pallets/messenger/src/tests.rs +++ b/domains/pallets/messenger/src/tests.rs @@ -14,9 +14,10 @@ use pallet_transporter::Location; use sp_core::storage::StorageKey; use sp_core::{Blake2Hasher, H256}; use sp_domains::proof_provider_and_verifier::{StorageProofVerifier, VerificationError}; +use sp_domains::ChainId; use sp_messenger::endpoint::{Endpoint, EndpointPayload, EndpointRequest, Sender}; use sp_messenger::messages::{ - ChainId, ConsensusChainMmrLeafProof, CrossDomainMessage, InitiateChannelParams, Payload, Proof, + ConsensusChainMmrLeafProof, CrossDomainMessage, InitiateChannelParams, Payload, Proof, ProtocolMessageRequest, RequestResponse, VersionedPayload, }; use sp_runtime::traits::{Convert, ValidateUnsigned}; diff --git a/domains/pallets/transporter/Cargo.toml b/domains/pallets/transporter/Cargo.toml index 88636b6bae..034ce1a800 100644 --- a/domains/pallets/transporter/Cargo.toml +++ b/domains/pallets/transporter/Cargo.toml @@ -8,19 +8,20 @@ homepage = "https://subspace.network" repository = "https://github.com/subspace/subspace" description = "Subspace node pallet to move funds between domains." include = [ - "/src", - "/Cargo.toml", - "/README.md", + "/src", + "/Cargo.toml", + "/README.md", ] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.5", default-features = false, features = ["derive"] } -domain-runtime-primitives = { path = "../../primitives/runtime" , default-features = false } +domain-runtime-primitives = { path = "../../primitives/runtime", default-features = false } frame-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8", optional = true } frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } scale-info = { version = "2.7.0", default-features = false, features = ["derive"] } sp-core = { version = "21.0.0", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } +sp-domains = { version = "0.1.0", default-features = false, path = "../../../crates/sp-domains" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } sp-runtime = { version = "24.0.0", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } sp-std = { version = "8.0.0", default-features = false, git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8" } @@ -32,22 +33,23 @@ sp-io = { version = "23.0.0", git = "https://github.com/subspace/polkadot-sdk", [features] default = ["std"] std = [ - "codec/std", - "domain-runtime-primitives/std", - "frame-benchmarking?/std", - "frame-support/std", - "frame-system/std", - "scale-info/std", - "sp-core/std", - "sp-messenger/std", - "sp-runtime/std", - "sp-std/std", + "codec/std", + "domain-runtime-primitives/std", + "frame-benchmarking?/std", + "frame-support/std", + "frame-system/std", + "scale-info/std", + "sp-core/std", + "sp-domains/std", + "sp-messenger/std", + "sp-runtime/std", + "sp-std/std", ] try-runtime = ["frame-support/try-runtime"] runtime-benchmarks = [ - "frame-benchmarking", - "frame-benchmarking/runtime-benchmarks", - "frame-support/runtime-benchmarks", - "frame-system/runtime-benchmarks", - "sp-messenger/runtime-benchmarks", + "frame-benchmarking", + "frame-benchmarking/runtime-benchmarks", + "frame-support/runtime-benchmarks", + "frame-system/runtime-benchmarks", + "sp-messenger/runtime-benchmarks", ] diff --git a/domains/pallets/transporter/src/lib.rs b/domains/pallets/transporter/src/lib.rs index da4b2836e6..2d9c4dc033 100644 --- a/domains/pallets/transporter/src/lib.rs +++ b/domains/pallets/transporter/src/lib.rs @@ -24,7 +24,7 @@ use domain_runtime_primitives::{MultiAccountId, TryConvertBack}; use frame_support::traits::Currency; pub use pallet::*; use scale_info::TypeInfo; -use sp_messenger::messages::ChainId; +use sp_domains::ChainId; #[cfg(test)] mod mock; @@ -73,11 +73,11 @@ mod pallet { use frame_support::traits::{Currency, ExistenceRequirement, WithdrawReasons}; use frame_support::weights::Weight; use frame_system::pallet_prelude::*; + use sp_domains::ChainId; use sp_messenger::endpoint::{ Endpoint, EndpointHandler as EndpointHandlerT, EndpointId, EndpointRequest, EndpointResponse, Sender, }; - use sp_messenger::messages::ChainId; use sp_runtime::traits::Convert; use sp_std::vec; diff --git a/domains/pallets/transporter/src/mock.rs b/domains/pallets/transporter/src/mock.rs index c7f182abbf..2d03eba0dc 100644 --- a/domains/pallets/transporter/src/mock.rs +++ b/domains/pallets/transporter/src/mock.rs @@ -6,8 +6,8 @@ use frame_support::parameter_types; use frame_support::traits::{ConstU16, ConstU32, ConstU64}; use pallet_balances::AccountData; use sp_core::H256; +use sp_domains::ChainId; use sp_messenger::endpoint::{EndpointId, EndpointRequest, Sender}; -use sp_messenger::messages::ChainId; use sp_runtime::traits::{BlakeTwo256, Convert, IdentityLookup}; use sp_runtime::{BuildStorage, DispatchError}; diff --git a/domains/pallets/transporter/src/tests.rs b/domains/pallets/transporter/src/tests.rs index 82560c8744..f0a9545066 100644 --- a/domains/pallets/transporter/src/tests.rs +++ b/domains/pallets/transporter/src/tests.rs @@ -6,10 +6,10 @@ use crate::{EndpointHandler, Error, Location, Transfer}; use codec::Encode; use frame_support::dispatch::DispatchResult; use frame_support::{assert_err, assert_ok}; +use sp_domains::ChainId; use sp_messenger::endpoint::{ Endpoint, EndpointHandler as EndpointHandlerT, EndpointRequest, EndpointResponse, }; -use sp_messenger::messages::ChainId; use sp_runtime::traits::Convert; use std::marker::PhantomData; diff --git a/domains/primitives/messenger-host-functions/src/host_functions.rs b/domains/primitives/messenger-host-functions/src/host_functions.rs index 1a6c1ba01a..8d1cd88de3 100644 --- a/domains/primitives/messenger-host-functions/src/host_functions.rs +++ b/domains/primitives/messenger-host-functions/src/host_functions.rs @@ -5,8 +5,7 @@ use sp_api::ProvideRuntimeApi; use sp_blockchain::HeaderBackend; use sp_core::traits::CodeExecutor; use sp_core::H256; -use sp_domains::{DomainId, DomainsApi}; -use sp_messenger::messages::ChainId; +use sp_domains::{ChainId, DomainId, DomainsApi}; use sp_messenger::MessengerApi; use sp_runtime::traits::{Block as BlockT, Header, NumberFor}; use std::marker::PhantomData; diff --git a/domains/primitives/messenger-host-functions/src/lib.rs b/domains/primitives/messenger-host-functions/src/lib.rs index 31a9d4eb78..599b6be491 100644 --- a/domains/primitives/messenger-host-functions/src/lib.rs +++ b/domains/primitives/messenger-host-functions/src/lib.rs @@ -19,8 +19,8 @@ use codec::{Decode, Encode}; use scale_info::TypeInfo; -use sp_domains::DomainId; -use sp_messenger::messages::{ChainId, MessageId}; +use sp_domains::{ChainId, DomainId}; +use sp_messenger::messages::MessageId; use sp_runtime_interface::pass_by; use sp_runtime_interface::pass_by::PassBy; diff --git a/domains/primitives/messenger/src/endpoint.rs b/domains/primitives/messenger/src/endpoint.rs index 79aab93de4..67e595b42e 100644 --- a/domains/primitives/messenger/src/endpoint.rs +++ b/domains/primitives/messenger/src/endpoint.rs @@ -1,8 +1,8 @@ -use crate::messages::ChainId; use codec::{Decode, Encode}; use frame_support::weights::Weight; use frame_support::Parameter; use scale_info::TypeInfo; +use sp_domains::ChainId; use sp_runtime::traits::Member; use sp_runtime::{sp_std, DispatchError, DispatchResult}; use sp_std::vec::Vec; diff --git a/domains/primitives/messenger/src/lib.rs b/domains/primitives/messenger/src/lib.rs index bebf65816a..717d0f8a27 100644 --- a/domains/primitives/messenger/src/lib.rs +++ b/domains/primitives/messenger/src/lib.rs @@ -21,8 +21,8 @@ pub mod endpoint; pub mod messages; use codec::{Decode, Encode}; -use messages::{BlockMessagesWithStorageKey, ChainId, CrossDomainMessage, MessageId}; -use sp_domains::DomainId; +use messages::{BlockMessagesWithStorageKey, CrossDomainMessage, MessageId}; +use sp_domains::{ChainId, DomainId}; use sp_mmr_primitives::{EncodableOpaqueLeaf, Proof}; use sp_std::vec::Vec; diff --git a/domains/primitives/messenger/src/messages.rs b/domains/primitives/messenger/src/messages.rs index 6cd8ec63ca..70dfe275ae 100644 --- a/domains/primitives/messenger/src/messages.rs +++ b/domains/primitives/messenger/src/messages.rs @@ -1,8 +1,7 @@ use crate::endpoint::{Endpoint, EndpointRequest, EndpointResponse}; -use codec::{Decode, Encode, MaxEncodedLen}; +use codec::{Decode, Encode}; use scale_info::TypeInfo; -use serde::{Deserialize, Serialize}; -use sp_domains::DomainId; +use sp_domains::ChainId; use sp_mmr_primitives::{EncodableOpaqueLeaf, Proof as MmrProof}; use sp_runtime::app_crypto::sp_core::U256; use sp_runtime::{sp_std, DispatchError}; @@ -116,65 +115,6 @@ impl MessageWeightTag { } } -/// Identifier of a chain. -#[derive( - Clone, - Copy, - Debug, - Hash, - Eq, - PartialEq, - Ord, - PartialOrd, - Encode, - Decode, - TypeInfo, - Serialize, - Deserialize, - MaxEncodedLen, -)] -pub enum ChainId { - Consensus, - Domain(DomainId), -} - -impl ChainId { - #[inline] - pub fn consensus_chain_id() -> Self { - Self::Consensus - } - - #[inline] - pub fn is_consensus_chain(&self) -> bool { - match self { - ChainId::Consensus => true, - ChainId::Domain(_) => false, - } - } - - #[inline] - pub fn is_domain_chain(&self) -> Option { - match self { - ChainId::Consensus => None, - ChainId::Domain(domain_id) => Some(*domain_id), - } - } -} - -impl From for ChainId { - #[inline] - fn from(x: u32) -> Self { - Self::Domain(DomainId::new(x)) - } -} - -impl From for ChainId { - #[inline] - fn from(x: DomainId) -> Self { - Self::Domain(x) - } -} - /// Message contains information to be sent to or received from another chain. #[derive(Debug, Encode, Decode, Clone, Eq, PartialEq, TypeInfo)] pub struct Message { diff --git a/domains/runtime/evm/src/lib.rs b/domains/runtime/evm/src/lib.rs index abb47c0dd9..57511906fd 100644 --- a/domains/runtime/evm/src/lib.rs +++ b/domains/runtime/evm/src/lib.rs @@ -42,9 +42,9 @@ use pallet_transporter::EndpointHandler; use sp_api::impl_runtime_apis; use sp_core::crypto::KeyTypeId; use sp_core::{Get, OpaqueMetadata, H160, H256, U256}; -use sp_domains::DomainId; +use sp_domains::{ChainId, DomainId}; use sp_messenger::endpoint::{Endpoint, EndpointHandler as EndpointHandlerT, EndpointId}; -use sp_messenger::messages::{BlockMessagesWithStorageKey, ChainId, CrossDomainMessage, MessageId}; +use sp_messenger::messages::{BlockMessagesWithStorageKey, CrossDomainMessage, MessageId}; use sp_messenger_host_functions::{get_storage_key, StorageKeyRequest}; use sp_mmr_primitives::{EncodableOpaqueLeaf, Proof}; use sp_runtime::generic::Era; diff --git a/domains/service/src/domain.rs b/domains/service/src/domain.rs index 2068219da2..38fd0a3aeb 100644 --- a/domains/service/src/domain.rs +++ b/domains/service/src/domain.rs @@ -31,9 +31,8 @@ use sp_consensus::SyncOracle; use sp_consensus_slots::Slot; use sp_core::traits::SpawnEssentialNamed; use sp_core::{Decode, Encode, H256}; -use sp_domains::{BundleProducerElectionApi, DomainId, DomainsApi, OperatorId}; +use sp_domains::{BundleProducerElectionApi, ChainId, DomainId, DomainsApi, OperatorId}; use sp_domains_fraud_proof::FraudProofApi; -use sp_messenger::messages::ChainId; use sp_messenger::{MessengerApi, RelayerApi}; use sp_mmr_primitives::MmrApi; use sp_offchain::OffchainWorkerApi; diff --git a/domains/test/primitives/Cargo.toml b/domains/test/primitives/Cargo.toml index ebd2002d88..19bae4924a 100644 --- a/domains/test/primitives/Cargo.toml +++ b/domains/test/primitives/Cargo.toml @@ -12,8 +12,9 @@ include = [ ] [dependencies] -codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false, features = ["derive"]} +codec = { package = "parity-scale-codec", version = "3.4.0", default-features = false, features = ["derive"] } sp-api = { version = "4.0.0-dev", git = "https://github.com/subspace/polkadot-sdk", rev = "d6b500960579d73c43fc4ef550b703acfa61c4c8", default-features = false } +sp-domains = { version = "0.1.0", default-features = false, path = "../../../crates/sp-domains" } sp-messenger = { version = "0.1.0", default-features = false, path = "../../primitives/messenger" } subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subspace-runtime-primitives", default-features = false } @@ -21,6 +22,7 @@ subspace-runtime-primitives = { version = "0.1.0", path = "../../../crates/subsp default = ["std"] std = [ "sp-api/std", + "sp-domains/std", "sp-messenger/std", "subspace-runtime-primitives/std", ] diff --git a/domains/test/primitives/src/lib.rs b/domains/test/primitives/src/lib.rs index b0cfeeafde..08ed54fe76 100644 --- a/domains/test/primitives/src/lib.rs +++ b/domains/test/primitives/src/lib.rs @@ -2,7 +2,8 @@ //! Test primitive crates that expose necessary extensions that are used in tests. use codec::{Decode, Encode}; -use sp_messenger::messages::{ChainId, ChannelId}; +use sp_domains::ChainId; +use sp_messenger::messages::ChannelId; use subspace_runtime_primitives::Moment; sp_api::decl_runtime_apis! { diff --git a/domains/test/runtime/evm/src/lib.rs b/domains/test/runtime/evm/src/lib.rs index 13f303eff7..2a8a78e9c7 100644 --- a/domains/test/runtime/evm/src/lib.rs +++ b/domains/test/runtime/evm/src/lib.rs @@ -41,10 +41,10 @@ use pallet_transporter::EndpointHandler; use sp_api::impl_runtime_apis; use sp_core::crypto::KeyTypeId; use sp_core::{Get, OpaqueMetadata, H160, H256, U256}; -use sp_domains::DomainId; +use sp_domains::{ChainId, DomainId}; use sp_messenger::endpoint::{Endpoint, EndpointHandler as EndpointHandlerT, EndpointId}; use sp_messenger::messages::{ - BlockMessagesWithStorageKey, ChainId, ChannelId, CrossDomainMessage, MessageId, + BlockMessagesWithStorageKey, ChannelId, CrossDomainMessage, MessageId, }; use sp_messenger_host_functions::{get_storage_key, StorageKeyRequest}; use sp_mmr_primitives::{EncodableOpaqueLeaf, Proof}; diff --git a/domains/test/service/src/domain.rs b/domains/test/service/src/domain.rs index 4d37fc5fef..d4f81b7dd7 100644 --- a/domains/test/service/src/domain.rs +++ b/domains/test/service/src/domain.rs @@ -29,8 +29,7 @@ use serde::de::DeserializeOwned; use sp_api::{ApiExt, ConstructRuntimeApi, Metadata, ProvideRuntimeApi}; use sp_block_builder::BlockBuilder; use sp_core::{Decode, Encode, H256}; -use sp_domains::DomainId; -use sp_messenger::messages::ChainId; +use sp_domains::{ChainId, DomainId}; use sp_messenger::{MessengerApi, RelayerApi}; use sp_offchain::OffchainWorkerApi; use sp_runtime::traits::{Dispatchable, NumberFor}; diff --git a/test/subspace-test-runtime/src/lib.rs b/test/subspace-test-runtime/src/lib.rs index e8eb156e01..17a58dfc7c 100644 --- a/test/subspace-test-runtime/src/lib.rs +++ b/test/subspace-test-runtime/src/lib.rs @@ -54,12 +54,12 @@ use sp_core::crypto::{ByteArray, KeyTypeId}; use sp_core::{OpaqueMetadata, H256}; use sp_domains::bundle_producer_election::BundleProducerElectionParams; use sp_domains::{ - DomainId, DomainInstanceData, DomainsHoldIdentifier, ExecutionReceiptFor, OpaqueBundle, - OpaqueBundles, OperatorId, OperatorPublicKey, StakingHoldIdentifier, + ChainId, DomainId, DomainInstanceData, DomainsHoldIdentifier, ExecutionReceiptFor, + OpaqueBundle, OpaqueBundles, OperatorId, OperatorPublicKey, StakingHoldIdentifier, }; use sp_domains_fraud_proof::fraud_proof::FraudProof; use sp_messenger::endpoint::{Endpoint, EndpointHandler as EndpointHandlerT, EndpointId}; -use sp_messenger::messages::{BlockMessagesWithStorageKey, ChainId, CrossDomainMessage, MessageId}; +use sp_messenger::messages::{BlockMessagesWithStorageKey, CrossDomainMessage, MessageId}; use sp_messenger_host_functions::{get_storage_key, StorageKeyRequest}; use sp_mmr_primitives::{EncodableOpaqueLeaf, Proof}; use sp_runtime::traits::{ From 161f192435cf0e2a0077e4a138cbd57b8fb48ceb Mon Sep 17 00:00:00 2001 From: vedhavyas Date: Tue, 6 Feb 2024 14:46:20 +0530 Subject: [PATCH 2/2] update ER to include transfers to other chains --- crates/pallet-domains/src/tests.rs | 1 + crates/sp-domains-fraud-proof/src/bundle_equivocation.rs | 1 + crates/sp-domains/src/lib.rs | 4 ++++ domains/client/domain-operator/src/aux_schema.rs | 1 + domains/client/domain-operator/src/domain_block_processor.rs | 3 +++ 5 files changed, 10 insertions(+) diff --git a/crates/pallet-domains/src/tests.rs b/crates/pallet-domains/src/tests.rs index b2b000d4a0..8bd5b18ef1 100644 --- a/crates/pallet-domains/src/tests.rs +++ b/crates/pallet-domains/src/tests.rs @@ -453,6 +453,7 @@ pub(crate) fn create_dummy_receipt( execution_trace, execution_trace_root, block_fees: Default::default(), + transfers: Default::default(), } } diff --git a/crates/sp-domains-fraud-proof/src/bundle_equivocation.rs b/crates/sp-domains-fraud-proof/src/bundle_equivocation.rs index 0b2ac0ec83..8bba0768e1 100644 --- a/crates/sp-domains-fraud-proof/src/bundle_equivocation.rs +++ b/crates/sp-domains-fraud-proof/src/bundle_equivocation.rs @@ -191,6 +191,7 @@ mod test { execution_trace: vec![], execution_trace_root: Default::default(), block_fees: Default::default(), + transfers: Default::default(), }, estimated_bundle_weight: Default::default(), bundle_extrinsics_root: Default::default(), diff --git a/crates/sp-domains/src/lib.rs b/crates/sp-domains/src/lib.rs index 253c4bcc87..3ad54f313f 100644 --- a/crates/sp-domains/src/lib.rs +++ b/crates/sp-domains/src/lib.rs @@ -433,6 +433,8 @@ pub struct ExecutionReceipt { /// Compute and Domain storage fees are shared across operators and Consensus /// storage fees are given to the consensus block author. pub block_fees: BlockFees, + /// List of transfers from this Domain to other chains + pub transfers: BTreeMap, } impl @@ -510,6 +512,7 @@ impl< execution_trace: sp_std::vec![genesis_state_root], execution_trace_root: Default::default(), block_fees: Default::default(), + transfers: Default::default(), } } @@ -546,6 +549,7 @@ impl< execution_trace, execution_trace_root, block_fees: Default::default(), + transfers: Default::default(), } } } diff --git a/domains/client/domain-operator/src/aux_schema.rs b/domains/client/domain-operator/src/aux_schema.rs index cc82755393..95c0a98825 100644 --- a/domains/client/domain-operator/src/aux_schema.rs +++ b/domains/client/domain-operator/src/aux_schema.rs @@ -254,6 +254,7 @@ mod tests { execution_trace: Default::default(), execution_trace_root: Default::default(), block_fees: Default::default(), + transfers: Default::default(), } } diff --git a/domains/client/domain-operator/src/domain_block_processor.rs b/domains/client/domain-operator/src/domain_block_processor.rs index 0f7b1e6e33..ea222854e6 100644 --- a/domains/client/domain-operator/src/domain_block_processor.rs +++ b/domains/client/domain-operator/src/domain_block_processor.rs @@ -396,6 +396,8 @@ where execution_trace: trace, execution_trace_root: sp_core::H256(trace_root), block_fees, + // TODO: Fetch transfers from the runtime + transfers: Default::default(), }; Ok(DomainBlockResult { @@ -973,6 +975,7 @@ mod tests { execution_trace: sp_std::vec![], execution_trace_root: Default::default(), block_fees: Default::default(), + transfers: Default::default(), } }