Skip to content
Snippets Groups Projects

Smiths sub-wot

Merged Éloïs requested to merge elois-smiths-members into master
40 files
+ 2156
388
Compare changes
  • Side-by-side
  • Inline
Files
40
+ 122
20
@@ -18,12 +18,11 @@ use super::*;
@@ -18,12 +18,11 @@ use super::*;
use common_runtime::constants::*;
use common_runtime::constants::*;
use common_runtime::entities::IdtyName;
use common_runtime::entities::IdtyName;
use gdev_runtime::{
use gdev_runtime::{
opaque::SessionKeys, AccountId, BabeConfig, BalancesConfig, CertConfig, GenesisConfig,
opaque::SessionKeys, AccountId, AuthorityMembersConfig, BabeConfig, BalancesConfig, CertConfig,
GenesisParameters, IdentityConfig, IdtyValue, ImOnlineId, MembershipConfig, ParametersConfig,
GenesisConfig, GenesisParameters, IdentityConfig, IdtyValue, ImOnlineId, MembershipConfig,
SessionConfig, SudoConfig, SystemConfig, UdAccountsStorageConfig, UniversalDividendConfig,
ParametersConfig, SessionConfig, SmithsCertConfig, SmithsMembershipConfig, SudoConfig,
WASM_BINARY,
SystemConfig, UdAccountsStorageConfig, UniversalDividendConfig, WASM_BINARY,
};
};
use maplit::btreemap;
use sc_service::ChainType;
use sc_service::ChainType;
use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId;
use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId;
use sp_consensus_babe::AuthorityId as BabeId;
use sp_consensus_babe::AuthorityId as BabeId;
@@ -68,16 +67,14 @@ pub fn development_chain_spec() -> Result<ChainSpec, String> {
@@ -68,16 +67,14 @@ pub fn development_chain_spec() -> Result<ChainSpec, String> {
"gdev",
"gdev",
ChainType::Development,
ChainType::Development,
move || {
move || {
devnet_genesis(
gen_genesis_conf(
wasm_binary,
wasm_binary,
// Initial authorities
// Initial authorities len
vec![get_authority_keys_from_seed("Alice")],
1,
// Inital identities
// Initial smiths members len
btreemap![
3,
IdtyName::from("Alice") => get_account_id_from_seed::<sr25519::Public>("Alice"),
// Inital identities len
IdtyName::from("Bob") => get_account_id_from_seed::<sr25519::Public>("Bob"),
4,
IdtyName::from("Charlie") => get_account_id_from_seed::<sr25519::Public>("Charlie"),
],
// Sudo account
// Sudo account
get_account_id_from_seed::<sr25519::Public>("Alice"),
get_account_id_from_seed::<sr25519::Public>("Alice"),
true,
true,
@@ -104,16 +101,86 @@ pub fn development_chain_spec() -> Result<ChainSpec, String> {
@@ -104,16 +101,86 @@ pub fn development_chain_spec() -> Result<ChainSpec, String> {
))
))
}
}
fn devnet_genesis(
pub fn local_testnet_config(
 
initial_authorities_len: usize,
 
initial_smiths_len: usize,
 
initial_identities_len: usize,
 
) -> Result<ChainSpec, String> {
 
let wasm_binary = WASM_BINARY.ok_or_else(|| "wasm not available".to_string())?;
 
 
Ok(ChainSpec::from_genesis(
 
// Name
 
"Ğdev Local Testnet",
 
// ID
 
"gdev_local_testnet",
 
ChainType::Local,
 
move || {
 
gen_genesis_conf(
 
wasm_binary,
 
// Initial authorities len
 
initial_authorities_len,
 
// Initial smiths len,
 
initial_smiths_len,
 
// Initial identities len
 
initial_identities_len,
 
// Sudo account
 
get_account_id_from_seed::<sr25519::Public>("Alice"),
 
true,
 
)
 
},
 
// Bootnodes
 
vec![],
 
// Telemetry
 
None,
 
// Protocol ID
 
None,
 
// Properties
 
Some(
 
serde_json::json!({
 
"tokenDecimals": TOKEN_DECIMALS,
 
"tokenSymbol": TOKEN_SYMBOL,
 
})
 
.as_object()
 
.expect("must be a map")
 
.clone(),
 
),
 
// Extensions
 
None,
 
))
 
}
 
 
fn gen_genesis_conf(
wasm_binary: &[u8],
wasm_binary: &[u8],
initial_authorities: Vec<AuthorityKeys>,
initial_authorities_len: usize,
initial_identities: BTreeMap<IdtyName, AccountId>,
initial_smiths_len: usize,
 
initial_identities_len: usize,
root_key: AccountId,
root_key: AccountId,
_enable_println: bool,
_enable_println: bool,
) -> gdev_runtime::GenesisConfig {
) -> gdev_runtime::GenesisConfig {
 
assert!(initial_identities_len <= 6);
 
assert!(initial_smiths_len <= initial_identities_len);
 
assert!(initial_authorities_len <= initial_smiths_len);
 
 
let babe_epoch_duration = get_env_u32("DUNITER_BABE_EPOCH_DURATION", 600) as u64;
let cert_validity_period = get_env_u32("DUNITER_CERT_VALIDITY_PERIOD", 1_000);
let cert_validity_period = get_env_u32("DUNITER_CERT_VALIDITY_PERIOD", 1_000);
let membership_period = get_env_u32("DUNITER_MEMBERSHIP_PERIOD", 1_000);
let membership_period = get_env_u32("DUNITER_MEMBERSHIP_PERIOD", 1_000);
let membership_renewable_period = get_env_u32("DUNITER_MEMBERSHIP_RENEWABLE_PERIOD", 50);
let membership_renewable_period = get_env_u32("DUNITER_MEMBERSHIP_RENEWABLE_PERIOD", 50);
 
let smith_cert_validity_period = get_env_u32("DUNITER_SMITH_CERT_VALIDITY_PERIOD", 1_000);
 
let smith_membership_renewable_period =
 
get_env_u32("DUNITER_SMITH_MEMBERSHIP_RENEWABLE_PERIOD", 20);
 
let smith_membership_period = get_env_u32("DUNITER_SMITH_MEMBERSHIP_PERIOD", 1_000);
 
 
let initial_smiths = (0..initial_smiths_len)
 
.map(|i| get_authority_keys_from_seed(NAMES[i]))
 
.collect::<Vec<AuthorityKeys>>();
 
let initial_identities = (0..initial_smiths_len)
 
.map(|i| {
 
(
 
IdtyName::from(NAMES[i]),
 
get_account_id_from_seed::<sr25519::Public>(NAMES[i]),
 
)
 
})
 
.collect::<BTreeMap<IdtyName, AccountId>>();
gdev_runtime::GenesisConfig {
gdev_runtime::GenesisConfig {
system: SystemConfig {
system: SystemConfig {
@@ -122,8 +189,10 @@ fn devnet_genesis(
@@ -122,8 +189,10 @@ fn devnet_genesis(
},
},
parameters: ParametersConfig {
parameters: ParametersConfig {
parameters: GenesisParameters {
parameters: GenesisParameters {
 
babe_epoch_duration,
cert_period: 15,
cert_period: 15,
cert_max_by_issuer: 10,
cert_max_by_issuer: 10,
 
cert_min_received_cert_to_issue_cert: 2,
cert_renewable_period: 50,
cert_renewable_period: 50,
cert_validity_period,
cert_validity_period,
idty_confirm_period: 40,
idty_confirm_period: 40,
@@ -136,13 +205,29 @@ fn devnet_genesis(
@@ -136,13 +205,29 @@ fn devnet_genesis(
ud_first_reeval: 100,
ud_first_reeval: 100,
ud_reeval_period: 20,
ud_reeval_period: 20,
ud_reeval_period_in_blocks: 200,
ud_reeval_period_in_blocks: 200,
 
smith_cert_period: 15,
 
smith_cert_max_by_issuer: 8,
 
smith_cert_min_received_cert_to_issue_cert: 2,
 
smith_cert_renewable_period: 50,
 
smith_cert_validity_period: 1_000,
 
smith_membership_period: 1_000,
 
smith_membership_renewable_period: 50,
 
smith_pending_membership_period: 500,
 
smiths_wot_first_cert_issuable_on: 20,
 
smiths_wot_min_cert_for_membership: 2,
wot_first_cert_issuable_on: 20,
wot_first_cert_issuable_on: 20,
wot_min_cert_for_ud_right: 2,
wot_min_cert_for_cert_right: 2,
wot_min_cert_for_create_idty_right: 2,
wot_min_cert_for_create_idty_right: 2,
 
wot_min_cert_for_membership: 2,
},
},
},
},
authority_discovery: Default::default(),
authority_discovery: Default::default(),
 
authority_members: AuthorityMembersConfig {
 
initial_authorities: initial_smiths
 
.iter()
 
.enumerate()
 
.map(|(i, keys)| (i as u32 + 1, (keys.0.clone(), i < initial_authorities_len)))
 
.collect(),
 
},
balances: BalancesConfig {
balances: BalancesConfig {
balances: Default::default(),
balances: Default::default(),
},
},
@@ -153,7 +238,7 @@ fn devnet_genesis(
@@ -153,7 +238,7 @@ fn devnet_genesis(
grandpa: Default::default(),
grandpa: Default::default(),
im_online: Default::default(),
im_online: Default::default(),
session: SessionConfig {
session: SessionConfig {
keys: initial_authorities
keys: initial_smiths
.iter()
.iter()
.map(|x| {
.map(|x| {
(
(
@@ -198,6 +283,23 @@ fn devnet_genesis(
@@ -198,6 +283,23 @@ fn devnet_genesis(
apply_cert_period_at_genesis: false,
apply_cert_period_at_genesis: false,
certs_by_issuer: clique_wot(initial_identities.len(), cert_validity_period),
certs_by_issuer: clique_wot(initial_identities.len(), cert_validity_period),
},
},
 
smiths_membership: SmithsMembershipConfig {
 
memberships: (1..=initial_smiths_len)
 
.map(|i| {
 
(
 
i as u32,
 
MembershipData {
 
expire_on: smith_membership_period,
 
renewable_on: smith_membership_renewable_period,
 
},
 
)
 
})
 
.collect(),
 
},
 
smiths_cert: SmithsCertConfig {
 
apply_cert_period_at_genesis: false,
 
certs_by_issuer: clique_wot(initial_smiths_len, smith_cert_validity_period),
 
},
ud_accounts_storage: UdAccountsStorageConfig {
ud_accounts_storage: UdAccountsStorageConfig {
ud_accounts: initial_identities.values().cloned().collect(),
ud_accounts: initial_identities.values().cloned().collect(),
},
},
Loading