@@ -56,10 +56,13 @@ def _build_invalid_envelope(spec, state, block_root, signed_block, **overrides):
5656 setattr (payload , key , overrides .pop (key ))
5757
5858 envelope = spec .ExecutionPayloadEnvelope (
59- beacon_block_root = overrides .pop ("beacon_block_root" , block_root ),
6059 payload = payload ,
6160 execution_requests = overrides .pop ("execution_requests" , spec .ExecutionRequests ()),
6261 builder_index = overrides .pop ("builder_index" , builder_index ),
62+ beacon_block_root = overrides .pop ("beacon_block_root" , block_root ),
63+ parent_beacon_block_root = overrides .pop (
64+ "parent_beacon_block_root" , state .latest_block_header .parent_root
65+ ),
6366 )
6467
6568 if overrides .pop ("valid_signature" , True ):
@@ -191,6 +194,33 @@ def test_on_execution_payload_envelope__wrong_beacon_block_root(spec, state):
191194 yield "steps" , test_steps
192195
193196
197+ @with_gloas_and_later
198+ @spec_state_test
199+ def test_on_execution_payload_envelope__wrong_parent_beacon_block_root (spec , state ):
200+ test_steps = []
201+ store , anchor_block = get_genesis_forkchoice_store_and_block (spec , state )
202+ yield "anchor_state" , state
203+ yield "anchor_block" , anchor_block
204+
205+ current_time = state .slot * (spec .config .SLOT_DURATION_MS // 1000 ) + store .genesis_time
206+ on_tick_and_append_step (spec , store , current_time , test_steps )
207+
208+ signed_block , block_root = yield from _add_block_and_get_root (spec , state , store , test_steps )
209+
210+ envelope = _build_invalid_envelope (
211+ spec ,
212+ state ,
213+ block_root ,
214+ signed_block ,
215+ parent_beacon_block_root = spec .Root (b"\x42 " * 32 ),
216+ )
217+ yield from add_execution_payload (spec , store , envelope , test_steps , valid = False )
218+
219+ assert block_root not in store .payloads
220+
221+ yield "steps" , test_steps
222+
223+
194224@with_gloas_and_later
195225@spec_state_test
196226def test_on_execution_payload_envelope__wrong_slot (spec , state ):
0 commit comments