Update test vectors to v1.1.0 (#2642)
This commit is contained in:
parent
18eee2dc82
commit
fd828199f5
@ -2,9 +2,10 @@ use super::per_block_processing::{
|
|||||||
errors::BlockProcessingError, process_operations::process_deposit,
|
errors::BlockProcessingError, process_operations::process_deposit,
|
||||||
};
|
};
|
||||||
use crate::common::DepositDataTree;
|
use crate::common::DepositDataTree;
|
||||||
use crate::upgrade::upgrade_to_altair;
|
use crate::upgrade::{upgrade_to_altair, upgrade_to_merge};
|
||||||
use safe_arith::{ArithError, SafeArith};
|
use safe_arith::{ArithError, SafeArith};
|
||||||
use tree_hash::TreeHash;
|
use tree_hash::TreeHash;
|
||||||
|
use types::consts::merge_testing::{GENESIS_BASE_FEE_PER_GAS, GENESIS_GAS_LIMIT};
|
||||||
use types::DEPOSIT_TREE_DEPTH;
|
use types::DEPOSIT_TREE_DEPTH;
|
||||||
use types::*;
|
use types::*;
|
||||||
|
|
||||||
@ -46,13 +47,36 @@ pub fn initialize_beacon_state_from_eth1<T: EthSpec>(
|
|||||||
// use of `BeaconBlock::empty` in `BeaconState::new` is sufficient to correctly initialise
|
// use of `BeaconBlock::empty` in `BeaconState::new` is sufficient to correctly initialise
|
||||||
// the `latest_block_header` as per:
|
// the `latest_block_header` as per:
|
||||||
// https://github.com/ethereum/eth2.0-specs/pull/2323
|
// https://github.com/ethereum/eth2.0-specs/pull/2323
|
||||||
if spec.fork_name_at_epoch(state.current_epoch()) == ForkName::Altair {
|
if spec
|
||||||
|
.altair_fork_epoch
|
||||||
|
.map_or(false, |fork_epoch| fork_epoch == T::genesis_epoch())
|
||||||
|
{
|
||||||
upgrade_to_altair(&mut state, spec)?;
|
upgrade_to_altair(&mut state, spec)?;
|
||||||
|
|
||||||
state.fork_mut().previous_version = spec.altair_fork_version;
|
state.fork_mut().previous_version = spec.altair_fork_version;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: handle upgrade_to_merge() here
|
// Similarly, perform an upgrade to the merge if configured from genesis.
|
||||||
|
if spec
|
||||||
|
.merge_fork_epoch
|
||||||
|
.map_or(false, |fork_epoch| fork_epoch == T::genesis_epoch())
|
||||||
|
{
|
||||||
|
upgrade_to_merge(&mut state, spec)?;
|
||||||
|
|
||||||
|
// Remove intermediate Altair fork from `state.fork`.
|
||||||
|
state.fork_mut().previous_version = spec.genesis_fork_version;
|
||||||
|
|
||||||
|
// Override latest execution payload header.
|
||||||
|
// See https://github.com/ethereum/consensus-specs/blob/v1.1.0/specs/merge/beacon-chain.md#testing
|
||||||
|
*state.latest_execution_payload_header_mut()? = ExecutionPayloadHeader {
|
||||||
|
block_hash: eth1_block_hash,
|
||||||
|
timestamp: eth1_timestamp,
|
||||||
|
random: eth1_block_hash,
|
||||||
|
gas_limit: GENESIS_GAS_LIMIT,
|
||||||
|
base_fee_per_gas: GENESIS_BASE_FEE_PER_GAS,
|
||||||
|
..ExecutionPayloadHeader::default()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// Now that we have our validators, initialize the caches (including the committees)
|
// Now that we have our validators, initialize the caches (including the committees)
|
||||||
state.build_all_caches(spec)?;
|
state.build_all_caches(spec)?;
|
||||||
|
@ -480,7 +480,9 @@ impl ChainSpec {
|
|||||||
altair_fork_epoch: Some(Epoch::new(74240)),
|
altair_fork_epoch: Some(Epoch::new(74240)),
|
||||||
merge_fork_version: [0x02, 0x00, 0x00, 0x00],
|
merge_fork_version: [0x02, 0x00, 0x00, 0x00],
|
||||||
merge_fork_epoch: None,
|
merge_fork_epoch: None,
|
||||||
terminal_total_difficulty: Uint256::MAX,
|
terminal_total_difficulty: Uint256::MAX
|
||||||
|
.checked_sub(Uint256::from(2u64.pow(10)))
|
||||||
|
.expect("calculation does not overflow"),
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Network specific
|
* Network specific
|
||||||
@ -521,6 +523,9 @@ impl ChainSpec {
|
|||||||
epochs_per_sync_committee_period: Epoch::new(8),
|
epochs_per_sync_committee_period: Epoch::new(8),
|
||||||
altair_fork_version: [0x01, 0x00, 0x00, 0x01],
|
altair_fork_version: [0x01, 0x00, 0x00, 0x01],
|
||||||
altair_fork_epoch: None,
|
altair_fork_epoch: None,
|
||||||
|
// Merge
|
||||||
|
merge_fork_version: [0x02, 0x00, 0x00, 0x01],
|
||||||
|
merge_fork_epoch: None,
|
||||||
// Other
|
// Other
|
||||||
network_id: 2, // lighthouse testnet network id
|
network_id: 2, // lighthouse testnet network id
|
||||||
deposit_chain_id: 5,
|
deposit_chain_id: 5,
|
||||||
|
@ -34,7 +34,7 @@ impl ForkName {
|
|||||||
spec
|
spec
|
||||||
}
|
}
|
||||||
ForkName::Merge => {
|
ForkName::Merge => {
|
||||||
spec.altair_fork_epoch = None;
|
spec.altair_fork_epoch = Some(Epoch::new(0));
|
||||||
spec.merge_fork_epoch = Some(Epoch::new(0));
|
spec.merge_fork_epoch = Some(Epoch::new(0));
|
||||||
spec
|
spec
|
||||||
}
|
}
|
||||||
|
@ -20,10 +20,11 @@ tests_dir_filename = sys.argv[2]
|
|||||||
# following regular expressions, we will assume they are to be ignored (i.e., we are purposefully
|
# following regular expressions, we will assume they are to be ignored (i.e., we are purposefully
|
||||||
# *not* running the spec tests).
|
# *not* running the spec tests).
|
||||||
excluded_paths = [
|
excluded_paths = [
|
||||||
# Eth1Block
|
# Eth1Block and PowBlock
|
||||||
#
|
#
|
||||||
# Intentionally omitted, as per https://github.com/sigp/lighthouse/issues/1835
|
# Intentionally omitted, as per https://github.com/sigp/lighthouse/issues/1835
|
||||||
"tests/.*/.*/ssz_static/Eth1Block/",
|
"tests/.*/.*/ssz_static/Eth1Block/",
|
||||||
|
"tests/.*/.*/ssz_static/PowBlock/",
|
||||||
# LightClientStore
|
# LightClientStore
|
||||||
"tests/.*/.*/ssz_static/LightClientStore",
|
"tests/.*/.*/ssz_static/LightClientStore",
|
||||||
# LightClientUpdate
|
# LightClientUpdate
|
||||||
|
@ -56,9 +56,7 @@ impl<E: EthSpec> LoadCase for GenesisInitialization<E> {
|
|||||||
impl<E: EthSpec> Case for GenesisInitialization<E> {
|
impl<E: EthSpec> Case for GenesisInitialization<E> {
|
||||||
fn is_enabled_for_fork(fork_name: ForkName) -> bool {
|
fn is_enabled_for_fork(fork_name: ForkName) -> bool {
|
||||||
// Altair genesis and later requires real crypto.
|
// Altair genesis and later requires real crypto.
|
||||||
// FIXME(merge): enable merge tests once available
|
fork_name == ForkName::Base || cfg!(not(feature = "fake_crypto"))
|
||||||
fork_name == ForkName::Base
|
|
||||||
|| cfg!(not(feature = "fake_crypto")) && fork_name != ForkName::Merge
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn result(&self, _case_index: usize, fork_name: ForkName) -> Result<(), Error> {
|
fn result(&self, _case_index: usize, fork_name: ForkName) -> Result<(), Error> {
|
||||||
|
@ -498,11 +498,6 @@ pub struct GenesisValidityHandler<E>(PhantomData<E>);
|
|||||||
impl<E: EthSpec + TypeName> Handler for GenesisValidityHandler<E> {
|
impl<E: EthSpec + TypeName> Handler for GenesisValidityHandler<E> {
|
||||||
type Case = cases::GenesisValidity<E>;
|
type Case = cases::GenesisValidity<E>;
|
||||||
|
|
||||||
// FIXME(merge): enable merge test once available
|
|
||||||
fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool {
|
|
||||||
fork_name != ForkName::Merge
|
|
||||||
}
|
|
||||||
|
|
||||||
fn config_name() -> &'static str {
|
fn config_name() -> &'static str {
|
||||||
E::name()
|
E::name()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user