@@ -185,6 +185,23 @@ def test_incorrect_commitment(spec, state):
185
185
yield from run_execution_payload_processing (spec , state , execution_payload , blob_kzg_commitments )
186
186
187
187
188
+ @with_deneb_and_later
189
+ @spec_state_test
190
+ def test_no_commitments_for_transactions (spec , state ):
191
+ """
192
+ The versioned hashes are wrong, but the testing ExecutionEngine returns VALID by default.
193
+ """
194
+ execution_payload = build_empty_execution_payload (spec , state )
195
+
196
+ opaque_tx , _ , blob_kzg_commitments , _ = get_sample_blob_tx (spec , blob_count = 2 , rng = Random (1111 ))
197
+ blob_kzg_commitments = [] # incorrect count
198
+
199
+ execution_payload .transactions = [opaque_tx ]
200
+ execution_payload .block_hash = compute_el_block_hash (spec , execution_payload , state )
201
+
202
+ yield from run_execution_payload_processing (spec , state , execution_payload , blob_kzg_commitments )
203
+
204
+
188
205
@with_deneb_and_later
189
206
@spec_state_test
190
207
def test_incorrect_commitments_order (spec , state ):
@@ -202,6 +219,26 @@ def test_incorrect_commitments_order(spec, state):
202
219
yield from run_execution_payload_processing (spec , state , execution_payload , blob_kzg_commitments )
203
220
204
221
222
+ @with_deneb_and_later
223
+ @spec_state_test
224
+ def test_incorrect_transaction_no_blobs_but_with_commitments (spec , state ):
225
+ """
226
+ The versioned hashes are wrong, but the testing ExecutionEngine returns VALID by default.
227
+ """
228
+ execution_payload = build_empty_execution_payload (spec , state )
229
+
230
+ # the blob transaction is invalid, because the EL verifies that the tx contains at least one blob
231
+ # therefore the EL should reject it, but the CL should not reject the block regardless
232
+ opaque_tx , _ , _ , _ = get_sample_blob_tx (spec , blob_count = 0 , rng = Random (1111 ))
233
+ _ , _ , blob_kzg_commitments , _ = get_sample_blob_tx (spec , blob_count = 2 , rng = Random (1112 ))
234
+
235
+ execution_payload .transactions = [opaque_tx ]
236
+ execution_payload .block_hash = compute_el_block_hash (spec , execution_payload , state )
237
+
238
+ # the transaction doesn't contain any blob, but commitments are provided
239
+ yield from run_execution_payload_processing (spec , state , execution_payload , blob_kzg_commitments )
240
+
241
+
205
242
@with_deneb_and_later
206
243
@spec_state_test
207
244
def test_incorrect_block_hash (spec , state ):
0 commit comments