diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs index 780cfb188f6c617e3f5629cabdbf57c1505a3d9d..04ede2da9e6963f8f25cdf4ee69612ebeacc839c 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 5b46cc55f7cfa1be43dcdeef2db068ec6729c0f9..fccfe574c647f4cfe13f4e27be00d25d2c182966 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 02be64086a38d9edc89412cfb820cbc0105c18c3..ea5d8bb38a3b2f7f5cd69a6c6dc1574472f470d0 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 594969079ebe89beb6f6ba7c1d94d26ab02921a1..446937ba29ed3889e8afc80746e1558e257002dc 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