diff --git a/pallets/distance/src/lib.rs b/pallets/distance/src/lib.rs index f42651850489f2c1e23ce28aa477f8660073a61d..f2e39e65340db366b50a1c50a9fc636b094d1452 100644 --- a/pallets/distance/src/lib.rs +++ b/pallets/distance/src/lib.rs @@ -172,9 +172,15 @@ pub mod pallet { who: T::AccountId, }, /// Distance rule was found valid. - EvaluatedValid { idty_index: T::IdtyIndex }, + EvaluatedValid { + idty_index: T::IdtyIndex, + distance: Perbill, + }, /// Distance rule was found invalid. - EvaluatedInvalid { idty_index: T::IdtyIndex }, + EvaluatedInvalid { + idty_index: T::IdtyIndex, + distance: Perbill, + }, } // ERRORS // @@ -313,7 +319,7 @@ pub mod pallet { ) -> DispatchResult { ensure_root(origin)?; - Self::do_valid_distance_status(identity); + Self::do_valid_distance_status(identity, Perbill::one()); Ok(()) } } @@ -509,11 +515,17 @@ pub mod pallet { } /// Set the distance status using IdtyIndex and AccountId - pub fn do_valid_distance_status(idty: <T as pallet_identity::Config>::IdtyIndex) { + pub fn do_valid_distance_status( + idty: <T as pallet_identity::Config>::IdtyIndex, + distance: Perbill, + ) { // callback T::OnValidDistanceStatus::on_valid_distance_status(idty); // deposit event - Self::deposit_event(Event::EvaluatedValid { idty_index: idty }); + Self::deposit_event(Event::EvaluatedValid { + idty_index: idty, + distance: distance, + }); } pub fn do_evaluation(index: u32) -> Weight { @@ -532,15 +544,16 @@ pub mod pallet { for (idty, median_acc) in current_pool.evaluations.into_iter() { // distance result let mut distance_result: Option<bool> = None; + let mut distance = Perbill::zero(); // get result of the computation if let Some(median_result) = median_acc.get_median() { - let median = match median_result { + distance = match median_result { MedianResult::One(m) => m, MedianResult::Two(m1, m2) => m1 + (m2 - m1) / 2, // Avoid overflow (since max is 1) }; // update distance result - distance_result = Some(median >= T::MinAccessibleReferees::get()); + distance_result = Some(distance >= T::MinAccessibleReferees::get()); } // take requester and perform unreserve or slash @@ -566,7 +579,7 @@ pub mod pallet { &requester, <T as Config>::EvaluationPrice::get(), ); - Self::do_valid_distance_status(idty); + Self::do_valid_distance_status(idty, distance); weight = weight.saturating_add( <T as pallet::Config>::WeightInfo::do_evaluation_success() .saturating_sub( @@ -580,7 +593,10 @@ pub mod pallet { &requester, <T as Config>::EvaluationPrice::get(), ); - Self::deposit_event(Event::EvaluatedInvalid { idty_index: idty }); + Self::deposit_event(Event::EvaluatedInvalid { + idty_index: idty, + distance, + }); weight = weight.saturating_add( <T as pallet::Config>::WeightInfo::do_evaluation_failure() .saturating_sub(