@@ -229,7 +229,7 @@ def from_fixture_header(
229229
230230EngineNewPayloadV1Parameters = Tuple [FixtureExecutionPayload ]
231231EngineNewPayloadV3Parameters = Tuple [FixtureExecutionPayload , List [Hash ], Hash ]
232- EngineNewPayloadV4Parameters = Tuple [FixtureExecutionPayload , List [Hash ], Hash , List [Bytes ]]
232+ EngineNewPayloadV4Parameters = Tuple [FixtureExecutionPayload , List [Hash ], Hash , List [Bytes ], HexNumber ]
233233
234234# Important: We check EngineNewPayloadV3Parameters first as it has more fields, and pydantic
235235# has a weird behavior when the smaller tuple is checked first.
@@ -291,32 +291,34 @@ def from_fixture_header(
291291 transactions = transactions ,
292292 withdrawals = withdrawals ,
293293 )
294- params : EngineNewPayloadParameters
295- if (
296- fork .engine_new_payload_requests (header .number , header .timestamp )
297- and requests is not None
298- ):
299- parent_beacon_block_root = header .parent_beacon_block_root
300- assert parent_beacon_block_root is not None
301- params = (
302- execution_payload ,
303- Transaction .list_blob_versioned_hashes (transactions ),
304- parent_beacon_block_root ,
305- requests ,
306- )
307- elif fork .engine_new_payload_blob_hashes (header .number , header .timestamp ):
308- parent_beacon_block_root = header .parent_beacon_block_root
309- assert parent_beacon_block_root is not None
310- params = (
311- execution_payload ,
312- Transaction .list_blob_versioned_hashes (transactions ),
313- parent_beacon_block_root ,
314- )
315- else :
316- params = (execution_payload ,)
317294
295+ params : List [Any ] = [execution_payload ]
296+ if fork .engine_new_payload_blob_hashes (header .number , header .timestamp ):
297+ blob_hashes = Transaction .list_blob_versioned_hashes (transactions )
298+ if blob_hashes is None :
299+ raise ValueError (f"Blob hashes are required for ${ fork } ." )
300+ params .append (blob_hashes )
301+
302+ if fork .engine_new_payload_beacon_root (header .number , header .timestamp ):
303+ parent_beacon_block_root = header .parent_beacon_block_root
304+ if parent_beacon_block_root is None :
305+ raise ValueError (f"Parent beacon block root is required for ${ fork } ." )
306+ params .append (parent_beacon_block_root )
307+
308+ if fork .engine_new_payload_requests (header .number , header .timestamp ):
309+ if requests is None :
310+ raise ValueError (f"Requests are required for ${ fork } ." )
311+ params .append (requests )
312+
313+ if fork .engine_new_payload_target_blob_count (header .number , header .timestamp ):
314+ target_blob_count = header .target_blob_count
315+ if target_blob_count is None :
316+ raise ValueError (f"Target blob count is required for ${ fork } ." )
317+ params .append (target_blob_count )
318+
319+ payload_params : EngineNewPayloadParameters = tuple (params )
318320 new_payload = cls (
319- params = params ,
321+ params = payload_params ,
320322 new_payload_version = new_payload_version ,
321323 forkchoice_updated_version = forkchoice_updated_version ,
322324 ** kwargs ,
0 commit comments