From 99fb985b1c645afb42c2fee8e42aecd774ca40ab Mon Sep 17 00:00:00 2001 From: librelois <c@elo.tf> Date: Sun, 7 Aug 2022 15:39:11 +0200 Subject: [PATCH] prepare gdev iter 2 --- node/src/chain_spec/gdev.rs | 24 +++++++++++----- node/src/chain_spec/gen_genesis_data.rs | 38 +++++++++++++++++++++++-- resources/gdev.json | 20 +++++++++---- scripts/create-live-network.sh | 2 +- 4 files changed, 68 insertions(+), 16 deletions(-) diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs index 780cfb188..04ede2da9 100644 --- a/node/src/chain_spec/gdev.rs +++ b/node/src/chain_spec/gdev.rs @@ -98,8 +98,10 @@ pub fn development_chain_spec() -> Result<ChainSpec, String> { Some(get_authority_keys_from_seed("Alice").encode()), Some(super::gen_genesis_data::ParamsAppliedAtGenesis { genesis_certs_expire_on: 100_000, - genesis_smith_certs_expire_on: 100_000, + genesis_certs_min_received: 2, genesis_memberships_expire_on: 100_000, + genesis_smith_certs_expire_on: 100_000, + genesis_smith_certs_min_received: 2, genesis_smith_memberships_expire_on: 100_000, }), ) @@ -163,9 +165,15 @@ pub fn gen_live_conf() -> Result<ChainSpec, String> { // Bootnodes vec![], // Telemetry - None, + Some( + sc_service::config::TelemetryEndpoints::new(vec![( + "wss://telemetry.polkadot.io/submit/".to_owned(), + 0, + )]) + .expect("invalid telemetry endpoints"), + ), // Protocol ID - None, + Some("gdev2"), //Fork ID None, // Properties @@ -184,10 +192,12 @@ pub fn gen_live_conf() -> Result<ChainSpec, String> { }, None, Some(super::gen_genesis_data::ParamsAppliedAtGenesis { - genesis_certs_expire_on: 100_000, - genesis_smith_certs_expire_on: 100_000, - genesis_memberships_expire_on: 100_000, - genesis_smith_memberships_expire_on: 100_000, + genesis_certs_expire_on: 2_102_400, + genesis_certs_min_received: 3, + genesis_memberships_expire_on: 1_051_200, + genesis_smith_certs_expire_on: 2_102_400, + genesis_smith_certs_min_received: 3, + genesis_smith_memberships_expire_on: 1_051_200, }), ) } diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs index 5b46cc55f..fccfe574c 100644 --- a/node/src/chain_spec/gen_genesis_data.rs +++ b/node/src/chain_spec/gen_genesis_data.rs @@ -44,8 +44,10 @@ pub struct GenesisData<Parameters: DeserializeOwned, SessionKeys: Decode> { #[derive(Default)] pub struct ParamsAppliedAtGenesis { pub genesis_certs_expire_on: u32, - pub genesis_smith_certs_expire_on: u32, + pub genesis_certs_min_received: u32, pub genesis_memberships_expire_on: u32, + pub genesis_smith_certs_expire_on: u32, + pub genesis_smith_certs_min_received: u32, pub genesis_smith_memberships_expire_on: u32, } @@ -94,8 +96,10 @@ where { let ParamsAppliedAtGenesis { genesis_certs_expire_on, - genesis_smith_certs_expire_on, + genesis_certs_min_received, genesis_memberships_expire_on, + genesis_smith_certs_expire_on, + genesis_smith_certs_min_received, genesis_smith_memberships_expire_on, } = params_applied_at_genesis.unwrap_or_default(); @@ -238,6 +242,18 @@ where certs_by_receiver.insert(*issuer_index, receiver_certs); } + // Verify certifications coherence + for (idty_index, receiver_certs) in &certs_by_receiver { + if receiver_certs.len() < genesis_certs_min_received as usize { + return Err(format!( + "Identity n°{} has received only {}/{} certifications)", + idty_index, + receiver_certs.len(), + genesis_certs_min_received + )); + } + } + // SMITHS SUB-WOT // let mut initial_authorities = BTreeMap::new(); @@ -316,6 +332,24 @@ where ); } + // Verify smiths certifications coherence + if smiths_certs_by_receiver.len() < smiths_memberships.len() { + return Err(format!( + "{} smith identities has not received any smiths certifications", + smiths_memberships.len() - smiths_certs_by_receiver.len() + )); + } + for (idty_index, receiver_certs) in &smiths_certs_by_receiver { + if receiver_certs.len() < genesis_smith_certs_min_received as usize { + return Err(format!( + "Identity n°{} has received only {}/{} smiths certifications)", + idty_index, + receiver_certs.len(), + genesis_smith_certs_min_received + )); + } + } + if maybe_force_authority.is_none() && online_authorities_counter == 0 { return Err("The session_keys field must be filled in for at least one smith.".to_owned()); } diff --git a/resources/gdev.json b/resources/gdev.json index 02be64086..ea5d8bb38 100644 --- a/resources/gdev.json +++ b/resources/gdev.json @@ -20,6 +20,11 @@ ], "pubkey": "5H95G8bwuf4yyNNNa83hDhj7wpYaSRhZiGezZ9TDbyqNdAhY" }, + "Elois2": { + "balance": 10000, + "certs": ["tuxmain", "Elois", "HugoTrentesaux"], + "pubkey": "5GFEEx7kqvP4QEPCAXkALeYCG7m8DiA5LQ4YzW62j7FytQyg" + }, "poka": { "balance": 10000, "certs": ["cgeek", "vit", "tuxmain", "Elois", "HugoTrentesaux"], @@ -136,7 +141,7 @@ "babe_epoch_duration": 600, "cert_period": 14400, "cert_max_by_issuer": 100, - "cert_min_received_cert_to_issue_cert": 5, + "cert_min_received_cert_to_issue_cert": 3, "cert_validity_period": 2102400, "idty_confirm_period": 14400, "idty_creation_period": 14400, @@ -145,7 +150,7 @@ "ud_creation_period": 14400, "ud_reeval_period": 100800, "smith_cert_period": 14400, - "smith_cert_max_by_issuer": 12, + "smith_cert_max_by_issuer": 15, "smith_cert_min_received_cert_to_issue_cert": 3, "smith_cert_validity_period": 2102400, "smith_membership_period": 1051200, @@ -153,13 +158,16 @@ "smiths_wot_first_cert_issuable_on": 14400, "smiths_wot_min_cert_for_membership": 3, "wot_first_cert_issuable_on": 0, - "wot_min_cert_for_create_idty_right": 5, - "wot_min_cert_for_membership": 5 + "wot_min_cert_for_create_idty_right": 3, + "wot_min_cert_for_membership": 3 }, "smiths": { "Elois": { "certs": ["poka", "cgeek", "vit", "tuxmain", "HugoTrentesaux", "kapis"], - "session_keys": "0xb67db3acc0ec68327e9e258aa5247a0f504616142ecb445c2540b9bdb223b5bea0beb8d9dea455ad5591961c868e59e0760e6e819a85c89ea7cbb527a0944241a0beb8d9dea455ad5591961c868e59e0760e6e819a85c89ea7cbb527a0944241a0beb8d9dea455ad5591961c868e59e0760e6e819a85c89ea7cbb527a0944241" + "session_keys": "0x92743b12d55242276539d7256951cdfda85371caefbd325396da9331011b737d14084d2537f77e786a75b9bcbe351051fad52946ec211724b5e8c93bb8aa7a6f14084d2537f77e786a75b9bcbe351051fad52946ec211724b5e8c93bb8aa7a6f14084d2537f77e786a75b9bcbe351051fad52946ec211724b5e8c93bb8aa7a6f" + }, + "Elois2": { + "certs": ["tuxmain", "Elois", "HugoTrentesaux"] }, "poka": { "certs": ["cgeek", "vit", "tuxmain", "Elois", "HugoTrentesaux"] @@ -183,6 +191,6 @@ "certs": ["Elois","tuxmain","HugoTrentesaux"] } }, - "sudo_key": "5Co5AWcBiz4HaAEpu8BxLdghnCob89rFGU5yQ65WP3t2jsyB", + "sudo_key": "5Hm8sBbwuLAU99dBezvgtnRmZCrUy9mhqmbQMFyGTaeATYg7", "technical_committee": ["Elois", "cgeek", "tuxmain", "HugoTrentesaux"] } diff --git a/scripts/create-live-network.sh b/scripts/create-live-network.sh index 594969079..446937ba2 100755 --- a/scripts/create-live-network.sh +++ b/scripts/create-live-network.sh @@ -22,7 +22,7 @@ SPEC_DIR="${4:-resources}" echo "CURRENCY=$CURRENCY" # constants -DUNITER_IMAGE_TAG="sha-68fd7b3a" +DUNITER_IMAGE_TAG="debug-sha-ae65f879" # Clean and (re-)create working forders rm -rf $WORK_DIR -- GitLab