@lodestar/state-transition 1.48.0-dev.a427d3dbb5 → 1.48.0-dev.af8bc602aa

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/lib/block/index.d.ts.map +1 -1
  2. package/lib/block/index.js +11 -41
  3. package/lib/block/index.js.map +1 -1
  4. package/lib/block/processOperations.d.ts.map +1 -1
  5. package/lib/block/processOperations.js +33 -62
  6. package/lib/block/processOperations.js.map +1 -1
  7. package/lib/block/processParentExecutionPayload.d.ts.map +1 -1
  8. package/lib/block/processParentExecutionPayload.js +15 -1
  9. package/lib/block/processParentExecutionPayload.js.map +1 -1
  10. package/lib/block/processPayloadAttestation.d.ts +1 -1
  11. package/lib/block/processPayloadAttestation.d.ts.map +1 -1
  12. package/lib/block/processPayloadAttestation.js +2 -2
  13. package/lib/block/processPayloadAttestation.js.map +1 -1
  14. package/lib/block/types.d.ts +0 -30
  15. package/lib/block/types.d.ts.map +1 -1
  16. package/lib/block/types.js +0 -32
  17. package/lib/block/types.js.map +1 -1
  18. package/lib/epoch/processPtcWindow.d.ts.map +1 -1
  19. package/lib/epoch/processPtcWindow.js +9 -12
  20. package/lib/epoch/processPtcWindow.js.map +1 -1
  21. package/lib/index.d.ts +1 -1
  22. package/lib/index.d.ts.map +1 -1
  23. package/lib/index.js +1 -1
  24. package/lib/index.js.map +1 -1
  25. package/lib/metrics.d.ts +1 -7
  26. package/lib/metrics.d.ts.map +1 -1
  27. package/lib/metrics.js +1 -12
  28. package/lib/metrics.js.map +1 -1
  29. package/lib/signatureSets/index.d.ts.map +1 -1
  30. package/lib/signatureSets/index.js +0 -8
  31. package/lib/signatureSets/index.js.map +1 -1
  32. package/lib/stateView/beaconStateView.d.ts +0 -4
  33. package/lib/stateView/beaconStateView.d.ts.map +1 -1
  34. package/lib/stateView/beaconStateView.js +0 -9
  35. package/lib/stateView/beaconStateView.js.map +1 -1
  36. package/lib/stateView/interface.d.ts +0 -1
  37. package/lib/stateView/interface.d.ts.map +1 -1
  38. package/lib/stateView/interface.js.map +1 -1
  39. package/lib/stateView/nativeBeaconStateView.d.ts +0 -1
  40. package/lib/stateView/nativeBeaconStateView.d.ts.map +1 -1
  41. package/lib/stateView/nativeBeaconStateView.js +0 -3
  42. package/lib/stateView/nativeBeaconStateView.js.map +1 -1
  43. package/lib/util/gloas.d.ts.map +1 -1
  44. package/lib/util/gloas.js +1 -1
  45. package/lib/util/gloas.js.map +1 -1
  46. package/lib/util/seed.d.ts +1 -1
  47. package/lib/util/seed.d.ts.map +1 -1
  48. package/lib/util/seed.js +11 -14
  49. package/lib/util/seed.js.map +1 -1
  50. package/package.json +8 -8
  51. package/src/block/index.ts +15 -48
  52. package/src/block/processOperations.ts +45 -63
  53. package/src/block/processParentExecutionPayload.ts +26 -1
  54. package/src/block/processPayloadAttestation.ts +2 -3
  55. package/src/block/types.ts +0 -32
  56. package/src/epoch/processPtcWindow.ts +8 -15
  57. package/src/index.ts +1 -1
  58. package/src/metrics.ts +2 -13
  59. package/src/signatureSets/index.ts +3 -17
  60. package/src/stateView/beaconStateView.ts +0 -12
  61. package/src/stateView/interface.ts +0 -1
  62. package/src/stateView/nativeBeaconStateView.ts +0 -4
  63. package/src/util/gloas.ts +0 -1
  64. package/src/util/seed.ts +13 -25
package/lib/util/seed.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { digest } from "@chainsafe/as-sha256";
2
- import { computePtcIndicesForEpoch } from "@chainsafe/lodestar-z/shuffle";
3
2
  import { computeProposerIndex as nativeComputeProposerIndex, computeSyncCommitteeIndices as nativeComputeSyncCommitteeIndices, } from "@chainsafe/swap-or-not-shuffle";
4
3
  import { DOMAIN_BEACON_PROPOSER, DOMAIN_PTC_ATTESTER, DOMAIN_SYNC_COMMITTEE, EFFECTIVE_BALANCE_INCREMENT, EPOCHS_PER_HISTORICAL_VECTOR, ForkSeq, MAX_EFFECTIVE_BALANCE, MAX_EFFECTIVE_BALANCE_ELECTRA, MIN_SEED_LOOKAHEAD, PTC_SIZE, SHUFFLE_ROUND_COUNT, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SIZE, } from "@lodestar/params";
5
4
  import { assert, bytesToBigInt, bytesToInt, intToBytes } from "@lodestar/utils";
@@ -167,23 +166,21 @@ export function getNextSyncCommitteeIndices(fork, state, activeValidatorIndices,
167
166
  /**
168
167
  * Compute PTC for all slots in an epoch eagerly.
169
168
  */
170
- export function computePayloadTimelinessCommitteesForEpoch(state, epoch, committees, shuffling, effectiveBalanceIncrements) {
169
+ export function computePayloadTimelinessCommitteesForEpoch(state, epoch, committees, effectiveBalanceIncrements) {
171
170
  const epochSeed = getSeed(state, epoch, DOMAIN_PTC_ATTESTER);
172
171
  const startSlot = epoch * SLOTS_PER_EPOCH;
173
- const slotOffsets = new Uint32Array(SLOTS_PER_EPOCH + 1);
174
- let shufflingLength = 0;
175
- for (let i = 0; i < SLOTS_PER_EPOCH; i++) {
176
- slotOffsets[i] = shufflingLength;
177
- for (const committee of committees[i]) {
178
- shufflingLength += committee.length;
179
- }
180
- }
181
- slotOffsets[SLOTS_PER_EPOCH] = shufflingLength;
182
- // Native sampling returns all committees concatenated in slot order, with PTC_SIZE indices per slot.
183
- const flatPtcIndices = computePtcIndicesForEpoch(epochSeed, startSlot, SLOTS_PER_EPOCH, shuffling, slotOffsets, effectiveBalanceIncrements, PTC_SIZE, MAX_EFFECTIVE_BALANCE_ELECTRA, EFFECTIVE_BALANCE_INCREMENT);
184
172
  const result = new Array(SLOTS_PER_EPOCH);
173
+ // Pre-allocate slot seed buffer once, reuse across all slots
174
+ const slotSeedInput = new Uint8Array(epochSeed.length + 8);
175
+ slotSeedInput.set(epochSeed, 0);
176
+ const slotSeedView = new DataView(slotSeedInput.buffer, slotSeedInput.byteOffset, slotSeedInput.byteLength);
185
177
  for (let i = 0; i < SLOTS_PER_EPOCH; i++) {
186
- result[i] = flatPtcIndices.subarray(i * PTC_SIZE, (i + 1) * PTC_SIZE);
178
+ const slot = startSlot + i;
179
+ // Write slot as little-endian uint64 (fits in uint32 range)
180
+ slotSeedView.setUint32(epochSeed.length, slot, true);
181
+ slotSeedView.setUint32(epochSeed.length + 4, 0, true);
182
+ const slotSeed = digest(slotSeedInput);
183
+ result[i] = computePayloadTimelinessCommitteeForSlot(slotSeed, committees[i], effectiveBalanceIncrements);
187
184
  }
188
185
  return result;
189
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.48.0-dev.a427d3dbb5",
14
+ "version": "1.48.0-dev.af8bc602aa",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -68,16 +68,16 @@
68
68
  "@chainsafe/as-sha256": "^1.2.5",
69
69
  "@chainsafe/lodestar-z": "catalog:",
70
70
  "@chainsafe/persistent-merkle-tree": "^1.3.1",
71
- "@chainsafe/ssz": "^1.7.0",
71
+ "@chainsafe/ssz": "^1.6.3",
72
72
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
73
- "@lodestar/config": "^1.48.0-dev.a427d3dbb5",
74
- "@lodestar/params": "^1.48.0-dev.a427d3dbb5",
75
- "@lodestar/types": "^1.48.0-dev.a427d3dbb5",
76
- "@lodestar/utils": "^1.48.0-dev.a427d3dbb5",
73
+ "@lodestar/config": "^1.48.0-dev.af8bc602aa",
74
+ "@lodestar/params": "^1.48.0-dev.af8bc602aa",
75
+ "@lodestar/types": "^1.48.0-dev.af8bc602aa",
76
+ "@lodestar/utils": "^1.48.0-dev.af8bc602aa",
77
77
  "@vekexasia/bigint-buffer2": "^1.1.1"
78
78
  },
79
79
  "devDependencies": {
80
- "@lodestar/api": "^1.48.0-dev.a427d3dbb5"
80
+ "@lodestar/api": "^1.48.0-dev.af8bc602aa"
81
81
  },
82
82
  "keywords": [
83
83
  "ethereum",
@@ -85,5 +85,5 @@
85
85
  "beacon",
86
86
  "blockchain"
87
87
  ],
88
- "gitHead": "2f6134fcfbb949b061a5ca9a4b6005b23bbd5eb8"
88
+ "gitHead": "c0820d99b0af1d6822d6ff21691c377bbf4ab611"
89
89
  }
@@ -20,7 +20,7 @@ import {processPayloadAttestation} from "./processPayloadAttestation.js";
20
20
  import {processRandao} from "./processRandao.js";
21
21
  import {processSyncAggregate} from "./processSyncCommittee.js";
22
22
  import {processWithdrawals} from "./processWithdrawals.js";
23
- import {BlockProcessStep, ProcessBlockOpts, ProposerRewardType} from "./types.js";
23
+ import {ProcessBlockOpts, ProposerRewardType} from "./types.js";
24
24
 
25
25
  // Spec tests
26
26
  export {
@@ -60,31 +60,21 @@ export function processBlock(
60
60
  // Apply the parent's deferred payload effects before everything else. Must run before
61
61
  // processBlockHeader and processExecutionPayloadBid so subsequent steps see the updated state.
62
62
  if (fork >= ForkSeq.gloas) {
63
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processParentExecutionPayload});
64
63
  processParentExecutionPayload(state as CachedBeaconStateGloas, block as BeaconBlock<ForkPostGloas>);
65
- timer?.();
66
64
  }
67
65
 
68
- {
69
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processBlockHeader});
70
- processBlockHeader(state, block);
71
- timer?.();
72
- }
66
+ processBlockHeader(state, block);
73
67
 
74
- if (fork >= ForkSeq.capella) {
75
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processWithdrawals});
76
- if (fork >= ForkSeq.gloas) {
77
- // Parent payload's execution requests were already applied by processParentExecutionPayload above
78
- processWithdrawals(fork, state as CachedBeaconStateGloas);
79
- } else {
80
- const fullOrBlindedPayload = getFullOrBlindedPayload(block);
81
- processWithdrawals(
82
- fork,
83
- state as CachedBeaconStateCapella,
84
- fullOrBlindedPayload as capella.FullOrBlindedExecutionPayload
85
- );
86
- }
87
- timer?.();
68
+ if (fork >= ForkSeq.gloas) {
69
+ // Parent payload's execution requests were already applied by processParentExecutionPayload above
70
+ processWithdrawals(fork, state as CachedBeaconStateGloas);
71
+ } else if (fork >= ForkSeq.capella) {
72
+ const fullOrBlindedPayload = getFullOrBlindedPayload(block);
73
+ processWithdrawals(
74
+ fork,
75
+ state as CachedBeaconStateCapella,
76
+ fullOrBlindedPayload as capella.FullOrBlindedExecutionPayload
77
+ );
88
78
  }
89
79
 
90
80
  // The call to the process_execution_payload must happen before the call to the process_randao as the former depends
@@ -97,48 +87,25 @@ export function processBlock(
97
87
  fork >= ForkSeq.bellatrix &&
98
88
  isExecutionEnabled(state as CachedBeaconStateBellatrix, block)
99
89
  ) {
100
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processExecutionPayload});
101
90
  processExecutionPayload(fork, state as CachedBeaconStateBellatrix, block.body, externalData);
102
- timer?.();
103
91
  }
104
92
 
105
93
  if (fork >= ForkSeq.gloas) {
106
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processExecutionPayloadBid});
107
94
  processExecutionPayloadBid(
108
95
  state as CachedBeaconStateGloas,
109
96
  (block as BeaconBlock<ForkPostGloas>).body.signedExecutionPayloadBid
110
97
  );
111
- timer?.();
112
- }
113
-
114
- {
115
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processRandao});
116
- processRandao(state, block, verifySignatures);
117
- timer?.();
118
- }
119
-
120
- {
121
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processEth1Data});
122
- processEth1Data(state, block.body.eth1Data);
123
- timer?.();
124
- }
125
-
126
- {
127
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processOperations});
128
- processOperations(fork, state, block.body, parentSlot, opts, metrics);
129
- timer?.();
130
98
  }
131
99
 
100
+ processRandao(state, block, verifySignatures);
101
+ processEth1Data(state, block.body.eth1Data);
102
+ processOperations(fork, state, block.body, parentSlot, opts, metrics);
132
103
  if (fork >= ForkSeq.altair) {
133
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processSyncAggregate});
134
104
  processSyncAggregate(state, block as altair.BeaconBlock, verifySignatures);
135
- timer?.();
136
105
  }
137
106
 
138
107
  if (fork >= ForkSeq.deneb) {
139
- const timer = metrics?.processBlockStepTime.startTimer({step: BlockProcessStep.processBlobKzgCommitments});
140
108
  processBlobKzgCommitments(externalData);
141
- timer?.();
142
109
  // Only throw PreData so beacon can also sync/process blocks optimistically
143
110
  // and let forkChoice handle it
144
111
  if (externalData.dataAvailabilityStatus === DataAvailabilityStatus.PreData) {
@@ -1,4 +1,12 @@
1
- import {ForkSeq} from "@lodestar/params";
1
+ import {
2
+ ForkSeq,
3
+ MAX_ATTESTATIONS_ELECTRA,
4
+ MAX_ATTESTER_SLASHINGS_ELECTRA,
5
+ MAX_BLS_TO_EXECUTION_CHANGES,
6
+ MAX_PAYLOAD_ATTESTATIONS,
7
+ MAX_PROPOSER_SLASHINGS,
8
+ MAX_VOLUNTARY_EXITS,
9
+ } from "@lodestar/params";
2
10
  import {BeaconBlockBody, Slot, capella, electra, gloas} from "@lodestar/types";
3
11
  import {BeaconStateTransitionMetrics} from "../metrics.js";
4
12
  import {
@@ -18,7 +26,7 @@ import {processPayloadAttestation} from "./processPayloadAttestation.js";
18
26
  import {processProposerSlashing} from "./processProposerSlashing.js";
19
27
  import {processVoluntaryExit} from "./processVoluntaryExit.js";
20
28
  import {processWithdrawalRequest} from "./processWithdrawalRequest.js";
21
- import {ProcessBlockOpts, ProcessOperationsStep} from "./types.js";
29
+ import {ProcessBlockOpts} from "./types.js";
22
30
 
23
31
  export {
24
32
  processProposerSlashing,
@@ -40,6 +48,10 @@ export function processOperations(
40
48
  opts: ProcessBlockOpts = {verifySignatures: true},
41
49
  metrics?: BeaconStateTransitionMetrics | null
42
50
  ): void {
51
+ if (fork >= ForkSeq.gloas) {
52
+ assertGloasOperationLimits(body as gloas.BeaconBlockBody);
53
+ }
54
+
43
55
  // verify that outstanding deposits are processed up to the maximum number of deposits.
44
56
  // From Fulu the eth1 bridge deposit mechanism was removed, so blocks must not contain any deposits.
45
57
  const maxDeposits = fork >= ForkSeq.fulu ? 0 : getEth1DepositCount(state);
@@ -49,94 +61,64 @@ export function processOperations(
49
61
  );
50
62
  }
51
63
 
52
- {
53
- const timer = metrics?.processOperationsStepTime.startTimer({step: ProcessOperationsStep.processProposerSlashing});
54
- for (const proposerSlashing of body.proposerSlashings) {
55
- processProposerSlashing(fork, state, proposerSlashing, opts.verifySignatures);
56
- }
57
- timer?.();
64
+ for (const proposerSlashing of body.proposerSlashings) {
65
+ processProposerSlashing(fork, state, proposerSlashing, opts.verifySignatures);
58
66
  }
59
-
60
- {
61
- const timer = metrics?.processOperationsStepTime.startTimer({step: ProcessOperationsStep.processAttesterSlashing});
62
- for (const attesterSlashing of body.attesterSlashings) {
63
- processAttesterSlashing(fork, state, attesterSlashing, opts.verifySignatures);
64
- }
65
- timer?.();
67
+ for (const attesterSlashing of body.attesterSlashings) {
68
+ processAttesterSlashing(fork, state, attesterSlashing, opts.verifySignatures);
66
69
  }
67
70
 
68
- {
69
- const timer = metrics?.processOperationsStepTime.startTimer({step: ProcessOperationsStep.processAttestations});
70
- processAttestations(fork, state, body.attestations, parentSlot, opts.verifySignatures, metrics);
71
- timer?.();
72
- }
71
+ processAttestations(fork, state, body.attestations, parentSlot, opts.verifySignatures, metrics);
73
72
 
74
- {
75
- const timer = metrics?.processOperationsStepTime.startTimer({step: ProcessOperationsStep.processDeposit});
76
- for (const deposit of body.deposits) {
77
- processDeposit(fork, state, deposit);
78
- }
79
- timer?.();
73
+ for (const deposit of body.deposits) {
74
+ processDeposit(fork, state, deposit);
80
75
  }
81
76
 
82
- {
83
- const timer = metrics?.processOperationsStepTime.startTimer({step: ProcessOperationsStep.processVoluntaryExit});
84
- for (const voluntaryExit of body.voluntaryExits) {
85
- processVoluntaryExit(fork, state, voluntaryExit, opts.verifySignatures);
86
- }
87
- timer?.();
77
+ for (const voluntaryExit of body.voluntaryExits) {
78
+ processVoluntaryExit(fork, state, voluntaryExit, opts.verifySignatures);
88
79
  }
89
80
 
90
81
  if (fork >= ForkSeq.capella) {
91
- const timer = metrics?.processOperationsStepTime.startTimer({
92
- step: ProcessOperationsStep.processBlsToExecutionChange,
93
- });
94
82
  for (const blsToExecutionChange of (body as capella.BeaconBlockBody).blsToExecutionChanges) {
95
83
  processBlsToExecutionChange(state as CachedBeaconStateCapella, blsToExecutionChange);
96
84
  }
97
- timer?.();
98
85
  }
99
86
 
100
87
  if (fork >= ForkSeq.electra && fork < ForkSeq.gloas) {
101
88
  const stateElectra = state as CachedBeaconStateElectra;
102
89
  const bodyElectra = body as electra.BeaconBlockBody;
103
90
 
104
- {
105
- const timer = metrics?.processOperationsStepTime.startTimer({step: ProcessOperationsStep.processDepositRequest});
106
- for (const depositRequest of bodyElectra.executionRequests.deposits) {
107
- processDepositRequest(fork, stateElectra, depositRequest);
108
- }
109
- timer?.();
91
+ for (const depositRequest of bodyElectra.executionRequests.deposits) {
92
+ processDepositRequest(fork, stateElectra, depositRequest);
110
93
  }
111
94
 
112
- {
113
- const timer = metrics?.processOperationsStepTime.startTimer({
114
- step: ProcessOperationsStep.processWithdrawalRequest,
115
- });
116
- for (const elWithdrawalRequest of bodyElectra.executionRequests.withdrawals) {
117
- processWithdrawalRequest(fork, stateElectra, elWithdrawalRequest);
118
- }
119
- timer?.();
95
+ for (const elWithdrawalRequest of bodyElectra.executionRequests.withdrawals) {
96
+ processWithdrawalRequest(fork, stateElectra, elWithdrawalRequest);
120
97
  }
121
98
 
122
- {
123
- const timer = metrics?.processOperationsStepTime.startTimer({
124
- step: ProcessOperationsStep.processConsolidationRequest,
125
- });
126
- for (const elConsolidationRequest of bodyElectra.executionRequests.consolidations) {
127
- processConsolidationRequest(stateElectra, elConsolidationRequest);
128
- }
129
- timer?.();
99
+ for (const elConsolidationRequest of bodyElectra.executionRequests.consolidations) {
100
+ processConsolidationRequest(stateElectra, elConsolidationRequest);
130
101
  }
131
102
  }
132
103
 
133
104
  if (fork >= ForkSeq.gloas) {
134
- const timer = metrics?.processOperationsStepTime.startTimer({
135
- step: ProcessOperationsStep.processPayloadAttestation,
136
- });
137
105
  for (const payloadAttestation of (body as gloas.BeaconBlockBody).payloadAttestations) {
138
- processPayloadAttestation(state as CachedBeaconStateGloas, payloadAttestation, opts.verifySignatures);
106
+ processPayloadAttestation(state as CachedBeaconStateGloas, payloadAttestation);
139
107
  }
140
- timer?.();
108
+ }
109
+ }
110
+
111
+ function assertGloasOperationLimits(body: gloas.BeaconBlockBody): void {
112
+ assertMaxLength("proposerSlashings", body.proposerSlashings.length, MAX_PROPOSER_SLASHINGS);
113
+ assertMaxLength("attesterSlashings", body.attesterSlashings.length, MAX_ATTESTER_SLASHINGS_ELECTRA);
114
+ assertMaxLength("attestations", body.attestations.length, MAX_ATTESTATIONS_ELECTRA);
115
+ assertMaxLength("voluntaryExits", body.voluntaryExits.length, MAX_VOLUNTARY_EXITS);
116
+ assertMaxLength("blsToExecutionChanges", body.blsToExecutionChanges.length, MAX_BLS_TO_EXECUTION_CHANGES);
117
+ assertMaxLength("payloadAttestations", body.payloadAttestations.length, MAX_PAYLOAD_ATTESTATIONS);
118
+ }
119
+
120
+ function assertMaxLength(name: string, length: number, limit: number): void {
121
+ if (length > limit) {
122
+ throw new Error(`Block contains too many ${name}: count=${length} limit=${limit}`);
141
123
  }
142
124
  }
@@ -1,4 +1,12 @@
1
- import {ForkPostGloas, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT} from "@lodestar/params";
1
+ import {
2
+ ForkPostGloas,
3
+ MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD,
4
+ MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD,
5
+ MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD,
6
+ MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD,
7
+ SLOTS_PER_EPOCH,
8
+ SLOTS_PER_HISTORICAL_ROOT,
9
+ } from "@lodestar/params";
2
10
  import {BeaconBlock, gloas, ssz} from "@lodestar/types";
3
11
  import {byteArrayEquals, toRootHex} from "@lodestar/utils";
4
12
  import {CachedBeaconStateGloas} from "../types.js";
@@ -47,6 +55,8 @@ export function processParentExecutionPayload(state: CachedBeaconStateGloas, blo
47
55
  * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.6/specs/gloas/beacon-chain.md#new-apply_parent_execution_payload
48
56
  */
49
57
  export function applyParentExecutionPayload(state: CachedBeaconStateGloas, requests: gloas.ExecutionRequests): void {
58
+ assertExecutionRequestsWithinLimits(requests);
59
+
50
60
  const fork = state.config.getForkSeq(state.slot);
51
61
  const parentBid = state.latestExecutionPayloadBid;
52
62
  const parentSlot = state.latestBlockHeader.slot;
@@ -116,6 +126,21 @@ function settleBuilderPayment(state: CachedBeaconStateGloas, paymentIndex: numbe
116
126
  state.builderPendingPayments.set(paymentIndex, ssz.gloas.BuilderPendingPayment.defaultViewDU());
117
127
  }
118
128
 
129
+ function assertExecutionRequestsWithinLimits(requests: gloas.ExecutionRequests): void {
130
+ assertMaxLength("withdrawals", requests.withdrawals.length, MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD);
131
+ assertMaxLength("consolidations", requests.consolidations.length, MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD);
132
+ // New in GLOAS:EIP8282
133
+ assertMaxLength("builderDeposits", requests.builderDeposits.length, MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD);
134
+ // New in GLOAS:EIP8282
135
+ assertMaxLength("builderExits", requests.builderExits.length, MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD);
136
+ }
137
+
138
+ function assertMaxLength(name: string, length: number, limit: number): void {
139
+ if (length > limit) {
140
+ throw new Error(`Too many parent execution request ${name} count=${length} limit=${limit}`);
141
+ }
142
+ }
143
+
119
144
  function assertEmptyExecutionRequests(requests: gloas.ExecutionRequests): void {
120
145
  if (
121
146
  requests.deposits.length !== 0 ||
@@ -5,8 +5,7 @@ import {isValidIndexedPayloadAttestation} from "./isValidIndexedPayloadAttestati
5
5
 
6
6
  export function processPayloadAttestation(
7
7
  state: CachedBeaconStateGloas,
8
- payloadAttestation: gloas.PayloadAttestation,
9
- verifySignature = true
8
+ payloadAttestation: gloas.PayloadAttestation
10
9
  ): void {
11
10
  const data = payloadAttestation.data;
12
11
 
@@ -20,7 +19,7 @@ export function processPayloadAttestation(
20
19
 
21
20
  const indexedPayloadAttestation = state.epochCtx.getIndexedPayloadAttestation(data.slot, payloadAttestation);
22
21
 
23
- if (!isValidIndexedPayloadAttestation(state, indexedPayloadAttestation, verifySignature)) {
22
+ if (!isValidIndexedPayloadAttestation(state, indexedPayloadAttestation, true)) {
24
23
  throw Error("Invalid payload attestation");
25
24
  }
26
25
  }
@@ -7,35 +7,3 @@ export enum ProposerRewardType {
7
7
  syncAggregate = "sync_aggregate",
8
8
  slashing = "slashing",
9
9
  }
10
-
11
- /**
12
- * Steps of `processBlock()` tracked in metrics
13
- */
14
- export enum BlockProcessStep {
15
- processParentExecutionPayload = "processParentExecutionPayload",
16
- processBlockHeader = "processBlockHeader",
17
- processWithdrawals = "processWithdrawals",
18
- processExecutionPayload = "processExecutionPayload",
19
- processExecutionPayloadBid = "processExecutionPayloadBid",
20
- processRandao = "processRandao",
21
- processEth1Data = "processEth1Data",
22
- processOperations = "processOperations",
23
- processSyncAggregate = "processSyncAggregate",
24
- processBlobKzgCommitments = "processBlobKzgCommitments",
25
- }
26
-
27
- /**
28
- * Steps of `processOperations()` tracked in metrics
29
- */
30
- export enum ProcessOperationsStep {
31
- processProposerSlashing = "processProposerSlashing",
32
- processAttesterSlashing = "processAttesterSlashing",
33
- processAttestations = "processAttestations",
34
- processDeposit = "processDeposit",
35
- processVoluntaryExit = "processVoluntaryExit",
36
- processBlsToExecutionChange = "processBlsToExecutionChange",
37
- processDepositRequest = "processDepositRequest",
38
- processWithdrawalRequest = "processWithdrawalRequest",
39
- processConsolidationRequest = "processConsolidationRequest",
40
- processPayloadAttestation = "processPayloadAttestation",
41
- }
@@ -1,4 +1,4 @@
1
- import {MIN_SEED_LOOKAHEAD, SLOTS_PER_EPOCH} from "@lodestar/params";
1
+ import {MIN_SEED_LOOKAHEAD} from "@lodestar/params";
2
2
  import {ssz} from "@lodestar/types";
3
3
  import {CachedBeaconStateGloas, EpochTransitionCache} from "../types.js";
4
4
  import {computeEpochShuffling} from "../util/epochShuffling.js";
@@ -22,24 +22,17 @@ export function processPtcWindow(state: CachedBeaconStateGloas, cache: EpochTran
22
22
  state,
23
23
  nextEpoch,
24
24
  nextEpochShuffling.committees,
25
- nextEpochShuffling.shuffling,
26
25
  state.epochCtx.effectiveBalanceIncrements
27
26
  );
28
27
 
29
28
  // Stash for finalProcessEpoch to shift into epoch cache
30
29
  cache.nextEpochPayloadTimelinessCommittees = newNextPayloadTimelinessCommittees;
31
30
 
32
- // Shift the current and next epochs forward by reusing their SSZ subtrees and cached hashes.
33
- // Only the newly computed epoch needs new subtrees.
34
- const ptcWindow = state.ptcWindow;
35
- const retainedLength = ptcWindow.length - SLOTS_PER_EPOCH;
36
- for (let i = 0; i < retainedLength; i++) {
37
- ptcWindow.set(i, ptcWindow.getReadonly(i + SLOTS_PER_EPOCH));
38
- }
39
- for (let i = 0; i < SLOTS_PER_EPOCH; i++) {
40
- ptcWindow.set(
41
- retainedLength + i,
42
- ssz.gloas.PayloadTimelinessCommittee.toViewDU(newNextPayloadTimelinessCommittees[i])
43
- );
44
- }
31
+ // Write shifted window to state: current(N) + next(N+1) + newlyComputed(N+2)
32
+ // From the perspective of upcoming epoch N+1, this is previous + current + next
33
+ state.ptcWindow = ssz.gloas.PayloadTimelinessCommitteeWindow.toViewDU([
34
+ ...state.epochCtx.payloadTimelinessCommittees,
35
+ ...state.epochCtx.nextPayloadTimelinessCommittees,
36
+ ...newNextPayloadTimelinessCommittees,
37
+ ]);
45
38
  }
package/src/index.ts CHANGED
@@ -13,7 +13,7 @@ export {
13
13
  } from "./block/processVoluntaryExit.js";
14
14
  // Withdrawals for new blocks
15
15
  export {getExpectedWithdrawals} from "./block/processWithdrawals.js";
16
- export {BlockProcessStep, ProcessOperationsStep, ProposerRewardType} from "./block/types.js";
16
+ export {ProposerRewardType} from "./block/types.js";
17
17
  export {
18
18
  type EffectiveBalanceIncrements,
19
19
  getEffectiveBalanceIncrementsWithLen,
package/src/metrics.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import {ForkName} from "@lodestar/params";
2
2
  import {MetricsRegister} from "@lodestar/utils";
3
- import {BlockProcessStep, ProcessOperationsStep, ProposerRewardType} from "./block/types.js";
3
+ import {ProposerRewardType} from "./block/types.js";
4
4
  import {EpochTransitionStep} from "./epoch/index.js";
5
5
  import {StateCloneSource, StateHashTreeRootSource} from "./stateTransition.js";
6
6
  import {CachedBeaconStateAllForks} from "./types.js";
@@ -57,21 +57,10 @@ export function getMetrics(register: MetricsRegister) {
57
57
  processBlockTime: register.histogram({
58
58
  name: "lodestar_stfn_process_block_seconds",
59
59
  help: "Time to process a single block in seconds",
60
+ // TODO: Add metrics for each step
60
61
  // Block processing can take 5-40ms, 100ms max
61
62
  buckets: [0.005, 0.01, 0.02, 0.05, 0.1, 1],
62
63
  }),
63
- processBlockStepTime: register.histogram<{step: BlockProcessStep}>({
64
- name: "lodestar_stfn_process_block_step_seconds",
65
- help: "Time to call each step of process block in seconds",
66
- labelNames: ["step"],
67
- buckets: [0.001, 0.005, 0.01, 0.025, 0.05, 0.1],
68
- }),
69
- processOperationsStepTime: register.histogram<{step: ProcessOperationsStep}>({
70
- name: "lodestar_stfn_process_operations_step_seconds",
71
- help: "Time to call each step of process operations in seconds",
72
- labelNames: ["step"],
73
- buckets: [0.001, 0.005, 0.01, 0.025, 0.05, 0.1],
74
- }),
75
64
  processBlockCommitTime: register.histogram({
76
65
  name: "lodestar_stfn_process_block_commit_seconds",
77
66
  help: "Time to call commit after process a single block in seconds",
@@ -1,14 +1,13 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
2
  import {ForkSeq} from "@lodestar/params";
3
- import {IndexedAttestation, SignedBeaconBlock, altair, capella, gloas} from "@lodestar/types";
3
+ import {IndexedAttestation, SignedBeaconBlock, altair, capella} from "@lodestar/types";
4
4
  import {getSyncCommitteeSignatureSet} from "../block/processSyncCommittee.js";
5
5
  import {SyncCommitteeCache} from "../cache/syncCommitteeCache.js";
6
- import {IBeaconStateView, IBeaconStateViewGloas} from "../stateView/interface.js";
7
- import {ISignatureSet, createAggregateSignatureSetFromComponents} from "../util/index.js";
6
+ import {IBeaconStateView} from "../stateView/interface.js";
7
+ import {ISignatureSet} from "../util/index.js";
8
8
  import {getAttesterSlashingsSignatureSets} from "./attesterSlashings.js";
9
9
  import {getBlsToExecutionChangeSignatureSets} from "./blsToExecutionChange.js";
10
10
  import {getAttestationsSignatureSets} from "./indexedAttestation.js";
11
- import {getPayloadAttestationDataSigningRoot} from "./indexedPayloadAttestation.js";
12
11
  import {getBlockProposerSignatureSet} from "./proposer.js";
13
12
  import {getProposerSlashingsSignatureSets} from "./proposerSlashings.js";
14
13
  import {getRandaoRevealSignatureSet} from "./randao.js";
@@ -80,18 +79,5 @@ export function getBlockSignatureSets(
80
79
  }
81
80
  }
82
81
 
83
- if (fork >= ForkSeq.gloas) {
84
- for (const payloadAttestation of (signedBlock as gloas.SignedBeaconBlock).message.body.payloadAttestations) {
85
- const ptc = (state as IBeaconStateViewGloas).getPayloadTimelinessCommittee(payloadAttestation.data.slot);
86
- signatureSets.push(
87
- createAggregateSignatureSetFromComponents(
88
- payloadAttestation.aggregationBits.intersectValues(ptc),
89
- getPayloadAttestationDataSigningRoot(config, payloadAttestation.data),
90
- payloadAttestation.signature
91
- )
92
- );
93
- }
94
- }
95
-
96
82
  return signatureSets;
97
83
  }
@@ -456,18 +456,6 @@ export class BeaconStateView implements IBeaconStateViewLatestFork {
456
456
  }
457
457
  throw new Error(`PTC committees are not available for epoch=${epoch}`);
458
458
  }
459
-
460
- /**
461
- * Return the PTC for a slot in the previous, current or next epoch
462
- */
463
- getPayloadTimelinessCommittee(slot: Slot): Uint32Array {
464
- if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
465
- throw new Error("PTC committees are not supported before Gloas");
466
- }
467
-
468
- return (this.cachedState as CachedBeaconStateGloas).epochCtx.getPayloadTimelinessCommittee(slot);
469
- }
470
-
471
459
  /**
472
460
  * Return all positions of the validator in the PTC committee for the given slot.
473
461
  *
@@ -285,7 +285,6 @@ export interface IBeaconStateViewGloas extends IBeaconStateViewFulu {
285
285
  getBuildersLength(): number;
286
286
  canBuilderCoverBid(builderIndex: BuilderIndex, bidAmount: number): boolean;
287
287
  getEpochPTCs(epoch: Epoch): Uint32Array[];
288
- getPayloadTimelinessCommittee(slot: Slot): Uint32Array;
289
288
  getIndicesInPayloadTimelinessCommittee(validatorIndex: ValidatorIndex, slot: Slot): number[];
290
289
  /**
291
290
  * Clone the state and apply parent execution payload effects.