enable doppelganger tests for deneb (#5137)
* enable doppelganger tests for deneb * comment out lcli install skip * Add sanity check * Merge remote-tracking branch 'origin/unstable' into deneb-doppelganger
This commit is contained in:
parent
f17fb291b7
commit
1711b80779
4
.github/workflows/test-suite.yml
vendored
4
.github/workflows/test-suite.yml
vendored
@ -309,7 +309,9 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
make
|
make
|
||||||
- name: Install lcli
|
- name: Install lcli
|
||||||
if: env.SELF_HOSTED_RUNNERS == 'false'
|
# TODO: uncomment after the version of lcli in https://github.com/sigp/lighthouse/pull/5137
|
||||||
|
# is installed on the runners
|
||||||
|
# if: env.SELF_HOSTED_RUNNERS == 'false'
|
||||||
run: make install-lcli
|
run: make install-lcli
|
||||||
- name: Run the doppelganger protection failure test script
|
- name: Run the doppelganger protection failure test script
|
||||||
run: |
|
run: |
|
||||||
|
@ -9,7 +9,9 @@ use ethereum_hashing::hash;
|
|||||||
use ssz::Decode;
|
use ssz::Decode;
|
||||||
use ssz::Encode;
|
use ssz::Encode;
|
||||||
use state_processing::process_activations;
|
use state_processing::process_activations;
|
||||||
use state_processing::upgrade::{upgrade_to_altair, upgrade_to_bellatrix};
|
use state_processing::upgrade::{
|
||||||
|
upgrade_to_altair, upgrade_to_bellatrix, upgrade_to_capella, upgrade_to_deneb,
|
||||||
|
};
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
@ -19,8 +21,8 @@ use types::ExecutionBlockHash;
|
|||||||
use types::{
|
use types::{
|
||||||
test_utils::generate_deterministic_keypairs, Address, BeaconState, ChainSpec, Config, Epoch,
|
test_utils::generate_deterministic_keypairs, Address, BeaconState, ChainSpec, Config, Epoch,
|
||||||
Eth1Data, EthSpec, ExecutionPayloadHeader, ExecutionPayloadHeaderCapella,
|
Eth1Data, EthSpec, ExecutionPayloadHeader, ExecutionPayloadHeaderCapella,
|
||||||
ExecutionPayloadHeaderDeneb, ExecutionPayloadHeaderMerge, ExecutionPayloadHeaderRefMut,
|
ExecutionPayloadHeaderDeneb, ExecutionPayloadHeaderMerge, ForkName, Hash256, Keypair,
|
||||||
ForkName, Hash256, Keypair, PublicKey, Validator,
|
PublicKey, Validator,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn run<T: EthSpec>(testnet_dir_path: PathBuf, matches: &ArgMatches) -> Result<(), String> {
|
pub fn run<T: EthSpec>(testnet_dir_path: PathBuf, matches: &ArgMatches) -> Result<(), String> {
|
||||||
@ -302,26 +304,47 @@ fn initialize_state_with_validators<T: EthSpec>(
|
|||||||
state.fork_mut().previous_version = spec.bellatrix_fork_version;
|
state.fork_mut().previous_version = spec.bellatrix_fork_version;
|
||||||
|
|
||||||
// Override latest execution payload header.
|
// Override latest execution payload header.
|
||||||
// See https://github.com/ethereum/consensus-specs/blob/v1.1.0/specs/merge/beacon-chain.md#testing
|
// See https://github.com/ethereum/consensus-specs/blob/v1.1.0/specs/bellatrix/beacon-chain.md#testing
|
||||||
|
if let ExecutionPayloadHeader::Merge(ref header) = execution_payload_header {
|
||||||
|
*state
|
||||||
|
.latest_execution_payload_header_merge_mut()
|
||||||
|
.or(Err("mismatched fork".to_string()))? = header.clone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Currently, we only support starting from a bellatrix state
|
if spec
|
||||||
match state
|
.capella_fork_epoch
|
||||||
.latest_execution_payload_header_mut()
|
.map_or(false, |fork_epoch| fork_epoch == T::genesis_epoch())
|
||||||
.map_err(|e| format!("Failed to get execution payload header: {:?}", e))?
|
{
|
||||||
{
|
upgrade_to_capella(&mut state, spec).unwrap();
|
||||||
ExecutionPayloadHeaderRefMut::Merge(header_mut) => {
|
|
||||||
if let ExecutionPayloadHeader::Merge(eph) = execution_payload_header {
|
// Remove intermediate fork from `state.fork`.
|
||||||
*header_mut = eph;
|
state.fork_mut().previous_version = spec.capella_fork_version;
|
||||||
} else {
|
|
||||||
return Err("Execution payload header must be a bellatrix header".to_string());
|
// Override latest execution payload header.
|
||||||
}
|
// See https://github.com/ethereum/consensus-specs/blob/v1.1.0/specs/bellatrix/beacon-chain.md#testing
|
||||||
}
|
if let ExecutionPayloadHeader::Capella(ref header) = execution_payload_header {
|
||||||
ExecutionPayloadHeaderRefMut::Capella(_) => {
|
*state
|
||||||
return Err("Cannot start genesis from a capella state".to_string())
|
.latest_execution_payload_header_capella_mut()
|
||||||
}
|
.or(Err("mismatched fork".to_string()))? = header.clone();
|
||||||
ExecutionPayloadHeaderRefMut::Deneb(_) => {
|
}
|
||||||
return Err("Cannot start genesis from a deneb state".to_string())
|
}
|
||||||
}
|
|
||||||
|
if spec
|
||||||
|
.deneb_fork_epoch
|
||||||
|
.map_or(false, |fork_epoch| fork_epoch == T::genesis_epoch())
|
||||||
|
{
|
||||||
|
upgrade_to_deneb(&mut state, spec).unwrap();
|
||||||
|
|
||||||
|
// Remove intermediate fork from `state.fork`.
|
||||||
|
state.fork_mut().previous_version = spec.deneb_fork_version;
|
||||||
|
|
||||||
|
// Override latest execution payload header.
|
||||||
|
// See https://github.com/ethereum/consensus-specs/blob/v1.1.0/specs/bellatrix/beacon-chain.md#testing
|
||||||
|
if let ExecutionPayloadHeader::Deneb(ref header) = execution_payload_header {
|
||||||
|
*state
|
||||||
|
.latest_execution_payload_header_deneb_mut()
|
||||||
|
.or(Err("mismatched fork".to_string()))? = header.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,5 +354,10 @@ fn initialize_state_with_validators<T: EthSpec>(
|
|||||||
// Set genesis validators root for domain separation and chain versioning
|
// Set genesis validators root for domain separation and chain versioning
|
||||||
*state.genesis_validators_root_mut() = state.update_validators_tree_hash_cache().unwrap();
|
*state.genesis_validators_root_mut() = state.update_validators_tree_hash_cache().unwrap();
|
||||||
|
|
||||||
|
// Sanity check for state fork matching config fork.
|
||||||
|
state
|
||||||
|
.fork_name(spec)
|
||||||
|
.map_err(|e| format!("state fork mismatch: {e:?}"))?;
|
||||||
|
|
||||||
Ok(state)
|
Ok(state)
|
||||||
}
|
}
|
||||||
|
@ -50,4 +50,5 @@ exec $GETH_BINARY \
|
|||||||
--bootnodes $EL_BOOTNODE_ENODE \
|
--bootnodes $EL_BOOTNODE_ENODE \
|
||||||
--port $network_port \
|
--port $network_port \
|
||||||
--http.port $http_port \
|
--http.port $http_port \
|
||||||
--authrpc.port $auth_port
|
--authrpc.port $auth_port \
|
||||||
|
2>&1 | tee $data_dir/geth.log
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
"londonBlock": 0,
|
"londonBlock": 0,
|
||||||
"mergeForkBlock": 0,
|
"mergeForkBlock": 0,
|
||||||
"shanghaiTime": 0,
|
"shanghaiTime": 0,
|
||||||
"shardingForkTime": 0,
|
"cancunTime": 0,
|
||||||
"terminalTotalDifficulty": 0,
|
"terminalTotalDifficulty": 0,
|
||||||
"terminalTotalDifficultyPassed": true
|
"terminalTotalDifficultyPassed": true
|
||||||
},
|
},
|
||||||
|
@ -16,7 +16,7 @@ DEPOSIT_CONTRACT_ADDRESS=4242424242424242424242424242424242424242
|
|||||||
GENESIS_FORK_VERSION=0x42424242
|
GENESIS_FORK_VERSION=0x42424242
|
||||||
|
|
||||||
# Block hash generated from genesis.json in directory
|
# Block hash generated from genesis.json in directory
|
||||||
ETH1_BLOCK_HASH=add7865f8346031c72287e2edc4a4952fd34fc0a8642403e8c1bce67f215c92b
|
ETH1_BLOCK_HASH=7a5c656343c3a66dcf75415958b500e8873f9dab0cd588e6cf0785b52a06dd34
|
||||||
|
|
||||||
VALIDATOR_COUNT=80
|
VALIDATOR_COUNT=80
|
||||||
GENESIS_VALIDATOR_COUNT=80
|
GENESIS_VALIDATOR_COUNT=80
|
||||||
@ -41,8 +41,8 @@ CHAIN_ID=4242
|
|||||||
# Hard fork configuration
|
# Hard fork configuration
|
||||||
ALTAIR_FORK_EPOCH=0
|
ALTAIR_FORK_EPOCH=0
|
||||||
BELLATRIX_FORK_EPOCH=0
|
BELLATRIX_FORK_EPOCH=0
|
||||||
CAPELLA_FORK_EPOCH=1
|
CAPELLA_FORK_EPOCH=0
|
||||||
DENEB_FORK_EPOCH=18446744073709551615
|
DENEB_FORK_EPOCH=0
|
||||||
|
|
||||||
TTD=0
|
TTD=0
|
||||||
|
|
||||||
@ -63,3 +63,4 @@ BN_ARGS=""
|
|||||||
|
|
||||||
# Enable doppelganger detection
|
# Enable doppelganger detection
|
||||||
VC_ARGS=" --enable-doppelganger-protection "
|
VC_ARGS=" --enable-doppelganger-protection "
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user