Skip to content

FRAME pallets

The FRAME development environment provides modules—called pallets—and support libraries that you can use, modify, and extend to build the runtime logic to suite the needs of your blockchain.

This section provides an overview of the predefined pallets and links to the Rust API reference documentation, where you can find details about each pallet's interfaces.

System pallets

The FRAME system pallets are integral to the Substrate runtime and provide core functionality that all other pallets depend on.

System pallet name
What it's for
frame_executive Orchestrates incoming function calls by sending them to the appropriate pallets in the runtime.
frame_support Provides Rust macros, types, traits, and modules that generate boilerplate code for the pallet structure when compiled.
frame_system Defines low-level types for Substrate primitives, storage items, and core functions for the blockchain. All other pallets depend on the frame_system crate.

Functional pallets

The Substrate development framework includes many functional pallets that provide features you might find generally useful as composable components of your blockchain. These functional pallets are prebuilt and freely available to enable the community to share, reuse, and improve the interfaces to address common use cases.

Prebuilt pallet name What it's for
pallet_assets Provides simple and secure methods for dealing with fungible assets.
pallet_atomic_swap Enables sending funds from an origin to a target. A proof is used to allow the target to claim the swap. If the swap is not claimed within a specified duration of time, the sender may cancel it.
pallet_aura Extends the authority round (Aura) consensus model by managing offline reporting.
pallet_authority_discovery Retrieves the current set of authorities, learns its own authority ID, and signs and verifies messages to and from other authorities.
pallet_authorship Tracks the current author of the block and recent uncles.
pallet_babe Extends BABE consensus by
pallet_balances Provides functionality for handling accounts and balances.
frame_benchmarking Contains common runtime patterns for benchmarking and testing purposes.
pallet_collective Allows a set of account IDs to make their collective feelings known through dispatched calls from specialized origins.
pallet_contracts Provides functionality for the runtime to deploy and execute WebAssembly smart contracts.
pallet_democracy Provides a democratic system that handles administration of general stakeholder voting.
pallet_elections_phragmen Provides an election module based on sequential Phragmén.
pallet_elections Provides an election module for stake-weighted membership in a collective. This pallet is no longer maintained.
pallet_example Demonstrates concepts, APIs, and structures that are applicable for most pallets.
pallet_example_offchain_worker Demonstrates concepts, APIs, and structures that are applicable for most offchain workers.
pallet_grandpa Extends the GRANDPA consensus by managing the GRANDPA authority set ready for the native code.
pallet_identity Enables a federated naming system that allows multiple registrars to be added from a specified origin. Registrars can set a fee to provide identity-verification service.
pallet_im_online Allows validators to gossip a heartbeat transaction with each new session to signal that the node is online.
pallet_indices Allocates indices for newly created accounts. An index is a short form of an address.
pallet_membership Allows control of membership of a set of AccountIds, useful for managing the membership of a collective.
pallet_multisig Enables multi-signature dispatches.
pallet_nicks Demonstrates simplified account naming on-chain. It makes no effort to create a name hierarchy, be a DNS replacement, or provide reverse lookups.
pallet_offences Tracks reported offences.
pallet_proxy Allows accounts to give permission to other accounts to dispatch types of calls from their signed origin.
pallet_randomness_collective_flip Provides a random function that can be used in tests and generates low-influence random values based on the block hashes from the previous 81 blocks. This pallet is not intended for use in production.
pallet_recovery Provides a social recovery tool for users to gain access to their accounts if their private key or other authentication mechanism is lost. This pallet enables an account owner to identify trusted parties who can act on the owner's behalf to recover access to an account.
pallet_scheduler Exposes capabilities for scheduling dispatches to occur at a specified block number or at a specified period. These scheduled dispatches can be named or anonymous and can be canceled.
pallet_scored_pool Maintains a scored membership pool where the highest scoring entities are made members.
pallet_session Allows validators to manage their session keys, provides a function for changing the session length, and handles session rotation.
pallet_society Provides economic incentives for users to participate and maintain a membership society.
pallet_staking Manages funds that have been staked by network maintainers.
pallet_sudo Allows for a single account—called the sudo key—to execute dispatchable functions that require a Root origin or designate a new account to replace them as the sudo key.
pallet_timestamp Provides functionality to get and set the on-chain time.
pallet_transaction_payment Provides the basic logic to compute pre-dispatch transaction fees.
pallet_treasury Provides a reserve of funds that can be managed by stakeholders in the system and a structure for making spending proposals from this reserve.
pallet_utility Provides a stateless helper module for managing dispatches.
pallet_vesting Places a linear curve on an account's locked balance. This module ensures that there is a lock in place to prevent the balance to drop below the unvested amount for any reason other than transaction fee payment.

Additional information

For detailed information about any pallet, refer to the Rust-generated API documentation or the source code for the individual pallet.