Construct Runtime v2 (#1378)
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 <>
Showing
- prdoc/pr_1378.prdoc 27 additions, 0 deletionsprdoc/pr_1378.prdoc
- substrate/bin/node/runtime/Cargo.toml 1 addition, 1 deletionsubstrate/bin/node/runtime/Cargo.toml
- substrate/bin/node/runtime/src/lib.rs 255 additions, 87 deletionssubstrate/bin/node/runtime/src/lib.rs
- substrate/frame/support/Cargo.toml 3 additions, 1 deletionsubstrate/frame/support/Cargo.toml
- substrate/frame/support/procedural/Cargo.toml 1 addition, 0 deletionssubstrate/frame/support/procedural/Cargo.toml
- substrate/frame/support/procedural/src/construct_runtime/mod.rs 8 additions, 7 deletions...ate/frame/support/procedural/src/construct_runtime/mod.rs
- substrate/frame/support/procedural/src/lib.rs 68 additions, 0 deletionssubstrate/frame/support/procedural/src/lib.rs
- substrate/frame/support/procedural/src/pallet/expand/tt_default_parts.rs 74 additions, 0 deletions.../support/procedural/src/pallet/expand/tt_default_parts.rs
- substrate/frame/support/procedural/src/pallet/parse/helper.rs 6 additions, 0 deletions...trate/frame/support/procedural/src/pallet/parse/helper.rs
- substrate/frame/support/procedural/src/runtime/expand/mod.rs 320 additions, 0 deletionssubstrate/frame/support/procedural/src/runtime/expand/mod.rs
- substrate/frame/support/procedural/src/runtime/mod.rs 236 additions, 0 deletionssubstrate/frame/support/procedural/src/runtime/mod.rs
- substrate/frame/support/procedural/src/runtime/parse/helper.rs 37 additions, 0 deletions...rate/frame/support/procedural/src/runtime/parse/helper.rs
- substrate/frame/support/procedural/src/runtime/parse/mod.rs 266 additions, 0 deletionssubstrate/frame/support/procedural/src/runtime/parse/mod.rs
- substrate/frame/support/procedural/src/runtime/parse/pallet.rs 99 additions, 0 deletions...rate/frame/support/procedural/src/runtime/parse/pallet.rs
- substrate/frame/support/procedural/src/runtime/parse/pallet_decl.rs 60 additions, 0 deletions...frame/support/procedural/src/runtime/parse/pallet_decl.rs
- substrate/frame/support/procedural/src/runtime/parse/runtime_struct.rs 35 additions, 0 deletions...me/support/procedural/src/runtime/parse/runtime_struct.rs
- substrate/frame/support/procedural/src/runtime/parse/runtime_types.rs 76 additions, 0 deletions...ame/support/procedural/src/runtime/parse/runtime_types.rs
- substrate/frame/support/src/lib.rs 3 additions, 0 deletionssubstrate/frame/support/src/lib.rs
- substrate/frame/support/test/Cargo.toml 1 addition, 1 deletionsubstrate/frame/support/test/Cargo.toml
- substrate/frame/support/test/tests/runtime.rs 189 additions, 93 deletionssubstrate/frame/support/test/tests/runtime.rs
Please register or sign in to comment