diff --git a/Cargo.lock b/Cargo.lock index 0d42a044819989edcc21fdeb2be1a4ad7fa37832..d0f9a48331e53f0afff2320f2ddbf5b12003d15a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -996,9 +996,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.22" +version = "1.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9540e661f81799159abee814118cc139a2004b3a3aa3ea37724a1b66530b90e0" +checksum = "812acba72f0a070b003d3697490d2b55b837230ae7c6c6497f05cc2ddbb8d938" dependencies = [ "jobserver", "libc", @@ -1134,9 +1134,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.18" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3" +checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615" dependencies = [ "clap_builder", "clap_derive", @@ -1144,9 +1144,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.18" +version = "4.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b" +checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b" dependencies = [ "anstream", "anstyle", @@ -1157,9 +1157,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.29" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8937760c3f4c60871870b8c3ee5f9b30771f792a7045c48bcbba999d7d6b3b8e" +checksum = "74a01f4f9ee6c066d42a1c8dedf0dcddad16c72a8981a309d6398de3a75b0c39" dependencies = [ "clap", ] @@ -3678,7 +3678,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -3697,7 +3697,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.5.0", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -3759,6 +3759,12 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" + [[package]] name = "hashlink" version = "0.8.4" @@ -3927,9 +3933,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -4226,12 +4232,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", ] [[package]] @@ -5368,7 +5374,7 @@ dependencies = [ "futures 0.3.30", "futures-timer", "hex-literal", - "indexmap 2.5.0", + "indexmap 2.6.0", "libc", "mockall 0.12.1", "multiaddr 0.17.1", @@ -7209,7 +7215,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.5.0", + "indexmap 2.6.0", ] [[package]] @@ -7986,9 +7992,9 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.1.0" +version = "11.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" +checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" dependencies = [ "bitflags 2.6.0", ] @@ -8173,9 +8179,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" dependencies = [ "base64 0.22.1", "bytes", @@ -8196,7 +8202,7 @@ dependencies = [ "pin-project-lite", "quinn 0.11.5", "rustls 0.23.13", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", "serde_json", @@ -8445,7 +8451,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.3", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", "security-framework", @@ -8462,11 +8468,10 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64 0.22.1", "rustls-pki-types", ] @@ -10127,7 +10132,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "itoa", "ryu", "serde", @@ -11777,12 +11782,12 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" dependencies = [ "rustix 0.38.37", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -12040,7 +12045,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.5.0", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", @@ -12397,9 +12402,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" diff --git a/live-tests/tests/sanity_gdev.rs b/live-tests/tests/sanity_gdev.rs index ca6ded3e811b6c576b1d8f4a037474cadaf7dd47..132680dfdfa9e9524822fd0fa88360ce59a49845 100644 --- a/live-tests/tests/sanity_gdev.rs +++ b/live-tests/tests/sanity_gdev.rs @@ -373,7 +373,10 @@ mod verifier { names: &HashMap<IdtyIndex, IdtyName>, ) { for (idty_index, idty_value) in identities { - // Rule 1: each Status::Member should have a membership and a name. + // Rule 1: each Status::Member + // should have a membership and a name + // membership should be set to expire + // identity should have no scheduled action if let IdtyStatus::Member = idty_value.status { self.assert( memberships.get(idty_index).is_some(), @@ -383,9 +386,23 @@ mod verifier { names.get(idty_index).is_some(), format!("identity number {idty_index} should have a name"), ); + self.assert( + memberships.get(idty_index).unwrap().expire_on != 0, + format!( + "Member identity number {idty_index} should have a non-null expire_on value" + ), + ); + self.assert( + identities.get(idty_index).unwrap().next_scheduled == 0, + format!( + "Member identity number {idty_index} should have a null next_scheduled value" + ), + ); } - // Rule 2: each Status::NotMember should have a name but no membership. + // Rule 2: each Status::NotMember + // should have a name but no membership + // should have a scheduled action (auto-revocation) if let IdtyStatus::NotMember = idty_value.status { self.assert( memberships.get(idty_index).is_none(), @@ -395,9 +412,16 @@ mod verifier { names.get(idty_index).is_some(), format!("identity number {idty_index} should have a name"), ); + self.assert( + identities.get(idty_index).unwrap().next_scheduled != 0, + format!("NotMember identity number {idty_index} should have a non-null next_scheduled value"), + ); } - // Rule 3: each Status::Revoke should should have a name but no membership. + // Rule 3: each Status::Revoked + // should should have a name + // no membership + // should be scheduled for removal if let IdtyStatus::Revoked = idty_value.status { self.assert( memberships.get(idty_index).is_none(), @@ -407,9 +431,15 @@ mod verifier { names.get(idty_index).is_some(), format!("identity number {idty_index} should have a name"), ); + self.assert( + identities.get(idty_index).unwrap().next_scheduled != 0, + format!("Revoked identity number {idty_index} should have a non-null next_scheduled value"), + ); } - // Rule 4: each Status::Unvalidaded should have a name but no membership. + // Rule 4: each Status::Unvalidaded + // should have a name but no membership. + // should be scheduled for removal if let IdtyStatus::Unvalidated = idty_value.status { self.assert( memberships.get(idty_index).is_none(), @@ -419,9 +449,15 @@ mod verifier { names.get(idty_index).is_some(), format!("identity number {idty_index} should have a name"), ); + self.assert( + identities.get(idty_index).unwrap().next_scheduled != 0, + format!("Unvalidated identity number {idty_index} should have a non-null next_scheduled value"), + ); } - // Rule 5: each Status::Unconfirmed should not have a name neither a membership. + // Rule 5: each Status::Unconfirmed + // should not have a name neither a membership. + // should be scheduled for removal soon if let IdtyStatus::Unconfirmed = idty_value.status { self.assert( memberships.get(idty_index).is_none(), @@ -431,6 +467,10 @@ mod verifier { names.get(idty_index).is_none(), format!("identity number {idty_index} should not have a name"), ); + self.assert( + identities.get(idty_index).unwrap().next_scheduled != 0, + format!("Unconfirmed identity number {idty_index} should have a non-null next_scheduled value"), + ); } } } diff --git a/node/src/chain_spec/g1.rs b/node/src/chain_spec/g1.rs index b84e42225256c6b152a5ae4b5b3c40b80176b4c4..8ad20d230ab6f271536fae861681bcc21ab576b4 100644 --- a/node/src/chain_spec/g1.rs +++ b/node/src/chain_spec/g1.rs @@ -18,9 +18,10 @@ use super::*; use crate::chain_spec::gen_genesis_data::{ AuthorityKeys, CommonParameters, GenesisIdentity, SessionKeysProvider, }; -use common_runtime::{constants::*, entities::IdtyData, GenesisIdty, IdtyStatus}; +use common_runtime::{constants::*, entities::IdtyData, GenesisIdty}; use g1_runtime::{ - opaque::SessionKeys, pallet_universal_dividend, parameters, Runtime, WASM_BINARY, + opaque::SessionKeys, pallet_universal_dividend, parameters, Runtime, RuntimeGenesisConfig, + WASM_BINARY, }; use sc_service::ChainType; use serde::Deserialize; @@ -73,6 +74,7 @@ fn get_parameters(_parameters_from_file: &Option<GenesisParameters>) -> CommonPa identity_change_owner_key_period: parameters::ChangeOwnerKeyPeriod::get(), identity_idty_creation_period: parameters::IdtyCreationPeriod::get(), identity_autorevocation_period: parameters::AutorevocationPeriod::get(), + identity_deletion_period: parameters::DeletionPeriod::get(), membership_membership_period: parameters::MembershipPeriod::get(), membership_membership_renewal_period: parameters::MembershipRenewalPeriod::get(), cert_max_by_issuer: parameters::MaxByIssuer::get(), @@ -191,8 +193,7 @@ fn genesis_data_to_g1_genesis_conf( name, owner_key, status, - expires_on, - revokes_on, + next_scheduled, }| GenesisIdty { index: idty_index, name: common_runtime::IdtyName::from(name.as_str()), @@ -201,16 +202,7 @@ fn genesis_data_to_g1_genesis_conf( next_creatable_identity_on: 0, old_owner_key: None, owner_key, - next_scheduled: match status { - IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => { - panic!("Unconfirmed or Unvalidated identity in genesis") - } - IdtyStatus::Member => expires_on.expect("must have expires_on set"), - IdtyStatus::Revoked => 0, - IdtyStatus::NotMember => { - revokes_on.expect("must have revokes_on set") - } - }, + next_scheduled, status, }, }, diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs index 5b4a27c1d72bcb0d97dcf28bba5592a0b392c0c0..c78154891055aa953851add1c16ab0b668137624 100644 --- a/node/src/chain_spec/gdev.rs +++ b/node/src/chain_spec/gdev.rs @@ -18,7 +18,7 @@ use super::*; use crate::chain_spec::gen_genesis_data::{ AuthorityKeys, CommonParameters, GenesisIdentity, SessionKeysProvider, }; -use common_runtime::{constants::*, entities::IdtyData, GenesisIdty, IdtyStatus}; +use common_runtime::{constants::*, entities::IdtyData, GenesisIdty}; use gdev_runtime::{ opaque::SessionKeys, pallet_universal_dividend, parameters, Runtime, WASM_BINARY, }; @@ -79,6 +79,7 @@ fn get_parameters(parameters_from_file: &Option<GenesisParameters>) -> CommonPar identity_change_owner_key_period: parameters::ChangeOwnerKeyPeriod::get(), identity_idty_creation_period: parameters_from_file.idty_creation_period, identity_autorevocation_period: parameters::AutorevocationPeriod::get(), + identity_deletion_period: parameters::DeletionPeriod::get(), membership_membership_period: parameters_from_file.membership_period, membership_membership_renewal_period: parameters_from_file.membership_renewal_period, cert_max_by_issuer: parameters_from_file.cert_max_by_issuer, @@ -278,8 +279,9 @@ fn genesis_data_to_gdev_genesis_conf( name, owner_key, status, - expires_on, - revokes_on, + // at this point next_scheduled takes status into account + // so is null for member account + next_scheduled, }| GenesisIdty { index: idty_index, name: common_runtime::IdtyName::from(name.as_str()), @@ -288,16 +290,7 @@ fn genesis_data_to_gdev_genesis_conf( next_creatable_identity_on: 0, old_owner_key: None, owner_key, - next_scheduled: match status { - IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => { - panic!("Unconfirmed or Unvalidated identity in genesis") - } - IdtyStatus::Member => expires_on.expect("must have expires_on set"), - IdtyStatus::Revoked => 0, - IdtyStatus::NotMember => { - revokes_on.expect("must have revokes_on set") - } - }, + next_scheduled, status, }, }, diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs index 72a7a0dc628f0c7cde1d23d459eb923cce2e3e45..a7c338ac60e080bc48569576b511bdd2f8b9a5a2 100644 --- a/node/src/chain_spec/gen_genesis_data.rs +++ b/node/src/chain_spec/gen_genesis_data.rs @@ -100,8 +100,7 @@ pub struct GenesisIdentity { pub name: String, pub owner_key: AccountId, pub status: IdtyStatus, - pub expires_on: Option<u32>, - pub revokes_on: Option<u32>, + pub next_scheduled: u32, } #[derive(Deserialize, Serialize)] @@ -197,6 +196,10 @@ struct IdentityV1 { } /// identities +// note: having membership_expire_on and identity_revoke_on is tricky +// because the model of identity does not take into account the status +// see this forum topic for a suggestion +// https://forum.duniter.org/t/proposition-pour-supprimer-la-pallet-membership/11918 #[derive(Clone, Deserialize, Serialize)] struct IdentityV2 { /// indentity index matching the order of appearance in the Ǧ1v1 blockchain @@ -206,7 +209,7 @@ struct IdentityV2 { /// block at which the membership is set to expire (0 for expired members) membership_expire_on: u32, /// block at which the identity should be revoked (value in the past for already revoked identities) - identity_revokes_on: u32, + identity_revoke_on: u32, /// whether the identity is revoked (manually or automatically) revoked: bool, /// block at which the next cert can be emitted @@ -376,6 +379,7 @@ where &mut inactive_identities, &mut memberships, &identities_v2, + &common_parameters, )?; if was_fatal { fatal = true; @@ -1223,7 +1227,7 @@ fn genesis_data_to_identities_v2( i.membership_expire_on, genesis_timestamp, ), - identity_revokes_on: timestamp_to_relative_blocs( + identity_revoke_on: timestamp_to_relative_blocs( i.membership_revokes_on, genesis_timestamp, ), @@ -1268,8 +1272,9 @@ fn make_authority_exist<SessionKeys: Encode, SKP: SessionKeysProvider<SessionKey owner_key: get_account_id_from_seed::<sr25519::Public>(authority_name), balance: common_parameters.balances_existential_deposit, certs_received: HashMap::new(), + // note: in this context of generating genesis identities membership_expire_on: common_parameters.membership_membership_period, - identity_revokes_on: common_parameters.identity_autorevocation_period, + identity_revoke_on: common_parameters.membership_membership_period, revoked: false, next_cert_issuable_on: 0, }, @@ -1319,6 +1324,7 @@ fn feed_identities( inactive_identities: &mut HashMap<u32, (String, IdtyStatus)>, memberships: &mut BTreeMap<u32, MembershipData>, identities_v2: &HashMap<String, IdentityV2>, + common_parameters: &CommonParameters, ) -> Result<(bool, Vec<GenesisIdentity>), String> { let mut fatal = false; let mut identities: Vec<GenesisIdentity> = Vec::new(); @@ -1328,25 +1334,6 @@ fn feed_identities( return Err(format!("Identity name '{}' is invalid", &name)); } - // TODO: re-check this code origin and wether it should be included or not - // do not check existential deposit of identities - // // check existential deposit - // if identity.balance < common_parameters.existencial_deposit { - // if identity.membership_expire_on == 0 { - // log::warn!( - // "expired identity {name} has {} cǦT which is below {}", - // identity.balance, common_parameters.existencial_deposit - // ); - // fatal = true; - // } else { - // member identities can still be below existential deposit thanks to sufficient - // log::info!( - // "identity {name} has {} cǦT which is below {}", - // identity.balance, common_parameters.existencial_deposit - // ); - // } - // } - // Money // check that wallet with same owner_key does not exist if accounts.get(&identity.owner_key).is_some() { @@ -1408,23 +1395,29 @@ fn feed_identities( owner_key: identity.owner_key.clone(), // but expired identities will just have their pseudonym reserved in the storage status, - expires_on: if status == IdtyStatus::Member { - Some(identity.membership_expire_on) - } else { - None - }, - revokes_on: if status == IdtyStatus::NotMember { - Some(identity.identity_revokes_on) - } else { - None + next_scheduled: match status { + IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => { + // these intermediary formats are disallowed in the genesis + // since they correspond to offchain v1 data + panic!("Unconfirmed or Unvalidated identity in genesis") + } + // Member identities schedule is managed by membership pallet + IdtyStatus::Member => 0, + // The identity will be scheduled for revocation after the auto-revocation period. + IdtyStatus::NotMember => common_parameters.identity_autorevocation_period, + // The identity will be scheduled for removal at the revoke block plus the deletion period. + IdtyStatus::Revoked => { + identity.identity_revoke_on + common_parameters.identity_deletion_period + } }, }); - // insert the membershup data (only if not expired) + // insert the membership data (only if not expired) if !expired { memberships.insert( identity.index, MembershipData { + // here we are using the correct expire block expire_on: identity.membership_expire_on, }, ); @@ -1667,8 +1660,7 @@ where name: String::from_utf8(name.0.clone()).unwrap(), owner_key: owner_key.clone(), status: IdtyStatus::Member, - expires_on: Some(common_parameters.membership_membership_period), - revokes_on: None, + next_scheduled: 0, }) .collect(); @@ -1758,8 +1750,16 @@ where identities, initial_authorities, initial_monetary_mass: initial_identities_len as u64 * initial_idty_balance, + // when generating data for local chain, we can set membersip expiration to membership period memberships: (1..=initial_identities.len()) - .map(|i| (i as u32, MembershipData { expire_on: 0 })) + .map(|i| { + ( + i as u32, + MembershipData { + expire_on: common_parameters.membership_membership_period, + }, + ) + }) .collect(), parameters, common_parameters: None, @@ -1935,6 +1935,7 @@ pub struct CommonParameters { pub identity_change_owner_key_period: u32, pub identity_idty_creation_period: u32, pub identity_autorevocation_period: u32, + pub identity_deletion_period: u32, pub membership_membership_period: u32, pub membership_membership_renewal_period: u32, pub cert_cert_period: u32, diff --git a/node/src/chain_spec/gtest.rs b/node/src/chain_spec/gtest.rs index 930d5ea75263a8cb3477ad3d0ff66af76d87a41b..2b4020664fa5d8cfcc4af95891538a9ac420866d 100644 --- a/node/src/chain_spec/gtest.rs +++ b/node/src/chain_spec/gtest.rs @@ -16,7 +16,7 @@ use super::*; use crate::chain_spec::gen_genesis_data::{CommonParameters, GenesisIdentity, SessionKeysProvider}; -use common_runtime::{constants::*, entities::IdtyData, GenesisIdty, IdtyStatus}; +use common_runtime::{constants::*, entities::IdtyData, GenesisIdty}; use gtest_runtime::{ opaque::SessionKeys, pallet_universal_dividend, parameters, ImOnlineId, Runtime, WASM_BINARY, }; @@ -127,6 +127,7 @@ fn get_parameters(_: &Option<GenesisParameters>) -> CommonParameters { identity_change_owner_key_period: parameters::ChangeOwnerKeyPeriod::get(), identity_idty_creation_period: parameters::IdtyCreationPeriod::get(), identity_autorevocation_period: parameters::AutorevocationPeriod::get(), + identity_deletion_period: parameters::DeletionPeriod::get(), membership_membership_period: parameters::MembershipPeriod::get(), membership_membership_renewal_period: parameters::MembershipRenewalPeriod::get(), cert_max_by_issuer: parameters::MaxByIssuer::get(), @@ -285,8 +286,7 @@ fn genesis_data_to_gtest_genesis_conf( name, owner_key, status, - expires_on, - revokes_on, + next_scheduled, }| GenesisIdty { index: idty_index, name: common_runtime::IdtyName::from(name.as_str()), @@ -295,16 +295,7 @@ fn genesis_data_to_gtest_genesis_conf( next_creatable_identity_on: 0, old_owner_key: None, owner_key, - next_scheduled: match status { - IdtyStatus::Unconfirmed | IdtyStatus::Unvalidated => { - panic!("Unconfirmed or Unvalidated identity in genesis") - } - IdtyStatus::Member => expires_on.expect("must have expires_on set"), - IdtyStatus::Revoked => 0, - IdtyStatus::NotMember => { - revokes_on.expect("must have revokes_on set") - } - }, + next_scheduled, status, }, }, diff --git a/resources/metadata.scale b/resources/metadata.scale index 945a23e9cc05e24d7f4eced0da1216cf5843b4db..bc6249410cc4aae5fb67a3b3d64645f97d7f75b7 100644 Binary files a/resources/metadata.scale and b/resources/metadata.scale differ diff --git a/runtime/common/src/pallets_config.rs b/runtime/common/src/pallets_config.rs index 3b5ae90ba85c60d1ab677e5e3c1014cfceb3e414..0b906cddb07fc0d2d574be2db35a47472e4a1adf 100644 --- a/runtime/common/src/pallets_config.rs +++ b/runtime/common/src/pallets_config.rs @@ -454,7 +454,6 @@ macro_rules! pallets_config { parameter_types! { pub const ValidationPeriod: BlockNumber = 2 * MONTHS; - pub const DeletionPeriod: BlockNumber = 10 * YEARS; } impl pallet_identity::Config for Runtime { type AccountLinker = Account; diff --git a/runtime/g1/src/parameters.rs b/runtime/g1/src/parameters.rs index ee768989c40f93e4dcf939b08a1ddc48df4462fa..d787eb5bf38e58c37ed0bc6d078f449c9617d983 100644 --- a/runtime/g1/src/parameters.rs +++ b/runtime/g1/src/parameters.rs @@ -112,6 +112,7 @@ parameter_types! { pub const IdtyCreationPeriod: BlockNumber = MONTHS; pub const ValidationPeriod: BlockNumber = YEARS; pub const AutorevocationPeriod: BlockNumber = YEARS; + pub const DeletionPeriod: BlockNumber = 10 * YEARS; } // Membership diff --git a/runtime/gdev/src/parameters.rs b/runtime/gdev/src/parameters.rs index 0b7083313bb62d7606d0af4fd06fa1e15085bf81..bcca8e7d2315b7d331a026fc53174199fbe31571 100644 --- a/runtime/gdev/src/parameters.rs +++ b/runtime/gdev/src/parameters.rs @@ -90,8 +90,10 @@ parameter_types! { // Identity frame_support::parameter_types! { + // for gdev we can have short periods pub const ChangeOwnerKeyPeriod: BlockNumber = 7 * DAYS; - pub const AutorevocationPeriod: BlockNumber = YEARS; + pub const AutorevocationPeriod: BlockNumber = MONTHS; + pub const DeletionPeriod: BlockNumber = MONTHS; } // Membership diff --git a/runtime/gtest/src/parameters.rs b/runtime/gtest/src/parameters.rs index 6295b34bc2d3f7f3b45cc2a9de1e147ba943335c..307f59b19733e1ad99bfb62bb656e9dc51bb70f1 100644 --- a/runtime/gtest/src/parameters.rs +++ b/runtime/gtest/src/parameters.rs @@ -105,6 +105,7 @@ parameter_types! { pub const ConfirmPeriod: BlockNumber = DAYS; pub const IdtyCreationPeriod: BlockNumber = DAYS; pub const AutorevocationPeriod: BlockNumber = YEARS; + pub const DeletionPeriod: BlockNumber = 10 * YEARS; } // Membership