Signed-off-by: Uncle Stinky <uncle.stinky@ghostchain.io>
This commit is contained in:
parent
c884ec7b77
commit
7ad0159517
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "ghost-exodus"
|
name = "ghost-exodus"
|
||||||
version = "0.0.21"
|
version = "0.0.22"
|
||||||
description = "Threshold signature generation with DKG included"
|
description = "Threshold signature generation with DKG included"
|
||||||
license.workspace = true
|
license.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
|
|||||||
@ -2544,7 +2544,6 @@ impl<T: Config> Pallet<T> {
|
|||||||
|
|
||||||
dkg_qualification.intersect_indexes(&participants);
|
dkg_qualification.intersect_indexes(&participants);
|
||||||
|
|
||||||
|
|
||||||
if dkg_qualification.count_ones::<AuthIndex>() < min_threshold {
|
if dkg_qualification.count_ones::<AuthIndex>() < min_threshold {
|
||||||
dkg_qualification.nullify_indexes();
|
dkg_qualification.nullify_indexes();
|
||||||
return;
|
return;
|
||||||
@ -2554,16 +2553,17 @@ impl<T: Config> Pallet<T> {
|
|||||||
let consensus = VerifyingKeyConsensus::<T>::get(&network_curve, &dkg_index);
|
let consensus = VerifyingKeyConsensus::<T>::get(&network_curve, &dkg_index);
|
||||||
let verifying_key_slice = consensus.element_bytes.as_slice();
|
let verifying_key_slice = consensus.element_bytes.as_slice();
|
||||||
|
|
||||||
|
if verifying_key_slice.len() != network_curve.element_bytes_len() {
|
||||||
|
dkg_qualification.nullify_indexes();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
weight.saturating_accrue(T::DbWeight::get().reads(2));
|
weight.saturating_accrue(T::DbWeight::get().reads(2));
|
||||||
let mut exodus_session = CurrentExodus::<T>::get();
|
let mut exodus_session = CurrentExodus::<T>::get();
|
||||||
|
|
||||||
for network_type in T::NetworkDataHandler::iter_types_by_curve(&network_curve) {
|
for network_type in T::NetworkDataHandler::iter_types_by_curve(&network_curve) {
|
||||||
let exodus_request = match network_type {
|
let exodus_request = match network_type {
|
||||||
NetworkType::Evm => {
|
NetworkType::Evm => {
|
||||||
if verifying_key_slice.len() < 33 {
|
|
||||||
dkg_qualification.nullify_indexes();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let parity_byte = verifying_key_slice[0];
|
let parity_byte = verifying_key_slice[0];
|
||||||
let parity = if parity_byte % 2 == 0 { 0u8 } else { 1u8 };
|
let parity = if parity_byte % 2 == 0 { 0u8 } else { 1u8 };
|
||||||
|
|
||||||
@ -2613,20 +2613,22 @@ impl<T: Config> Pallet<T> {
|
|||||||
|
|
||||||
let all_rotations_have_signatures = dkg_qualification
|
let all_rotations_have_signatures = dkg_qualification
|
||||||
.iter_rotation_sessions()
|
.iter_rotation_sessions()
|
||||||
.all(|rotation_session| {
|
.fold(true, |accumulator, rotation_session| {
|
||||||
let session = rotation_session.exodus_session;
|
let session = rotation_session.exodus_session;
|
||||||
let r#type = rotation_session.network_type;
|
let r#type = rotation_session.network_type;
|
||||||
|
|
||||||
weight.saturating_accrue(T::DbWeight::get().reads(1));
|
weight.saturating_accrue(T::DbWeight::get().writes(1));
|
||||||
if ExodusRequests::<T>::contains_key((&network_curve, &session)) {
|
ExodusRequests::<T>::remove((&network_curve, &session));
|
||||||
return false
|
|
||||||
};
|
|
||||||
|
|
||||||
weight.saturating_accrue(T::DbWeight::get().reads(1));
|
weight.saturating_accrue(T::DbWeight::get().reads(1));
|
||||||
ExodusSignedRotations::<T>::contains_key((session, r#type), dkg_index)
|
let has_signature = ExodusSignedRotations::<T>::contains_key(
|
||||||
|
(session, r#type),
|
||||||
|
dkg_index,
|
||||||
|
);
|
||||||
|
|
||||||
|
accumulator && has_signature
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
if all_rotations_have_signatures || is_initial_dkg_round {
|
if all_rotations_have_signatures || is_initial_dkg_round {
|
||||||
let verifying_key = dkg_qualification.get_verifying_key();
|
let verifying_key = dkg_qualification.get_verifying_key();
|
||||||
let activated_state: ActivatedState<T> = (&*dkg_qualification).into();
|
let activated_state: ActivatedState<T> = (&*dkg_qualification).into();
|
||||||
|
|||||||
@ -1136,7 +1136,7 @@ fn test_all_validators_can_execute_dkg() {
|
|||||||
ExodusRequests::<Runtime>::count()
|
ExodusRequests::<Runtime>::count()
|
||||||
});
|
});
|
||||||
|
|
||||||
assert_eq!(rotations_count, 3);
|
assert_eq!(rotations_count, 2);
|
||||||
assert_eq!(bridges_count, 2);
|
assert_eq!(bridges_count, 2);
|
||||||
assert_eq!(governances_count, 15);
|
assert_eq!(governances_count, 15);
|
||||||
assert_eq!(pending_exodus_requests, 0);
|
assert_eq!(pending_exodus_requests, 0);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user