mirror of
https://github.com/sigp/lighthouse.git
synced 2026-06-29 10:54:24 +00:00
block and blob handling progress
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
use std::marker::PhantomData;
|
||||
use std::sync::Arc;
|
||||
use tree_hash::TreeHash;
|
||||
use types::{
|
||||
AbstractExecPayload, BeaconState, BeaconStateError, BlobsSidecar, ChainSpec, EthSpec,
|
||||
@@ -14,12 +15,11 @@ pub struct ConsensusContext<T: EthSpec> {
|
||||
/// Block root of the block at `slot`.
|
||||
current_block_root: Option<Hash256>,
|
||||
/// Should only be populated if the sidecar has not been validated.
|
||||
blobs_sidecar: Option<Box<BlobsSidecar<T>>>,
|
||||
blobs_sidecar: Option<Arc<BlobsSidecar<T>>>,
|
||||
/// Whether `validate_blobs_sidecar` has successfully passed.
|
||||
blobs_sidecar_validated: bool,
|
||||
/// Whether `verify_kzg_commitments_against_transactions` has successfully passed.
|
||||
blobs_verified_vs_txs: bool,
|
||||
_phantom: PhantomData<T>,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Clone)]
|
||||
@@ -43,7 +43,6 @@ impl<T: EthSpec> ConsensusContext<T> {
|
||||
blobs_sidecar: None,
|
||||
blobs_sidecar_validated: false,
|
||||
blobs_verified_vs_txs: false,
|
||||
_phantom: PhantomData,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,4 +115,9 @@ impl<T: EthSpec> ConsensusContext<T> {
|
||||
pub fn blobs_verified_vs_txs(&self) -> bool {
|
||||
self.blobs_verified_vs_txs
|
||||
}
|
||||
|
||||
pub fn set_blobs_sidecar(mut self, blobs_sidecar: Option<Arc<BlobsSidecar<T>>>) -> Self {
|
||||
self.blobs_sidecar = blobs_sidecar;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,27 @@ use tree_hash_derive::TreeHash;
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, Encode, Decode, TreeHash, PartialEq)]
|
||||
#[serde(bound = "T: EthSpec")]
|
||||
pub struct SignedBeaconBlockAndBlobsSidecar<T: EthSpec> {
|
||||
pub struct SignedBeaconBlockAndBlobsSidecarDecode<T: EthSpec> {
|
||||
pub beacon_block: SignedBeaconBlockEip4844<T>,
|
||||
pub blobs_sidecar: BlobsSidecar<T>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, Encode, TreeHash, PartialEq)]
|
||||
#[serde(bound = "T: EthSpec")]
|
||||
pub struct SignedBeaconBlockAndBlobsSidecar<T: EthSpec> {
|
||||
pub beacon_block: Arc<SignedBeaconBlock<T>>,
|
||||
pub blobs_sidecar: Arc<BlobsSidecar<T>>,
|
||||
}
|
||||
|
||||
impl<T: EthSpec> SignedBeaconBlockAndBlobsSidecar<T> {
|
||||
pub fn from_ssz_bytes(bytes: &[u8]) -> Result<Self, DecodeError> {
|
||||
let SignedBeaconBlockAndBlobsSidecarDecode {
|
||||
beacon_block,
|
||||
blobs_sidecar,
|
||||
} = SignedBeaconBlockAndBlobsSidecarDecode::from_ssz_bytes(bytes)?;
|
||||
Ok(SignedBeaconBlockAndBlobsSidecar {
|
||||
beacon_block: Arc::new(SignedBeaconBlock::Eip4844(beacon_block)),
|
||||
blobs_sidecar: Arc::new(blobs_sidecar),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user