mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 19:51:02 +00:00
XCM handler: make send origin configurable. (#346)
This commit is contained in:
@@ -27,8 +27,7 @@ use cumulus_primitives_core::{
|
|||||||
DownwardMessageHandler, HrmpMessageHandler, HrmpMessageSender, InboundDownwardMessage,
|
DownwardMessageHandler, HrmpMessageHandler, HrmpMessageSender, InboundDownwardMessage,
|
||||||
InboundHrmpMessage, OutboundHrmpMessage, ParaId, UpwardMessageSender,
|
InboundHrmpMessage, OutboundHrmpMessage, ParaId, UpwardMessageSender,
|
||||||
};
|
};
|
||||||
use frame_support::{decl_error, decl_event, decl_module, sp_runtime::traits::Hash};
|
use frame_support::{decl_error, decl_event, decl_module, sp_runtime::traits::Hash, traits::EnsureOrigin};
|
||||||
use frame_system::ensure_root;
|
|
||||||
use sp_std::convert::{TryFrom, TryInto};
|
use sp_std::convert::{TryFrom, TryInto};
|
||||||
use xcm::{
|
use xcm::{
|
||||||
v0::{Error as XcmError, ExecuteXcm, Junction, MultiLocation, SendXcm, Xcm},
|
v0::{Error as XcmError, ExecuteXcm, Junction, MultiLocation, SendXcm, Xcm},
|
||||||
@@ -43,6 +42,9 @@ pub trait Config: frame_system::Config {
|
|||||||
type UpwardMessageSender: UpwardMessageSender;
|
type UpwardMessageSender: UpwardMessageSender;
|
||||||
/// Something to send an HRMP message.
|
/// Something to send an HRMP message.
|
||||||
type HrmpMessageSender: HrmpMessageSender;
|
type HrmpMessageSender: HrmpMessageSender;
|
||||||
|
/// Required origin for sending XCM messages. Typically Root or parachain
|
||||||
|
/// council majority.
|
||||||
|
type SendXcmOrigin: EnsureOrigin<Self::Origin>;
|
||||||
}
|
}
|
||||||
|
|
||||||
decl_event! {
|
decl_event! {
|
||||||
@@ -57,7 +59,7 @@ decl_event! {
|
|||||||
BadFormat(Hash),
|
BadFormat(Hash),
|
||||||
/// An upward message was sent to the relay chain.
|
/// An upward message was sent to the relay chain.
|
||||||
UpwardMessageSent(Hash),
|
UpwardMessageSent(Hash),
|
||||||
/// An HRMP message was sent to a sibling parachainchain.
|
/// An HRMP message was sent to a sibling parachain.
|
||||||
HrmpMessageSent(Hash),
|
HrmpMessageSent(Hash),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -74,21 +76,21 @@ decl_module! {
|
|||||||
fn deposit_event() = default;
|
fn deposit_event() = default;
|
||||||
|
|
||||||
#[weight = 1_000]
|
#[weight = 1_000]
|
||||||
fn sudo_send_xcm(origin, dest: MultiLocation, message: Xcm) {
|
fn send_xcm(origin, dest: MultiLocation, message: Xcm) {
|
||||||
ensure_root(origin)?;
|
T::SendXcmOrigin::ensure_origin(origin)?;
|
||||||
Self::send_xcm(dest, message).map_err(|_| Error::<T>::FailedToSend)?;
|
<Self as SendXcm>::send_xcm(dest, message).map_err(|_| Error::<T>::FailedToSend)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[weight = 1_000]
|
#[weight = 1_000]
|
||||||
fn sudo_send_upward_xcm(origin, message: VersionedXcm) {
|
fn send_upward_xcm(origin, message: VersionedXcm) {
|
||||||
ensure_root(origin)?;
|
T::SendXcmOrigin::ensure_origin(origin)?;
|
||||||
let data = message.encode();
|
let data = message.encode();
|
||||||
T::UpwardMessageSender::send_upward_message(data).map_err(|_| Error::<T>::FailedToSend)?;
|
T::UpwardMessageSender::send_upward_message(data).map_err(|_| Error::<T>::FailedToSend)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[weight = 1_000]
|
#[weight = 1_000]
|
||||||
fn sudo_send_hrmp_xcm(origin, recipient: ParaId, message: VersionedXcm) {
|
fn send_hrmp_xcm(origin, recipient: ParaId, message: VersionedXcm) {
|
||||||
ensure_root(origin)?;
|
T::SendXcmOrigin::ensure_origin(origin)?;
|
||||||
let data = message.encode();
|
let data = message.encode();
|
||||||
let outbound_message = OutboundHrmpMessage {
|
let outbound_message = OutboundHrmpMessage {
|
||||||
recipient,
|
recipient,
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ pub use frame_support::{
|
|||||||
},
|
},
|
||||||
StorageValue,
|
StorageValue,
|
||||||
};
|
};
|
||||||
use frame_system::limits::{BlockLength, BlockWeights};
|
use frame_system::{EnsureRoot, limits::{BlockLength, BlockWeights}};
|
||||||
pub use pallet_balances::Call as BalancesCall;
|
pub use pallet_balances::Call as BalancesCall;
|
||||||
pub use pallet_timestamp::Call as TimestampCall;
|
pub use pallet_timestamp::Call as TimestampCall;
|
||||||
#[cfg(any(feature = "std", test))]
|
#[cfg(any(feature = "std", test))]
|
||||||
@@ -289,6 +289,7 @@ impl cumulus_pallet_xcm_handler::Config for Runtime {
|
|||||||
type XcmExecutor = XcmExecutor<XcmConfig>;
|
type XcmExecutor = XcmExecutor<XcmConfig>;
|
||||||
type UpwardMessageSender = ParachainSystem;
|
type UpwardMessageSender = ParachainSystem;
|
||||||
type HrmpMessageSender = ParachainSystem;
|
type HrmpMessageSender = ParachainSystem;
|
||||||
|
type SendXcmOrigin = EnsureRoot<AccountId>;
|
||||||
}
|
}
|
||||||
|
|
||||||
construct_runtime! {
|
construct_runtime! {
|
||||||
|
|||||||
Reference in New Issue
Block a user