Core Modules 🧱¶
Contains core modules that can be used and configured for runtime development and business logic.
Supported modules¶
System modules¶
| Name | Description |
|---|---|
| executive | A non-typical module, which wraps around the system module and provides functionality for block production and offchain workers. |
| support | A non-typical module, defining types for storage variables and logic for transactional layered execution. |
| system | Manages the core storage items of the runtime, such as extrinsic data, indices, event records. Executes block production and deposits logs. |
Functional modules¶
These modules provide features than can be useful for your blockchain and can be plugged to your runtime code.
| Name | Description |
|---|---|
| aura | Manages the AuRa (Authority Round) consensus mechanism. |
| babe | Manages the BABE (Blind Assignment for Blockchain Extension) consensus mechanism. |
| balances | Provides functionality for handling accounts and balances of native currency. |
| grandpa | Manages the GRANDPA block finalization. |
| session | Allows validators to manage their session keys, handles session rotation. |
| sudo | Allows a single account to execute dispatchable extrinsic calls that require Root origin or on behalf of others. |
| timestamp | Manages on-chain time. |
| transaction payment | Manages pre-dispatch execution fees. |
Parachain modules¶
In addition to functional modules, which are useful for any blockchain, there are modules that provide features specifically for blockchain integration with a relay chain.
| Name | Description |
|---|---|
| aura_ext | Provides AURA Consensus for parachains. |
| parachain_info | Stores the parachain id. |
| parachain_system | Provides basic functionality for cumulus-based parachains. Does not process XCM messages. |
Structure¶
Each module has the following structure:
configuration- types and parameters on which the module depends on.constants- Constants and immutable parameters from the configuration.calls- a set of extrinsic calls that define the module's functionality.errors- dispatched during extrinsic calls execution.events- declaration of events, emitted during extrinsic calls execution.genesis builder- genesis configuration definition.storage- lists all storage keys that can be modified by the given module during extrinsic call state transition.types- type definitions for the module.
File structure¶
We recommend the following structure for a module:
├── frame
│ ├── <module_name> # Name of the module
│ │ ├── call_1_.go # extrinsic call functionality for call 1
│ │ ├── ...
│ │ ├── call_N_.go # extrinsic call functionality for call N
│ │ ├── config.go
│ │ ├── constants.go
│ │ ├── errors.go
│ │ ├── events.go
│ │ ├── genesis_builder.go
│ │ ├── module.go # unites all the components of the module
│ │ ├── storage.go
│ │ ├── types.go
│ ├── <module_name_2>
│ │ ├── ...
│ ├── ...
Unnecessary components of the module can be omitted.