Files
lighthouse/beacon_node/beacon_chain/src/persisted_fork_choice.rs
Michael Sproul bd34bb1430 Remove schema migrations for v28 and earlier (#9031)
With LH v8.1.3 supporting Fulu-on-Gnosis, we no longer need these DB migrations. All Lighthouse nodes running in prod will soon be updated to LH v8.0.0+ and schema v28+.

This PR helps with Gloas fork choice changes, by allowing us to avoid updating old schema migrations when adding V29 for Gloas:

- https://github.com/sigp/lighthouse/pull/9025


  


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-26 02:10:34 +00:00

48 lines
1.7 KiB
Rust

use crate::{beacon_fork_choice_store::PersistedForkChoiceStoreV28, metrics};
use ssz::{Decode, Encode};
use ssz_derive::{Decode, Encode};
use store::{DBColumn, Error, KeyValueStoreOp, StoreConfig};
use superstruct::superstruct;
use types::Hash256;
// If adding a new version you should update this type alias and fix the breakages.
pub type PersistedForkChoice = PersistedForkChoiceV28;
#[superstruct(variants(V28), variant_attributes(derive(Encode, Decode)), no_enum)]
pub struct PersistedForkChoice {
pub fork_choice: fork_choice::PersistedForkChoiceV28,
pub fork_choice_store: PersistedForkChoiceStoreV28,
}
impl PersistedForkChoiceV28 {
pub fn from_bytes(bytes: &[u8], store_config: &StoreConfig) -> Result<Self, Error> {
let decompressed_bytes = store_config
.decompress_bytes(bytes)
.map_err(Error::Compression)?;
Self::from_ssz_bytes(&decompressed_bytes).map_err(Into::into)
}
pub fn as_bytes(&self, store_config: &StoreConfig) -> Result<Vec<u8>, Error> {
let encode_timer = metrics::start_timer(&metrics::FORK_CHOICE_ENCODE_TIMES);
let ssz_bytes = self.as_ssz_bytes();
drop(encode_timer);
let _compress_timer = metrics::start_timer(&metrics::FORK_CHOICE_COMPRESS_TIMES);
store_config
.compress_bytes(&ssz_bytes)
.map_err(Error::Compression)
}
pub fn as_kv_store_op(
&self,
key: Hash256,
store_config: &StoreConfig,
) -> Result<KeyValueStoreOp, Error> {
Ok(KeyValueStoreOp::PutKeyValue(
DBColumn::ForkChoice,
key.as_slice().to_vec(),
self.as_bytes(store_config)?,
))
}
}