Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Duniter v2S
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Monitor
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
nodes
rust
Duniter v2S
Commits
378c46f9
Commit
378c46f9
authored
2 years ago
by
Éloïs
Browse files
Options
Downloads
Patches
Plain Diff
feat(genesis): check min received certs
parent
8bc5e17f
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
node/src/chain_spec/gen_genesis_data.rs
+30
-2
30 additions, 2 deletions
node/src/chain_spec/gen_genesis_data.rs
with
30 additions
and
2 deletions
node/src/chain_spec/gen_genesis_data.rs
+
30
−
2
View file @
378c46f9
...
...
@@ -17,7 +17,8 @@
use
common_runtime
::
*
;
use
serde
::{
de
::
DeserializeOwned
,
Deserialize
,
Serialize
};
use
sp_core
::{
blake2_256
,
Decode
,
Encode
,
H256
};
use
std
::
collections
::{
BTreeMap
,
BTreeSet
};
use
std
::
collections
::{
BTreeMap
,
BTreeSet
,
HashMap
};
use
std
::
ops
::
AddAssign
;
type
MembershipData
=
sp_membership
::
MembershipData
<
u32
>
;
...
...
@@ -216,8 +217,8 @@ where
}
// CERTIFICATIONS //
let
mut
certs_by_issuer
=
BTreeMap
::
new
();
let
mut
counter_by_receiver
=
HashMap
::
<
_
,
u32
>
::
new
();
for
(
idty_name
,
identity
)
in
&
identities
{
let
issuer_index
=
idty_index_of
.get
(
&
idty_name
)
...
...
@@ -228,12 +229,26 @@ where
.get
(
receiver
)
.ok_or
(
format!
(
"Identity '{}' not exist"
,
receiver
))
?
;
issuer_certs
.insert
(
*
receiver_index
,
genesis_certs_expire_on
);
counter_by_receiver
.entry
(
receiver
)
.or_default
()
.add_assign
(
1
);
}
certs_by_issuer
.insert
(
*
issuer_index
,
issuer_certs
);
}
// TODO: move this check in the runtime genesis build
for
(
receiver
,
counter
)
in
counter_by_receiver
{
if
counter
<
5
{
return
Err
(
format!
(
"Identity '{}' not have enough certs ({}/5)"
,
receiver
,
counter
));
}
}
// SMITHS SUB-WOT //
let
mut
counter_by_receiver
=
HashMap
::
<
String
,
u32
>
::
new
();
let
mut
initial_authorities
=
BTreeMap
::
new
();
let
mut
online_authorities_counter
=
0
;
let
mut
session_keys_map
=
BTreeMap
::
new
();
...
...
@@ -298,6 +313,10 @@ where
.get
(
receiver
)
.ok_or
(
format!
(
"Identity '{}' not exist"
,
receiver
))
?
;
issuer_certs
.insert
(
*
receiver_index
,
genesis_smith_certs_expire_on
);
counter_by_receiver
.entry
(
receiver
.clone
())
.or_default
()
.add_assign
(
1
);
}
smiths_certs_by_issuer
.insert
(
*
idty_index
,
issuer_certs
);
...
...
@@ -310,6 +329,15 @@ where
},
);
}
// TODO: move this check in the runtime genesis build
for
(
receiver
,
counter
)
in
counter_by_receiver
{
if
counter
<
3
{
return
Err
(
format!
(
"Identity '{}' not have enough certs ({}/3)"
,
receiver
,
counter
));
}
}
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
());
...
...
This diff is collapsed.
Click to expand it.
Éloïs
@librelois
mentioned in commit
142d4763
·
2 years ago
mentioned in commit
142d4763
mentioned in commit 142d4763f419f74166154325de3fe048fca48d38
Toggle commit list
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment