You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
defgenerate_seed(state: BeaconState,
epoch: Epoch) ->Bytes32:
""" Generate a seed for the given ``epoch``. """returnhash(
get_randao_mix(state, epoch-MIN_SEED_LOOKAHEAD) +get_active_index_root(state, epoch) +int_to_bytes32(epoch)
)
Is there any reason to mix in the get_active_index_root? Currently this does not seem dangerous, but also does not provide any advantage as far as I can see. So with simplification in mind we could just remove it.
Also to protect RANDAO from biasability, it is advantageous to keep the seed as clean as possible. In case there would be any "instant changes" to the validator set, possibly introduced in some unforeseen spec version in the future, it would be unwise to have this in the mix.
The text was updated successfully, but these errors were encountered:
We add the active index root into the shuffling seed to make sure that it is not possible to affect the shuffling in predictable ways by entering or exiting the validator set (there is a Fiat-Shamir-heuristic-like argument here: even if the attacker can "choose" the validator set, the protocol randomly chooses the shuffling after they do that)
In the definition
Is there any reason to mix in the get_active_index_root? Currently this does not seem dangerous, but also does not provide any advantage as far as I can see. So with simplification in mind we could just remove it.
Also to protect RANDAO from biasability, it is advantageous to keep the seed as clean as possible. In case there would be any "instant changes" to the validator set, possibly introduced in some unforeseen spec version in the future, it would be unwise to have this in the mix.
The text was updated successfully, but these errors were encountered: