From 4358acc74337b4e08e3b1729748d53d88a79d715 Mon Sep 17 00:00:00 2001 From: bgallois <benjamin@gallois.cc> Date: Sat, 3 Feb 2024 17:06:23 +0100 Subject: [PATCH] upgrade genesis builder --- Cargo.lock | 3 + node/src/chain_spec/gdev.rs | 265 ++++++++++++++--------------------- node/src/chain_spec/gtest.rs | 207 +++++++++++---------------- runtime/common/src/apis.rs | 9 ++ runtime/g1/Cargo.toml | 2 + runtime/gdev/Cargo.toml | 3 + runtime/gtest/Cargo.toml | 2 + 7 files changed, 205 insertions(+), 286 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44d19b957..04c3050b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3605,6 +3605,7 @@ dependencies = [ "sp-consensus-grandpa", "sp-core", "sp-distance", + "sp-genesis-builder", "sp-inherents", "sp-keyring", "sp-membership", @@ -3680,6 +3681,7 @@ dependencies = [ "sp-consensus-grandpa", "sp-core", "sp-distance", + "sp-genesis-builder", "sp-inherents", "sp-io", "sp-keyring", @@ -4003,6 +4005,7 @@ dependencies = [ "sp-consensus-grandpa", "sp-core", "sp-distance", + "sp-genesis-builder", "sp-inherents", "sp-keyring", "sp-membership", diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs index f43332a4c..45a6f0514 100644 --- a/node/src/chain_spec/gdev.rs +++ b/node/src/chain_spec/gdev.rs @@ -14,20 +14,17 @@ // You should have received a copy of the GNU Affero General Public License // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>. -#![allow(deprecated)] - use super::*; use crate::chain_spec::gen_genesis_data::{ AuthorityKeys, CommonParameters, GenesisIdentity, SessionKeysProvider, }; use common_runtime::constants::*; use common_runtime::entities::IdtyData; -use common_runtime::*; +use common_runtime::GenesisIdty; +use common_runtime::IdtyStatus; use gdev_runtime::{ - opaque::SessionKeys, pallet_universal_dividend, parameters, AccountConfig, - AuthorityMembersConfig, BabeConfig, BalancesConfig, CertificationConfig, IdentityConfig, - MembershipConfig, ParametersConfig, QuotaConfig, Runtime, RuntimeGenesisConfig, SessionConfig, - SmithMembersConfig, SudoConfig, TechnicalCommitteeConfig, UniversalDividendConfig, WASM_BINARY, + opaque::SessionKeys, pallet_universal_dividend, parameters, Runtime, RuntimeGenesisConfig, + WASM_BINARY, }; use jsonrpsee::core::JsonValue; use sc_network::config::MultiaddrWithPeerId; @@ -108,48 +105,32 @@ fn get_parameters(parameters_from_file: &Option<GenesisParameters>) -> CommonPar /// generate development chainspec with Alice validator pub fn gdev_development_chain_spec(config_file_path: String) -> Result<ChainSpec, String> { - let wasm_binary = - get_wasm_binary().ok_or_else(|| "Development wasm not available".to_string())?; - Ok(ChainSpec::from_genesis( - // Name - "Development", - // ID - "gdev", - // chain type - sc_service::ChainType::Development, - // constructor - move || { - let genesis_data = - gen_genesis_data::generate_genesis_data::<_, _, SessionKeys, GDevSKP>( - config_file_path.clone(), - get_parameters, - Some("Alice".to_owned()), - ) - .expect("Genesis Data must be buildable"); - genesis_data_to_gdev_genesis_conf(genesis_data) - }, - // Bootnodes - vec![], - // Telemetry - None, - // Protocol ID - None, - //Fork ID + Ok(ChainSpec::builder( + &get_wasm_binary().ok_or_else(|| "Development wasm not available".to_string())?, None, - // Properties - Some( - serde_json::json!({ - "tokenDecimals": TOKEN_DECIMALS, - "tokenSymbol": TOKEN_SYMBOL, - }) - .as_object() - .expect("must be a map") - .clone(), - ), - // Extensions - None, - &wasm_binary.to_vec().clone(), // TODO upgrade to builder - )) + ) + .with_name("Development") + .with_id("gdev") + .with_chain_type(ChainType::Development) + .with_genesis_config_patch({ + let genesis_data = gen_genesis_data::generate_genesis_data::<_, _, SessionKeys, GDevSKP>( + config_file_path.clone(), + get_parameters, + Some("Alice".to_owned()), + ) + .expect("Genesis Data must be buildable"); + genesis_data_to_gdev_genesis_conf(genesis_data) + }) + .with_properties( + serde_json::json!({ + "tokenDecimals": TOKEN_DECIMALS, + "tokenSymbol": TOKEN_SYMBOL, + }) + .as_object() + .expect("must be a map") + .clone(), + ) + .build()) } // === client specifications === @@ -177,38 +158,26 @@ pub fn gen_live_conf( client_spec: ClientSpec, config_file_path: String, ) -> Result<ChainSpec, String> { - let wasm_binary = get_wasm_binary().ok_or_else(|| "wasm not available".to_string())?; - Ok(ChainSpec::from_genesis( - // Name - client_spec.name.as_str(), - // ID - client_spec.id.as_str(), - // chain type - client_spec.chain_type, - move || { - let genesis_data = - gen_genesis_data::generate_genesis_data::<_, _, SessionKeys, GDevSKP>( - config_file_path.clone(), - get_parameters, - None, - ) - .expect("Genesis Data must be buildable"); - genesis_data_to_gdev_genesis_conf(genesis_data) - }, - // Bootnodes - client_spec.boot_nodes, - // Telemetry (by default, enable telemetry, can be disabled with argument) - client_spec.telemetry_endpoints, - // Protocol ID - Some("gdev2"), - //Fork ID - None, - // Properties - client_spec.properties, - // Extensions + Ok(ChainSpec::builder( + &get_wasm_binary().ok_or_else(|| "Development wasm not available".to_string())?, None, - &wasm_binary.clone(), // TODO upgrade to builder - )) + ) + .with_name(client_spec.name.as_str()) + .with_id(client_spec.id.as_str()) + .with_chain_type(client_spec.chain_type) + .with_genesis_config_patch({ + let genesis_data = gen_genesis_data::generate_genesis_data::<_, _, SessionKeys, GDevSKP>( + config_file_path.clone(), + get_parameters, + None, + ) + .expect("Genesis Data must be buildable"); + genesis_data_to_gdev_genesis_conf(genesis_data) + }) + .with_telemetry_endpoints(client_spec.telemetry_endpoints.unwrap()) + .with_properties(client_spec.properties.unwrap()) + .with_boot_nodes(client_spec.boot_nodes) + .build()) } /// generate local network chainspects @@ -217,21 +186,16 @@ pub fn local_testnet_config( initial_smiths_len: usize, initial_identities_len: usize, ) -> Result<ChainSpec, String> { - let wasm_binary = get_wasm_binary().ok_or_else(|| "wasm not available".to_string())?; - Ok(ChainSpec::from_genesis( - // Name - "Äždev Local Testnet", - // ID - "gdev_local", - ChainType::Local, - // constructor - move || { - let genesis_data = gen_genesis_data::generate_genesis_data_for_local_chain::< - _, - _, - SessionKeys, - GDevSKP, - >( + Ok(ChainSpec::builder( + &get_wasm_binary().ok_or_else(|| "Development wasm not available".to_string())?, + None, + ) + .with_name("Äždev Local Testnet") + .with_id("gdev_local") + .with_chain_type(ChainType::Local) + .with_genesis_config_patch({ + let genesis_data = + gen_genesis_data::generate_genesis_data_for_local_chain::<_, _, SessionKeys, GDevSKP>( // Initial authorities len initial_authorities_len, // Initial smiths len, @@ -245,36 +209,24 @@ pub fn local_testnet_config( get_parameters, ) .expect("Genesis Data must be buildable"); - genesis_data_to_gdev_genesis_conf(genesis_data) - }, - // Bootnodes - vec![], - // Telemetry - None, - // Protocol ID - None, - //Fork ID - None, - // Properties - Some( - serde_json::json!({ - "tokenDecimals": TOKEN_DECIMALS, - "tokenSymbol": TOKEN_SYMBOL, - }) - .as_object() - .expect("must be a map") - .clone(), - ), - // Extensions - None, - &wasm_binary.clone(), // TODO upgrade to builder - )) + genesis_data_to_gdev_genesis_conf(genesis_data) + }) + .with_properties( + serde_json::json!({ + "tokenDecimals": TOKEN_DECIMALS, + "tokenSymbol": TOKEN_SYMBOL, + }) + .as_object() + .expect("must be a map") + .clone(), + ) + .build()) } /// custom genesis fn genesis_data_to_gdev_genesis_conf( genesis_data: super::gen_genesis_data::GenesisData<GenesisParameters, SessionKeys>, -) -> gdev_runtime::RuntimeGenesisConfig { +) -> serde_json::Value { let super::gen_genesis_data::GenesisData { accounts, treasury_balance, @@ -294,45 +246,38 @@ fn genesis_data_to_gdev_genesis_conf( ud, } = genesis_data; - gdev_runtime::RuntimeGenesisConfig { - system: Default::default(), - account: AccountConfig { - accounts, - treasury_balance, + serde_json::json!({ + "account": { + "accounts": accounts, + "treasuryBalance": treasury_balance, }, - parameters: ParametersConfig { - parameters: parameters.expect("mandatory for GDev"), + "parameters": { + "parameters": parameters.expect("mandatory for GDev"), }, - authority_discovery: Default::default(), - authority_members: AuthorityMembersConfig { - initial_authorities, + "authorityMembers": { + "initialAuthorities": initial_authorities, }, - balances: BalancesConfig { - total_issuance: initial_monetary_mass, + "balances": { + "totalIssuance": initial_monetary_mass, }, - babe: BabeConfig { - authorities: Vec::with_capacity(0), - epoch_config: Some(BABE_GENESIS_EPOCH_CONFIG), - _config: Default::default(), + "babe": { + "epochConfig": Some(BABE_GENESIS_EPOCH_CONFIG), }, - grandpa: Default::default(), - im_online: Default::default(), - session: SessionConfig { - keys: session_keys_map + "session": { + "keys": session_keys_map .into_iter() .map(|(account_id, session_keys)| (account_id.clone(), account_id, session_keys)) .collect::<Vec<_>>(), }, - sudo: SudoConfig { key: sudo_key }, - technical_committee: TechnicalCommitteeConfig { - members: technical_committee_members, - ..Default::default() + "sudo": { "key": sudo_key }, + "technicalCommittee": { + "members": technical_committee_members, }, - quota: QuotaConfig { - identities: identities.iter().map(|i| i.idty_index).collect(), + "quota": { + "identities": identities.iter().map(|i| i.idty_index).collect::<Vec<_>>(), }, - identity: IdentityConfig { - identities: identities + "identity": { + "identities": identities .into_iter() .map( |GenesisIdentity { @@ -364,23 +309,21 @@ fn genesis_data_to_gdev_genesis_conf( }, }, ) - .collect(), + .collect::<Vec<GenesisIdty<gdev_runtime::Runtime>>>(), }, - certification: CertificationConfig { - apply_cert_period_at_genesis: false, - certs_by_receiver, + "certification": { + "applyCertPeriodAtGenesis": false, + "certsByReceiver": certs_by_receiver, }, - membership: MembershipConfig { memberships }, - smith_members: SmithMembersConfig { initial_smiths }, - universal_dividend: UniversalDividendConfig { - first_reeval: first_ud_reeval, - first_ud, - initial_monetary_mass, - ud, + "membership": { "memberships": memberships }, + "smithMembers": { "initialSmiths": initial_smiths}, + "universalDividend": { + "firstReeval": first_ud_reeval, + "firstUd": first_ud, + "initialMonetaryMass": initial_monetary_mass, + "ud": ud, }, - treasury: Default::default(), - transaction_payment: Default::default(), - } + }) } fn get_local_chain_parameters() -> Option<GenesisParameters> { diff --git a/node/src/chain_spec/gtest.rs b/node/src/chain_spec/gtest.rs index b4c37dbe6..018b130b0 100644 --- a/node/src/chain_spec/gtest.rs +++ b/node/src/chain_spec/gtest.rs @@ -14,19 +14,16 @@ // You should have received a copy of the GNU Affero General Public License // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>. -#![allow(deprecated)] - use super::*; use crate::chain_spec::gen_genesis_data::{CommonParameters, GenesisIdentity, SessionKeysProvider}; use common_runtime::constants::*; use common_runtime::entities::IdtyData; -use common_runtime::*; -use gtest_runtime::SmithMembersConfig; +use common_runtime::GenesisIdty; +use common_runtime::IdtyStatus; +use gtest_runtime::ImOnlineId; use gtest_runtime::{ - opaque::SessionKeys, pallet_universal_dividend, parameters, AccountConfig, AccountId, - AuthorityMembersConfig, BabeConfig, BalancesConfig, CertificationConfig, GenesisConfig, - IdentityConfig, ImOnlineId, MembershipConfig, Perbill, QuotaConfig, Runtime, SessionConfig, - SudoConfig, TechnicalCommitteeConfig, UniversalDividendConfig, WASM_BINARY, + opaque::SessionKeys, pallet_universal_dividend, parameters, AccountId, Perbill, Runtime, + RuntimeGenesisConfig, WASM_BINARY, }; use jsonrpsee::core::JsonValue; use sc_consensus_grandpa::AuthorityId as GrandpaId; @@ -39,7 +36,7 @@ use sp_consensus_babe::AuthorityId as BabeId; use sp_core::Get; use std::{env, fs}; -pub type ChainSpec = sc_service::GenericChainSpec<GenesisConfig>; +pub type ChainSpec = sc_service::GenericChainSpec<RuntimeGenesisConfig>; pub type AuthorityKeys = ( AccountId, GrandpaId, @@ -134,47 +131,32 @@ pub struct ClientSpec { /// generate development chainspec with Alice validator // there is some code duplication because we can not use ClientSpec pub fn development_chainspecs(config_file_path: String) -> Result<ChainSpec, String> { - let wasm_binary = get_wasm_binary().ok_or_else(|| "wasm not available".to_string())?; - Ok(ChainSpec::from_genesis( - // Name - "ÄžTest Development", - // ID - "gtest_dev", - // chain type - sc_service::ChainType::Development, - // constructor - move || { - let genesis_data = - gen_genesis_data::generate_genesis_data::<_, _, SessionKeys, GTestSKP>( - config_file_path.clone(), - get_parameters, - Some("Alice".to_owned()), - ) - .expect("Genesis Data must be buildable"); - genesis_data_to_gtest_genesis_conf(genesis_data) - }, - // Bootnodes - vec![], - // Telemetry - None, - // Protocol ID - None, - //Fork ID - None, - // Properties - Some( - serde_json::json!({ - "tokenDecimals": TOKEN_DECIMALS, - "tokenSymbol": TOKEN_SYMBOL, - }) - .as_object() - .expect("must be a map") - .clone(), - ), - // Extensions + Ok(ChainSpec::builder( + &get_wasm_binary().ok_or_else(|| "Development wasm not available".to_string())?, None, - &wasm_binary.clone(), // TODO upgrade to builder - )) + ) + .with_name("ÄžTest Development") + .with_id("gtest_dev") + .with_chain_type(ChainType::Development) + .with_genesis_config_patch({ + let genesis_data = gen_genesis_data::generate_genesis_data::<_, _, SessionKeys, GTestSKP>( + config_file_path.clone(), + get_parameters, + Some("Alice".to_owned()), + ) + .expect("Genesis Data must be buildable"); + genesis_data_to_gtest_genesis_conf(genesis_data) + }) + .with_properties( + serde_json::json!({ + "tokenDecimals": TOKEN_DECIMALS, + "tokenSymbol": TOKEN_SYMBOL, + }) + .as_object() + .expect("must be a map") + .clone(), + ) + .build()) } // === live chainspecs === @@ -185,45 +167,32 @@ pub fn live_chainspecs( client_spec: ClientSpec, config_file_path: String, ) -> Result<ChainSpec, String> { - let wasm_binary = get_wasm_binary().ok_or_else(|| "wasm not available".to_string())?; - Ok(ChainSpec::from_genesis( - // Name - client_spec.name.as_str(), - // ID - client_spec.id.as_str(), - // chain type - client_spec.chain_type, - // genesis config constructor - move || { - let genesis_data = - gen_genesis_data::generate_genesis_data::<_, _, SessionKeys, GTestSKP>( - config_file_path.clone(), - get_parameters, - None, - ) - .expect("Genesis Data must be buildable"); - genesis_data_to_gtest_genesis_conf(genesis_data) - }, - // Bootnodes - client_spec.boot_nodes, - // Telemetry (by default, enable telemetry, can be disabled with argument) - client_spec.telemetry_endpoints, - // Protocol ID - None, - // Fork ID + Ok(ChainSpec::builder( + &get_wasm_binary().ok_or_else(|| "Development wasm not available".to_string())?, None, - // Properties - client_spec.properties, - // Extensions - None, - &wasm_binary.clone(), // TODO upgrade to builder - )) + ) + .with_name(client_spec.name.as_str()) + .with_id(client_spec.id.as_str()) + .with_chain_type(client_spec.chain_type) + .with_genesis_config_patch({ + let genesis_data = gen_genesis_data::generate_genesis_data::<_, _, SessionKeys, GTestSKP>( + config_file_path.clone(), + get_parameters, + None, + ) + .expect("Genesis Data must be buildable"); + genesis_data_to_gtest_genesis_conf(genesis_data) + }) + .with_telemetry_endpoints(client_spec.telemetry_endpoints.unwrap()) + .with_properties(client_spec.properties.unwrap()) + .with_boot_nodes(client_spec.boot_nodes) + .build()) } /// custom genesis fn genesis_data_to_gtest_genesis_conf( genesis_data: super::gen_genesis_data::GenesisData<GenesisParameters, SessionKeys>, -) -> gtest_runtime::GenesisConfig { +) -> serde_json::Value { let super::gen_genesis_data::GenesisData { accounts, treasury_balance, @@ -243,43 +212,35 @@ fn genesis_data_to_gtest_genesis_conf( ud, } = genesis_data; - gtest_runtime::GenesisConfig { - system: Default::default(), - account: AccountConfig { - accounts, - treasury_balance, + serde_json::json!({ + "account": { + "accounts": accounts, + "treasuryBalance": treasury_balance, }, - authority_discovery: Default::default(), - authority_members: AuthorityMembersConfig { - initial_authorities, + "authorityMembers": { + "initialAuthorities": initial_authorities, }, - // Necessary to initialize TotalIssuence - balances: BalancesConfig { - total_issuance: initial_monetary_mass, + "balances": { + "totalIssuance": initial_monetary_mass, }, - babe: BabeConfig { - authorities: Vec::with_capacity(0), - epoch_config: Some(BABE_GENESIS_EPOCH_CONFIG), - _config: Default::default(), + "babe": { + "epochConfig": Some(BABE_GENESIS_EPOCH_CONFIG), }, - grandpa: Default::default(), - im_online: Default::default(), - session: SessionConfig { - keys: session_keys_map + "session": { + "keys": session_keys_map .into_iter() .map(|(account_id, session_keys)| (account_id.clone(), account_id, session_keys)) .collect::<Vec<_>>(), }, - sudo: SudoConfig { key: sudo_key }, - technical_committee: TechnicalCommitteeConfig { - members: technical_committee_members, - ..Default::default() + "sudo": { "key": sudo_key }, + "technicalCommittee": { + "members": technical_committee_members, }, - quota: QuotaConfig { - identities: identities.iter().map(|i| i.idty_index).collect(), + "quota": { + "identities": identities.iter().map(|i| i.idty_index).collect::<Vec<_>>(), }, - identity: IdentityConfig { - identities: identities + "identity": { + "identities": identities .into_iter() .map( |GenesisIdentity { @@ -311,25 +272,21 @@ fn genesis_data_to_gtest_genesis_conf( }, }, ) - .collect(), + .collect::<Vec<GenesisIdty<gtest_runtime::Runtime>>>(), }, - certification: CertificationConfig { - apply_cert_period_at_genesis: true, - certs_by_receiver, + "certification": { + "applyCertPeriodAtGenesis": false, + "certsByReceiver": certs_by_receiver, }, - membership: MembershipConfig { memberships }, - smith_members: SmithMembersConfig { initial_smiths }, - universal_dividend: UniversalDividendConfig { - first_reeval: first_ud_reeval, - first_ud, - initial_monetary_mass, - ud, - #[cfg(test)] - initial_members: vec![], + "membership": { "memberships": memberships }, + "smithMembers": { "initialSmiths": initial_smiths}, + "universalDividend": { + "firstReeval": first_ud_reeval, + "firstUd": first_ud, + "initialMonetaryMass": initial_monetary_mass, + "ud": ud, }, - treasury: Default::default(), - transaction_payment: Default::default(), - } + }) } /// Get the WASM bytes either from filesytem (`WASM_FILE` env variable giving the path to the wasm blob) diff --git a/runtime/common/src/apis.rs b/runtime/common/src/apis.rs index ef895c58c..af95e113f 100644 --- a/runtime/common/src/apis.rs +++ b/runtime/common/src/apis.rs @@ -220,6 +220,15 @@ macro_rules! runtime_apis { TransactionPayment::length_to_fee(length) } } + impl sp_genesis_builder::GenesisBuilder<Block> for Runtime { + fn create_default_config() -> Vec<u8> { + frame_support::genesis_builder_helper::create_default_config::<RuntimeGenesisConfig>() + } + + fn build_config(config: Vec<u8>) -> sp_genesis_builder::Result { + frame_support::genesis_builder_helper::build_config::<RuntimeGenesisConfig>(config) + } + } #[cfg(feature = "try-runtime")] impl frame_try_runtime::TryRuntime<Block> for Runtime where <Runtime as frame_system::Config>::BlockNumber: Clone + sp_std::fmt::Debug + sp_runtime::traits::AtLeast32BitUnsigned { diff --git a/runtime/g1/Cargo.toml b/runtime/g1/Cargo.toml index fb0cc1285..464713907 100644 --- a/runtime/g1/Cargo.toml +++ b/runtime/g1/Cargo.toml @@ -115,6 +115,7 @@ std = [ 'sp-staking/std', 'node-primitives/std', 'substrate-wasm-builder', + 'sp-genesis-builder/std', ] try-runtime = [ 'common-runtime/try-runtime', @@ -239,6 +240,7 @@ sp-std = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'du sp-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } sp-version = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } node-primitives = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } +sp-genesis-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } [package.metadata.docs.rs] targets = ['x86_64-unknown-linux-gnu'] diff --git a/runtime/gdev/Cargo.toml b/runtime/gdev/Cargo.toml index 7a1066381..397c596dd 100644 --- a/runtime/gdev/Cargo.toml +++ b/runtime/gdev/Cargo.toml @@ -115,8 +115,10 @@ std = [ 'sp-version/std', 'sp-staking/std', 'sp-io/std', + 'sp-genesis-builder/std', 'node-primitives/std', 'substrate-wasm-builder', + 'sp-genesis-builder/std', ] try-runtime = [ 'common-runtime/try-runtime', @@ -241,6 +243,7 @@ sp-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = sp-std = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } sp-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } sp-version = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } +sp-genesis-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } node-primitives = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } [package.metadata.docs.rs] diff --git a/runtime/gtest/Cargo.toml b/runtime/gtest/Cargo.toml index 9c7a497a0..4f90ede28 100644 --- a/runtime/gtest/Cargo.toml +++ b/runtime/gtest/Cargo.toml @@ -115,6 +115,7 @@ std = [ 'sp-staking/std', 'node-primitives/std', 'substrate-wasm-builder', + 'sp-genesis-builder/std', ] try-runtime = [ 'common-runtime/try-runtime', @@ -238,6 +239,7 @@ sp-session = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = sp-std = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } sp-transaction-pool = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } sp-version = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } +sp-genesis-builder = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } node-primitives = { git = 'https://github.com/duniter/duniter-polkadot-sdk', branch = 'duniter-substrate-v1.6.0', default-features = false } [package.metadata.docs.rs] -- GitLab