Attribute Macro frame_support::pallet_macros::origin
source · #[origin]
Expand description
Allows a pallet to declare a type as an origin.
If defined as such, this type will be amalgamated at the runtime level into
RuntimeOrigin
, very similar to call
, error
and event
. See
composite_enum
for similar cases.
Origin is a complex FRAME topics and is further explained in polkadot_sdk_docs
.
§Syntax Variants
#[frame_support::pallet]
mod pallet {
/// On the spot declaration.
#[pallet::origin]
#[derive(PartialEq, Eq, Clone, RuntimeDebug, Encode, Decode, TypeInfo, MaxEncodedLen)]
pub enum Origin {
Foo,
Bar,
}
}
Or, more commonly used:
#[frame_support::pallet]
mod pallet {
#[derive(PartialEq, Eq, Clone, RuntimeDebug, Encode, Decode, TypeInfo, MaxEncodedLen)]
pub enum RawOrigin {
Foo,
Bar,
}
#[pallet::origin]
pub type Origin = RawOrigin;
}
§Warning
Modifying any pallet’s origin type will cause the runtime level origin type to also change in encoding. If stored anywhere on-chain, this will require a data migration.
Read more about origins at the Origin Reference Docs.
Documentation for this macro can be found at frame_support::pallet_macros::origin
.