Merge branch 'gloas-move-commitments-to-bid' into gloas-data-availability-checker

This commit is contained in:
Eitan Seri- Levi
2026-01-29 21:24:11 -08:00
8 changed files with 22 additions and 18 deletions

View File

@@ -49,7 +49,7 @@ pub enum PubsubMessage<E: EthSpec> {
/// Gossipsub message providing notification of a payload attestation message. /// Gossipsub message providing notification of a payload attestation message.
PayloadAttestation(Box<PayloadAttestationMessage>), PayloadAttestation(Box<PayloadAttestationMessage>),
/// Gossipsub message providing notification of a signed execution payload bid. /// Gossipsub message providing notification of a signed execution payload bid.
ExecutionPayloadBid(Box<SignedExecutionPayloadBid>), ExecutionPayloadBid(Box<SignedExecutionPayloadBid<E>>),
/// Gossipsub message providing notification of signed proposer preferences. /// Gossipsub message providing notification of signed proposer preferences.
ProposerPreferences(Box<SignedProposerPreferences>), ProposerPreferences(Box<SignedProposerPreferences>),
/// Gossipsub message providing notification of a light client finality update. /// Gossipsub message providing notification of a light client finality update.

View File

@@ -3250,7 +3250,7 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
self: &Arc<Self>, self: &Arc<Self>,
message_id: MessageId, message_id: MessageId,
peer_id: PeerId, peer_id: PeerId,
payload_bid: SignedExecutionPayloadBid, payload_bid: SignedExecutionPayloadBid<T::EthSpec>,
) { ) {
// TODO(EIP-7732): Implement proper payload bid gossip processing. // TODO(EIP-7732): Implement proper payload bid gossip processing.
// This should integrate with a payload execution bid verification module once it's implemented. // This should integrate with a payload execution bid verification module once it's implemented.

View File

@@ -448,7 +448,7 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
self: &Arc<Self>, self: &Arc<Self>,
message_id: MessageId, message_id: MessageId,
peer_id: PeerId, peer_id: PeerId,
execution_payload_bid: Box<SignedExecutionPayloadBid>, execution_payload_bid: Box<SignedExecutionPayloadBid<T::EthSpec>>,
) -> Result<(), Error<T::EthSpec>> { ) -> Result<(), Error<T::EthSpec>> {
let processor = self.clone(); let processor = self.clone();
let process_fn = move || { let process_fn = move || {

View File

@@ -167,7 +167,7 @@ pub struct BeaconBlockBody<E: EthSpec, Payload: AbstractExecPayload<E> = FullPay
#[superstruct(only(Electra, Fulu))] #[superstruct(only(Electra, Fulu))]
pub execution_requests: ExecutionRequests<E>, pub execution_requests: ExecutionRequests<E>,
#[superstruct(only(Gloas))] #[superstruct(only(Gloas))]
pub signed_execution_payload_bid: SignedExecutionPayloadBid, pub signed_execution_payload_bid: SignedExecutionPayloadBid<E>,
#[superstruct(only(Gloas))] #[superstruct(only(Gloas))]
pub payload_attestations: VariableList<PayloadAttestation<E>, E::MaxPayloadAttestations>, pub payload_attestations: VariableList<PayloadAttestation<E>, E::MaxPayloadAttestations>,
#[superstruct(only(Base, Altair, Gloas))] #[superstruct(only(Base, Altair, Gloas))]

View File

@@ -1,5 +1,7 @@
use crate::test_utils::TestRandom; use crate::test_utils::TestRandom;
use crate::{Address, ExecutionBlockHash, ForkName, Hash256, SignedRoot, Slot}; use crate::{
Address, EthSpec, ExecutionBlockHash, ForkName, Hash256, KzgCommitments, SignedRoot, Slot,
};
use context_deserialize::context_deserialize; use context_deserialize::context_deserialize;
use educe::Educe; use educe::Educe;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@@ -12,9 +14,10 @@ use tree_hash_derive::TreeHash;
)] )]
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
#[educe(PartialEq, Hash)] #[educe(PartialEq, Hash)]
#[serde(bound = "E: EthSpec")]
#[context_deserialize(ForkName)] #[context_deserialize(ForkName)]
// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#executionpayloadbid // https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#executionpayloadbid
pub struct ExecutionPayloadBid { pub struct ExecutionPayloadBid<E: EthSpec> {
pub parent_block_hash: ExecutionBlockHash, pub parent_block_hash: ExecutionBlockHash,
pub parent_block_root: Hash256, pub parent_block_root: Hash256,
pub block_hash: ExecutionBlockHash, pub block_hash: ExecutionBlockHash,
@@ -30,14 +33,15 @@ pub struct ExecutionPayloadBid {
pub value: u64, pub value: u64,
#[serde(with = "serde_utils::quoted_u64")] #[serde(with = "serde_utils::quoted_u64")]
pub execution_payment: u64, pub execution_payment: u64,
pub blob_kzg_commitments_root: Hash256, pub blob_kzg_commitments: KzgCommitments<E>,
} }
impl SignedRoot for ExecutionPayloadBid {} impl<E: EthSpec> SignedRoot for ExecutionPayloadBid<E> {}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::MainnetEthSpec;
ssz_and_tree_hash_tests!(ExecutionPayloadBid); ssz_and_tree_hash_tests!(ExecutionPayloadBid<MainnetEthSpec>);
} }

View File

@@ -1,7 +1,6 @@
use crate::test_utils::TestRandom; use crate::test_utils::TestRandom;
use crate::{ use crate::{
EthSpec, ExecutionPayloadGloas, ExecutionRequests, ForkName, Hash256, KzgCommitments, EthSpec, ExecutionPayloadGloas, ExecutionRequests, ForkName, Hash256, SignedRoot, Slot,
SignedRoot, Slot,
}; };
use context_deserialize::context_deserialize; use context_deserialize::context_deserialize;
use educe::Educe; use educe::Educe;
@@ -21,7 +20,6 @@ pub struct ExecutionPayloadEnvelope<E: EthSpec> {
pub builder_index: u64, pub builder_index: u64,
pub beacon_block_root: Hash256, pub beacon_block_root: Hash256,
pub slot: Slot, pub slot: Slot,
pub blob_kzg_commitments: KzgCommitments<E>,
pub state_root: Hash256, pub state_root: Hash256,
} }

View File

@@ -1,5 +1,5 @@
use crate::test_utils::TestRandom; use crate::test_utils::TestRandom;
use crate::{ExecutionPayloadBid, ForkName}; use crate::{EthSpec, ExecutionPayloadBid, ForkName};
use bls::Signature; use bls::Signature;
use context_deserialize::context_deserialize; use context_deserialize::context_deserialize;
use educe::Educe; use educe::Educe;
@@ -11,14 +11,15 @@ use tree_hash_derive::TreeHash;
#[derive(TestRandom, TreeHash, Debug, Clone, Encode, Decode, Serialize, Deserialize, Educe)] #[derive(TestRandom, TreeHash, Debug, Clone, Encode, Decode, Serialize, Deserialize, Educe)]
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
#[educe(PartialEq, Hash)] #[educe(PartialEq, Hash)]
#[serde(bound = "E: EthSpec")]
#[context_deserialize(ForkName)] #[context_deserialize(ForkName)]
// https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#signedexecutionpayloadbid // https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/beacon-chain.md#signedexecutionpayloadbid
pub struct SignedExecutionPayloadBid { pub struct SignedExecutionPayloadBid<E: EthSpec> {
pub message: ExecutionPayloadBid, pub message: ExecutionPayloadBid<E>,
pub signature: Signature, pub signature: Signature,
} }
impl SignedExecutionPayloadBid { impl<E: EthSpec> SignedExecutionPayloadBid<E> {
pub fn empty() -> Self { pub fn empty() -> Self {
Self { Self {
message: ExecutionPayloadBid::default(), message: ExecutionPayloadBid::default(),
@@ -30,6 +31,7 @@ impl SignedExecutionPayloadBid {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
use crate::MainnetEthSpec;
ssz_and_tree_hash_tests!(SignedExecutionPayloadBid); ssz_and_tree_hash_tests!(SignedExecutionPayloadBid<MainnetEthSpec>);
} }

View File

@@ -547,7 +547,7 @@ where
pub latest_execution_payload_header: ExecutionPayloadHeaderFulu<E>, pub latest_execution_payload_header: ExecutionPayloadHeaderFulu<E>,
#[superstruct(only(Gloas))] #[superstruct(only(Gloas))]
#[metastruct(exclude_from(tree_lists))] #[metastruct(exclude_from(tree_lists))]
pub latest_execution_payload_bid: ExecutionPayloadBid, pub latest_execution_payload_bid: ExecutionPayloadBid<E>,
#[superstruct(only(Capella, Deneb, Electra, Fulu, Gloas), partial_getter(copy))] #[superstruct(only(Capella, Deneb, Electra, Fulu, Gloas), partial_getter(copy))]
#[serde(with = "serde_utils::quoted_u64")] #[serde(with = "serde_utils::quoted_u64")]
#[metastruct(exclude_from(tree_lists))] #[metastruct(exclude_from(tree_lists))]