mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-16 19:32:55 +00:00
* Start implementing proto_array
* Add progress
* Add unfinished progress
* Add further progress
* Add progress
* Add tree filtering
* Add half-finished modifications
* Add refactored version
* Tidy, add incomplete LmdGhost impl
* Move impls in LmdGhost trait def
* Remove old reduced_tree fork choice
* Combine two functions in to `compute_deltas`
* Start testing
* Add more compute_deltas tests
* Add fork choice testing
* Add more fork choice testing
* Add more fork choice tests
* Add more testing to proto-array
* Remove old tests
* Modify tests
* Add more tests
* Add more testing
* Add comments and fixes
* Re-organise crate
* Tidy, finish pruning tests
* Add ssz encoding, other pub fns
* Rename lmd_ghost > proto_array_fork_choice
* Integrate proto_array into lighthouse
* Add first pass at fixing filter
* Clean out old comments
* Add more comments
* Attempt to fix prune error
* Adjust TODO
* Fix test compile errors
* Add extra justification change check
* Update cargo.lock
* Fix fork choice test compile errors
* Most remove ffg_update_required
* Fix bug with epoch of attestation votes
* Start adding new test format
* Make fork choice tests declarative
* Create test def concept
* Move test defs into crate
* Add binary, re-org crate
* Shuffle files
* Start adding ffg tests
* Add more fork choice tests
* Add fork choice JSON dumping
* Add more detail to best node error
* Ensure fin+just checkpoints from from same block
* Rename JustificationManager
* Move checkpoint manager into own file
* Tidy
* Add targetted logging for sneaky sync bug
* Fix justified balances bug
* Add cache metrics
* Add metrics for log levels
* Fix bug in checkpoint manager
* Fix compile error in fork choice tests
* Ignore duplicate blocks in fork choice
* Add block to fock choice before db
* Rename on_new_block fn
* Fix spec inconsistency in `CheckpointManager`
* Remove BlockRootTree
* Remove old reduced_tree code fragment
* Add API endpoint for fork choice
* Add more ffg tests
* Remove block_root_tree reminents
* Ensure effective balances are used
* Remove old debugging code, fix API fault
* Add check to ensure parent block is in fork choice
* Update readme dates
* Fix readme
* Tidy checkpoint manager
* Remove fork choice yaml files from repo
* Remove fork choice yaml from repo
* General tidy
* Address majority of Michael's comments
* Tidy bin/lib business
* Remove dangling file
* Undo changes for rpc/handler from master
* Revert "Undo changes for rpc/handler from master"
This reverts commit 876edff0e4.
Co-authored-by: Age Manning <Age@AgeManning.com>
55 lines
1.7 KiB
Rust
55 lines
1.7 KiB
Rust
use crate::{
|
|
proto_array::{ProtoArray, ProtoNode},
|
|
proto_array_fork_choice::{ElasticList, ProtoArrayForkChoice, VoteTracker},
|
|
};
|
|
use parking_lot::RwLock;
|
|
use ssz_derive::{Decode, Encode};
|
|
use std::collections::HashMap;
|
|
use std::iter::FromIterator;
|
|
use types::{Epoch, Hash256};
|
|
|
|
#[derive(Encode, Decode)]
|
|
pub struct SszContainer {
|
|
votes: Vec<VoteTracker>,
|
|
balances: Vec<u64>,
|
|
prune_threshold: usize,
|
|
justified_epoch: Epoch,
|
|
finalized_epoch: Epoch,
|
|
nodes: Vec<ProtoNode>,
|
|
indices: Vec<(Hash256, usize)>,
|
|
}
|
|
|
|
impl From<&ProtoArrayForkChoice> for SszContainer {
|
|
fn from(from: &ProtoArrayForkChoice) -> Self {
|
|
let proto_array = from.proto_array.read();
|
|
|
|
Self {
|
|
votes: from.votes.read().0.clone(),
|
|
balances: from.balances.read().clone(),
|
|
prune_threshold: proto_array.prune_threshold,
|
|
justified_epoch: proto_array.justified_epoch,
|
|
finalized_epoch: proto_array.finalized_epoch,
|
|
nodes: proto_array.nodes.clone(),
|
|
indices: proto_array.indices.iter().map(|(k, v)| (*k, *v)).collect(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl From<SszContainer> for ProtoArrayForkChoice {
|
|
fn from(from: SszContainer) -> Self {
|
|
let proto_array = ProtoArray {
|
|
prune_threshold: from.prune_threshold,
|
|
justified_epoch: from.justified_epoch,
|
|
finalized_epoch: from.finalized_epoch,
|
|
nodes: from.nodes,
|
|
indices: HashMap::from_iter(from.indices.into_iter()),
|
|
};
|
|
|
|
Self {
|
|
proto_array: RwLock::new(proto_array),
|
|
votes: RwLock::new(ElasticList(from.votes)),
|
|
balances: RwLock::new(from.balances),
|
|
}
|
|
}
|
|
}
|