diff --git a/beacon_node/beacon_chain/src/block_production/gloas.rs b/beacon_node/beacon_chain/src/block_production/gloas.rs index 52f01cbe75..615a74b233 100644 --- a/beacon_node/beacon_chain/src/block_production/gloas.rs +++ b/beacon_node/beacon_chain/src/block_production/gloas.rs @@ -15,7 +15,7 @@ use state_processing::{ use state_processing::{VerifyOperation, state_advance::complete_state_advance}; use tracing::{Span, debug, debug_span, error, instrument, trace, warn}; use tree_hash::TreeHash; -use types::consts::gloas::{BID_VALUE_SELF_BUILD, BUILDER_INDEX_SELF_BUILD}; +use types::consts::gloas::{BID_VALUE_SELF_BUILD, BUILDER_INDEX_SELF_BUILD, EXECUTION_PAYMENT_TRUSTLESS_BUILD}; use types::{ Address, Attestation, AttestationElectra, AttesterSlashing, AttesterSlashingElectra, BeaconBlock, BeaconBlockBodyGloas, BeaconBlockGloas, BeaconState, BlockProductionVersion, @@ -148,7 +148,13 @@ impl BeaconChain { // We'll need to build out trustless/trusted bid paths. let (execution_payload_bid, state, payload_data) = self .clone() - .produce_execution_payload_bid(state, state_root_opt, produce_at_slot, BID_VALUE_SELF_BUILD, BUILDER_INDEX_SELF_BUILD) + .produce_execution_payload_bid( + state, + state_root_opt, + produce_at_slot, + BID_VALUE_SELF_BUILD, + BUILDER_INDEX_SELF_BUILD, + ) .await?; // Part 3/3 (blocking) @@ -694,7 +700,9 @@ impl BeaconChain { } } BlockProposalContentsType::Blinded(_) => { - return Err(BlockProductionError::Unexpected("Should never produce a blinded block post-Gloas".to_owned())); + return Err(BlockProductionError::Unexpected( + "Should never produce a blinded block post-Gloas".to_owned(), + )); } }; @@ -706,6 +714,8 @@ impl BeaconChain { .map_err(|_| BlockProductionError::GloasNotImplemented)? .to_owned(); + // TODO(gloas) since we are defaulting to local building, execution payment is 0 + // execution payment should only be set to > 0 for trusted building. let bid = ExecutionPayloadBid:: { parent_block_hash: state.latest_block_hash()?.to_owned(), parent_block_root: state.get_latest_block_root(state_root), @@ -716,7 +726,7 @@ impl BeaconChain { builder_index, slot: produce_at_slot, value: bid_value, - execution_payment: 0, + execution_payment: EXECUTION_PAYMENT_TRUSTLESS_BUILD, blob_kzg_commitments, }; diff --git a/beacon_node/beacon_chain/src/pending_payload_envelopes.rs b/beacon_node/beacon_chain/src/pending_payload_envelopes.rs index 80e71b1178..336ab5323f 100644 --- a/beacon_node/beacon_chain/src/pending_payload_envelopes.rs +++ b/beacon_node/beacon_chain/src/pending_payload_envelopes.rs @@ -61,6 +61,7 @@ impl PendingPayloadEnvelopes { /// Prune envelopes older than `current_slot - max_slot_age`. /// /// This removes stale envelopes from blocks that were never published. + // TODO(gloas) implement pruning pub fn prune(&mut self, current_slot: Slot) { let min_slot = current_slot.saturating_sub(self.max_slot_age); self.envelopes.retain(|slot, _| *slot >= min_slot); diff --git a/consensus/types/src/core/consts.rs b/consensus/types/src/core/consts.rs index c1e9b695fa..0e131f26ff 100644 --- a/consensus/types/src/core/consts.rs +++ b/consensus/types/src/core/consts.rs @@ -29,6 +29,7 @@ pub mod gloas { pub const BUILDER_INDEX_SELF_BUILD: u64 = u64::MAX; pub const BUILDER_INDEX_FLAG: u64 = 1 << 40; pub const BID_VALUE_SELF_BUILD: u64 = 0; + pub const EXECUTION_PAYMENT_TRUSTLESS_BUILD: u64 = 0; // Fork choice constants pub type PayloadStatus = u8; diff --git a/consensus/types/src/execution/execution_payload_envelope.rs b/consensus/types/src/execution/execution_payload_envelope.rs index 978a35dfb9..598a6ef525 100644 --- a/consensus/types/src/execution/execution_payload_envelope.rs +++ b/consensus/types/src/execution/execution_payload_envelope.rs @@ -33,44 +33,4 @@ mod tests { use rand_xorshift::XorShiftRng; ssz_and_tree_hash_tests!(ExecutionPayloadEnvelope); - - #[test] - fn signing_root_is_deterministic() { - let mut rng = XorShiftRng::from_seed([0x42; 16]); - let envelope = ExecutionPayloadEnvelope::::random_for_test(&mut rng); - let domain = Hash256::random_for_test(&mut rng); - - let signing_root_1 = envelope.signing_root(domain); - let signing_root_2 = envelope.signing_root(domain); - - assert_eq!(signing_root_1, signing_root_2); - } - - #[test] - fn signing_root_changes_with_domain() { - let mut rng = XorShiftRng::from_seed([0x42; 16]); - let envelope = ExecutionPayloadEnvelope::::random_for_test(&mut rng); - let domain_1 = Hash256::random_for_test(&mut rng); - let domain_2 = Hash256::random_for_test(&mut rng); - - let signing_root_1 = envelope.signing_root(domain_1); - let signing_root_2 = envelope.signing_root(domain_2); - - assert_ne!(signing_root_1, signing_root_2); - } - - #[test] - fn signing_root_changes_with_envelope_data() { - let mut rng = XorShiftRng::from_seed([0x42; 16]); - let envelope_1 = ExecutionPayloadEnvelope::::random_for_test(&mut rng); - let mut envelope_2 = envelope_1.clone(); - envelope_2.beacon_block_root = Hash256::random_for_test(&mut rng); - - let domain = Hash256::random_for_test(&mut rng); - - let signing_root_1 = envelope_1.signing_root(domain); - let signing_root_2 = envelope_2.signing_root(domain); - - assert_ne!(signing_root_1, signing_root_2); - } }