Skip to content

Commit

Permalink
builder gas limit & some refactoring (#6583)
Browse files Browse the repository at this point in the history
* Cache gas_limit

* Payload Parameters Refactor

* Enforce Proposer Gas Limit

* Fixed and Added New Tests

* Fix Beacon Chain Tests
  • Loading branch information
ethDreamer authored Dec 16, 2024
1 parent 11e1d5b commit 86891e6
Show file tree
Hide file tree
Showing 14 changed files with 598 additions and 243 deletions.
24 changes: 17 additions & 7 deletions beacon_node/beacon_chain/src/execution_payload.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use crate::{
};
use execution_layer::{
BlockProposalContents, BlockProposalContentsType, BuilderParams, NewPayloadRequest,
PayloadAttributes, PayloadStatus,
PayloadAttributes, PayloadParameters, PayloadStatus,
};
use fork_choice::{InvalidationOperation, PayloadVerificationStatus};
use proto_array::{Block as ProtoBlock, ExecutionStatus};
Expand Down Expand Up @@ -375,8 +375,9 @@ pub fn get_execution_payload<T: BeaconChainTypes>(
let timestamp =
compute_timestamp_at_slot(state, state.slot(), spec).map_err(BeaconStateError::from)?;
let random = *state.get_randao_mix(current_epoch)?;
let latest_execution_payload_header_block_hash =
state.latest_execution_payload_header()?.block_hash();
let latest_execution_payload_header = state.latest_execution_payload_header()?;
let latest_execution_payload_header_block_hash = latest_execution_payload_header.block_hash();
let latest_execution_payload_header_gas_limit = latest_execution_payload_header.gas_limit();
let withdrawals = match state {
&BeaconState::Capella(_) | &BeaconState::Deneb(_) | &BeaconState::Electra(_) => {
Some(get_expected_withdrawals(state, spec)?.0.into())
Expand Down Expand Up @@ -406,6 +407,7 @@ pub fn get_execution_payload<T: BeaconChainTypes>(
random,
proposer_index,
latest_execution_payload_header_block_hash,
latest_execution_payload_header_gas_limit,
builder_params,
withdrawals,
parent_beacon_block_root,
Expand Down Expand Up @@ -443,6 +445,7 @@ pub async fn prepare_execution_payload<T>(
random: Hash256,
proposer_index: u64,
latest_execution_payload_header_block_hash: ExecutionBlockHash,
latest_execution_payload_header_gas_limit: u64,
builder_params: BuilderParams,
withdrawals: Option<Vec<Withdrawal>>,
parent_beacon_block_root: Option<Hash256>,
Expand Down Expand Up @@ -526,13 +529,20 @@ where
parent_beacon_block_root,
);

let target_gas_limit = execution_layer.get_proposer_gas_limit(proposer_index).await;
let payload_parameters = PayloadParameters {
parent_hash,
parent_gas_limit: latest_execution_payload_header_gas_limit,
proposer_gas_limit: target_gas_limit,
payload_attributes: &payload_attributes,
forkchoice_update_params: &forkchoice_update_params,
current_fork: fork,
};

let block_contents = execution_layer
.get_payload(
parent_hash,
&payload_attributes,
forkchoice_update_params,
payload_parameters,
builder_params,
fork,
&chain.spec,
builder_boost_factor,
block_production_version,
Expand Down
22 changes: 14 additions & 8 deletions beacon_node/beacon_chain/tests/payload_invalidation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -986,10 +986,13 @@ async fn payload_preparation() {
// Provide preparation data to the EL for `proposer`.
el.update_proposer_preparation(
Epoch::new(1),
&[ProposerPreparationData {
validator_index: proposer as u64,
fee_recipient,
}],
[(
&ProposerPreparationData {
validator_index: proposer as u64,
fee_recipient,
},
&None,
)],
)
.await;

Expand Down Expand Up @@ -1119,10 +1122,13 @@ async fn payload_preparation_before_transition_block() {
// Provide preparation data to the EL for `proposer`.
el.update_proposer_preparation(
Epoch::new(0),
&[ProposerPreparationData {
validator_index: proposer as u64,
fee_recipient,
}],
[(
&ProposerPreparationData {
validator_index: proposer as u64,
fee_recipient,
},
&None,
)],
)
.await;

Expand Down
Loading

0 comments on commit 86891e6

Please sign in to comment.