Files
pezkuwi-subxt/substrate/bin/node/runtime/Cargo.toml
T
gupnik 82f3c3e2e8 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 <>
2024-03-13 07:01:01 +00:00

433 lines
20 KiB
TOML

[package]
name = "kitchensink-runtime"
version = "3.0.0-dev"
authors.workspace = true
description = "Substrate node kitchensink runtime."
edition.workspace = true
build = "build.rs"
license = "Apache-2.0"
homepage = "https://substrate.io"
repository.workspace = true
publish = false
[lints]
workspace = true
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
# third-party dependencies
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [
"derive",
"max-encoded-len",
] }
scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] }
static_assertions = "1.1.0"
log = { workspace = true }
serde_json = { features = ["alloc", "arbitrary_precision"], workspace = true }
# pallet-asset-conversion: turn on "num-traits" feature
primitive-types = { version = "0.12.0", default-features = false, features = ["codec", "num-traits", "scale-info"] }
# primitives
sp-authority-discovery = { path = "../../../primitives/authority-discovery", default-features = false, features = ["serde"] }
sp-consensus-babe = { path = "../../../primitives/consensus/babe", default-features = false, features = ["serde"] }
sp-consensus-beefy = { path = "../../../primitives/consensus/beefy", default-features = false }
sp-consensus-grandpa = { path = "../../../primitives/consensus/grandpa", default-features = false, features = ["serde"] }
sp-block-builder = { path = "../../../primitives/block-builder", default-features = false }
sp-genesis-builder = { default-features = false, path = "../../../primitives/genesis-builder" }
sp-inherents = { path = "../../../primitives/inherents", default-features = false }
node-primitives = { path = "../primitives", default-features = false }
sp-mixnet = { path = "../../../primitives/mixnet", default-features = false }
sp-offchain = { path = "../../../primitives/offchain", default-features = false }
sp-core = { path = "../../../primitives/core", default-features = false, features = ["serde"] }
sp-std = { path = "../../../primitives/std", default-features = false }
sp-api = { path = "../../../primitives/api", default-features = false }
sp-runtime = { path = "../../../primitives/runtime", default-features = false, features = ["serde"] }
sp-staking = { path = "../../../primitives/staking", default-features = false, features = ["serde"] }
sp-storage = { path = "../../../primitives/storage", default-features = false }
sp-session = { path = "../../../primitives/session", default-features = false }
sp-transaction-pool = { path = "../../../primitives/transaction-pool", default-features = false }
sp-statement-store = { path = "../../../primitives/statement-store", default-features = false, features = ["serde"] }
sp-version = { path = "../../../primitives/version", default-features = false, features = ["serde"] }
sp-io = { path = "../../../primitives/io", default-features = false }
# frame dependencies
frame-executive = { path = "../../../frame/executive", default-features = false }
frame-benchmarking = { path = "../../../frame/benchmarking", default-features = false }
frame-benchmarking-pallet-pov = { path = "../../../frame/benchmarking/pov", default-features = false }
frame-support = { path = "../../../frame/support", default-features = false, features = ["experimental", "tuples-96"] }
frame-system = { path = "../../../frame/system", default-features = false }
frame-system-benchmarking = { path = "../../../frame/system/benchmarking", default-features = false, optional = true }
frame-election-provider-support = { path = "../../../frame/election-provider-support", default-features = false }
frame-system-rpc-runtime-api = { path = "../../../frame/system/rpc/runtime-api", default-features = false }
frame-try-runtime = { path = "../../../frame/try-runtime", default-features = false, optional = true }
pallet-alliance = { path = "../../../frame/alliance", default-features = false }
pallet-asset-conversion = { path = "../../../frame/asset-conversion", default-features = false }
pallet-asset-rate = { path = "../../../frame/asset-rate", default-features = false }
pallet-assets = { path = "../../../frame/assets", default-features = false }
pallet-authority-discovery = { path = "../../../frame/authority-discovery", default-features = false }
pallet-authorship = { path = "../../../frame/authorship", default-features = false }
pallet-babe = { path = "../../../frame/babe", default-features = false }
pallet-bags-list = { path = "../../../frame/bags-list", default-features = false }
pallet-balances = { path = "../../../frame/balances", default-features = false }
pallet-beefy = { path = "../../../frame/beefy", default-features = false }
pallet-beefy-mmr = { path = "../../../frame/beefy-mmr", default-features = false }
pallet-bounties = { path = "../../../frame/bounties", default-features = false }
pallet-broker = { path = "../../../frame/broker", default-features = false }
pallet-child-bounties = { path = "../../../frame/child-bounties", default-features = false }
pallet-collective = { path = "../../../frame/collective", default-features = false }
pallet-contracts = { path = "../../../frame/contracts", default-features = false }
pallet-conviction-voting = { path = "../../../frame/conviction-voting", default-features = false }
pallet-core-fellowship = { path = "../../../frame/core-fellowship", default-features = false }
pallet-democracy = { path = "../../../frame/democracy", default-features = false }
pallet-election-provider-multi-phase = { path = "../../../frame/election-provider-multi-phase", default-features = false }
pallet-election-provider-support-benchmarking = { path = "../../../frame/election-provider-support/benchmarking", default-features = false, optional = true }
pallet-elections-phragmen = { path = "../../../frame/elections-phragmen", default-features = false }
pallet-example-tasks = { path = "../../../frame/examples/tasks", default-features = false }
pallet-fast-unstake = { path = "../../../frame/fast-unstake", default-features = false }
pallet-migrations = { path = "../../../frame/migrations", default-features = false }
pallet-nis = { path = "../../../frame/nis", default-features = false }
pallet-grandpa = { path = "../../../frame/grandpa", default-features = false }
pallet-im-online = { path = "../../../frame/im-online", default-features = false }
pallet-indices = { path = "../../../frame/indices", default-features = false }
pallet-identity = { path = "../../../frame/identity", default-features = false }
pallet-lottery = { path = "../../../frame/lottery", default-features = false }
pallet-membership = { path = "../../../frame/membership", default-features = false }
pallet-message-queue = { path = "../../../frame/message-queue", default-features = false }
pallet-mixnet = { path = "../../../frame/mixnet", default-features = false }
pallet-mmr = { path = "../../../frame/merkle-mountain-range", default-features = false }
pallet-multisig = { path = "../../../frame/multisig", default-features = false }
pallet-nfts = { path = "../../../frame/nfts", default-features = false }
pallet-nfts-runtime-api = { path = "../../../frame/nfts/runtime-api", default-features = false }
pallet-nft-fractionalization = { path = "../../../frame/nft-fractionalization", default-features = false }
pallet-nomination-pools = { path = "../../../frame/nomination-pools", default-features = false }
pallet-nomination-pools-benchmarking = { path = "../../../frame/nomination-pools/benchmarking", default-features = false, optional = true }
pallet-nomination-pools-runtime-api = { path = "../../../frame/nomination-pools/runtime-api", default-features = false }
pallet-offences = { path = "../../../frame/offences", default-features = false }
pallet-offences-benchmarking = { path = "../../../frame/offences/benchmarking", default-features = false, optional = true }
pallet-glutton = { path = "../../../frame/glutton", default-features = false }
pallet-preimage = { path = "../../../frame/preimage", default-features = false }
pallet-proxy = { path = "../../../frame/proxy", default-features = false }
pallet-insecure-randomness-collective-flip = { path = "../../../frame/insecure-randomness-collective-flip", default-features = false }
pallet-ranked-collective = { path = "../../../frame/ranked-collective", default-features = false }
pallet-recovery = { path = "../../../frame/recovery", default-features = false }
pallet-referenda = { path = "../../../frame/referenda", default-features = false }
pallet-remark = { path = "../../../frame/remark", default-features = false }
pallet-root-testing = { path = "../../../frame/root-testing", default-features = false }
pallet-salary = { path = "../../../frame/salary", default-features = false }
pallet-session = { path = "../../../frame/session", default-features = false, features = ["historical"] }
pallet-session-benchmarking = { path = "../../../frame/session/benchmarking", default-features = false, optional = true }
pallet-staking = { path = "../../../frame/staking", default-features = false }
pallet-staking-reward-curve = { path = "../../../frame/staking/reward-curve", default-features = false }
pallet-staking-runtime-api = { path = "../../../frame/staking/runtime-api", default-features = false }
pallet-state-trie-migration = { path = "../../../frame/state-trie-migration", default-features = false }
pallet-statement = { path = "../../../frame/statement", default-features = false }
pallet-scheduler = { path = "../../../frame/scheduler", default-features = false }
pallet-society = { path = "../../../frame/society", default-features = false }
pallet-sudo = { path = "../../../frame/sudo", default-features = false }
pallet-timestamp = { path = "../../../frame/timestamp", default-features = false }
pallet-tips = { path = "../../../frame/tips", default-features = false }
pallet-treasury = { path = "../../../frame/treasury", default-features = false }
pallet-utility = { path = "../../../frame/utility", default-features = false }
pallet-transaction-payment = { path = "../../../frame/transaction-payment", default-features = false }
pallet-transaction-payment-rpc-runtime-api = { path = "../../../frame/transaction-payment/rpc/runtime-api", default-features = false }
pallet-asset-conversion-tx-payment = { path = "../../../frame/transaction-payment/asset-conversion-tx-payment", default-features = false }
pallet-asset-tx-payment = { path = "../../../frame/transaction-payment/asset-tx-payment", default-features = false }
pallet-skip-feeless-payment = { path = "../../../frame/transaction-payment/skip-feeless-payment", default-features = false }
pallet-transaction-storage = { path = "../../../frame/transaction-storage", default-features = false }
pallet-uniques = { path = "../../../frame/uniques", default-features = false }
pallet-vesting = { path = "../../../frame/vesting", default-features = false }
pallet-whitelist = { path = "../../../frame/whitelist", default-features = false }
pallet-tx-pause = { path = "../../../frame/tx-pause", default-features = false }
pallet-safe-mode = { path = "../../../frame/safe-mode", default-features = false }
pallet-parameters = { path = "../../../frame/parameters", default-features = false }
[build-dependencies]
substrate-wasm-builder = { path = "../../../utils/wasm-builder", optional = true }
[features]
default = ["std"]
with-tracing = ["frame-executive/with-tracing"]
std = [
"codec/std",
"frame-benchmarking-pallet-pov/std",
"frame-benchmarking/std",
"frame-election-provider-support/std",
"frame-executive/std",
"frame-support/std",
"frame-system-benchmarking?/std",
"frame-system-rpc-runtime-api/std",
"frame-system/std",
"frame-try-runtime?/std",
"log/std",
"node-primitives/std",
"pallet-alliance/std",
"pallet-asset-conversion-tx-payment/std",
"pallet-asset-conversion/std",
"pallet-asset-rate/std",
"pallet-asset-tx-payment/std",
"pallet-assets/std",
"pallet-authority-discovery/std",
"pallet-authorship/std",
"pallet-babe/std",
"pallet-bags-list/std",
"pallet-balances/std",
"pallet-beefy-mmr/std",
"pallet-beefy/std",
"pallet-bounties/std",
"pallet-broker/std",
"pallet-child-bounties/std",
"pallet-collective/std",
"pallet-contracts/std",
"pallet-conviction-voting/std",
"pallet-core-fellowship/std",
"pallet-democracy/std",
"pallet-election-provider-multi-phase/std",
"pallet-election-provider-support-benchmarking?/std",
"pallet-elections-phragmen/std",
"pallet-example-tasks/std",
"pallet-fast-unstake/std",
"pallet-glutton/std",
"pallet-grandpa/std",
"pallet-identity/std",
"pallet-im-online/std",
"pallet-indices/std",
"pallet-insecure-randomness-collective-flip/std",
"pallet-lottery/std",
"pallet-membership/std",
"pallet-message-queue/std",
"pallet-migrations/std",
"pallet-mixnet/std",
"pallet-mmr/std",
"pallet-multisig/std",
"pallet-nft-fractionalization/std",
"pallet-nfts-runtime-api/std",
"pallet-nfts/std",
"pallet-nis/std",
"pallet-nomination-pools-benchmarking?/std",
"pallet-nomination-pools-runtime-api/std",
"pallet-nomination-pools/std",
"pallet-offences-benchmarking?/std",
"pallet-offences/std",
"pallet-parameters/std",
"pallet-preimage/std",
"pallet-proxy/std",
"pallet-ranked-collective/std",
"pallet-recovery/std",
"pallet-referenda/std",
"pallet-remark/std",
"pallet-root-testing/std",
"pallet-safe-mode/std",
"pallet-salary/std",
"pallet-scheduler/std",
"pallet-session-benchmarking?/std",
"pallet-session/std",
"pallet-skip-feeless-payment/std",
"pallet-society/std",
"pallet-staking-runtime-api/std",
"pallet-staking/std",
"pallet-state-trie-migration/std",
"pallet-statement/std",
"pallet-sudo/std",
"pallet-timestamp/std",
"pallet-tips/std",
"pallet-transaction-payment-rpc-runtime-api/std",
"pallet-transaction-payment/std",
"pallet-transaction-storage/std",
"pallet-treasury/std",
"pallet-tx-pause/std",
"pallet-uniques/std",
"pallet-utility/std",
"pallet-vesting/std",
"pallet-whitelist/std",
"primitive-types/std",
"scale-info/std",
"serde_json/std",
"sp-api/std",
"sp-authority-discovery/std",
"sp-block-builder/std",
"sp-consensus-babe/std",
"sp-consensus-beefy/std",
"sp-consensus-grandpa/std",
"sp-core/std",
"sp-genesis-builder/std",
"sp-inherents/std",
"sp-io/std",
"sp-mixnet/std",
"sp-offchain/std",
"sp-runtime/std",
"sp-session/std",
"sp-staking/std",
"sp-statement-store/std",
"sp-std/std",
"sp-storage/std",
"sp-transaction-pool/std",
"sp-version/std",
"substrate-wasm-builder",
]
runtime-benchmarks = [
"frame-benchmarking-pallet-pov/runtime-benchmarks",
"frame-benchmarking/runtime-benchmarks",
"frame-election-provider-support/runtime-benchmarks",
"frame-support/runtime-benchmarks",
"frame-system-benchmarking/runtime-benchmarks",
"frame-system/runtime-benchmarks",
"pallet-alliance/runtime-benchmarks",
"pallet-asset-conversion-tx-payment/runtime-benchmarks",
"pallet-asset-conversion/runtime-benchmarks",
"pallet-asset-rate/runtime-benchmarks",
"pallet-asset-tx-payment/runtime-benchmarks",
"pallet-assets/runtime-benchmarks",
"pallet-babe/runtime-benchmarks",
"pallet-bags-list/runtime-benchmarks",
"pallet-balances/runtime-benchmarks",
"pallet-bounties/runtime-benchmarks",
"pallet-broker/runtime-benchmarks",
"pallet-child-bounties/runtime-benchmarks",
"pallet-collective/runtime-benchmarks",
"pallet-contracts/runtime-benchmarks",
"pallet-conviction-voting/runtime-benchmarks",
"pallet-core-fellowship/runtime-benchmarks",
"pallet-democracy/runtime-benchmarks",
"pallet-election-provider-multi-phase/runtime-benchmarks",
"pallet-election-provider-support-benchmarking/runtime-benchmarks",
"pallet-elections-phragmen/runtime-benchmarks",
"pallet-example-tasks/runtime-benchmarks",
"pallet-fast-unstake/runtime-benchmarks",
"pallet-glutton/runtime-benchmarks",
"pallet-grandpa/runtime-benchmarks",
"pallet-identity/runtime-benchmarks",
"pallet-im-online/runtime-benchmarks",
"pallet-indices/runtime-benchmarks",
"pallet-lottery/runtime-benchmarks",
"pallet-membership/runtime-benchmarks",
"pallet-message-queue/runtime-benchmarks",
"pallet-migrations/runtime-benchmarks",
"pallet-mixnet/runtime-benchmarks",
"pallet-mmr/runtime-benchmarks",
"pallet-multisig/runtime-benchmarks",
"pallet-nft-fractionalization/runtime-benchmarks",
"pallet-nfts/runtime-benchmarks",
"pallet-nis/runtime-benchmarks",
"pallet-nomination-pools-benchmarking/runtime-benchmarks",
"pallet-nomination-pools/runtime-benchmarks",
"pallet-offences-benchmarking/runtime-benchmarks",
"pallet-offences/runtime-benchmarks",
"pallet-parameters/runtime-benchmarks",
"pallet-preimage/runtime-benchmarks",
"pallet-proxy/runtime-benchmarks",
"pallet-ranked-collective/runtime-benchmarks",
"pallet-recovery/runtime-benchmarks",
"pallet-referenda/runtime-benchmarks",
"pallet-remark/runtime-benchmarks",
"pallet-safe-mode/runtime-benchmarks",
"pallet-salary/runtime-benchmarks",
"pallet-scheduler/runtime-benchmarks",
"pallet-session-benchmarking/runtime-benchmarks",
"pallet-skip-feeless-payment/runtime-benchmarks",
"pallet-society/runtime-benchmarks",
"pallet-staking/runtime-benchmarks",
"pallet-state-trie-migration/runtime-benchmarks",
"pallet-sudo/runtime-benchmarks",
"pallet-timestamp/runtime-benchmarks",
"pallet-tips/runtime-benchmarks",
"pallet-transaction-payment/runtime-benchmarks",
"pallet-transaction-storage/runtime-benchmarks",
"pallet-treasury/runtime-benchmarks",
"pallet-tx-pause/runtime-benchmarks",
"pallet-uniques/runtime-benchmarks",
"pallet-utility/runtime-benchmarks",
"pallet-vesting/runtime-benchmarks",
"pallet-whitelist/runtime-benchmarks",
"sp-runtime/runtime-benchmarks",
"sp-staking/runtime-benchmarks",
]
try-runtime = [
"frame-benchmarking-pallet-pov/try-runtime",
"frame-election-provider-support/try-runtime",
"frame-executive/try-runtime",
"frame-support/try-runtime",
"frame-system/try-runtime",
"frame-try-runtime/try-runtime",
"pallet-alliance/try-runtime",
"pallet-asset-conversion-tx-payment/try-runtime",
"pallet-asset-conversion/try-runtime",
"pallet-asset-rate/try-runtime",
"pallet-asset-tx-payment/try-runtime",
"pallet-assets/try-runtime",
"pallet-authority-discovery/try-runtime",
"pallet-authorship/try-runtime",
"pallet-babe/try-runtime",
"pallet-bags-list/try-runtime",
"pallet-balances/try-runtime",
"pallet-beefy-mmr/try-runtime",
"pallet-beefy/try-runtime",
"pallet-bounties/try-runtime",
"pallet-broker/try-runtime",
"pallet-child-bounties/try-runtime",
"pallet-collective/try-runtime",
"pallet-contracts/try-runtime",
"pallet-conviction-voting/try-runtime",
"pallet-core-fellowship/try-runtime",
"pallet-democracy/try-runtime",
"pallet-election-provider-multi-phase/try-runtime",
"pallet-elections-phragmen/try-runtime",
"pallet-example-tasks/try-runtime",
"pallet-fast-unstake/try-runtime",
"pallet-glutton/try-runtime",
"pallet-grandpa/try-runtime",
"pallet-identity/try-runtime",
"pallet-im-online/try-runtime",
"pallet-indices/try-runtime",
"pallet-insecure-randomness-collective-flip/try-runtime",
"pallet-lottery/try-runtime",
"pallet-membership/try-runtime",
"pallet-message-queue/try-runtime",
"pallet-migrations/try-runtime",
"pallet-mixnet/try-runtime",
"pallet-mmr/try-runtime",
"pallet-multisig/try-runtime",
"pallet-nft-fractionalization/try-runtime",
"pallet-nfts/try-runtime",
"pallet-nis/try-runtime",
"pallet-nomination-pools/try-runtime",
"pallet-offences/try-runtime",
"pallet-parameters/try-runtime",
"pallet-preimage/try-runtime",
"pallet-proxy/try-runtime",
"pallet-ranked-collective/try-runtime",
"pallet-recovery/try-runtime",
"pallet-referenda/try-runtime",
"pallet-remark/try-runtime",
"pallet-root-testing/try-runtime",
"pallet-safe-mode/try-runtime",
"pallet-salary/try-runtime",
"pallet-scheduler/try-runtime",
"pallet-session/try-runtime",
"pallet-skip-feeless-payment/try-runtime",
"pallet-society/try-runtime",
"pallet-staking/try-runtime",
"pallet-state-trie-migration/try-runtime",
"pallet-statement/try-runtime",
"pallet-sudo/try-runtime",
"pallet-timestamp/try-runtime",
"pallet-tips/try-runtime",
"pallet-transaction-payment/try-runtime",
"pallet-transaction-storage/try-runtime",
"pallet-treasury/try-runtime",
"pallet-tx-pause/try-runtime",
"pallet-uniques/try-runtime",
"pallet-utility/try-runtime",
"pallet-vesting/try-runtime",
"pallet-whitelist/try-runtime",
"sp-runtime/try-runtime",
]
experimental = [
"frame-support/experimental",
"frame-system/experimental",
"pallet-example-tasks/experimental",
]