This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* GenesisConfigBuilder: preliminary API proposal * fmt * comment removed * build_default_config removed * Update client/genesis-builder/src/lib.rs * config -> gensis_config * GenesisConfigBuilder: helper added * moved to primitives * licesne changed to apache-2.0 * Cargo.toml: name/path to genesis-builder updated * helper removed * sp-sd version bumped * sp-std bump * naming + new function * fix * build_from_patch_json -> build_with_patch * fix * Cargo.lock updated * readme: license updated * Update primitives/genesis-builder/src/lib.rs Co-authored-by: Davide Galassi <davxy@datawok.net> * Update primitives/genesis-builder/src/lib.rs Co-authored-by: Davide Galassi <davxy@datawok.net> * Update primitives/genesis-builder/Cargo.toml Co-authored-by: Davide Galassi <davxy@datawok.net> * Cargo.lock updated * removed redundant function * GenesisConfigBuilder API: no_defaults function added * Cargo.lock updated * GenesisConfigBuilder API: patching fn removed * trigger CI job --------- Co-authored-by: parity-processbot <> Co-authored-by: Davide Galassi <davxy@datawok.net>
- Loading branch information
1 parent
75be6e2
commit 0bf1433
Showing
5 changed files
with
97 additions
and
0 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
[package] | ||
name = "sp-genesis-builder" | ||
version = "0.1.0" | ||
authors = ["Parity Technologies <admin@parity.io>"] | ||
edition = "2021" | ||
license = "Apache-2.0" | ||
homepage = "https://substrate.io" | ||
repository = "https://github.com/paritytech/substrate/" | ||
description = "Substrate GenesisConfig builder API" | ||
readme = "README.md" | ||
|
||
[package.metadata.docs.rs] | ||
targets = ["x86_64-unknown-linux-gnu"] | ||
|
||
[dependencies] | ||
sp-api = { version = "4.0.0-dev", default-features = false, path = "../../primitives/api" } | ||
sp-runtime = { version = "24.0.0", default-features = false, path = "../../primitives/runtime" } | ||
sp-std = { version = "8.0.0", default-features = false, path = "../../primitives/std" } | ||
serde_json = { version = "1.0.85", default-features = false, features = ["alloc"] } | ||
|
||
[features] | ||
default = [ "std" ] | ||
std = [ | ||
"sp-api/std", | ||
"sp-std/std", | ||
"serde_json/std", | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Substrate genesis builder. | ||
|
||
Refer to the module doc for more details. | ||
|
||
License: Apache-2.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
// This file is part of Substrate. | ||
|
||
// Copyright (C) Parity Technologies (UK) Ltd. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
#![cfg_attr(not(feature = "std"), no_std)] | ||
|
||
//! Substrate genesis config builder | ||
//! | ||
//! This Runtime API allows to construct `GenesisConfig`, in particular: | ||
//! - serialize the runtime default `GenesisConfig` struct into json format, | ||
//! - put the GenesisConfig struct into the storage. Internally this operation calls | ||
//! `GenesisBuild::build` function for all runtime pallets, which is typically provided by | ||
//! pallet's author. | ||
//! - deserialize the `GenesisConfig` from given json blob and put `GenesisConfig` into the state | ||
//! storage. Allows to build customized configuration. | ||
//! | ||
//! Providing externalities with empty storage and putting `GenesisConfig` into storage allows to | ||
//! catch and build the raw storage of `GenesisConfig` which is the foundation for genesis block. | ||
/// The result type alias, used in build methods. `Err` contains formatted error message. | ||
pub type Result = core::result::Result<(), sp_runtime::RuntimeString>; | ||
|
||
sp_api::decl_runtime_apis! { | ||
/// API to interact with GenesisConfig for the runtime | ||
pub trait GenesisBuilder { | ||
/// Creates the default `GenesisConfig` and returns it as a JSON blob. | ||
/// | ||
/// This function instantiates the default `GenesisConfig` struct for the runtime and serializes it into a JSON | ||
/// blob. It returns a `Vec<u8>` containing the JSON representation of the default `GenesisConfig`. | ||
fn create_default_config() -> sp_std::vec::Vec<u8>; | ||
|
||
/// Build `GenesisConfig` from a JSON blob not using any defaults and store it in the storage. | ||
/// | ||
/// This function deserializes the full `GenesisConfig` from the given JSON blob and puts it into the storage. | ||
/// If the provided JSON blob is incorrect or incomplete or the deserialization fails, an error is returned. | ||
/// It is recommended to log any errors encountered during the process. | ||
/// | ||
/// Please note that provided json blob must contain all `GenesisConfig` fields, no defaults will be used. | ||
fn build_config(json: sp_std::vec::Vec<u8>) -> Result; | ||
} | ||
} |