Skip to content
Snippets Groups Projects
Commit 1e1a5641 authored by Hugo Trentesaux's avatar Hugo Trentesaux
Browse files

save number of referees reached instead of perbill

parent 928f326c
No related branches found
No related tags found
1 merge request!280Draft: (paused) distance result precomputation
Pipeline #38103 canceled
use api::IdtyIndex; use api::IdtyIndex;
use distance_oracle::api; use distance_oracle::api;
use fnv::FnvHashMap; use fnv::{FnvHashMap, FnvHashSet};
use log::debug; use log::debug;
use std::{io::Write, path::PathBuf}; use std::{io::Write, path::PathBuf};
...@@ -24,7 +24,8 @@ struct Cli { ...@@ -24,7 +24,8 @@ struct Cli {
#[derive(serde::Serialize)] #[derive(serde::Serialize)]
struct PrecomputationResult { struct PrecomputationResult {
block: sp_core::H256, block: sp_core::H256,
results: FnvHashMap<IdtyIndex, sp_runtime::Perbill>, results: FnvHashMap<IdtyIndex, u32>,
referees: u32,
} }
#[tokio::main] #[tokio::main]
...@@ -95,16 +96,23 @@ async fn main() { ...@@ -95,16 +96,23 @@ async fn main() {
let referees = members; let referees = members;
// initialize map of distance results // initialize map of distance results
let mut results = FnvHashMap::<IdtyIndex, sp_runtime::Perbill>::default(); let mut results = FnvHashMap::<IdtyIndex, u32>::default();
// compute all distances // compute all distances
received_certs.keys().into_iter().for_each(|idty| { received_certs.keys().into_iter().for_each(|idty| {
results.insert( results.insert(
*idty, *idty,
distance_oracle::distance_rule(&received_certs, &referees, max_depth, *idty), distance_rule(&received_certs, &referees, max_depth, *idty) as u32,
); );
}); });
// structure
let precomputation_result = PrecomputationResult {
block: evaluation_block,
results: results,
referees: referees.len() as u32,
};
// ---- SAVE // ---- SAVE
let evaluation_result_path = let evaluation_result_path =
Into::<PathBuf>::into(cli.evaluation_result_dir).join("todo-block-number".to_string()); Into::<PathBuf>::into(cli.evaluation_result_dir).join("todo-block-number".to_string());
...@@ -120,10 +128,7 @@ async fn main() { ...@@ -120,10 +128,7 @@ async fn main() {
}); });
evaluation_result_file evaluation_result_file
.write_all( .write_all(
&serde_json::to_vec( &PrecomputationResult { &serde_json::to_vec( &precomputation_result).expect("Cannot serialize result"),
block: evaluation_block,
results: results,
}).expect("Cannot serialize result"),
) )
.unwrap_or_else(|e| { .unwrap_or_else(|e| {
panic!( panic!(
...@@ -131,3 +136,25 @@ async fn main() { ...@@ -131,3 +136,25 @@ async fn main() {
) )
}); });
} }
// alternative function which returns number of reached referees
fn distance_rule(
received_certs: &FnvHashMap<IdtyIndex, Vec<IdtyIndex>>,
referees: &FnvHashMap<IdtyIndex, u32>,
depth: u32,
idty: IdtyIndex,
) -> usize {
let mut accessible_referees =
FnvHashSet::<IdtyIndex>::with_capacity_and_hasher(referees.len(), Default::default());
let mut known_idties =
FnvHashMap::<IdtyIndex, u32>::with_capacity_and_hasher(referees.len(), Default::default());
distance_oracle::distance_rule_recursive(
received_certs,
referees,
idty,
&mut accessible_referees,
&mut known_idties,
depth,
);
accessible_referees.len()
}
...@@ -248,7 +248,7 @@ pub async fn run( ...@@ -248,7 +248,7 @@ pub async fn run(
Some((evaluation, current_pool_index, evaluation_result_path)) Some((evaluation, current_pool_index, evaluation_result_path))
} }
fn distance_rule_recursive( pub fn distance_rule_recursive(
received_certs: &FnvHashMap<IdtyIndex, Vec<IdtyIndex>>, received_certs: &FnvHashMap<IdtyIndex, Vec<IdtyIndex>>,
referees: &FnvHashMap<IdtyIndex, u32>, referees: &FnvHashMap<IdtyIndex, u32>,
idty: IdtyIndex, idty: IdtyIndex,
...@@ -294,7 +294,7 @@ fn distance_rule_recursive( ...@@ -294,7 +294,7 @@ fn distance_rule_recursive(
} }
/// Returns the fraction `nb_accessible_referees / nb_referees` /// Returns the fraction `nb_accessible_referees / nb_referees`
pub fn distance_rule( fn distance_rule(
received_certs: &FnvHashMap<IdtyIndex, Vec<IdtyIndex>>, received_certs: &FnvHashMap<IdtyIndex, Vec<IdtyIndex>>,
referees: &FnvHashMap<IdtyIndex, u32>, referees: &FnvHashMap<IdtyIndex, u32>,
depth: u32, depth: u32,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment