@lodestar/state-transition 1.20.1 → 1.21.0-dev.565bb3acab

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.
@@ -1,5 +1,4 @@
1
1
  import { Epoch, ValidatorIndex } from "@lodestar/types";
2
- import { AttesterStatus } from "../util/attesterStatus.js";
3
2
  import { CachedBeaconStateAllForks } from "../index.js";
4
3
  export type EpochTransitionCacheOpts = {
5
4
  /**
@@ -103,7 +102,9 @@ export interface EpochTransitionCache {
103
102
  * - prev attester flag set
104
103
  * With a status flag to check this conditions at once we just have to mask with an OR of the conditions.
105
104
  */
106
- statuses: AttesterStatus[];
105
+ proposerIndices: number[];
106
+ inclusionDelays: number[];
107
+ flags: number[];
107
108
  /**
108
109
  * balances array will be populated by processRewardsAndPenalties() and consumed by processEffectiveBalanceUpdates().
109
110
  * processRewardsAndPenalties() already has a regular Javascript array of balances.
@@ -132,6 +133,16 @@ export interface EpochTransitionCache {
132
133
  * | afterEpochTransitionCache | read it |
133
134
  */
134
135
  nextEpochTotalActiveBalanceByIncrement: number;
136
+ /**
137
+ * Track by validator index if it's active in the prev epoch.
138
+ * Used in metrics
139
+ */
140
+ isActivePrevEpoch: boolean[];
141
+ /**
142
+ * Track by validator index if it's active in the current epoch.
143
+ * Used in metrics
144
+ */
145
+ isActiveCurrEpoch: boolean[];
135
146
  /**
136
147
  * Track by validator index if it's active in the next epoch.
137
148
  * Used in `processEffectiveBalanceUpdates` to save one loop over validators after epoch process.
@@ -1,8 +1,22 @@
1
1
  import { intDiv } from "@lodestar/utils";
2
2
  import { EPOCHS_PER_SLASHINGS_VECTOR, FAR_FUTURE_EPOCH, ForkSeq, MAX_EFFECTIVE_BALANCE } from "@lodestar/params";
3
- import { createAttesterStatus, hasMarkers, FLAG_UNSLASHED, FLAG_ELIGIBLE_ATTESTER, FLAG_PREV_SOURCE_ATTESTER, FLAG_PREV_TARGET_ATTESTER, FLAG_PREV_HEAD_ATTESTER, FLAG_CURR_SOURCE_ATTESTER, FLAG_CURR_TARGET_ATTESTER, FLAG_CURR_HEAD_ATTESTER, } from "../util/attesterStatus.js";
3
+ import { hasMarkers, FLAG_UNSLASHED, FLAG_ELIGIBLE_ATTESTER, FLAG_PREV_SOURCE_ATTESTER, FLAG_PREV_TARGET_ATTESTER, FLAG_PREV_HEAD_ATTESTER, FLAG_CURR_SOURCE_ATTESTER, FLAG_CURR_TARGET_ATTESTER, FLAG_CURR_HEAD_ATTESTER, } from "../util/attesterStatus.js";
4
4
  import { computeBaseRewardPerIncrement } from "../util/altair.js";
5
5
  import { processPendingAttestations } from "../epoch/processPendingAttestations.js";
6
+ // reuse arrays to avoid memory reallocation and gc
7
+ // WARNING: this is not async safe
8
+ /** WARNING: reused, never gc'd */
9
+ const isActivePrevEpoch = new Array();
10
+ /** WARNING: reused, never gc'd */
11
+ const isActiveCurrEpoch = new Array();
12
+ /** WARNING: reused, never gc'd */
13
+ const isActiveNextEpoch = new Array();
14
+ /** WARNING: reused, never gc'd */
15
+ const proposerIndices = new Array();
16
+ /** WARNING: reused, never gc'd */
17
+ const inclusionDelays = new Array();
18
+ /** WARNING: reused, never gc'd */
19
+ const flags = new Array();
6
20
  export function beforeProcessEpoch(state, opts) {
7
21
  const { config, epochCtx } = state;
8
22
  const forkSeq = config.getForkSeq(state.slot);
@@ -18,46 +32,72 @@ export function beforeProcessEpoch(state, opts) {
18
32
  const indicesEligibleForActivation = [];
19
33
  const indicesToEject = [];
20
34
  const nextEpochShufflingActiveValidatorIndices = [];
21
- const isActivePrevEpoch = [];
22
- const isActiveNextEpoch = [];
23
- const statuses = [];
24
35
  let totalActiveStakeByIncrement = 0;
25
36
  // To optimize memory each validator node in `state.validators` is represented with a special node type
26
37
  // `BranchNodeStruct` that represents the data as struct internally. This utility grabs the struct data directly
27
38
  // from the nodes without any extra transformation. The returned `validators` array contains native JS objects.
28
39
  const validators = state.validators.getAllReadonlyValues();
29
40
  const validatorCount = validators.length;
41
+ // pre-fill with true (most validators are active)
42
+ isActivePrevEpoch.length = validatorCount;
43
+ isActiveCurrEpoch.length = validatorCount;
44
+ isActiveNextEpoch.length = validatorCount;
45
+ isActivePrevEpoch.fill(true);
46
+ isActiveCurrEpoch.fill(true);
47
+ isActiveNextEpoch.fill(true);
48
+ // During the epoch transition, additional data is precomputed to avoid traversing any state a second
49
+ // time. Attestations are a big part of this, and each validator has a "status" to represent its
50
+ // precomputed participation.
51
+ // - proposerIndex: number; // -1 when not included by any proposer
52
+ // - inclusionDelay: number;
53
+ // - flags: number; // bitfield of AttesterFlags
54
+ proposerIndices.length = validatorCount;
55
+ inclusionDelays.length = validatorCount;
56
+ flags.length = validatorCount;
57
+ proposerIndices.fill(-1);
58
+ inclusionDelays.fill(0);
59
+ // flags.fill(0);
60
+ // flags will be zero'd out below
61
+ // In the first loop, set slashed+eligibility
62
+ // In the second loop, set participation flags
63
+ // TODO: optimize by combining the two loops
64
+ // likely will require splitting into phase0 and post-phase0 versions
30
65
  // Clone before being mutated in processEffectiveBalanceUpdates
31
66
  epochCtx.beforeEpochTransition();
32
67
  const effectiveBalancesByIncrements = epochCtx.effectiveBalanceIncrements;
33
68
  for (let i = 0; i < validatorCount; i++) {
34
69
  const validator = validators[i];
35
- const status = createAttesterStatus();
70
+ let flag = 0;
36
71
  if (validator.slashed) {
37
72
  if (slashingsEpoch === validator.withdrawableEpoch) {
38
73
  indicesToSlash.push(i);
39
74
  }
40
75
  }
41
76
  else {
42
- status.flags |= FLAG_UNSLASHED;
77
+ flag |= FLAG_UNSLASHED;
43
78
  }
44
79
  const { activationEpoch, exitEpoch } = validator;
45
80
  const isActivePrev = activationEpoch <= prevEpoch && prevEpoch < exitEpoch;
46
81
  const isActiveCurr = activationEpoch <= currentEpoch && currentEpoch < exitEpoch;
47
82
  const isActiveNext = activationEpoch <= nextEpoch && nextEpoch < exitEpoch;
48
83
  const isActiveNext2 = activationEpoch <= nextEpoch2 && nextEpoch2 < exitEpoch;
49
- isActivePrevEpoch.push(isActivePrev);
84
+ if (!isActivePrev) {
85
+ isActivePrevEpoch[i] = false;
86
+ }
50
87
  // Both active validators and slashed-but-not-yet-withdrawn validators are eligible to receive penalties.
51
88
  // This is done to prevent self-slashing from being a way to escape inactivity leaks.
52
89
  // TODO: Consider using an array of `eligibleValidatorIndices: number[]`
53
90
  if (isActivePrev || (validator.slashed && prevEpoch + 1 < validator.withdrawableEpoch)) {
54
91
  eligibleValidatorIndices.push(i);
55
- status.flags |= FLAG_ELIGIBLE_ATTESTER;
92
+ flag |= FLAG_ELIGIBLE_ATTESTER;
56
93
  }
94
+ flags[i] = flag;
57
95
  if (isActiveCurr) {
58
- status.active = true;
59
96
  totalActiveStakeByIncrement += effectiveBalancesByIncrements[i];
60
97
  }
98
+ else {
99
+ isActiveCurrEpoch[i] = false;
100
+ }
61
101
  // To optimize process_registry_updates():
62
102
  // ```python
63
103
  // def is_eligible_for_activation_queue(validator: Validator) -> bool:
@@ -93,13 +133,14 @@ export function beforeProcessEpoch(state, opts) {
93
133
  // Adding extra condition `exitEpoch === FAR_FUTURE_EPOCH` to keep the array as small as possible. initiateValidatorExit() will ignore them anyway
94
134
  //
95
135
  // Use `else` since indicesEligibleForActivationQueue + indicesEligibleForActivation + indicesToEject are mutually exclusive
96
- else if (status.active &&
136
+ else if (isActiveCurr &&
97
137
  validator.exitEpoch === FAR_FUTURE_EPOCH &&
98
138
  validator.effectiveBalance <= config.EJECTION_BALANCE) {
99
139
  indicesToEject.push(i);
100
140
  }
101
- statuses.push(status);
102
- isActiveNextEpoch.push(isActiveNext);
141
+ if (!isActiveNext) {
142
+ isActiveNextEpoch[i] = false;
143
+ }
103
144
  if (isActiveNext2) {
104
145
  nextEpochShufflingActiveValidatorIndices.push(i);
105
146
  }
@@ -116,27 +157,20 @@ export function beforeProcessEpoch(state, opts) {
116
157
  // order by sequence of activationEligibilityEpoch setting and then index
117
158
  indicesEligibleForActivation.sort((a, b) => validators[a].activationEligibilityEpoch - validators[b].activationEligibilityEpoch || a - b);
118
159
  if (forkSeq === ForkSeq.phase0) {
119
- processPendingAttestations(state, statuses, state.previousEpochAttestations.getAllReadonly(), prevEpoch, FLAG_PREV_SOURCE_ATTESTER, FLAG_PREV_TARGET_ATTESTER, FLAG_PREV_HEAD_ATTESTER);
120
- processPendingAttestations(state, statuses, state.currentEpochAttestations.getAllReadonly(), currentEpoch, FLAG_CURR_SOURCE_ATTESTER, FLAG_CURR_TARGET_ATTESTER, FLAG_CURR_HEAD_ATTESTER);
160
+ processPendingAttestations(state, proposerIndices, inclusionDelays, flags, state.previousEpochAttestations.getAllReadonly(), prevEpoch, FLAG_PREV_SOURCE_ATTESTER, FLAG_PREV_TARGET_ATTESTER, FLAG_PREV_HEAD_ATTESTER);
161
+ processPendingAttestations(state, proposerIndices, inclusionDelays, flags, state.currentEpochAttestations.getAllReadonly(), currentEpoch, FLAG_CURR_SOURCE_ATTESTER, FLAG_CURR_TARGET_ATTESTER, FLAG_CURR_HEAD_ATTESTER);
121
162
  }
122
163
  else {
123
164
  const previousEpochParticipation = state.previousEpochParticipation.getAll();
124
- for (let i = 0; i < previousEpochParticipation.length; i++) {
125
- const status = statuses[i];
126
- // this is required to pass random spec tests in altair
127
- if (isActivePrevEpoch[i]) {
128
- // FLAG_PREV are indexes [0,1,2]
129
- status.flags |= previousEpochParticipation[i];
130
- }
131
- }
132
165
  const currentEpochParticipation = state.currentEpochParticipation.getAll();
133
- for (let i = 0; i < currentEpochParticipation.length; i++) {
134
- const status = statuses[i];
135
- // this is required to pass random spec tests in altair
136
- if (status.active) {
137
- // FLAG_PREV are indexes [3,4,5], so shift by 3
138
- status.flags |= currentEpochParticipation[i] << 3;
139
- }
166
+ for (let i = 0; i < validatorCount; i++) {
167
+ flags[i] |=
168
+ // checking active status first is required to pass random spec tests in altair
169
+ // in practice, inactive validators will have 0 participation
170
+ // FLAG_PREV are indexes [0,1,2]
171
+ (isActivePrevEpoch[i] ? previousEpochParticipation[i] : 0) |
172
+ // FLAG_CURR are indexes [3,4,5], so shift by 3
173
+ (isActiveCurrEpoch[i] ? currentEpochParticipation[i] << 3 : 0);
140
174
  }
141
175
  }
142
176
  let prevSourceUnslStake = 0;
@@ -147,19 +181,19 @@ export function beforeProcessEpoch(state, opts) {
147
181
  const FLAG_PREV_TARGET_ATTESTER_UNSLASHED = FLAG_PREV_TARGET_ATTESTER | FLAG_UNSLASHED;
148
182
  const FLAG_PREV_HEAD_ATTESTER_UNSLASHED = FLAG_PREV_HEAD_ATTESTER | FLAG_UNSLASHED;
149
183
  const FLAG_CURR_TARGET_UNSLASHED = FLAG_CURR_TARGET_ATTESTER | FLAG_UNSLASHED;
150
- for (let i = 0; i < statuses.length; i++) {
151
- const status = statuses[i];
184
+ for (let i = 0; i < validatorCount; i++) {
152
185
  const effectiveBalanceByIncrement = effectiveBalancesByIncrements[i];
153
- if (hasMarkers(status.flags, FLAG_PREV_SOURCE_ATTESTER_UNSLASHED)) {
186
+ const flag = flags[i];
187
+ if (hasMarkers(flag, FLAG_PREV_SOURCE_ATTESTER_UNSLASHED)) {
154
188
  prevSourceUnslStake += effectiveBalanceByIncrement;
155
189
  }
156
- if (hasMarkers(status.flags, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
190
+ if (hasMarkers(flag, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
157
191
  prevTargetUnslStake += effectiveBalanceByIncrement;
158
192
  }
159
- if (hasMarkers(status.flags, FLAG_PREV_HEAD_ATTESTER_UNSLASHED)) {
193
+ if (hasMarkers(flag, FLAG_PREV_HEAD_ATTESTER_UNSLASHED)) {
160
194
  prevHeadUnslStake += effectiveBalanceByIncrement;
161
195
  }
162
- if (hasMarkers(status.flags, FLAG_CURR_TARGET_UNSLASHED)) {
196
+ if (hasMarkers(flag, FLAG_CURR_TARGET_UNSLASHED)) {
163
197
  currTargetUnslStake += effectiveBalanceByIncrement;
164
198
  }
165
199
  }
@@ -204,8 +238,12 @@ export function beforeProcessEpoch(state, opts) {
204
238
  nextEpochShufflingActiveValidatorIndices,
205
239
  // to be updated in processEffectiveBalanceUpdates
206
240
  nextEpochTotalActiveBalanceByIncrement: 0,
241
+ isActivePrevEpoch,
242
+ isActiveCurrEpoch,
207
243
  isActiveNextEpoch,
208
- statuses,
244
+ proposerIndices,
245
+ inclusionDelays,
246
+ flags,
209
247
  // Will be assigned in processRewardsAndPenalties()
210
248
  balances: undefined,
211
249
  };
@@ -1 +1 @@
1
- {"version":3,"file":"epochTransitionCache.js","sourceRoot":"","sources":["../../src/cache/epochTransitionCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epochTransitionCache.js","sourceRoot":"","sources":["../../src/cache/epochTransitionCache.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,8 @@ const FLAG_PREV_HEAD_ATTESTER_OR_UNSLASHED = FLAG_PREV_HEAD_ATTESTER | FLAG_UNSL
28
28
  * - eligibleAttester: 98%
29
29
  */
30
30
  export function getAttestationDeltas(state, cache) {
31
- const validatorCount = cache.statuses.length;
31
+ const { flags, proposerIndices, inclusionDelays } = cache;
32
+ const validatorCount = flags.length;
32
33
  const rewards = newZeroedArray(validatorCount);
33
34
  const penalties = newZeroedArray(validatorCount);
34
35
  // no need this as we make sure it in EpochTransitionCache
@@ -48,12 +49,11 @@ export function getAttestationDeltas(state, cache) {
48
49
  // effectiveBalance is multiple of EFFECTIVE_BALANCE_INCREMENT and less than MAX_EFFECTIVE_BALANCE
49
50
  // so there are limited values of them like 32, 31, 30
50
51
  const rewardPnaltyItemCache = new Map();
51
- const { statuses } = cache;
52
52
  const { effectiveBalanceIncrements } = state.epochCtx;
53
- for (let i = 0; i < statuses.length; i++) {
53
+ for (let i = 0; i < flags.length; i++) {
54
+ const flag = flags[i];
54
55
  const effectiveBalanceIncrement = effectiveBalanceIncrements[i];
55
56
  const effectiveBalance = effectiveBalanceIncrement * EFFECTIVE_BALANCE_INCREMENT;
56
- const status = statuses[i];
57
57
  let rewardItem = rewardPnaltyItemCache.get(effectiveBalanceIncrement);
58
58
  if (!rewardItem) {
59
59
  const baseReward = Math.floor(Math.floor((effectiveBalance * BASE_REWARD_FACTOR) / balanceSqRoot) / BASE_REWARDS_PER_EPOCH);
@@ -78,13 +78,13 @@ export function getAttestationDeltas(state, cache) {
78
78
  }
79
79
  const { baseReward, proposerReward, maxAttesterReward, sourceCheckpointReward, targetCheckpointReward, headReward, basePenalty, finalityDelayPenalty, } = rewardItem;
80
80
  // inclusion speed bonus
81
- if (hasMarkers(status.flags, FLAG_PREV_SOURCE_ATTESTER_OR_UNSLASHED)) {
82
- rewards[status.proposerIndex] += proposerReward;
83
- rewards[i] += Math.floor(maxAttesterReward / status.inclusionDelay);
81
+ if (hasMarkers(flag, FLAG_PREV_SOURCE_ATTESTER_OR_UNSLASHED)) {
82
+ rewards[proposerIndices[i]] += proposerReward;
83
+ rewards[i] += Math.floor(maxAttesterReward / inclusionDelays[i]);
84
84
  }
85
- if (hasMarkers(status.flags, FLAG_ELIGIBLE_ATTESTER)) {
85
+ if (hasMarkers(flag, FLAG_ELIGIBLE_ATTESTER)) {
86
86
  // expected FFG source
87
- if (hasMarkers(status.flags, FLAG_PREV_SOURCE_ATTESTER_OR_UNSLASHED)) {
87
+ if (hasMarkers(flag, FLAG_PREV_SOURCE_ATTESTER_OR_UNSLASHED)) {
88
88
  // justification-participation reward
89
89
  rewards[i] += sourceCheckpointReward;
90
90
  }
@@ -93,7 +93,7 @@ export function getAttestationDeltas(state, cache) {
93
93
  penalties[i] += baseReward;
94
94
  }
95
95
  // expected FFG target
96
- if (hasMarkers(status.flags, FLAG_PREV_TARGET_ATTESTER_OR_UNSLASHED)) {
96
+ if (hasMarkers(flag, FLAG_PREV_TARGET_ATTESTER_OR_UNSLASHED)) {
97
97
  // boundary-attestation reward
98
98
  rewards[i] += targetCheckpointReward;
99
99
  }
@@ -102,7 +102,7 @@ export function getAttestationDeltas(state, cache) {
102
102
  penalties[i] += baseReward;
103
103
  }
104
104
  // expected head
105
- if (hasMarkers(status.flags, FLAG_PREV_HEAD_ATTESTER_OR_UNSLASHED)) {
105
+ if (hasMarkers(flag, FLAG_PREV_HEAD_ATTESTER_OR_UNSLASHED)) {
106
106
  // canonical-participation reward
107
107
  rewards[i] += headReward;
108
108
  }
@@ -113,7 +113,7 @@ export function getAttestationDeltas(state, cache) {
113
113
  // take away max rewards if we're not finalizing
114
114
  if (isInInactivityLeak) {
115
115
  penalties[i] += basePenalty;
116
- if (!hasMarkers(status.flags, FLAG_PREV_TARGET_ATTESTER_OR_UNSLASHED)) {
116
+ if (!hasMarkers(flag, FLAG_PREV_TARGET_ATTESTER_OR_UNSLASHED)) {
117
117
  penalties[i] += finalityDelayPenalty;
118
118
  }
119
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getAttestationDeltas.js","sourceRoot":"","sources":["../../src/epoch/getAttestationDeltas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,sBAAsB,IAAI,4BAA4B,EAAC,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAErD;;GAEG;AACH,MAAM,yBAAyB,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,yBAAyB,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,uBAAuB,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,MAAM,sBAAsB,GAAG,CAAC,IAAI,CAAC,CAAC;AAEtC,MAAM,sCAAsC,GAAG,yBAAyB,GAAG,cAAc,CAAC;AAC1F,MAAM,sCAAsC,GAAG,yBAAyB,GAAG,cAAc,CAAC;AAC1F,MAAM,oCAAoC,GAAG,uBAAuB,GAAG,cAAc,CAAC;AAatF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAA8B,EAC9B,KAA2B;IAE3B,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD,0DAA0D;IAC1D,kFAAkF;IAClF,MAAM,YAAY,GAAG,KAAK,CAAC,2BAA2B,CAAC;IACvD,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAEtF,kEAAkE;IAClE,MAAM,+BAA+B,GAAG,KAAK,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;IAC7F,MAAM,+BAA+B,GAAG,KAAK,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;IAC7F,MAAM,6BAA6B,GAAG,KAAK,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;IAEzF,iEAAiE;IACjE,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;IAExE,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;IAC5D,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;IACxD,MAAM,kBAAkB,GAAG,aAAa,GAAG,gCAAgC,CAAC;IAE5E,kGAAkG;IAClG,sDAAsD;IACtD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAA6B,CAAC;IACnE,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAC;IACzB,MAAM,EAAC,0BAA0B,EAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,yBAAyB,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,gBAAgB,GAAG,yBAAyB,GAAG,2BAA2B,CAAC;QACjF,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,UAAU,GAAG,qBAAqB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,aAAa,CAAC,GAAG,sBAAsB,CAC7F,CAAC;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,sBAAsB,CAAC,CAAC;YACvE,UAAU,GAAG;gBACX,UAAU;gBACV,cAAc;gBACd,iBAAiB,EAAE,UAAU,GAAG,cAAc;gBAC9C,sBAAsB,EAAE,kBAAkB;oBACxC,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,+BAA+B,CAAC,GAAG,YAAY,CAAC;gBAC7E,sBAAsB,EAAE,kBAAkB;oBACxC,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,+BAA+B,CAAC,GAAG,YAAY,CAAC;gBAC7E,UAAU,EAAE,kBAAkB;oBAC5B,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,6BAA6B,CAAC,GAAG,YAAY,CAAC;gBAC3E,WAAW,EAAE,UAAU,GAAG,4BAA4B,GAAG,cAAc;gBACvE,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,aAAa,CAAC,GAAG,2BAA2B,CAAC;aACnG,CAAC;YACF,qBAAqB,CAAC,GAAG,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,EACJ,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,UAAU,EACV,WAAW,EACX,oBAAoB,GACrB,GAAG,UAAU,CAAC;QAEf,wBAAwB;QACxB,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,sCAAsC,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC;YAChD,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,CAAC;YACrD,sBAAsB;YACtB,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,sCAAsC,CAAC,EAAE,CAAC;gBACrE,qCAAqC;gBACrC,OAAO,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;YAC7B,CAAC;YAED,sBAAsB;YACtB,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,sCAAsC,CAAC,EAAE,CAAC;gBACrE,8BAA8B;gBAC9B,OAAO,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,mDAAmD;gBACnD,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;YAC7B,CAAC;YAED,gBAAgB;YAChB,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,oCAAoC,CAAC,EAAE,CAAC;gBACnE,iCAAiC;gBACjC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,wCAAwC;gBACxC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;YAC7B,CAAC;YAED,gDAAgD;YAChD,IAAI,kBAAkB,EAAE,CAAC;gBACvB,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;gBAE5B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,sCAAsC,CAAC,EAAE,CAAC;oBACtE,SAAS,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"getAttestationDeltas.js","sourceRoot":"","sources":["../../src/epoch/getAttestationDeltas.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { CachedBeaconStateAltair, EpochTransitionCache } from "../types.js";
2
2
  /**
3
- * An aggregate of getFlagIndexDeltas and getInactivityPenaltyDeltas that loop through process.statuses 1 time instead of 4.
3
+ * An aggregate of getFlagIndexDeltas and getInactivityPenaltyDeltas that loop through process.flags 1 time instead of 4.
4
4
  *
5
5
  * - On normal mainnet conditions
6
6
  * - prevSourceAttester: 98%
@@ -2,7 +2,7 @@ import { EFFECTIVE_BALANCE_INCREMENT, INACTIVITY_PENALTY_QUOTIENT_ALTAIR, INACTI
2
2
  import { FLAG_ELIGIBLE_ATTESTER, FLAG_PREV_HEAD_ATTESTER_UNSLASHED, FLAG_PREV_SOURCE_ATTESTER_UNSLASHED, FLAG_PREV_TARGET_ATTESTER_UNSLASHED, hasMarkers, } from "../util/attesterStatus.js";
3
3
  import { isInInactivityLeak, newZeroedArray } from "../util/index.js";
4
4
  /**
5
- * An aggregate of getFlagIndexDeltas and getInactivityPenaltyDeltas that loop through process.statuses 1 time instead of 4.
5
+ * An aggregate of getFlagIndexDeltas and getInactivityPenaltyDeltas that loop through process.flags 1 time instead of 4.
6
6
  *
7
7
  * - On normal mainnet conditions
8
8
  * - prevSourceAttester: 98%
@@ -28,10 +28,10 @@ export function getRewardsAndPenaltiesAltair(state, cache) {
28
28
  const fork = config.getForkSeq(state.slot);
29
29
  const inactivityPenalityMultiplier = fork === ForkSeq.altair ? INACTIVITY_PENALTY_QUOTIENT_ALTAIR : INACTIVITY_PENALTY_QUOTIENT_BELLATRIX;
30
30
  const penaltyDenominator = config.INACTIVITY_SCORE_BIAS * inactivityPenalityMultiplier;
31
- const { statuses } = cache;
32
- for (let i = 0; i < statuses.length; i++) {
33
- const status = statuses[i];
34
- if (!hasMarkers(status.flags, FLAG_ELIGIBLE_ATTESTER)) {
31
+ const { flags } = cache;
32
+ for (let i = 0; i < flags.length; i++) {
33
+ const flag = flags[i];
34
+ if (!hasMarkers(flag, FLAG_ELIGIBLE_ATTESTER)) {
35
35
  continue;
36
36
  }
37
37
  const effectiveBalanceIncrement = epochCtx.effectiveBalanceIncrements[i];
@@ -59,7 +59,7 @@ export function getRewardsAndPenaltiesAltair(state, cache) {
59
59
  }
60
60
  const { timelySourceReward, timelySourcePenalty, timelyTargetReward, timelyTargetPenalty, timelyHeadReward } = rewardPenaltyItem;
61
61
  // same logic to getFlagIndexDeltas
62
- if (hasMarkers(status.flags, FLAG_PREV_SOURCE_ATTESTER_UNSLASHED)) {
62
+ if (hasMarkers(flag, FLAG_PREV_SOURCE_ATTESTER_UNSLASHED)) {
63
63
  if (!isInInactivityLeakBn) {
64
64
  rewards[i] += timelySourceReward;
65
65
  }
@@ -67,7 +67,7 @@ export function getRewardsAndPenaltiesAltair(state, cache) {
67
67
  else {
68
68
  penalties[i] += timelySourcePenalty;
69
69
  }
70
- if (hasMarkers(status.flags, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
70
+ if (hasMarkers(flag, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
71
71
  if (!isInInactivityLeakBn) {
72
72
  rewards[i] += timelyTargetReward;
73
73
  }
@@ -75,14 +75,14 @@ export function getRewardsAndPenaltiesAltair(state, cache) {
75
75
  else {
76
76
  penalties[i] += timelyTargetPenalty;
77
77
  }
78
- if (hasMarkers(status.flags, FLAG_PREV_HEAD_ATTESTER_UNSLASHED)) {
78
+ if (hasMarkers(flag, FLAG_PREV_HEAD_ATTESTER_UNSLASHED)) {
79
79
  if (!isInInactivityLeakBn) {
80
80
  rewards[i] += timelyHeadReward;
81
81
  }
82
82
  }
83
83
  // Same logic to getInactivityPenaltyDeltas
84
84
  // TODO: if we have limited value in inactivityScores we can provide a cache too
85
- if (!hasMarkers(status.flags, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
85
+ if (!hasMarkers(flag, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
86
86
  const penaltyNumerator = effectiveBalanceIncrement * EFFECTIVE_BALANCE_INCREMENT * state.inactivityScores.get(i);
87
87
  penalties[i] += Math.floor(penaltyNumerator / penaltyDenominator);
88
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getRewardsAndPenalties.js","sourceRoot":"","sources":["../../src/epoch/getRewardsAndPenalties.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getRewardsAndPenalties.js","sourceRoot":"","sources":["../../src/epoch/getRewardsAndPenalties.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { CachedBeaconStateAltair, EpochTransitionCache } from "../types.js";
2
2
  /**
3
- * Mutates `inactivityScores` from pre-calculated validator statuses.
3
+ * Mutates `inactivityScores` from pre-calculated validator flags.
4
4
  *
5
5
  * PERF: Cost = iterate over an array of size $VALIDATOR_COUNT + 'proportional' to how many validtors are inactive or
6
6
  * have been inactive in the past, i.e. that require an update to their inactivityScore. Worst case = all validators
@@ -2,7 +2,7 @@ import { GENESIS_EPOCH } from "@lodestar/params";
2
2
  import * as attesterStatusUtil from "../util/attesterStatus.js";
3
3
  import { isInInactivityLeak } from "../util/index.js";
4
4
  /**
5
- * Mutates `inactivityScores` from pre-calculated validator statuses.
5
+ * Mutates `inactivityScores` from pre-calculated validator flags.
6
6
  *
7
7
  * PERF: Cost = iterate over an array of size $VALIDATOR_COUNT + 'proportional' to how many validtors are inactive or
8
8
  * have been inactive in the past, i.e. that require an update to their inactivityScore. Worst case = all validators
@@ -21,17 +21,17 @@ export function processInactivityUpdates(state, cache) {
21
21
  }
22
22
  const { config, inactivityScores } = state;
23
23
  const { INACTIVITY_SCORE_BIAS, INACTIVITY_SCORE_RECOVERY_RATE } = config;
24
- const { statuses, eligibleValidatorIndices } = cache;
24
+ const { flags, eligibleValidatorIndices } = cache;
25
25
  const inActivityLeak = isInInactivityLeak(state);
26
26
  // this avoids importing FLAG_ELIGIBLE_ATTESTER inside the for loop, check the compiled code
27
27
  const { FLAG_PREV_TARGET_ATTESTER_UNSLASHED, hasMarkers } = attesterStatusUtil;
28
28
  const inactivityScoresArr = inactivityScores.getAll();
29
29
  for (let j = 0; j < eligibleValidatorIndices.length; j++) {
30
30
  const i = eligibleValidatorIndices[j];
31
- const status = statuses[i];
31
+ const flag = flags[i];
32
32
  let inactivityScore = inactivityScoresArr[i];
33
33
  const prevInactivityScore = inactivityScore;
34
- if (hasMarkers(status.flags, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
34
+ if (hasMarkers(flag, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
35
35
  inactivityScore -= Math.min(1, inactivityScore);
36
36
  }
37
37
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"processInactivityUpdates.js","sourceRoot":"","sources":["../../src/epoch/processInactivityUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAA8B,EAAE,KAA2B;IAClG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,EAAC,MAAM,EAAE,gBAAgB,EAAC,GAAG,KAAK,CAAC;IACzC,MAAM,EAAC,qBAAqB,EAAE,8BAA8B,EAAC,GAAG,MAAM,CAAC;IACvE,MAAM,EAAC,QAAQ,EAAE,wBAAwB,EAAC,GAAG,KAAK,CAAC;IACnD,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEjD,4FAA4F;IAC5F,MAAM,EAAC,mCAAmC,EAAE,UAAU,EAAC,GAAG,kBAAkB,CAAC;IAE7E,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzD,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,mBAAmB,GAAG,eAAe,CAAC;QAC5C,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,mCAAmC,CAAC,EAAE,CAAC;YAClE,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,eAAe,IAAI,qBAAqB,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,eAAe,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,eAAe,KAAK,mBAAmB,EAAE,CAAC;YAC5C,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"processInactivityUpdates.js","sourceRoot":"","sources":["../../src/epoch/processInactivityUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAA8B,EAAE,KAA2B;IAClG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,EAAC,MAAM,EAAE,gBAAgB,EAAC,GAAG,KAAK,CAAC;IACzC,MAAM,EAAC,qBAAqB,EAAE,8BAA8B,EAAC,GAAG,MAAM,CAAC;IACvE,MAAM,EAAC,KAAK,EAAE,wBAAwB,EAAC,GAAG,KAAK,CAAC;IAChD,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEjD,4FAA4F;IAC5F,MAAM,EAAC,mCAAmC,EAAE,UAAU,EAAC,GAAG,kBAAkB,CAAC;IAE7E,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzD,MAAM,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,mBAAmB,GAAG,eAAe,CAAC;QAC5C,IAAI,UAAU,CAAC,IAAI,EAAE,mCAAmC,CAAC,EAAE,CAAC;YAC1D,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,eAAe,IAAI,qBAAqB,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,eAAe,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,eAAe,KAAK,mBAAmB,EAAE,CAAC;YAC5C,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import { Epoch, phase0 } from "@lodestar/types";
2
2
  import { CachedBeaconStatePhase0 } from "../types.js";
3
- import { AttesterStatus } from "../util/index.js";
4
3
  /**
5
- * Mutates `statuses` from all pending attestations.
4
+ * Mutates `proposerIndices`, `inclusionDelays` and `flags` from all pending attestations.
6
5
  *
7
6
  * PERF: Cost 'proportional' to attestation count + how many bits per attestation + how many flags the attestation triggers
8
7
  *
@@ -12,5 +11,5 @@ import { AttesterStatus } from "../util/index.js";
12
11
  * - previousEpochAttestationsBits: 83
13
12
  * - currentEpochAttestationsBits: 85
14
13
  */
15
- export declare function processPendingAttestations(state: CachedBeaconStatePhase0, statuses: AttesterStatus[], attestations: phase0.PendingAttestation[], epoch: Epoch, sourceFlag: number, targetFlag: number, headFlag: number): void;
14
+ export declare function processPendingAttestations(state: CachedBeaconStatePhase0, proposerIndices: number[], inclusionDelays: number[], flags: number[], attestations: phase0.PendingAttestation[], epoch: Epoch, sourceFlag: number, targetFlag: number, headFlag: number): void;
16
15
  //# sourceMappingURL=processPendingAttestations.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { byteArrayEquals } from "@chainsafe/ssz";
2
2
  import { computeStartSlotAtEpoch, getBlockRootAtSlot } from "../util/index.js";
3
3
  /**
4
- * Mutates `statuses` from all pending attestations.
4
+ * Mutates `proposerIndices`, `inclusionDelays` and `flags` from all pending attestations.
5
5
  *
6
6
  * PERF: Cost 'proportional' to attestation count + how many bits per attestation + how many flags the attestation triggers
7
7
  *
@@ -11,7 +11,7 @@ import { computeStartSlotAtEpoch, getBlockRootAtSlot } from "../util/index.js";
11
11
  * - previousEpochAttestationsBits: 83
12
12
  * - currentEpochAttestationsBits: 85
13
13
  */
14
- export function processPendingAttestations(state, statuses, attestations, epoch, sourceFlag, targetFlag, headFlag) {
14
+ export function processPendingAttestations(state, proposerIndices, inclusionDelays, flags, attestations, epoch, sourceFlag, targetFlag, headFlag) {
15
15
  const { epochCtx, slot: stateSlot } = state;
16
16
  const prevEpoch = epochCtx.previousShuffling.epoch;
17
17
  if (attestations.length === 0) {
@@ -36,20 +36,18 @@ export function processPendingAttestations(state, statuses, attestations, epoch,
36
36
  const participants = att.aggregationBits.intersectValues(committee);
37
37
  if (epoch === prevEpoch) {
38
38
  for (const p of participants) {
39
- const status = statuses[p];
40
- if (status.proposerIndex === -1 || status.inclusionDelay > inclusionDelay) {
41
- status.proposerIndex = proposerIndex;
42
- status.inclusionDelay = inclusionDelay;
39
+ if (proposerIndices[p] === -1 || inclusionDelays[p] > inclusionDelay) {
40
+ proposerIndices[p] = proposerIndex;
41
+ inclusionDelays[p] = inclusionDelay;
43
42
  }
44
43
  }
45
44
  }
46
45
  for (const p of participants) {
47
- const status = statuses[p];
48
- status.flags |= sourceFlag;
46
+ flags[p] |= sourceFlag;
49
47
  if (attVotedTargetRoot) {
50
- status.flags |= targetFlag;
48
+ flags[p] |= targetFlag;
51
49
  if (attVotedHeadRoot) {
52
- status.flags |= headFlag;
50
+ flags[p] |= headFlag;
53
51
  }
54
52
  }
55
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"processPendingAttestations.js","sourceRoot":"","sources":["../../src/epoch/processPendingAttestations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAC,uBAAuB,EAAE,kBAAkB,EAAiB,MAAM,kBAAkB,CAAC;AAE7F;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA8B,EAC9B,QAA0B,EAC1B,YAAyC,EACzC,KAAY,EACZ,UAAkB,EAClB,UAAkB,EAClB,QAAgB;IAEhB,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,KAAK,CAAC;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACnD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,eAAe,CAAC;IAE1C,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IAExF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,kIAAkI;QAClI,8DAA8D;QAC9D,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QAC1C,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7B,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACzF,MAAM,gBAAgB,GACpB,OAAO,GAAG,SAAS,IAAI,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACxG,MAAM,SAAS,GAAG,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEpE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,cAAc,GAAG,cAAc,EAAE,CAAC;oBAC1E,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;oBACrC,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;YAC3B,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC;gBAC3B,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"processPendingAttestations.js","sourceRoot":"","sources":["../../src/epoch/processPendingAttestations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAC,uBAAuB,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAE7E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA8B,EAC9B,eAAyB,EACzB,eAAyB,EACzB,KAAe,EACf,YAAyC,EACzC,KAAY,EACZ,UAAkB,EAClB,UAAkB,EAClB,QAAgB;IAEhB,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,KAAK,CAAC;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACnD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,eAAe,CAAC;IAE1C,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IAExF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,kIAAkI;QAClI,8DAA8D;QAC9D,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QAC1C,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7B,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACzF,MAAM,gBAAgB,GACpB,OAAO,GAAG,SAAS,IAAI,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACxG,MAAM,SAAS,GAAG,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEpE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC7B,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,CAAC;oBACrE,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;oBACnC,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;YACvB,IAAI,kBAAkB,EAAE,CAAC;gBACvB,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;gBACvB,IAAI,gBAAgB,EAAE,CAAC;oBACrB,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
package/lib/metrics.d.ts CHANGED
@@ -2,7 +2,6 @@ import { Epoch } from "@lodestar/types";
2
2
  import { Gauge, Histogram } from "@lodestar/utils";
3
3
  import { CachedBeaconStateAllForks } from "./types.js";
4
4
  import { StateCloneSource, StateHashTreeRootSource } from "./stateTransition.js";
5
- import { AttesterStatus } from "./util/attesterStatus.js";
6
5
  import { EpochTransitionStep } from "./epoch/index.js";
7
6
  export type BeaconStateTransitionMetrics = {
8
7
  epochTransitionTime: Histogram;
@@ -32,7 +31,7 @@ export type BeaconStateTransitionMetrics = {
32
31
  postStateBalancesNodesPopulatedHit: Gauge;
33
32
  postStateValidatorsNodesPopulatedMiss: Gauge;
34
33
  postStateValidatorsNodesPopulatedHit: Gauge;
35
- registerValidatorStatuses: (currentEpoch: Epoch, statuses: AttesterStatus[], balances?: number[]) => void;
34
+ registerValidatorStatuses: (currentEpoch: Epoch, inclusionDelays: number[], flags: number[], isActiveCurrEpoch: boolean[], isActivePrevEpoch: boolean[], balances?: number[]) => void;
36
35
  };
37
36
  export declare function onStateCloneMetrics(state: CachedBeaconStateAllForks, metrics: BeaconStateTransitionMetrics, source: StateCloneSource): void;
38
37
  export declare function onPostStateMetrics(postState: CachedBeaconStateAllForks, metrics: BeaconStateTransitionMetrics): void;
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AA0BA,MAAM,UAAU,mBAAmB,CACjC,KAAgC,EAChC,OAAqC,EACrC,MAAwB;IAExB,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEvD,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,iCAAiC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,kCAAkC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,oCAAoC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAoC,EAAE,OAAqC;IAC5G,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,oCAAoC,CAAC,GAAG,EAAE,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,qCAAqC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,4FAA4F;AAC5F,wFAAwF;AACxF,SAAS,0BAA0B,CAAC,KAAgC;IAClE,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAgC;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAgCA,MAAM,UAAU,mBAAmB,CACjC,KAAgC,EAChC,OAAqC,EACrC,MAAwB;IAExB,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEvD,IAAI,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,iCAAiC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,kCAAkC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,oCAAoC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAoC,EAAE,OAAqC;IAC5G,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,oCAAoC,CAAC,GAAG,EAAE,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,qCAAqC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,4FAA4F;AAC5F,wFAAwF;AACxF,SAAS,0BAA0B,CAAC,KAAgC;IAClE,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAgC;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AACnD,CAAC"}
@@ -121,8 +121,8 @@ function processSlotsWithTransientCache(postState, slot, epochTransitionCacheOpt
121
121
  timer?.();
122
122
  }
123
123
  processEpoch(fork, postState, epochTransitionCache, metrics);
124
- const { currentEpoch, statuses, balances } = epochTransitionCache;
125
- metrics?.registerValidatorStatuses(currentEpoch, statuses, balances);
124
+ const { currentEpoch, inclusionDelays, flags, isActiveCurrEpoch, isActivePrevEpoch, balances } = epochTransitionCache;
125
+ metrics?.registerValidatorStatuses(currentEpoch, inclusionDelays, flags, isActiveCurrEpoch, isActivePrevEpoch, balances);
126
126
  postState.slot++;
127
127
  {
128
128
  const timer = metrics?.epochTransitionStepTime.startTimer({ step: EpochTransitionStep.afterProcessEpoch });
@@ -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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"}
@@ -9,18 +9,6 @@ export declare const FLAG_ELIGIBLE_ATTESTER: number;
9
9
  export declare const FLAG_PREV_SOURCE_ATTESTER_UNSLASHED: number;
10
10
  export declare const FLAG_PREV_TARGET_ATTESTER_UNSLASHED: number;
11
11
  export declare const FLAG_PREV_HEAD_ATTESTER_UNSLASHED: number;
12
- /**
13
- * During the epoch transition, additional data is precomputed to avoid traversing any state a second
14
- * time. Attestations are a big part of this, and each validator has a "status" to represent its
15
- * precomputed participation.
16
- */
17
- export type AttesterStatus = {
18
- flags: number;
19
- proposerIndex: number;
20
- inclusionDelay: number;
21
- active: boolean;
22
- };
23
- export declare function createAttesterStatus(): AttesterStatus;
24
12
  export declare function hasMarkers(flags: number, markers: number): boolean;
25
13
  export type AttesterFlags = {
26
14
  prevSourceAttester: boolean;
@@ -1,28 +1,22 @@
1
1
  import { TIMELY_HEAD_FLAG_INDEX, TIMELY_SOURCE_FLAG_INDEX, TIMELY_TARGET_FLAG_INDEX } from "@lodestar/params";
2
- export const FLAG_PREV_SOURCE_ATTESTER = 1 << 0;
3
- export const FLAG_PREV_TARGET_ATTESTER = 1 << 1;
4
- export const FLAG_PREV_HEAD_ATTESTER = 1 << 2;
5
- export const FLAG_CURR_SOURCE_ATTESTER = 1 << 3;
6
- export const FLAG_CURR_TARGET_ATTESTER = 1 << 4;
7
- export const FLAG_CURR_HEAD_ATTESTER = 1 << 5;
2
+ // We pack both previous and current epoch attester flags
3
+ // as well as slashed and eligibility flags into a single number
4
+ // to save space in our epoch transition cache.
5
+ // Note: the order of the flags is important for efficiently translating
6
+ // from the BeaconState flags to our flags.
7
+ // [prevSource, prevTarget, prevHead, currSource, currTarget, currHead, unslashed, eligible]
8
+ export const FLAG_PREV_SOURCE_ATTESTER = 1 << TIMELY_SOURCE_FLAG_INDEX;
9
+ export const FLAG_PREV_TARGET_ATTESTER = 1 << TIMELY_TARGET_FLAG_INDEX;
10
+ export const FLAG_PREV_HEAD_ATTESTER = 1 << TIMELY_HEAD_FLAG_INDEX;
11
+ export const FLAG_CURR_SOURCE_ATTESTER = 1 << (3 + TIMELY_SOURCE_FLAG_INDEX);
12
+ export const FLAG_CURR_TARGET_ATTESTER = 1 << (3 + TIMELY_TARGET_FLAG_INDEX);
13
+ export const FLAG_CURR_HEAD_ATTESTER = 1 << (3 + TIMELY_HEAD_FLAG_INDEX);
8
14
  export const FLAG_UNSLASHED = 1 << 6;
9
15
  export const FLAG_ELIGIBLE_ATTESTER = 1 << 7;
10
- // Precompute OR flags
16
+ // Precompute OR flags used in epoch processing
11
17
  export const FLAG_PREV_SOURCE_ATTESTER_UNSLASHED = FLAG_PREV_SOURCE_ATTESTER | FLAG_UNSLASHED;
12
18
  export const FLAG_PREV_TARGET_ATTESTER_UNSLASHED = FLAG_PREV_TARGET_ATTESTER | FLAG_UNSLASHED;
13
19
  export const FLAG_PREV_HEAD_ATTESTER_UNSLASHED = FLAG_PREV_HEAD_ATTESTER | FLAG_UNSLASHED;
14
- /** Same to https://github.com/ethereum/eth2.0-specs/blob/v1.1.0-alpha.5/specs/altair/beacon-chain.md#has_flag */
15
- const TIMELY_SOURCE = 1 << TIMELY_SOURCE_FLAG_INDEX;
16
- const TIMELY_TARGET = 1 << TIMELY_TARGET_FLAG_INDEX;
17
- const TIMELY_HEAD = 1 << TIMELY_HEAD_FLAG_INDEX;
18
- export function createAttesterStatus() {
19
- return {
20
- flags: 0,
21
- proposerIndex: -1,
22
- inclusionDelay: 0,
23
- active: false,
24
- };
25
- }
26
20
  export function hasMarkers(flags, markers) {
27
21
  return (flags & markers) === markers;
28
22
  }
@@ -58,6 +52,10 @@ export function toAttesterFlags(flagsObj) {
58
52
  flag |= FLAG_ELIGIBLE_ATTESTER;
59
53
  return flag;
60
54
  }
55
+ /** Same to https://github.com/ethereum/eth2.0-specs/blob/v1.1.0-alpha.5/specs/altair/beacon-chain.md#has_flag */
56
+ const TIMELY_SOURCE = 1 << TIMELY_SOURCE_FLAG_INDEX;
57
+ const TIMELY_TARGET = 1 << TIMELY_TARGET_FLAG_INDEX;
58
+ const TIMELY_HEAD = 1 << TIMELY_HEAD_FLAG_INDEX;
61
59
  export function parseParticipationFlags(flags) {
62
60
  return {
63
61
  timelySource: hasMarkers(flags, TIMELY_SOURCE),
@@ -1 +1 @@
1
- {"version":3,"file":"attesterStatus.js","sourceRoot":"","sources":["../../src/util/attesterStatus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attesterStatus.js","sourceRoot":"","sources":["../../src/util/attesterStatus.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.20.1",
14
+ "version": "1.21.0-dev.565bb3acab",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -64,10 +64,10 @@
64
64
  "@chainsafe/persistent-merkle-tree": "^0.7.1",
65
65
  "@chainsafe/persistent-ts": "^0.19.1",
66
66
  "@chainsafe/ssz": "^0.15.1",
67
- "@lodestar/config": "^1.20.1",
68
- "@lodestar/params": "^1.20.1",
69
- "@lodestar/types": "^1.20.1",
70
- "@lodestar/utils": "^1.20.1",
67
+ "@lodestar/config": "1.21.0-dev.565bb3acab",
68
+ "@lodestar/params": "1.21.0-dev.565bb3acab",
69
+ "@lodestar/types": "1.21.0-dev.565bb3acab",
70
+ "@lodestar/utils": "1.21.0-dev.565bb3acab",
71
71
  "bigint-buffer": "^1.1.5"
72
72
  },
73
73
  "keywords": [
@@ -76,5 +76,5 @@
76
76
  "beacon",
77
77
  "blockchain"
78
78
  ],
79
- "gitHead": "385974156c64e989e2145de88398afc29fd34266"
79
+ "gitHead": "2210538ea5e8a3d1266c28077e5066f0bafc084c"
80
80
  }