@lodestar/state-transition 1.47.0-dev.404f68958c → 1.47.0-dev.6325e4e1fe

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.
package/lib/metrics.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { ForkName } from "@lodestar/params";
1
2
  import { MetricsRegister } from "@lodestar/utils";
2
3
  import { ProposerRewardType } from "./block/types.js";
3
4
  import { EpochTransitionStep } from "./epoch/index.js";
@@ -13,6 +14,16 @@ export declare function getMetrics(register: MetricsRegister): {
13
14
  epochTransitionStepTime: import("@lodestar/utils").Histogram<{
14
15
  step: EpochTransitionStep;
15
16
  }>;
17
+ forkUpgradeTime: import("@lodestar/utils").Histogram<{
18
+ fork: ForkName;
19
+ }>;
20
+ onboardBuildersTime: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
21
+ onboardBuildersDeposits: import("@lodestar/utils").Gauge<{
22
+ outcome: "onboarded" | "topup" | "kept" | "dropped";
23
+ }>;
24
+ onboardBuildersSignatureChecks: import("@lodestar/utils").Gauge<{
25
+ source: "cache" | "verified";
26
+ }>;
16
27
  processBlockTime: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
17
28
  processBlockCommitTime: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
18
29
  stateHashTreeRootTime: import("@lodestar/utils").Histogram<{
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAE,uBAAuB,EAAC,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAC,yBAAyB,EAAC,MAAM,YAAY,CAAC;AAGrD,MAAM,MAAM,4BAA4B,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAEzE;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe;IAIhD,mBAAmB;IAMnB,yBAAyB;IAKzB,uBAAuB;cAA4B,mBAAmB;;IAMtE,gBAAgB;IAOhB,sBAAsB;IAKtB,qBAAqB;gBAA8B,uBAAuB;;IAM1E,0BAA0B;IAI1B,2BAA2B;IAI3B,qBAAqB;IAIrB,kCAAkC;gBAA0B,gBAAgB;;IAK5E,iCAAiC;gBAA0B,gBAAgB;;IAK3E,oCAAoC;gBAA0B,gBAAgB;;IAK9E,mCAAmC;gBAA0B,gBAAgB;;IAK7E,mBAAmB;IAKnB,kCAAkC;IAIlC,mCAAmC;IAInC,oCAAoC;IAIpC,qCAAqC;IAIrC,wBAAwB;IAIxB,wCAAwC;IAIxC,oBAAoB;IAIpB,eAAe;cAAwB,kBAAkB;;EAM5D;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,yBAAyB,EAChC,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,gBAAgB,GACvB,IAAI,CAcN;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAYpH"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAE,uBAAuB,EAAC,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAC,yBAAyB,EAAC,MAAM,YAAY,CAAC;AAGrD,MAAM,MAAM,4BAA4B,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAEzE;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe;IAIhD,mBAAmB;IAMnB,yBAAyB;IAKzB,uBAAuB;cAA4B,mBAAmB;;IAMtE,eAAe;cAA4B,QAAQ;;IAOnD,mBAAmB;IAKnB,uBAAuB;iBAA2B,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS;;IAK5F,8BAA8B;gBAA0B,OAAO,GAAG,UAAU;;IAK5E,gBAAgB;IAOhB,sBAAsB;IAKtB,qBAAqB;gBAA8B,uBAAuB;;IAM1E,0BAA0B;IAI1B,2BAA2B;IAI3B,qBAAqB;IAIrB,kCAAkC;gBAA0B,gBAAgB;;IAK5E,iCAAiC;gBAA0B,gBAAgB;;IAK3E,oCAAoC;gBAA0B,gBAAgB;;IAK9E,mCAAmC;gBAA0B,gBAAgB;;IAK7E,mBAAmB;IAKnB,kCAAkC;IAIlC,mCAAmC;IAInC,oCAAoC;IAIpC,qCAAqC;IAIrC,wBAAwB;IAIxB,wCAAwC;IAIxC,oBAAoB;IAIpB,eAAe;cAAwB,kBAAkB;;EAM5D;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,yBAAyB,EAChC,OAAO,EAAE,4BAA4B,EACrC,MAAM,EAAE,gBAAgB,GACvB,IAAI,CAcN;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,yBAAyB,EAAE,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAYpH"}
package/lib/metrics.js CHANGED
@@ -22,6 +22,28 @@ export function getMetrics(register) {
22
22
  labelNames: ["step"],
23
23
  buckets: [0.01, 0.05, 0.1, 0.2, 0.5, 0.75, 1],
24
24
  }),
25
+ forkUpgradeTime: register.histogram({
26
+ name: "lodestar_stfn_fork_upgrade_seconds",
27
+ help: "Time to upgrade the state at a fork boundary in seconds",
28
+ labelNames: ["fork"],
29
+ // The gloas upgrade is unbounded (see onboardBuildersTime), hence the long tail
30
+ buckets: [0.05, 0.1, 0.25, 0.5, 1, 2, 5, 10, 30],
31
+ }),
32
+ onboardBuildersTime: register.histogram({
33
+ name: "lodestar_stfn_gloas_onboard_builders_seconds",
34
+ help: "Time spent in onboardBuildersFromPendingDeposits at the gloas fork transition",
35
+ buckets: [0.05, 0.1, 0.25, 0.5, 1, 2, 5, 10, 30],
36
+ }),
37
+ onboardBuildersDeposits: register.gauge({
38
+ name: "lodestar_stfn_gloas_onboard_builders_deposits",
39
+ help: "Pending deposits handled at the gloas fork transition, by outcome",
40
+ labelNames: ["outcome"],
41
+ }),
42
+ onboardBuildersSignatureChecks: register.gauge({
43
+ name: "lodestar_stfn_gloas_onboard_builders_signature_checks",
44
+ help: "Builder deposit signature checks at the gloas fork transition. `verified` means the pre-verify cache missed and BLS ran inline, on the fork transition's critical path",
45
+ labelNames: ["source"],
46
+ }),
25
47
  processBlockTime: register.histogram({
26
48
  name: "lodestar_stfn_process_block_seconds",
27
49
  help: "Time to process a single block in seconds",
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import type { BeaconStateTransitionMetrics } from "../metrics.js";
1
2
  import { CachedBeaconStateFulu, CachedBeaconStateGloas } from "../types.js";
2
3
  /**
3
4
  * Upgrade a state from Fulu to Gloas.
4
5
  */
5
- export declare function upgradeStateToGloas(stateFulu: CachedBeaconStateFulu): CachedBeaconStateGloas;
6
+ export declare function upgradeStateToGloas(stateFulu: CachedBeaconStateFulu, metrics?: BeaconStateTransitionMetrics | null): CachedBeaconStateGloas;
6
7
  //# sourceMappingURL=upgradeStateToGloas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgradeStateToGloas.d.ts","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAM1E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,GAAG,sBAAsB,CA0F5F"}
1
+ {"version":3,"file":"upgradeStateToGloas.d.ts","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAM1E;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,EAChC,OAAO,CAAC,EAAE,4BAA4B,GAAG,IAAI,GAC5C,sBAAsB,CA0FxB"}
@@ -11,7 +11,7 @@ import { progressiveListRootNode } from "../util/ssz.js";
11
11
  /**
12
12
  * Upgrade a state from Fulu to Gloas.
13
13
  */
14
- export function upgradeStateToGloas(stateFulu) {
14
+ export function upgradeStateToGloas(stateFulu, metrics) {
15
15
  const { config } = stateFulu;
16
16
  ssz.fulu.BeaconState.commitViewDU(stateFulu);
17
17
  const stateGloasCloned = stateFulu;
@@ -67,7 +67,7 @@ export function upgradeStateToGloas(stateFulu) {
67
67
  stateGloasView.latestBlockHash = stateFulu.latestExecutionPayloadHeader.blockHash;
68
68
  const stateGloas = getCachedBeaconState(stateGloasView, stateFulu);
69
69
  // Process pending builder deposits at the fork boundary
70
- onboardBuildersFromPendingDeposits(stateGloas);
70
+ onboardBuildersFromPendingDeposits(stateGloas, metrics);
71
71
  stateGloas.commit();
72
72
  // Clear cache to ensure the cache of fulu fields is not used by new gloas fields
73
73
  // biome-ignore lint/complexity/useLiteralKeys: It is a protected attribute
@@ -115,7 +115,20 @@ function migrateBasicListToGloas(fuluList, gloasType) {
115
115
  * Applies any pending deposits for builders to onboard builders during the fork transition
116
116
  * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.8/specs/gloas/fork.md#new-onboard_builders_from_pending_deposits
117
117
  */
118
- function onboardBuildersFromPendingDeposits(state) {
118
+ function onboardBuildersFromPendingDeposits(state, metrics) {
119
+ const timer = metrics?.onboardBuildersTime.startTimer();
120
+ // Counted so the duration above is interpretable: this loop walks the whole pending
121
+ // deposit queue, and its cost is dominated by whichever branch the queue happens to
122
+ // hit. `verified` signature checks are the ones the pre-verify cache missed, i.e. BLS
123
+ // running inline on the fork transition's critical path. The signature totals include
124
+ // the checks hasPendingValidator() does internally, which dominate when a builder
125
+ // deposit is preceded by same-pubkey validator deposits.
126
+ let onboarded = 0;
127
+ let topups = 0;
128
+ let kept = 0;
129
+ let dropped = 0;
130
+ let sigFromCache = 0;
131
+ let sigVerified = 0;
119
132
  // Track pubkeys of new builders added when applying deposits. `state.builders` starts empty
120
133
  // at the fork, so every builder pubkey here is one added in an earlier iteration.
121
134
  const builderPubkeys = new Set();
@@ -129,6 +142,7 @@ function onboardBuildersFromPendingDeposits(state) {
129
142
  if (isValidatorKnown(state, validatorIndex)) {
130
143
  pendingDeposits.push(deposit);
131
144
  pendingDepositsLookup.add(depositValue, pubkeyHex);
145
+ kept++;
132
146
  continue;
133
147
  }
134
148
  if (builderPubkeys.has(pubkeyHex)) {
@@ -140,6 +154,7 @@ function onboardBuildersFromPendingDeposits(state) {
140
154
  break;
141
155
  }
142
156
  }
157
+ topups++;
143
158
  continue;
144
159
  }
145
160
  // Deposits for non-builders stay in the pending queue. If there is a valid pending
@@ -148,11 +163,13 @@ function onboardBuildersFromPendingDeposits(state) {
148
163
  if (!isBuilderWithdrawalCredential(deposit.withdrawalCredentials)) {
149
164
  pendingDeposits.push(deposit);
150
165
  pendingDepositsLookup.add(depositValue, pubkeyHex);
166
+ kept++;
151
167
  continue;
152
168
  }
153
169
  if (pendingDepositsLookup.hasPendingValidator(state.config, pubkeyHex, state.epochCtx.builderDepositSignatureCache)) {
154
170
  pendingDeposits.push(deposit);
155
171
  pendingDepositsLookup.add(depositValue, pubkeyHex);
172
+ kept++;
156
173
  continue;
157
174
  }
158
175
  // Verify the deposit signature (proof of possession). If invalid the deposit is silently
@@ -161,14 +178,32 @@ function onboardBuildersFromPendingDeposits(state) {
161
178
  // The prepareNextSlot scheduler pre-verifies these signatures in the epochs before the fork
162
179
  // A cache miss falls back to verifying this one deposit — no worse than pre-cache.
163
180
  const cached = state.epochCtx.builderDepositSignatureCache.getSignatureValidity(depositValue);
181
+ if (cached === null) {
182
+ sigVerified++;
183
+ }
184
+ else {
185
+ sigFromCache++;
186
+ }
164
187
  const isValid = cached ??
165
188
  isValidDepositSignature(state.config, deposit.pubkey, deposit.withdrawalCredentials, deposit.amount, deposit.signature);
166
189
  if (!isValid) {
190
+ dropped++;
167
191
  continue;
168
192
  }
169
193
  addBuilderToRegistry(state, deposit.pubkey, PAYLOAD_BUILDER_VERSION, deposit.withdrawalCredentials.subarray(12), deposit.amount, deposit.slot);
170
194
  builderPubkeys.add(pubkeyHex);
195
+ onboarded++;
171
196
  }
172
197
  state.pendingDeposits = pendingDeposits;
198
+ timer?.();
199
+ if (metrics) {
200
+ metrics.onboardBuildersDeposits.set({ outcome: "onboarded" }, onboarded);
201
+ metrics.onboardBuildersDeposits.set({ outcome: "topup" }, topups);
202
+ metrics.onboardBuildersDeposits.set({ outcome: "kept" }, kept);
203
+ metrics.onboardBuildersDeposits.set({ outcome: "dropped" }, dropped);
204
+ const lookupChecks = pendingDepositsLookup.signatureChecks;
205
+ metrics.onboardBuildersSignatureChecks.set({ source: "cache" }, sigFromCache + lookupChecks.fromCache);
206
+ metrics.onboardBuildersSignatureChecks.set({ source: "verified" }, sigVerified + lookupChecks.verified);
207
+ }
173
208
  }
174
209
  //# sourceMappingURL=upgradeStateToGloas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgradeStateToGloas.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgradeStateToGloas.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SLOTS_PER_EPOCH } from "@lodestar/params";
1
+ import { ForkName, SLOTS_PER_EPOCH } from "@lodestar/params";
2
2
  import { ssz } from "@lodestar/types";
3
3
  import { toRootHex } from "@lodestar/utils";
4
4
  import { DataAvailabilityStatus, ExecutionPayloadStatus } from "./block/externalData.js";
@@ -171,7 +171,12 @@ function processSlotsWithTransientCache(postState, slot, epochTransitionCacheOpt
171
171
  postState = upgradeStateToFulu(postState);
172
172
  }
173
173
  if (stateEpoch === config.GLOAS_FORK_EPOCH) {
174
- postState = upgradeStateToGloas(postState);
174
+ // Timed, unlike the other fork upgrades: this one does unbounded work.
175
+ // onboardBuildersFromPendingDeposits walks the entire pending deposit queue, so its
176
+ // cost is set by whatever is sitting in that queue when the fork lands.
177
+ const timer = metrics?.forkUpgradeTime.startTimer({ fork: ForkName.gloas });
178
+ postState = upgradeStateToGloas(postState, metrics);
179
+ timer?.();
175
180
  }
176
181
  if (stateEpoch === config.HEZE_FORK_EPOCH) {
177
182
  postState = upgradeStateToHeze(postState);
@@ -1 +1 @@
1
- {"version":3,"file":"stateTransition.js","sourceRoot":"","sources":["../src/stateTransition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateTransition.js","sourceRoot":"","sources":["../src/stateTransition.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ import { BuilderDepositSignatureCache } from "../cache/builderDepositSignatureCa
17
17
  export declare class PendingDepositsLookup {
18
18
  private readonly depositsByPubkey;
19
19
  private readonly validationCache;
20
+ private signaturesFromCache;
21
+ private signaturesVerified;
20
22
  private constructor();
21
23
  /** Build an empty lookup for a sequence that will be populated incrementally. */
22
24
  static buildEmpty(): PendingDepositsLookup;
@@ -32,6 +34,16 @@ export declare class PendingDepositsLookup {
32
34
  * Most of the time it should hit the BuilderDepositSignatureCache so we don't have to validate
33
35
  * signatures here.
34
36
  */
37
+ /**
38
+ * Signature checks performed inside `hasPendingValidator()`, split by whether the pre-verify
39
+ * cache served them. These are the scan the caller never sees: when a builder-routed deposit is
40
+ * preceded by same-pubkey validator deposits this walk dominates, and on a `true` result the
41
+ * caller skips its own signature check entirely.
42
+ */
43
+ get signatureChecks(): {
44
+ fromCache: number;
45
+ verified: number;
46
+ };
35
47
  hasPendingValidator(config: BeaconConfig, pubkeyHex: PubkeyHex, cache: BuilderDepositSignatureCache): boolean;
36
48
  }
37
49
  //# sourceMappingURL=pendingDepositsLookup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pendingDepositsLookup.d.ts","sourceRoot":"","sources":["../../src/util/pendingDepositsLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,4BAA4B,EAAC,MAAM,0CAA0C,CAAC;AAOtF;;;;;;;;;;;;GAYG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAFlC,OAAO,eAGH;IAEJ,iFAAiF;IACjF,MAAM,CAAC,UAAU,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACH,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAOtE;IAED;;;;;;;OAOG;IACH,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAsC5G;CACF"}
1
+ {"version":3,"file":"pendingDepositsLookup.d.ts","sourceRoot":"","sources":["../../src/util/pendingDepositsLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,4BAA4B,EAAC,MAAM,0CAA0C,CAAC;AAOtF;;;;;;;;;;;;GAYG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe;IALlC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,kBAAkB,CAAK;IAE/B,OAAO,eAGH;IAEJ,iFAAiF;IACjF,MAAM,CAAC,UAAU,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACH,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAOtE;IAED;;;;;;;OAOG;IACH;;;;;OAKG;IACH,IAAI,eAAe,IAAI;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAE3D;IAED,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,4BAA4B,GAAG,OAAO,CA4C5G;CACF"}
@@ -15,6 +15,8 @@ import { isValidDepositSignature } from "../block/processDeposit.js";
15
15
  export class PendingDepositsLookup {
16
16
  depositsByPubkey;
17
17
  validationCache;
18
+ signaturesFromCache = 0;
19
+ signaturesVerified = 0;
18
20
  constructor(depositsByPubkey, validationCache) {
19
21
  this.depositsByPubkey = depositsByPubkey;
20
22
  this.validationCache = validationCache;
@@ -43,6 +45,15 @@ export class PendingDepositsLookup {
43
45
  * Most of the time it should hit the BuilderDepositSignatureCache so we don't have to validate
44
46
  * signatures here.
45
47
  */
48
+ /**
49
+ * Signature checks performed inside `hasPendingValidator()`, split by whether the pre-verify
50
+ * cache served them. These are the scan the caller never sees: when a builder-routed deposit is
51
+ * preceded by same-pubkey validator deposits this walk dominates, and on a `true` result the
52
+ * caller skips its own signature check entirely.
53
+ */
54
+ get signatureChecks() {
55
+ return { fromCache: this.signaturesFromCache, verified: this.signaturesVerified };
56
+ }
46
57
  hasPendingValidator(config, pubkeyHex, cache) {
47
58
  const validation = this.validationCache.get(pubkeyHex);
48
59
  if (validation?.hasValidSignature === true) {
@@ -61,7 +72,14 @@ export class PendingDepositsLookup {
61
72
  }
62
73
  for (let i = startIndex; i < deposits.length; i++) {
63
74
  const deposit = deposits[i];
64
- const isValid = cache.getSignatureValidity(deposit) ??
75
+ const cached = cache.getSignatureValidity(deposit);
76
+ if (cached === null) {
77
+ this.signaturesVerified++;
78
+ }
79
+ else {
80
+ this.signaturesFromCache++;
81
+ }
82
+ const isValid = cached ??
65
83
  isValidDepositSignature(config, deposit.pubkey, deposit.withdrawalCredentials, deposit.amount, deposit.signature);
66
84
  if (isValid) {
67
85
  this.validationCache.set(pubkeyHex, { hasValidSignature: true, validatedCount: i + 1 });
@@ -1 +1 @@
1
- {"version":3,"file":"pendingDepositsLookup.js","sourceRoot":"","sources":["../../src/util/pendingDepositsLookup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAQnE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,qBAAqB;IAEb,gBAAgB;IAChB,eAAe;IAFlC,YACmB,gBAA0D,EAC1D,eAA0D;gCAD1D,gBAAgB;+BAChB,eAAe;IAC/B,CAAC;IAEJ,iFAAiF;IACjF,MAAM,CAAC,UAAU;QACf,OAAO,IAAI,qBAAqB,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,cAAsC,EAAE,SAAoB;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,mBAAmB,CAAC,MAAoB,EAAE,SAAoB,EAAE,KAAmC;QACjG,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,UAAU,EAAE,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,kFAAkF;QAClF,2DAA2D;QAC3D,MAAM,UAAU,GAAG,UAAU,EAAE,cAAc,IAAI,CAAC,CAAC;QACnD,IAAI,UAAU,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnC,6DAA6D;YAC7D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,OAAO,GACX,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBACnC,uBAAuB,CACrB,MAAM,EACN,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,CAClB,CAAC;YACJ,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAC,CAAC,CAAC;QACjG,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"pendingDepositsLookup.js","sourceRoot":"","sources":["../../src/util/pendingDepositsLookup.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.47.0-dev.404f68958c",
14
+ "version": "1.47.0-dev.6325e4e1fe",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -71,14 +71,14 @@
71
71
  "@chainsafe/pubkey-index-map": "^3.0.0",
72
72
  "@chainsafe/ssz": "^1.6.2",
73
73
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
74
- "@lodestar/config": "^1.47.0-dev.404f68958c",
75
- "@lodestar/params": "^1.47.0-dev.404f68958c",
76
- "@lodestar/types": "^1.47.0-dev.404f68958c",
77
- "@lodestar/utils": "^1.47.0-dev.404f68958c",
74
+ "@lodestar/config": "^1.47.0-dev.6325e4e1fe",
75
+ "@lodestar/params": "^1.47.0-dev.6325e4e1fe",
76
+ "@lodestar/types": "^1.47.0-dev.6325e4e1fe",
77
+ "@lodestar/utils": "^1.47.0-dev.6325e4e1fe",
78
78
  "@vekexasia/bigint-buffer2": "^1.1.1"
79
79
  },
80
80
  "devDependencies": {
81
- "@lodestar/api": "^1.47.0-dev.404f68958c"
81
+ "@lodestar/api": "^1.47.0-dev.6325e4e1fe"
82
82
  },
83
83
  "keywords": [
84
84
  "ethereum",
@@ -86,5 +86,5 @@
86
86
  "beacon",
87
87
  "blockchain"
88
88
  ],
89
- "gitHead": "e71166623745996c7e67cbe3a32896db45d74d8a"
89
+ "gitHead": "c87b2284d030026cf5b413a897de0eedbeb158d4"
90
90
  }
package/src/metrics.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import {ForkName} from "@lodestar/params";
1
2
  import {MetricsRegister} from "@lodestar/utils";
2
3
  import {ProposerRewardType} from "./block/types.js";
3
4
  import {EpochTransitionStep} from "./epoch/index.js";
@@ -31,6 +32,28 @@ export function getMetrics(register: MetricsRegister) {
31
32
  labelNames: ["step"],
32
33
  buckets: [0.01, 0.05, 0.1, 0.2, 0.5, 0.75, 1],
33
34
  }),
35
+ forkUpgradeTime: register.histogram<{fork: ForkName}>({
36
+ name: "lodestar_stfn_fork_upgrade_seconds",
37
+ help: "Time to upgrade the state at a fork boundary in seconds",
38
+ labelNames: ["fork"],
39
+ // The gloas upgrade is unbounded (see onboardBuildersTime), hence the long tail
40
+ buckets: [0.05, 0.1, 0.25, 0.5, 1, 2, 5, 10, 30],
41
+ }),
42
+ onboardBuildersTime: register.histogram({
43
+ name: "lodestar_stfn_gloas_onboard_builders_seconds",
44
+ help: "Time spent in onboardBuildersFromPendingDeposits at the gloas fork transition",
45
+ buckets: [0.05, 0.1, 0.25, 0.5, 1, 2, 5, 10, 30],
46
+ }),
47
+ onboardBuildersDeposits: register.gauge<{outcome: "onboarded" | "topup" | "kept" | "dropped"}>({
48
+ name: "lodestar_stfn_gloas_onboard_builders_deposits",
49
+ help: "Pending deposits handled at the gloas fork transition, by outcome",
50
+ labelNames: ["outcome"],
51
+ }),
52
+ onboardBuildersSignatureChecks: register.gauge<{source: "cache" | "verified"}>({
53
+ name: "lodestar_stfn_gloas_onboard_builders_signature_checks",
54
+ help: "Builder deposit signature checks at the gloas fork transition. `verified` means the pre-verify cache missed and BLS ran inline, on the fork transition's critical path",
55
+ labelNames: ["source"],
56
+ }),
34
57
  processBlockTime: register.histogram({
35
58
  name: "lodestar_stfn_process_block_seconds",
36
59
  help: "Time to process a single block in seconds",
@@ -15,6 +15,7 @@ import {ssz} from "@lodestar/types";
15
15
  import {toPubkeyHex} from "@lodestar/utils";
16
16
  import {isValidDepositSignature} from "../block/processDeposit.js";
17
17
  import {getCachedBeaconState} from "../cache/stateCache.js";
18
+ import type {BeaconStateTransitionMetrics} from "../metrics.js";
18
19
  import {CachedBeaconStateFulu, CachedBeaconStateGloas} from "../types.js";
19
20
  import {addBuilderToRegistry, initializePtcWindow, isBuilderWithdrawalCredential} from "../util/gloas.js";
20
21
  import {isValidatorKnown} from "../util/index.js";
@@ -24,7 +25,10 @@ import {progressiveListRootNode} from "../util/ssz.js";
24
25
  /**
25
26
  * Upgrade a state from Fulu to Gloas.
26
27
  */
27
- export function upgradeStateToGloas(stateFulu: CachedBeaconStateFulu): CachedBeaconStateGloas {
28
+ export function upgradeStateToGloas(
29
+ stateFulu: CachedBeaconStateFulu,
30
+ metrics?: BeaconStateTransitionMetrics | null
31
+ ): CachedBeaconStateGloas {
28
32
  const {config} = stateFulu;
29
33
 
30
34
  ssz.fulu.BeaconState.commitViewDU(stateFulu);
@@ -106,7 +110,7 @@ export function upgradeStateToGloas(stateFulu: CachedBeaconStateFulu): CachedBea
106
110
  const stateGloas = getCachedBeaconState(stateGloasView, stateFulu);
107
111
 
108
112
  // Process pending builder deposits at the fork boundary
109
- onboardBuildersFromPendingDeposits(stateGloas);
113
+ onboardBuildersFromPendingDeposits(stateGloas, metrics);
110
114
 
111
115
  stateGloas.commit();
112
116
  // Clear cache to ensure the cache of fulu fields is not used by new gloas fields
@@ -164,7 +168,25 @@ function migrateBasicListToGloas<ElementType extends BasicType<unknown>>(
164
168
  * Applies any pending deposits for builders to onboard builders during the fork transition
165
169
  * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.8/specs/gloas/fork.md#new-onboard_builders_from_pending_deposits
166
170
  */
167
- function onboardBuildersFromPendingDeposits(state: CachedBeaconStateGloas): void {
171
+ function onboardBuildersFromPendingDeposits(
172
+ state: CachedBeaconStateGloas,
173
+ metrics?: BeaconStateTransitionMetrics | null
174
+ ): void {
175
+ const timer = metrics?.onboardBuildersTime.startTimer();
176
+
177
+ // Counted so the duration above is interpretable: this loop walks the whole pending
178
+ // deposit queue, and its cost is dominated by whichever branch the queue happens to
179
+ // hit. `verified` signature checks are the ones the pre-verify cache missed, i.e. BLS
180
+ // running inline on the fork transition's critical path. The signature totals include
181
+ // the checks hasPendingValidator() does internally, which dominate when a builder
182
+ // deposit is preceded by same-pubkey validator deposits.
183
+ let onboarded = 0;
184
+ let topups = 0;
185
+ let kept = 0;
186
+ let dropped = 0;
187
+ let sigFromCache = 0;
188
+ let sigVerified = 0;
189
+
168
190
  // Track pubkeys of new builders added when applying deposits. `state.builders` starts empty
169
191
  // at the fork, so every builder pubkey here is one added in an earlier iteration.
170
192
  const builderPubkeys = new Set<string>();
@@ -182,6 +204,7 @@ function onboardBuildersFromPendingDeposits(state: CachedBeaconStateGloas): void
182
204
  if (isValidatorKnown(state, validatorIndex)) {
183
205
  pendingDeposits.push(deposit);
184
206
  pendingDepositsLookup.add(depositValue, pubkeyHex);
207
+ kept++;
185
208
  continue;
186
209
  }
187
210
 
@@ -194,6 +217,7 @@ function onboardBuildersFromPendingDeposits(state: CachedBeaconStateGloas): void
194
217
  break;
195
218
  }
196
219
  }
220
+ topups++;
197
221
  continue;
198
222
  }
199
223
 
@@ -203,6 +227,7 @@ function onboardBuildersFromPendingDeposits(state: CachedBeaconStateGloas): void
203
227
  if (!isBuilderWithdrawalCredential(deposit.withdrawalCredentials)) {
204
228
  pendingDeposits.push(deposit);
205
229
  pendingDepositsLookup.add(depositValue, pubkeyHex);
230
+ kept++;
206
231
  continue;
207
232
  }
208
233
  if (
@@ -210,6 +235,7 @@ function onboardBuildersFromPendingDeposits(state: CachedBeaconStateGloas): void
210
235
  ) {
211
236
  pendingDeposits.push(deposit);
212
237
  pendingDepositsLookup.add(depositValue, pubkeyHex);
238
+ kept++;
213
239
  continue;
214
240
  }
215
241
 
@@ -219,6 +245,11 @@ function onboardBuildersFromPendingDeposits(state: CachedBeaconStateGloas): void
219
245
  // The prepareNextSlot scheduler pre-verifies these signatures in the epochs before the fork
220
246
  // A cache miss falls back to verifying this one deposit — no worse than pre-cache.
221
247
  const cached = state.epochCtx.builderDepositSignatureCache.getSignatureValidity(depositValue);
248
+ if (cached === null) {
249
+ sigVerified++;
250
+ } else {
251
+ sigFromCache++;
252
+ }
222
253
  const isValid =
223
254
  cached ??
224
255
  isValidDepositSignature(
@@ -229,6 +260,7 @@ function onboardBuildersFromPendingDeposits(state: CachedBeaconStateGloas): void
229
260
  deposit.signature
230
261
  );
231
262
  if (!isValid) {
263
+ dropped++;
232
264
  continue;
233
265
  }
234
266
 
@@ -241,7 +273,19 @@ function onboardBuildersFromPendingDeposits(state: CachedBeaconStateGloas): void
241
273
  deposit.slot
242
274
  );
243
275
  builderPubkeys.add(pubkeyHex);
276
+ onboarded++;
244
277
  }
245
278
 
246
279
  state.pendingDeposits = pendingDeposits;
280
+
281
+ timer?.();
282
+ if (metrics) {
283
+ metrics.onboardBuildersDeposits.set({outcome: "onboarded"}, onboarded);
284
+ metrics.onboardBuildersDeposits.set({outcome: "topup"}, topups);
285
+ metrics.onboardBuildersDeposits.set({outcome: "kept"}, kept);
286
+ metrics.onboardBuildersDeposits.set({outcome: "dropped"}, dropped);
287
+ const lookupChecks = pendingDepositsLookup.signatureChecks;
288
+ metrics.onboardBuildersSignatureChecks.set({source: "cache"}, sigFromCache + lookupChecks.fromCache);
289
+ metrics.onboardBuildersSignatureChecks.set({source: "verified"}, sigVerified + lookupChecks.verified);
290
+ }
247
291
  }
@@ -1,4 +1,4 @@
1
- import {SLOTS_PER_EPOCH} from "@lodestar/params";
1
+ import {ForkName, SLOTS_PER_EPOCH} from "@lodestar/params";
2
2
  import {Epoch, SignedBeaconBlock, SignedBlindedBeaconBlock, Slot, ssz} from "@lodestar/types";
3
3
  import {toRootHex} from "@lodestar/utils";
4
4
  import {BlockExternalData, DataAvailabilityStatus, ExecutionPayloadStatus} from "./block/externalData.js";
@@ -278,7 +278,12 @@ function processSlotsWithTransientCache(
278
278
  postState = upgradeStateToFulu(postState as CachedBeaconStateElectra) as CachedBeaconStateAllForks;
279
279
  }
280
280
  if (stateEpoch === config.GLOAS_FORK_EPOCH) {
281
- postState = upgradeStateToGloas(postState as CachedBeaconStateFulu) as CachedBeaconStateAllForks;
281
+ // Timed, unlike the other fork upgrades: this one does unbounded work.
282
+ // onboardBuildersFromPendingDeposits walks the entire pending deposit queue, so its
283
+ // cost is set by whatever is sitting in that queue when the fork lands.
284
+ const timer = metrics?.forkUpgradeTime.startTimer({fork: ForkName.gloas});
285
+ postState = upgradeStateToGloas(postState as CachedBeaconStateFulu, metrics) as CachedBeaconStateAllForks;
286
+ timer?.();
282
287
  }
283
288
  if (stateEpoch === config.HEZE_FORK_EPOCH) {
284
289
  postState = upgradeStateToHeze(postState as CachedBeaconStateGloas) as CachedBeaconStateAllForks;
@@ -22,6 +22,9 @@ type PendingDepositsValidation = {
22
22
  * newly-appended tail rather than re-running BLS on previously-invalid entries.
23
23
  */
24
24
  export class PendingDepositsLookup {
25
+ private signaturesFromCache = 0;
26
+ private signaturesVerified = 0;
27
+
25
28
  private constructor(
26
29
  private readonly depositsByPubkey: Map<PubkeyHex, electra.PendingDeposit[]>,
27
30
  private readonly validationCache: Map<PubkeyHex, PendingDepositsValidation>
@@ -52,6 +55,16 @@ export class PendingDepositsLookup {
52
55
  * Most of the time it should hit the BuilderDepositSignatureCache so we don't have to validate
53
56
  * signatures here.
54
57
  */
58
+ /**
59
+ * Signature checks performed inside `hasPendingValidator()`, split by whether the pre-verify
60
+ * cache served them. These are the scan the caller never sees: when a builder-routed deposit is
61
+ * preceded by same-pubkey validator deposits this walk dominates, and on a `true` result the
62
+ * caller skips its own signature check entirely.
63
+ */
64
+ get signatureChecks(): {fromCache: number; verified: number} {
65
+ return {fromCache: this.signaturesFromCache, verified: this.signaturesVerified};
66
+ }
67
+
55
68
  hasPendingValidator(config: BeaconConfig, pubkeyHex: PubkeyHex, cache: BuilderDepositSignatureCache): boolean {
56
69
  const validation = this.validationCache.get(pubkeyHex);
57
70
  if (validation?.hasValidSignature === true) {
@@ -73,8 +86,14 @@ export class PendingDepositsLookup {
73
86
 
74
87
  for (let i = startIndex; i < deposits.length; i++) {
75
88
  const deposit = deposits[i];
89
+ const cached = cache.getSignatureValidity(deposit);
90
+ if (cached === null) {
91
+ this.signaturesVerified++;
92
+ } else {
93
+ this.signaturesFromCache++;
94
+ }
76
95
  const isValid =
77
- cache.getSignatureValidity(deposit) ??
96
+ cached ??
78
97
  isValidDepositSignature(
79
98
  config,
80
99
  deposit.pubkey,