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 suit 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_benchmarking | Contains common runtime patterns for benchmarking and testing purposes. |
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.
The following table highlights some of the most commonly used pallets available. However, the number of pallets that provide specialized functionality and how they provide that functionality changes frequently. You should check the Rust documentation for the most up-to-date listing of pallets and for details about using them.
Prebuilt pallet name | What it's for |
---|---|
pallet_alliance | Initializes a collective for community members to join in an effort to establish rules against bad behavior and to provide recognition and influence for teams that contribute to the ecosystem. |
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 collecting on-chain randomness from VRF outputs and managing epoch transitions. |
pallet_balances | Provides functionality for handling accounts and balances. |
pallet_bounties | Manages rewards for performing specified work or for achieving a specified set of objectives. |
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_contracts_primitives | Provides common definitions that are used by the pallet_contracts crate for smart contracts. |
pallet_democracy | Provides a democratic system that handles administration of general stakeholder voting. |
pallet_election_provider_multi_phase | Enables an election provider to conduct an election consisting of signed and unsigned phases. |
pallet_elections_phragmen | Provides an election module based on sequential Phragmén. |
pallet_example_basic | 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_lottery | Configures a lottery that enables network participants to purchase tickets. |
pallet_membership | Allows control of membership of a set of AccountId s, 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_uniques | Provides methods for managing non-fungible collections and items. |
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. |
Parachain pallets
In addition to the functional pallets that are generally useful for any blockchain, there are prebuilt pallets that provide features specifically for blockchains that are intended to connect to a relay chain. The following pallets provide features for parachain development.
Prebuilt pallet name | What it's for |
---|---|
cumulus-pallet-aura-ext | Provides AURA consensus for parachains. |
pallet-collator-selection | Manages collators in a parachain. |
cumulus-pallet-dmp-queue | Implements a message queue for receiving messages from the relay chain. |
cumulus-pallet-parachain-system | Provides basic functionality for cumulus-based parachains. |
cumulus-pallet-solo-to-para | Enables migration from a solo chain to a parachain. |
cumulus-pallet-xcm | Adds support for cross-chain message passing (XCMP) to a parachain. |
cumulus-pallet-xcmp-queue | Enables the XCMP transport layer to handle both incoming and outgoing message sending and dispatch, queuing, signalling, and backpressure. |
Additional information
For detailed information about any pallet, refer to the Rust-generated API documentation or the source code for the individual pallet.