mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-25 21:07:56 +00:00
82f3c3e2e8
Moved from https://github.com/paritytech/substrate/pull/14788 ---- Fixes https://github.com/paritytech/polkadot-sdk/issues/232 This PR introduces outer-macro approach for `construct_runtime` as discussed in the linked issue. It looks like the following: ```rust #[frame_support::runtime] mod runtime { #[runtime::runtime] #[runtime::derive( RuntimeCall, RuntimeEvent, RuntimeError, RuntimeOrigin, RuntimeFreezeReason, RuntimeHoldReason, RuntimeSlashReason, RuntimeLockId, RuntimeTask, )] pub struct Runtime; #[runtime::pallet_index(0)] pub type System = frame_system; #[runtime::pallet_index(1)] pub type Timestamp = pallet_timestamp; #[runtime::pallet_index(2)] pub type Aura = pallet_aura; #[runtime::pallet_index(3)] pub type Grandpa = pallet_grandpa; #[runtime::pallet_index(4)] pub type Balances = pallet_balances; #[runtime::pallet_index(5)] pub type TransactionPayment = pallet_transaction_payment; #[runtime::pallet_index(6)] pub type Sudo = pallet_sudo; // Include the custom logic from the pallet-template in the runtime. #[runtime::pallet_index(7)] pub type TemplateModule = pallet_template; } ``` ## Features - `#[runtime::runtime]` attached to a struct defines the main runtime - `#[runtime::derive]` attached to this struct defines the types generated by runtime - `#[runtime::pallet_index]` must be attached to a pallet to define its index - `#[runtime::disable_call]` can be optionally attached to a pallet to disable its calls - `#[runtime::disable_unsigned]` can be optionally attached to a pallet to disable unsigned calls - A pallet instance can be defined as `TemplateModule: pallet_template<Instance>` - An optional attribute can be defined as `#[frame_support::runtime(legacy_ordering)]` to ensure that the order of hooks is same as the order of pallets (and not based on the pallet_index). This is to support legacy runtimes and should be avoided for new ones. ## Todo - [x] Update the latest syntax in kitchensink and tests - [x] Update UI tests - [x] Docs ## Extension - Abstract away the Executive similar to https://github.com/paritytech/substrate/pull/14742 - Optionally avoid the need to specify all runtime types (TBD) --------- Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com> Co-authored-by: Nikhil Gupta <>
28 lines
1.3 KiB
Plaintext
28 lines
1.3 KiB
Plaintext
title: Construct Runtime V2 - An outer macro approach to define the runtime
|
|
|
|
doc:
|
|
- audience: Runtime Dev
|
|
description: |
|
|
Introduces `#[frame_support::runtime]` that can be attached to a mod to define a runtime. The items
|
|
in this mod can be attached to the following attributes to define the key components of the runtime.
|
|
1. `#[runtime::runtime]` attached to a struct defines the main runtime
|
|
2. `#[runtime::derive]` attached to the runtime struct defines the types generated by the runtime
|
|
3. `#[runtime::pallet_index]` must be attached to a pallet to define its index
|
|
4. `#[runtime::disable_call]` can be optionally attached to a pallet to disable its calls
|
|
5. `#[runtime::disable_unsigned]` can be optionally attached to a pallet to disable unsigned calls
|
|
6. A pallet instance can be defined as `TemplateModule: pallet_template<Instance>`
|
|
An optional attribute can be defined as `#[frame_support::runtime(legacy_ordering)]` to ensure that
|
|
the order of hooks is same as the order of pallets (and not based on the pallet_index). This is to support
|
|
legacy runtimes and should be avoided for new ones.
|
|
|
|
migrations:
|
|
db: []
|
|
|
|
runtime: []
|
|
|
|
crates:
|
|
- name: frame-support
|
|
- name: frame-support-procedural
|
|
|
|
host_functions: []
|