referrerpolicy=no-referrer-when-downgrade

polkadot_sdk_docs/reference_docs/
mod.rs

1//! # Polkadot SDK Reference Docs.
2//!
3//! This is the entry point for all reference documents that enhance one's learning experience in
4//! the Polkadot SDK.
5//!
6//! Note that this module also contains the [glossary](crate::reference_docs::glossary).
7//!
8//! ## What is a "reference document"?
9//!
10//! First, see [why we use rust-docs for everything](crate::meta_contributing#why-rust-docs) and our
11//! documentation [principles](crate::meta_contributing#principles). We acknowledge that as much of
12//! the crucial information should be embedded in the low level rust-docs. Then, high level
13//! scenarios should be covered in [`crate::guides`]. Finally, we acknowledge that there is a
14//! category of information that is:
15//!
16//! 1. Crucial to know.
17//! 2. Is too high level to be in the rust-doc of any one `type`, `trait` or `fn`.
18//! 3. Is too low level to be encompassed in a [`crate::guides`].
19//!
20//! We call this class of documents "reference documents". Our goal should be to minimize the number
21//! of "reference" docs, as they incur maintenance burden.
22
23/// Learn how Substrate and FRAME use traits and associated types to make modules generic in a
24/// type-safe manner.
25pub mod trait_based_programming;
26
27/// Learn about the way Substrate and FRAME view their blockchains as state machines.
28pub mod blockchain_state_machines;
29
30/// The glossary.
31pub mod glossary;
32
33/// Learn about the WASM meta-protocol of all Substrate-based chains.
34pub mod wasm_meta_protocol;
35
36/// Learn about the differences between smart contracts and a FRAME-based runtime. They are both
37/// "code stored onchain", but how do they differ?
38pub mod runtime_vs_smart_contract;
39
40/// Learn about how extrinsics are encoded to be transmitted to a node and stored in blocks.
41pub mod extrinsic_encoding;
42
43/// Deprecated in favor of transaction extensions.
44pub mod signed_extensions;
45
46/// Learn about the transaction extensions that form a part of extrinsics.
47pub mod transaction_extensions;
48
49/// Learn about *Origins*, a topic in FRAME that enables complex account abstractions to be built.
50pub mod frame_origin;
51
52/// Learn about the details of what derives are needed for a type to be store-able in `frame`
53/// storage.
54pub mod frame_storage_derives;
55
56/// Learn about how to write safe and defensive code in your FRAME runtime.
57pub mod defensive_programming;
58
59/// Learn about composite enums and other runtime level types, such as `RuntimeEvent` and
60/// `RuntimeCall`.
61pub mod frame_runtime_types;
62
63/// Learn about how to make a pallet/runtime that is fee-less and instead uses another mechanism to
64/// control usage and sybil attacks.
65pub mod fee_less_runtime;
66
67/// Learn about metadata, the main means through which an upgradeable runtime communicates its
68/// properties to the outside world.
69pub mod metadata;
70
71/// Learn about how to add custom host functions to the node.
72pub mod custom_host_functions;
73
74/// Learn about how frame-system handles `account-ids`, nonces, consumers and providers.
75pub mod frame_system_accounts;
76
77/// Advice for configuring your development environment for Substrate development.
78pub mod development_environment_advice;
79
80/// Learn about benchmarking and weight.
81pub mod frame_benchmarking_weight;
82
83/// Learn about the token-related logic in FRAME and how to apply it to your use case.
84pub mod frame_tokens;
85
86/// Learn about chain specification file and the genesis state of the blockchain.
87pub mod chain_spec_genesis;
88
89/// Learn about Substrate's CLI, and how it can be extended.
90pub mod cli;
91
92/// Learn about Runtime Upgrades and best practices for writing Migrations.
93pub mod frame_runtime_upgrades_and_migrations;
94
95/// Learn about the offchain workers, how they function, and how to use them, as provided by the
96/// [`frame`] APIs.
97pub mod frame_offchain_workers;
98
99/// Learn about the different ways through which multiple [`frame`] pallets can be combined to work
100/// together.
101pub mod frame_pallet_coupling;
102
103/// Learn about how to do logging in FRAME-based runtimes.
104pub mod frame_logging;
105
106/// Learn about the Polkadot Umbrella crate that re-exports all other crates.
107pub mod umbrella_crate;
108
109/// Learn about how to create custom RPC endpoints and runtime APIs.
110pub mod custom_runtime_api_rpc;
111
112/// The [`polkadot-omni-node`](https://crates.io/crates/polkadot-omni-node) and its related binaries.
113pub mod omni_node;
114
115/// Learn about the state in Substrate.
116pub mod state;