@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.
- package/lib/cache/epochTransitionCache.d.ts +13 -2
- package/lib/cache/epochTransitionCache.js +74 -36
- package/lib/cache/epochTransitionCache.js.map +1 -1
- package/lib/epoch/getAttestationDeltas.js +12 -12
- package/lib/epoch/getAttestationDeltas.js.map +1 -1
- package/lib/epoch/getRewardsAndPenalties.d.ts +1 -1
- package/lib/epoch/getRewardsAndPenalties.js +9 -9
- package/lib/epoch/getRewardsAndPenalties.js.map +1 -1
- package/lib/epoch/processInactivityUpdates.d.ts +1 -1
- package/lib/epoch/processInactivityUpdates.js +4 -4
- package/lib/epoch/processInactivityUpdates.js.map +1 -1
- package/lib/epoch/processPendingAttestations.d.ts +2 -3
- package/lib/epoch/processPendingAttestations.js +8 -10
- package/lib/epoch/processPendingAttestations.js.map +1 -1
- package/lib/metrics.d.ts +1 -2
- package/lib/metrics.js.map +1 -1
- package/lib/stateTransition.js +2 -2
- package/lib/stateTransition.js.map +1 -1
- package/lib/util/attesterStatus.d.ts +0 -12
- package/lib/util/attesterStatus.js +17 -19
- package/lib/util/attesterStatus.js.map +1 -1
- package/package.json +6 -6
|
@@ -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
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
-
|
|
102
|
-
|
|
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,
|
|
120
|
-
processPendingAttestations(state,
|
|
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 <
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
// FLAG_PREV are indexes [
|
|
138
|
-
|
|
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 <
|
|
151
|
-
const status = statuses[i];
|
|
184
|
+
for (let i = 0; i < validatorCount; i++) {
|
|
152
185
|
const effectiveBalanceByIncrement = effectiveBalancesByIncrements[i];
|
|
153
|
-
|
|
186
|
+
const flag = flags[i];
|
|
187
|
+
if (hasMarkers(flag, FLAG_PREV_SOURCE_ATTESTER_UNSLASHED)) {
|
|
154
188
|
prevSourceUnslStake += effectiveBalanceByIncrement;
|
|
155
189
|
}
|
|
156
|
-
if (hasMarkers(
|
|
190
|
+
if (hasMarkers(flag, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
|
|
157
191
|
prevTargetUnslStake += effectiveBalanceByIncrement;
|
|
158
192
|
}
|
|
159
|
-
if (hasMarkers(
|
|
193
|
+
if (hasMarkers(flag, FLAG_PREV_HEAD_ATTESTER_UNSLASHED)) {
|
|
160
194
|
prevHeadUnslStake += effectiveBalanceByIncrement;
|
|
161
195
|
}
|
|
162
|
-
if (hasMarkers(
|
|
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
|
-
|
|
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":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,2BAA2B,EAAE,gBAAgB,EAAE,OAAO,EAAE,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AAE/G,OAAO,
|
|
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
|
|
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 <
|
|
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(
|
|
82
|
-
rewards[
|
|
83
|
-
rewards[i] += Math.floor(maxAttesterReward /
|
|
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(
|
|
85
|
+
if (hasMarkers(flag, FLAG_ELIGIBLE_ATTESTER)) {
|
|
86
86
|
// expected FFG source
|
|
87
|
-
if (hasMarkers(
|
|
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(
|
|
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(
|
|
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(
|
|
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,
|
|
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.
|
|
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.
|
|
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 {
|
|
32
|
-
for (let i = 0; i <
|
|
33
|
-
const
|
|
34
|
-
if (!hasMarkers(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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":"AAAA,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,qCAAqC,EACrC,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,OAAO,GACR,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,sBAAsB,EACtB,iCAAiC,EACjC,mCAAmC,EACnC,mCAAmC,EACnC,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,kBAAkB,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAWpE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAA8B,EAC9B,KAA2B;IAE3B,mFAAmF;IACnF,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,2BAA2B,CAAC;IAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvD,kGAAkG;IAClG,sDAAsD;IACtD,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAA6B,CAAC;IACpE,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,4BAA4B,GAChC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,qCAAqC,CAAC;IACvG,MAAM,kBAAkB,GAAG,MAAM,CAAC,qBAAqB,GAAG,4BAA4B,CAAC;IAEvF,MAAM,EAAC,
|
|
1
|
+
{"version":3,"file":"getRewardsAndPenalties.js","sourceRoot":"","sources":["../../src/epoch/getRewardsAndPenalties.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,kCAAkC,EAClC,qCAAqC,EACrC,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,OAAO,GACR,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,sBAAsB,EACtB,iCAAiC,EACjC,mCAAmC,EACnC,mCAAmC,EACnC,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,kBAAkB,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAWpE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAA8B,EAC9B,KAA2B;IAE3B,mFAAmF;IACnF,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,2BAA2B,CAAC;IAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAEjD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvD,kGAAkG;IAClG,sDAAsD;IACtD,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAA6B,CAAC;IACpE,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,4BAA4B,GAChC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,qCAAqC,CAAC;IACvG,MAAM,kBAAkB,GAAG,MAAM,CAAC,qBAAqB,GAAG,4BAA4B,CAAC;IAEvF,MAAM,EAAC,KAAK,EAAC,GAAG,KAAK,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QAED,MAAM,yBAAyB,GAAG,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;QAEzE,IAAI,iBAAiB,GAAG,sBAAsB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAC9E,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,yBAAyB,GAAG,KAAK,CAAC,sBAAsB,CAAC;YAC5E,MAAM,OAAO,GAAG,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;YACnE,MAAM,kCAAkC,GAAG,KAAK,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;YAChG,MAAM,kCAAkC,GAAG,KAAK,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;YAChG,MAAM,kCAAkC,GAAG,KAAK,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;YAC9F,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,kCAAkC,CAAC;YACpF,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,kCAAkC,CAAC;YACpF,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,kCAAkC,CAAC;YACpF,iBAAiB,GAAG;gBAClB,UAAU,EAAE,UAAU;gBACtB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,CAAC;gBAC3F,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,CAAC;gBAC3F,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,CAAC;gBACzF,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,kBAAkB,CAAC;gBAC5E,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,kBAAkB,CAAC;aAC7E,CAAC;YACF,sBAAsB,CAAC,GAAG,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,gBAAgB,EAAC,GACxG,iBAAiB,CAAC;QAEpB,mCAAmC;QACnC,IAAI,UAAU,CAAC,IAAI,EAAE,mCAAmC,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,OAAO,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC;YACnC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC;QACtC,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,EAAE,mCAAmC,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,OAAO,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC;YACnC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC;QACtC,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,EAAE,iCAAiC,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,OAAO,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC;YACjC,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,gFAAgF;QAChF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mCAAmC,CAAC,EAAE,CAAC;YAC3D,MAAM,gBAAgB,GAAG,yBAAyB,GAAG,2BAA2B,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjH,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CachedBeaconStateAltair, EpochTransitionCache } from "../types.js";
|
|
2
2
|
/**
|
|
3
|
-
* Mutates `inactivityScores` from pre-calculated validator
|
|
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
|
|
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 {
|
|
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
|
|
31
|
+
const flag = flags[i];
|
|
32
32
|
let inactivityScore = inactivityScoresArr[i];
|
|
33
33
|
const prevInactivityScore = inactivityScore;
|
|
34
|
-
if (hasMarkers(
|
|
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,
|
|
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 `
|
|
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,
|
|
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 `
|
|
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,
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
48
|
-
status.flags |= sourceFlag;
|
|
46
|
+
flags[p] |= sourceFlag;
|
|
49
47
|
if (attVotedTargetRoot) {
|
|
50
|
-
|
|
48
|
+
flags[p] |= targetFlag;
|
|
51
49
|
if (attVotedHeadRoot) {
|
|
52
|
-
|
|
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,
|
|
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,
|
|
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;
|
package/lib/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"
|
|
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"}
|
package/lib/stateTransition.js
CHANGED
|
@@ -121,8 +121,8 @@ function processSlotsWithTransientCache(postState, slot, epochTransitionCacheOpt
|
|
|
121
121
|
timer?.();
|
|
122
122
|
}
|
|
123
123
|
processEpoch(fork, postState, epochTransitionCache, metrics);
|
|
124
|
-
const { currentEpoch,
|
|
125
|
-
metrics?.registerValidatorStatuses(currentEpoch,
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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":"AAAA,OAAO,EAAC,sBAAsB,EAAE,wBAAwB,EAAE,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AAE5G,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,IAAI,
|
|
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.
|
|
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": "
|
|
68
|
-
"@lodestar/params": "
|
|
69
|
-
"@lodestar/types": "
|
|
70
|
-
"@lodestar/utils": "
|
|
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": "
|
|
79
|
+
"gitHead": "2210538ea5e8a3d1266c28077e5066f0bafc084c"
|
|
80
80
|
}
|