mirror of
https://github.com/tig-foundation/tig-monorepo.git
synced 2026-02-21 10:27:49 +08:00
Calculate potential qualifiers.
This commit is contained in:
parent
9acf25c6b5
commit
6fe26d4e3e
@ -196,6 +196,7 @@ class Challenge(FromDict):
|
||||
@dataclass
|
||||
class OPoWBlockData(FromDict):
|
||||
num_qualifiers_by_challenge_by_track: Dict[str, Dict[str, int]]
|
||||
num_potential_qualifiers_by_challenge_by_track: Dict[str, Dict[str, int]]
|
||||
cutoff: int
|
||||
weighted_delegated_deposit: PreciseNumber
|
||||
weighted_self_deposit: PreciseNumber
|
||||
|
||||
@ -151,7 +151,8 @@ pub(crate) async fn update(cache: &mut AddBlockCache) {
|
||||
HashMap::<String, HashMap<String, HashMap<String, u64>>>::new();
|
||||
let mut num_qualifiers_by_player_by_track =
|
||||
HashMap::<String, HashMap<String, u64>>::new();
|
||||
let mut num_qualifiers_by_player = HashMap::<String, u64>::new();
|
||||
let mut num_potential_qualifiers_by_player_by_track =
|
||||
HashMap::<String, HashMap<String, u64>>::new();
|
||||
let mut max_qualifiers_by_player = max_qualifiers_by_player.clone();
|
||||
|
||||
let mut track_rank = bundles_by_track
|
||||
@ -166,6 +167,11 @@ pub(crate) async fn update(cache: &mut AddBlockCache) {
|
||||
if let Some(idx) = (*rank..bundles_by_track[track_id].len()).find(|&idx| {
|
||||
let player_id = &bundles_by_track[track_id][idx].0.player_id;
|
||||
if max_qualifiers_by_player[player_id] == 0 {
|
||||
*num_potential_qualifiers_by_player_by_track
|
||||
.entry(player_id.clone())
|
||||
.or_default()
|
||||
.entry(track_id.clone())
|
||||
.or_default() += 1;
|
||||
false
|
||||
} else {
|
||||
*max_qualifiers_by_player.get_mut(player_id).unwrap() -= 1;
|
||||
@ -218,6 +224,14 @@ pub(crate) async fn update(cache: &mut AddBlockCache) {
|
||||
.num_qualifiers_by_challenge_by_track
|
||||
.insert(challenge_id.clone(), num_qualifiers_by_track);
|
||||
}
|
||||
for (player_id, num_potential_qualifiers_by_track) in
|
||||
num_potential_qualifiers_by_player_by_track
|
||||
{
|
||||
let opow_data = active_opow_block_data.get_mut(&player_id).unwrap();
|
||||
opow_data
|
||||
.num_potential_qualifiers_by_challenge_by_track
|
||||
.insert(challenge_id.clone(), num_potential_qualifiers_by_track);
|
||||
}
|
||||
for (algorithm_id, num_qualifiers_by_track_by_player) in
|
||||
num_qualifiers_by_code_by_track_by_player
|
||||
{
|
||||
|
||||
@ -351,6 +351,7 @@ serializable_struct_with_getters! {
|
||||
serializable_struct_with_getters! {
|
||||
OPoWBlockData {
|
||||
num_qualifiers_by_challenge_by_track: HashMap<String, HashMap<String, u64>>,
|
||||
num_potential_qualifiers_by_challenge_by_track: HashMap<String, HashMap<String, u64>>,
|
||||
cutoff: u64,
|
||||
weighted_self_deposit: PreciseNumber,
|
||||
weighted_delegated_deposit: PreciseNumber,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user