Skip to main content

Substrate in Bits

Substrate in Bits

Substrate in Bits is a technical content series/reference aimed at solving the pain points of developers building with Substrate and Rust. The content is designed to go in-depth on some of the common issues faced by developers and provide practical solutions to those issues. This repository contains the code samples, tutorials, and other resources associated with the series.


Getting started

To get started with Substrate in Bits, you can browse the available content on the doc folder or the table below. Substrate in Bits content will also be available on You can clone the repository to your local machine and run the examples to get a better understanding of the concepts discussed in the series.

Code samples

Each Substrate in Bits content comes with its own repository containing all the code and programs used in that content. These code samples are designed to help you understand the concepts discussed in the content and try them out for yourself.

Using the code samples

To use the code samples, follow these steps:

  1. Clone the repository for the specific guide/tutorial.
  2. Navigate to the repository's directory: cd [name of repo]
  3. Follow the instructions in the guide or the file of the code sample repository to build and run the example program.

By following these steps, you can test out the code samples for each Substrate in Bits content and gain a better understanding of the concepts discussed in the series.

Table of technical content

S/NContent NameCategoryLink
1Accessing storage and functions across palletsPallet integrationVisit
2Using generic types in custom dataCustom dataVisit
3DispatchResult vs DispatchResultWithPostInfoDispatchablesVisit
4Blake2 vs TwoXHashingVisit
5Let’s distill the construct_runtime macroMacrosVisit
6Running unit tests on substrate palletUnit testVisit
7Substrate Pallets Configuration: An Error-based ApproachPallet integrationVisit
8Working with Assets on SubstrateFungible TokensVisit
9Let’s distill the #[pallet::storage] macroMacrosVisit
10Benchmarking substrate palletBenchmarkingVisit
11Build a substrate node from scratch (sub-series) part 1NodesVisit
12Working with substrate pallet hooksHooksVisit
13Deconstructing pallet genesis configConfigurationVisit
14Understanding substrate pallet instancePallet InstanceVisit
15Dealing with runtime constantsRuntimeVisit
16Writing efficient storage itemsStorage ItemsVisit
17Breaking down substrate runtimeRuntimeVisit
18From transaction to block - part 1Transaction ExecutionVisit
19From transaction to block - part 2Block PropagationVisit
20Deep dive into Substrate consensus - part 1Consensus (Block Authoring)Visit
21Common Iterator Consumers and Adapters used in SubstrateIdiomsVisit
22Deep dive into Substrate consensus - part 2Consensus (Block Finality)Visit
23Associated types vs Generic type parameters in Rust and SubstrateIdiomsVisit
24Deep dive into Substrate storage - part 1TriesVisit
25Deep dive into Substrate storage - part 2KVDBVisit
26Understanding runtime aggregation in substrateRuntimeVisit
27Networking in Substrate - part 1NetworkVisit
28Networking in Substrate - part 1NetworkVisit
29Understanding Node ConfigurationsNodeVisit
30Testing a Substrate NodeTestingVisit


We welcome contributions to Substrate in Bits! If you would like to contribute, please read our contributing guidelines (WIP) for more information.

Code of Conduct

We expect all contributors to abide by our code of conduct (WIP). Please read it carefully before contributing to the Substrate in Bits repository.

Have ideas to help improve SiB content? drop them here

You can ask questions regarding siB content here

Track our progress here

Track our content release here

grillchat icon