19 releases (breaking)

0.13.0 May 23, 2024
0.11.0 Apr 8, 2024
0.10.0 Mar 18, 2024
0.6.0 Dec 12, 2023
0.1.0-dev.2 Jul 27, 2023

#394 in Magic Beans

Download history 2742/week @ 2024-02-15 3770/week @ 2024-02-22 2523/week @ 2024-02-29 2370/week @ 2024-03-07 3088/week @ 2024-03-14 3246/week @ 2024-03-21 2871/week @ 2024-03-28 4433/week @ 2024-04-04 3566/week @ 2024-04-11 3129/week @ 2024-04-18 4052/week @ 2024-04-25 2985/week @ 2024-05-02 2610/week @ 2024-05-09 2777/week @ 2024-05-16 3885/week @ 2024-05-23 2935/week @ 2024-05-30

12,824 downloads per month
Used in 372 crates (33 directly)


6.5K SLoC

Substrate genesis builder.

Refer to the module doc for more details.

License: Apache-2.0


Substrate genesis config builder

For FRAME based runtimes, this runtime interface provides means to interact with RuntimeGenesisConfig. Runtime provides a default RuntimeGenesisConfig structure in a form of the JSON blob.

For non-FRAME runtimes this interface is intended to build genesis state of the runtime basing on some input arbitrary bytes array. This documentation uses term RuntimeGenesisConfig, which for non-FRAME runtimes may be understood as the runtime-side entity representing initial runtime configuration. The representation of the preset is an arbitrary Vec<u8> and does not necessarily have to represent a JSON blob.

The runtime may provide a number of partial predefined RuntimeGenesisConfig configurations in the form of patches which shall be applied on top of the default RuntimeGenesisConfig. The patch is a JSON blob, which essentially comprises the list of key-value pairs that are to be customized in the default runtime genesis config. These predefined configurations are referred to as presets.

This allows the runtime to provide a number of predefined configs (e.g. for different testnets or development) without neccessity to leak the runtime types outside the itself (e.g. node or chain-spec related tools).

This Runtime API allows to interact with RuntimeGenesisConfig, in particular:

  • provide the list of available preset names,
  • provide a number of named presets of RuntimeGenesisConfig,
  • provide a JSON represention of the default RuntimeGenesisConfig (by simply serializing the default RuntimeGenesisConfig struct into JSON format),
  • deserialize the full RuntimeGenesisConfig from given JSON blob and put the resulting RuntimeGenesisConfig structure into the state storage creating the initial runtime's state. Allows to build customized genesis. This operation internally calls GenesisBuild::build function for all runtime pallets.

Providing externalities with an empty storage and putting RuntimeGenesisConfig into storage (by calling build_state) allows to construct the raw storage of RuntimeGenesisConfig which is the foundation for genesis block.


~491K SLoC