mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-18 21:38:31 +00:00
Altair consensus changes and refactors (#2279)
## Proposed Changes Implement the consensus changes necessary for the upcoming Altair hard fork. ## Additional Info This is quite a heavy refactor, with pivotal types like the `BeaconState` and `BeaconBlock` changing from structs to enums. This ripples through the whole codebase with field accesses changing to methods, e.g. `state.slot` => `state.slot()`. Co-authored-by: realbigsean <seananderson33@gmail.com>
This commit is contained in:
@@ -1,26 +1,28 @@
|
||||
use crate::helpers::parse_path;
|
||||
use clap::ArgMatches;
|
||||
use serde::Serialize;
|
||||
use ssz::Decode;
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
use types::{EthSpec, SignedBeaconBlock};
|
||||
use types::*;
|
||||
|
||||
pub fn run<T: EthSpec>(matches: &ArgMatches) -> Result<(), String> {
|
||||
let type_str = matches
|
||||
.value_of("type")
|
||||
.ok_or("No type supplied")?;
|
||||
let path = parse_path(matches, "path")?;
|
||||
|
||||
info!("Type: {:?}", type_str);
|
||||
pub fn run_parse_ssz<T: EthSpec>(matches: &ArgMatches) -> Result<(), String> {
|
||||
let type_str = matches.value_of("type").ok_or("No type supplied")?;
|
||||
let filename = matches.value_of("ssz-file").ok_or("No file supplied")?;
|
||||
|
||||
let mut bytes = vec![];
|
||||
let mut file = File::open(&path).map_err(|e| format!("Unable to open {:?}: {}", path, e))?;
|
||||
let mut file =
|
||||
File::open(filename).map_err(|e| format!("Unable to open {}: {}", filename, e))?;
|
||||
file.read_to_end(&mut bytes)
|
||||
.map_err(|e| format!("Unable to read {:?}: {}", path, e))?;
|
||||
.map_err(|e| format!("Unable to read {}: {}", filename, e))?;
|
||||
|
||||
info!("Using {} spec", T::spec_name());
|
||||
info!("Type: {:?}", type_str);
|
||||
|
||||
match type_str {
|
||||
"SignedBeaconBlock" => decode_and_print::<SignedBeaconBlock<T>>(&bytes)?,
|
||||
"block_base" => decode_and_print::<BeaconBlockBase<T>>(&bytes)?,
|
||||
"block_altair" => decode_and_print::<BeaconBlockAltair<T>>(&bytes)?,
|
||||
"state_base" => decode_and_print::<BeaconStateBase<T>>(&bytes)?,
|
||||
"state_altair" => decode_and_print::<BeaconStateAltair<T>>(&bytes)?,
|
||||
other => return Err(format!("Unknown type: {}", other)),
|
||||
};
|
||||
|
||||
@@ -28,7 +30,7 @@ pub fn run<T: EthSpec>(matches: &ArgMatches) -> Result<(), String> {
|
||||
}
|
||||
|
||||
fn decode_and_print<T: Decode + Serialize>(bytes: &[u8]) -> Result<(), String> {
|
||||
let item = T::from_ssz_bytes(&bytes).map_err(|e| format!("Ssz decode failed: {:?}", e))?;
|
||||
let item = T::from_ssz_bytes(&bytes).map_err(|e| format!("SSZ decode failed: {:?}", e))?;
|
||||
|
||||
println!(
|
||||
"{}",
|
||||
|
||||
Reference in New Issue
Block a user