@@ -182,6 +182,9 @@ def get_proposer_preferences_signature(
182182
183183#### Constructing the ` BeaconBlockBody `
184184
185+ Let ` head = get_head(store) ` be the parent block the proposer is building on,
186+ from which ` state ` was derived.
187+
185188##### Signed execution payload bid
186189
187190To obtain ` signed_execution_payload_bid ` , a block proposer building a block on
@@ -202,7 +205,7 @@ top of a `state` MUST take the following actions in order to construct the
202205 - The ` bid.slot ` is for the proposal block slot.
203206 - The ` bid.parent_block_hash ` equals
204207 ` state.latest_execution_payload_bid.block_hash ` if
205- ` should_extend_payload (store, block.parent_root )` is true, otherwise
208+ ` should_build_on_full (store, head )` is true, otherwise
206209 ` state.latest_execution_payload_bid.parent_block_hash ` .
207210 - The ` bid.parent_block_root ` equals the current block's ` parent_root ` .
208211- Select one bid and set
@@ -232,8 +235,7 @@ construct the `payload_attestations` field in `BeaconBlockBody`:
232235##### Parent execution requests
233236
234237The ` parent_execution_requests ` field contains the execution requests from the
235- parent's execution payload. Let ` head = get_head(store) ` . The proposer
236- constructs this field as follows:
238+ parent's execution payload. The proposer constructs this field as follows:
237239
238240- If the parent block is pre-Gloas (first Gloas block), set
239241 ` parent_execution_requests ` to an empty ` ExecutionRequests() ` .
@@ -245,14 +247,11 @@ constructs this field as follows:
245247
246248##### ExecutionPayload
247249
248- * Note* : ` prepare_execution_payload ` is modified in Gloas to take ` store ` and
249- ` head ` as additional parameters. ` head ` is the return value of ` get_head(store) `
250- and must correspond to the parent that ` state ` was derived from. It consults
251- ` should_build_on_full(store, head) ` to decide whether to build on the parent's
252- full payload or its empty variant, selecting both the withdrawals source and the
253- execution head for the new payload. When building on a full parent,
254- ` apply_parent_execution_payload ` is called so that withdrawals are computed
255- against the post-processing state.
250+ * Note* : ` prepare_execution_payload ` is modified to build on the parent's full
251+ payload or its empty variant, as decided by ` should_build_on_full(store, head) ` ,
252+ which determines the withdrawals source and the execution head for the new
253+ payload. When building on a full parent, ` apply_parent_execution_payload ` is
254+ called so that withdrawals are computed against the post-processing state.
256255
257256``` python
258257def prepare_execution_payload (
0 commit comments