From 8eb449a98f41c436a216e8bee68356c26f51901d Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Sat, 19 Aug 2023 11:08:57 +0200 Subject: [PATCH] Whisk: don't mutate candidates during cooldown --- specs/_features/whisk/beacon-chain.md | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/specs/_features/whisk/beacon-chain.md b/specs/_features/whisk/beacon-chain.md index c955585903..d3593ee89c 100644 --- a/specs/_features/whisk/beacon-chain.md +++ b/specs/_features/whisk/beacon-chain.md @@ -318,30 +318,25 @@ def get_shuffle_indices(randao_reveal: BLSSignature) -> Sequence[uint64]: ```python def process_shuffled_trackers(state: BeaconState, body: BeaconBlockBody) -> None: - # Check the shuffle proof - shuffle_indices = get_shuffle_indices(body.randao_reveal) - pre_shuffle_trackers = [state.whisk_candidate_trackers[i] for i in shuffle_indices] - shuffle_epoch = get_current_epoch(state) % WHISK_EPOCHS_PER_SHUFFLING_PHASE if shuffle_epoch + WHISK_PROPOSER_SELECTION_GAP + 1 >= WHISK_EPOCHS_PER_SHUFFLING_PHASE: # Require trackers set to zero during cooldown assert body.whisk_post_shuffle_trackers == Vector[WhiskTracker, WHISK_VALIDATORS_PER_SHUFFLE]() assert body.whisk_shuffle_proof_M_commitment == BLSG1Point() assert body.whisk_shuffle_proof == WhiskShuffleProof() - post_shuffle_trackers = pre_shuffle_trackers else: # Require shuffled trackers during shuffle + shuffle_indices = get_shuffle_indices(body.randao_reveal) + pre_shuffle_trackers = [state.whisk_candidate_trackers[i] for i in shuffle_indices] assert IsValidWhiskShuffleProof( pre_shuffle_trackers, body.whisk_post_shuffle_trackers, body.whisk_shuffle_proof_M_commitment, body.whisk_shuffle_proof, ) - post_shuffle_trackers = body.whisk_post_shuffle_trackers - - # Shuffle candidate trackers - for i, shuffle_index in enumerate(shuffle_indices): - state.whisk_candidate_trackers[shuffle_index] = post_shuffle_trackers[i] + # Shuffle candidate trackers + for i, shuffle_index in enumerate(shuffle_indices): + state.whisk_candidate_trackers[shuffle_index] = body.whisk_post_shuffle_trackers[i] ``` ```python