Expand description
§FRAME
______ ______ ________ ___ __ __ ______
/_____/\ /_____/\ /_______/\ /__//_//_/\ /_____/\
\::::_\/_\:::_ \ \ \::: _ \ \\::\| \| \ \\::::_\/_
\:\/___/\\:(_) ) )_\::(_) \ \\:. \ \\:\/___/\
\:::._\/ \: __ `\ \\:: __ \ \\:.\-/\ \ \\::___\/_
\:\ \ \ \ `\ \ \\:.\ \ \ \\. \ \ \ \\:\____/\
\_\/ \_\/ \_\/ \__\/\__\/ \__\/ \__\/ \_____\/Framework for Runtime Aggregation of Modularized Entities: Substrate’s State Transition Function (Runtime) Framework.
§Usage
This crate is organized into 3 stages:
- preludes:
prelude,testing_prelude,runtime::prelude,benchmarking::prelude, andweights_prelude. - domain-specific modules, like
traits,hashing,arithmeticandderive. - Accessing frame/substrate dependencies directly:
deps.
The main intended use of this crate is through preludes, which re-export most of the components
needed for pallet development. Domain-specific modules serve as a backup for organization, and
deps provides direct access to all dependencies if needed.
§Example Usage
use polkadot_sdk_frame as frame;
#[frame::pallet]
pub mod pallet {
use frame::prelude::*;
// ^^ using the prelude!
#[pallet::config]
pub trait Config: frame_system::Config {}
#[pallet::pallet]
pub struct Pallet<T>(_);
}
#[cfg(test)]
pub mod tests {
use frame::testing_prelude::*;
}
#[cfg(feature = "runtime-benchmarks")]
pub mod benchmarking {
use frame::benchmarking::prelude::*;
}
pub mod runtime {
use frame::runtime::prelude::*;
}§Features
This crate uses a runtime feature to include all types and tools needed to build FRAME-based
runtimes. For runtime development, import it as:
polkadot-sdk-frame = { version = "foo", features = ["runtime"] }If you just want to build a pallet instead, import it as
polkadot-sdk-frame = { version = "foo" }§Prelude Relationships
The preludes have overlapping imports for convenience:
testing_preludeincludespreludeandruntime::preluderuntime::preludeincludespreludebenchmarking::preludeincludesprelude
§Naming
Please note that this crate can only be imported as polkadot-sdk-frame or frame. This is due
to compatibility matters with frame-support.
A typical pallet’s Cargo.toml using this crate looks like:
[dependencies]
codec = { features = ["max-encoded-len"], workspace = true }
scale-info = { features = ["derive"], workspace = true }
frame = { workspace = true, features = ["runtime"] }
[features]
default = ["std"]
std = [
"codec/std",
"scale-info/std",
"frame/std",
]
runtime-benchmarks = [
"frame/runtime-benchmarks",
]
try-runtime = [
"frame/try-runtime",
]§Documentation
For more detailed documentation and examples, see polkadot_sdk_frame.
Re-exports§
pub use frame_support::pallet;pub use frame_support::pallet_macros::import_section;pub use frame_support::pallet_macros::pallet_section;pub use log;
Modules§
- account
- All account management related traits.
- arithmetic
- The arithmetic types used for safe math.
- benchmarking
- Prelude to be included in the
benchmarking.rsof a pallet. - deps
- Access to all of the dependencies of this crate. In case the prelude re-exports are not enough, this module can be used.
- derive
- All derive macros used in frame.
- hashing
- All hashing related components.
- pallet_
macros - Macros used within the main
palletmacro. - prelude
- The main prelude of FRAME.
- runtime
- All of the types and tools needed to build FRAME-based runtimes.
- testing_
prelude - The main testing prelude of FRAME.
- token
- All token related types and traits.
- traits
- All traits often used in FRAME pallets.
- transaction
- This is already part of the
prelude. - try_
runtime - weights_
prelude - Prelude to be included in the
weight.rsof each pallet.