mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-23 06:44:35 +00:00
Update to Spec v0.10 (#817)
* Start updating types * WIP * Signature hacking * Existing EF tests passing with fake_crypto * Updates * Delete outdated API spec * The refactor continues * It compiles * WIP test fixes * All release tests passing bar genesis state parsing * Update and test YamlConfig * Update to spec v0.10 compatible BLS * Updates to BLS EF tests * Add EF test for AggregateVerify And delete unused hash2curve tests for uncompressed points * Update EF tests to v0.10.1 * Use optional block root correctly in block proc * Use genesis fork in deposit domain. All tests pass * Cargo fmt * Fast aggregate verify test * Update REST API docs * Cargo fmt * Fix unused import * Bump spec tags to v0.10.1 * Add `seconds_per_eth1_block` to chainspec * Update to timestamp based eth1 voting scheme * Return None from `get_votes_to_consider` if block cache is empty * Handle overflows in `is_candidate_block` * Revert to failing tests * Fix eth1 data sets test * Choose default vote according to spec * Fix collect_valid_votes tests * Fix `get_votes_to_consider` to choose all eligible blocks * Uncomment winning_vote tests * Add comments; remove unused code * Reduce seconds_per_eth1_block for simulation * Addressed review comments * Add test for default vote case * Fix logs * Remove unused functions * Meter default eth1 votes * Fix comments * Address review comments; remove unused dependency * Disable/delete two outdated tests * Bump eth1 default vote warn to error * Delete outdated eth1 test Co-authored-by: Pawan Dhananjay <pawandhananjay@gmail.com>
This commit is contained in:
@@ -5,7 +5,7 @@ use eth2_testnet_config::Eth2TestnetConfig;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use std::path::PathBuf;
|
||||
use types::{ChainSpec, Epoch, EthSpec, Fork, YamlConfig};
|
||||
use types::{ChainSpec, EthSpec, YamlConfig};
|
||||
use web3::{transports::Http, Web3};
|
||||
|
||||
pub const SECONDS_PER_ETH1_BLOCK: u64 = 15;
|
||||
@@ -128,13 +128,9 @@ pub fn lighthouse_testnet_spec(mut spec: ChainSpec) -> ChainSpec {
|
||||
// slot of that new chain.
|
||||
//
|
||||
// With a follow distance of 16, this is 40mins.
|
||||
spec.seconds_per_day = SECONDS_PER_ETH1_BLOCK * spec.eth1_follow_distance * 2 * 5;
|
||||
spec.min_genesis_delay = SECONDS_PER_ETH1_BLOCK * spec.eth1_follow_distance * 2 * 5;
|
||||
|
||||
spec.genesis_fork = Fork {
|
||||
previous_version: [0, 0, 0, 0],
|
||||
current_version: [1, 3, 3, 7],
|
||||
epoch: Epoch::new(0),
|
||||
};
|
||||
spec.genesis_fork_version = [1, 3, 3, 7];
|
||||
|
||||
spec
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ use futures::Future;
|
||||
use genesis::{Eth1Config, Eth1GenesisService};
|
||||
use std::path::PathBuf;
|
||||
use std::time::Duration;
|
||||
use types::{Epoch, EthSpec, Fork};
|
||||
use types::EthSpec;
|
||||
|
||||
/// Interval between polling the eth1 node for genesis information.
|
||||
pub const ETH1_GENESIS_UPDATE_INTERVAL: Duration = Duration::from_millis(7_000);
|
||||
@@ -40,11 +40,7 @@ pub fn run<T: EthSpec>(mut env: Environment<T>, matches: &ArgMatches) -> Result<
|
||||
)
|
||||
})?;
|
||||
|
||||
spec.genesis_fork = Fork {
|
||||
previous_version: [0, 0, 0, 0],
|
||||
current_version: [1, 3, 3, 7],
|
||||
epoch: Epoch::new(0),
|
||||
};
|
||||
spec.genesis_fork_version = [1, 3, 3, 7];
|
||||
|
||||
let mut config = Eth1Config::default();
|
||||
config.endpoint = endpoint.to_string();
|
||||
|
||||
@@ -4,7 +4,7 @@ use eth2_testnet_config::Eth2TestnetConfig;
|
||||
use genesis::interop_genesis_state;
|
||||
use std::path::PathBuf;
|
||||
use std::time::{SystemTime, UNIX_EPOCH};
|
||||
use types::{test_utils::generate_deterministic_keypairs, Epoch, EthSpec, Fork};
|
||||
use types::{test_utils::generate_deterministic_keypairs, EthSpec};
|
||||
|
||||
pub fn run<T: EthSpec>(mut env: Environment<T>, matches: &ArgMatches) -> Result<(), String> {
|
||||
let validator_count = matches
|
||||
@@ -49,11 +49,7 @@ pub fn run<T: EthSpec>(mut env: Environment<T>, matches: &ArgMatches) -> Result<
|
||||
)
|
||||
})?;
|
||||
|
||||
spec.genesis_fork = Fork {
|
||||
previous_version: [0, 0, 0, 0],
|
||||
current_version: [1, 3, 3, 7],
|
||||
epoch: Epoch::new(0),
|
||||
};
|
||||
spec.genesis_fork_version = [1, 3, 3, 7];
|
||||
|
||||
let keypairs = generate_deterministic_keypairs(validator_count);
|
||||
let genesis_state = interop_genesis_state(&keypairs, genesis_time, &spec)?;
|
||||
|
||||
@@ -4,7 +4,7 @@ use state_processing::{per_block_processing, per_slot_processing, BlockSignature
|
||||
use std::fs::File;
|
||||
use std::io::prelude::*;
|
||||
use std::path::PathBuf;
|
||||
use types::{BeaconBlock, BeaconState, EthSpec};
|
||||
use types::{BeaconState, EthSpec, SignedBeaconBlock};
|
||||
|
||||
pub fn run_transition_blocks<T: EthSpec>(matches: &ArgMatches) -> Result<(), String> {
|
||||
let pre_state_path = matches
|
||||
@@ -30,7 +30,7 @@ pub fn run_transition_blocks<T: EthSpec>(matches: &ArgMatches) -> Result<(), Str
|
||||
info!("Block path: {:?}", block_path);
|
||||
|
||||
let pre_state: BeaconState<T> = load_from_ssz(pre_state_path)?;
|
||||
let block: BeaconBlock<T> = load_from_ssz(block_path)?;
|
||||
let block: SignedBeaconBlock<T> = load_from_ssz(block_path)?;
|
||||
|
||||
let post_state = do_transition(pre_state, block)?;
|
||||
|
||||
@@ -46,7 +46,7 @@ pub fn run_transition_blocks<T: EthSpec>(matches: &ArgMatches) -> Result<(), Str
|
||||
|
||||
fn do_transition<T: EthSpec>(
|
||||
mut pre_state: BeaconState<T>,
|
||||
block: BeaconBlock<T>,
|
||||
block: SignedBeaconBlock<T>,
|
||||
) -> Result<BeaconState<T>, String> {
|
||||
let spec = &T::default_spec();
|
||||
|
||||
@@ -55,7 +55,7 @@ fn do_transition<T: EthSpec>(
|
||||
.map_err(|e| format!("Unable to build caches: {:?}", e))?;
|
||||
|
||||
// Transition the parent state to the block slot.
|
||||
for i in pre_state.slot.as_u64()..block.slot.as_u64() {
|
||||
for i in pre_state.slot.as_u64()..block.slot().as_u64() {
|
||||
per_slot_processing(&mut pre_state, None, spec)
|
||||
.map_err(|e| format!("Failed to advance slot on iteration {}: {:?}", i, e))?;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user