diff --git a/packages/beacon-node/test/spec/presets/operations.test.ts b/packages/beacon-node/test/spec/presets/operations.test.ts index b6a479ee379..4c90831ef15 100644 --- a/packages/beacon-node/test/spec/presets/operations.test.ts +++ b/packages/beacon-node/test/spec/presets/operations.test.ts @@ -92,8 +92,7 @@ const operationFns: Record> = }, deposit_request: (state, testCase: {deposit_request: electra.DepositRequest}) => { - const fork = state.config.getForkSeq(state.slot); - blockFns.processDepositRequest(fork, state as CachedBeaconStateElectra, testCase.deposit_request); + blockFns.processDepositRequest(state as CachedBeaconStateElectra, testCase.deposit_request); }, consolidation_request: (state, testCase: {consolidation_request: electra.ConsolidationRequest}) => { diff --git a/packages/state-transition/src/block/processDeposit.ts b/packages/state-transition/src/block/processDeposit.ts index 50622d81a2d..b7e9827c4cd 100644 --- a/packages/state-transition/src/block/processDeposit.ts +++ b/packages/state-transition/src/block/processDeposit.ts @@ -55,11 +55,11 @@ export function applyDeposit( state: CachedBeaconStateAllForks, deposit: DepositData | DepositRequest ): void { - const {config, epochCtx} = state; + const {config, epochCtx, validators} = state; const {pubkey, withdrawalCredentials, amount, signature} = deposit; const cachedIndex = epochCtx.getValidatorIndex(pubkey); - const isNewValidator = cachedIndex === null || !Number.isSafeInteger(cachedIndex); + const isNewValidator = cachedIndex === null || !Number.isSafeInteger(cachedIndex) || cachedIndex >= validators.length; if (fork < ForkSeq.electra) { if (isNewValidator) { diff --git a/packages/state-transition/src/block/processDepositRequest.ts b/packages/state-transition/src/block/processDepositRequest.ts index a349c372d51..7c6ea4928f5 100644 --- a/packages/state-transition/src/block/processDepositRequest.ts +++ b/packages/state-transition/src/block/processDepositRequest.ts @@ -3,11 +3,7 @@ import {ForkSeq, UNSET_DEPOSIT_REQUESTS_START_INDEX} from "@lodestar/params"; import {CachedBeaconStateElectra} from "../types.js"; -export function processDepositRequest( - fork: ForkSeq, - state: CachedBeaconStateElectra, - depositRequest: electra.DepositRequest -): void { +export function processDepositRequest(state: CachedBeaconStateElectra, depositRequest: electra.DepositRequest): void { if (state.depositRequestsStartIndex === UNSET_DEPOSIT_REQUESTS_START_INDEX) { state.depositRequestsStartIndex = BigInt(depositRequest.index); } diff --git a/packages/state-transition/src/block/processOperations.ts b/packages/state-transition/src/block/processOperations.ts index bb52af14ba3..d611581584c 100644 --- a/packages/state-transition/src/block/processOperations.ts +++ b/packages/state-transition/src/block/processOperations.ts @@ -68,7 +68,7 @@ export function processOperations( const bodyElectra = body as electra.BeaconBlockBody; for (const depositRequest of bodyElectra.executionRequests.deposits) { - processDepositRequest(fork, stateElectra, depositRequest); + processDepositRequest(stateElectra, depositRequest); } for (const elWithdrawalRequest of bodyElectra.executionRequests.withdrawals) {