Skip to content

Commit

Permalink
Merge pull request #4085 from debjit-bw/electra-test
Browse files Browse the repository at this point in the history
Add test with multiple deposit requests with same pubkey but different withdrawal credentials
  • Loading branch information
jtraglia authored Jan 20, 2025
2 parents b1c70a9 + 13d9aa1 commit 188a2ff
Showing 1 changed file with 32 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -262,3 +262,35 @@ def test_deposit_transition__deposit_and_top_up_same_block(spec, state):
assert state.pending_deposits[pre_pending_deposits].amount == block.body.deposits[0].data.amount
amount_from_deposit = block.body.execution_requests.deposits[0].amount
assert state.pending_deposits[pre_pending_deposits + 1].amount == amount_from_deposit


@with_phases([ELECTRA])
@spec_state_test
def test_deposit_transition__deposit_with_same_pubkey_different_withdrawal_credentials(spec, state):
deposit_count = 1
deposit_request_count = 4

state, block = prepare_state_and_block(spec, state,
deposit_cnt=deposit_count,
deposit_request_cnt=deposit_request_count)

# pick 2 indices among deposit requests to have the same pubkey as the deposit
indices_with_same_pubkey = [1, 3]
for index in indices_with_same_pubkey:
block.body.execution_requests.deposits[index].pubkey = block.body.deposits[0].data.pubkey
# ensure top-up deposit request withdrawal credentials are different than the deposit
assert (block.body.execution_requests.deposits[index].withdrawal_credentials
!= block.body.deposits[0].data.withdrawal_credentials)

block.body.execution_payload.block_hash = compute_el_block_hash_for_block(spec, block)

deposit_requests = block.body.execution_requests.deposits.copy()

yield from run_deposit_transition_block(spec, state, block)

assert len(state.pending_deposits) == deposit_request_count + deposit_count
for index in indices_with_same_pubkey:
assert state.pending_deposits[deposit_count + index].pubkey == deposit_requests[index].pubkey
# ensure withdrawal credentials are retained, rather than being made the same
assert (state.pending_deposits[deposit_count + index].withdrawal_credentials
== deposit_requests[index].withdrawal_credentials)

0 comments on commit 188a2ff

Please sign in to comment.