def test_get_seed(genesis_state, committee_config, slots_per_epoch, min_seed_lookahead, activation_exit_delay, epochs_per_historical_vector): def mock_get_randao_mix(state, epoch, epochs_per_historical_vector): return hash_eth2( state.hash_tree_root + epoch.to_bytes(32, byteorder='little') + epochs_per_historical_vector.to_bytes(32, byteorder='little') ) def mock_get_active_index_root(state, epoch, epochs_per_historical_vector): return hash_eth2( state.hash_tree_root + epoch.to_bytes(32, byteorder='little') + slots_per_epoch.to_bytes(32, byteorder='little') + epochs_per_historical_vector.to_bytes(32, byteorder='little') ) state = genesis_state epoch = 1 state = state.copy( slot=compute_start_slot_of_epoch(epoch, committee_config.SLOTS_PER_EPOCH), ) epoch_as_bytes = epoch.to_bytes(32, 'little') seed = _get_seed( state=state, epoch=epoch, randao_provider=mock_get_randao_mix, active_index_root_provider=mock_get_active_index_root, epoch_provider=lambda *_: epoch_as_bytes, committee_config=committee_config, ) assert seed == hash_eth2( mock_get_randao_mix( state=state, epoch=(epoch + epochs_per_historical_vector - min_seed_lookahead - 1), epochs_per_historical_vector=epochs_per_historical_vector, ) + mock_get_active_index_root( state=state, epoch=epoch, epochs_per_historical_vector=epochs_per_historical_vector, ) + epoch_as_bytes )
def test_get_seed( genesis_state, config, slots_per_epoch, min_seed_lookahead, max_seed_lookahead, epochs_per_historical_vector, ): def mock_get_randao_mix(state, epoch, epochs_per_historical_vector): return hash_eth2( state.hash_tree_root + epoch.to_bytes(32, byteorder="little") + epochs_per_historical_vector.to_bytes(32, byteorder="little") ) state = genesis_state epoch = 1 state = state.set( "slot", compute_start_slot_at_epoch(epoch, config.SLOTS_PER_EPOCH) ) epoch_as_bytes = epoch.to_bytes(32, "little") domain_type = signature_domain_to_domain_type( SignatureDomain.DOMAIN_BEACON_PROPOSER ) seed = _get_seed( state=state, epoch=epoch, domain_type=domain_type, randao_provider=mock_get_randao_mix, epoch_provider=lambda *_: epoch_as_bytes, config=config, ) assert seed == hash_eth2( domain_type + epoch_as_bytes + mock_get_randao_mix( state=state, epoch=(epoch + epochs_per_historical_vector - min_seed_lookahead - 1), epochs_per_historical_vector=epochs_per_historical_vector, ) )