Crate sp_genesis_builder

source
Expand description

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.

Constants§

Traits§

  • API to interact with RuntimeGenesisConfig for the runtime

Type Aliases§

  • The type representing preset ID.
  • The result type alias, used in build methods. Err contains formatted error message.