@lodestar/state-transition 1.21.0-dev.d6175da2fa → 1.21.0-dev.e1dec02b10
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/block/processDeposit.js +4 -5
- package/lib/block/processDeposit.js.map +1 -1
- package/lib/cache/epochCache.d.ts +1 -0
- package/lib/cache/epochCache.js +9 -7
- package/lib/cache/epochCache.js.map +1 -1
- package/lib/cache/epochTransitionCache.d.ts +21 -10
- package/lib/cache/epochTransitionCache.js +80 -41
- package/lib/cache/epochTransitionCache.js.map +1 -1
- package/lib/cache/pubkeyCache.d.ts +1 -1
- package/lib/cache/pubkeyCache.js +2 -3
- package/lib/cache/pubkeyCache.js.map +1 -1
- package/lib/cache/stateCache.js +2 -3
- package/lib/cache/stateCache.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 +20 -19
- 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/epoch/processRegistryUpdates.js +7 -3
- package/lib/epoch/processRegistryUpdates.js.map +1 -1
- package/lib/epoch/processSyncCommitteeUpdates.js +2 -2
- package/lib/epoch/processSyncCommitteeUpdates.js.map +1 -1
- package/lib/metrics.d.ts +1 -2
- package/lib/metrics.js.map +1 -1
- package/lib/signatureSets/blsToExecutionChange.js +2 -3
- package/lib/signatureSets/blsToExecutionChange.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/lib/util/epochShuffling.d.ts +1 -1
- package/lib/util/epochShuffling.js +9 -4
- package/lib/util/epochShuffling.js.map +1 -1
- package/lib/util/interop.d.ts +1 -1
- package/lib/util/interop.js +2 -2
- package/lib/util/interop.js.map +1 -1
- package/lib/util/signatureSets.d.ts +1 -1
- package/lib/util/signatureSets.js +4 -4
- package/lib/util/signatureSets.js.map +1 -1
- package/lib/util/syncCommittee.js +2 -2
- package/lib/util/syncCommittee.js.map +1 -1
- package/package.json +7 -8
|
@@ -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":"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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
|
|
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,27 +21,28 @@ 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 } = cache;
|
|
25
25
|
const inActivityLeak = isInInactivityLeak(state);
|
|
26
26
|
// this avoids importing FLAG_ELIGIBLE_ATTESTER inside the for loop, check the compiled code
|
|
27
|
-
const { FLAG_PREV_TARGET_ATTESTER_UNSLASHED, hasMarkers } = attesterStatusUtil;
|
|
27
|
+
const { FLAG_PREV_TARGET_ATTESTER_UNSLASHED, FLAG_ELIGIBLE_ATTESTER, hasMarkers } = attesterStatusUtil;
|
|
28
28
|
const inactivityScoresArr = inactivityScores.getAll();
|
|
29
|
-
for (let
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
29
|
+
for (let i = 0; i < flags.length; i++) {
|
|
30
|
+
const flag = flags[i];
|
|
31
|
+
if (hasMarkers(flag, FLAG_ELIGIBLE_ATTESTER)) {
|
|
32
|
+
let inactivityScore = inactivityScoresArr[i];
|
|
33
|
+
const prevInactivityScore = inactivityScore;
|
|
34
|
+
if (hasMarkers(flag, FLAG_PREV_TARGET_ATTESTER_UNSLASHED)) {
|
|
35
|
+
inactivityScore -= Math.min(1, inactivityScore);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
inactivityScore += INACTIVITY_SCORE_BIAS;
|
|
39
|
+
}
|
|
40
|
+
if (!inActivityLeak) {
|
|
41
|
+
inactivityScore -= Math.min(INACTIVITY_SCORE_RECOVERY_RATE, inactivityScore);
|
|
42
|
+
}
|
|
43
|
+
if (inactivityScore !== prevInactivityScore) {
|
|
44
|
+
inactivityScores.set(i, inactivityScore);
|
|
45
|
+
}
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
}
|
|
@@ -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,EAAC,GAAG,KAAK,CAAC;IACtB,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEjD,4FAA4F;IAC5F,MAAM,EAAC,mCAAmC,EAAE,sBAAsB,EAAE,UAAU,EAAC,GAAG,kBAAkB,CAAC;IAErG,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;IAEtD,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,UAAU,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC7C,IAAI,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,mBAAmB,GAAG,eAAe,CAAC;YAC5C,IAAI,UAAU,CAAC,IAAI,EAAE,mCAAmC,CAAC,EAAE,CAAC;gBAC1D,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,eAAe,IAAI,qBAAqB,CAAC;YAC3C,CAAC;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,eAAe,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,eAAe,KAAK,mBAAmB,EAAE,CAAC;gBAC5C,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YAC3C,CAAC;QACH,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"}
|
|
@@ -30,9 +30,13 @@ export function processRegistryUpdates(state, cache) {
|
|
|
30
30
|
validators.get(index).activationEligibilityEpoch = epochCtx.epoch + 1;
|
|
31
31
|
}
|
|
32
32
|
const finalityEpoch = state.finalizedCheckpoint.epoch;
|
|
33
|
+
// this avoids an array allocation compared to `slice(0, epochCtx.activationChurnLimit)`
|
|
34
|
+
const len = Math.min(cache.indicesEligibleForActivation.length, epochCtx.activationChurnLimit);
|
|
35
|
+
const activationEpoch = computeActivationExitEpoch(cache.currentEpoch);
|
|
33
36
|
// dequeue validators for activation up to churn limit
|
|
34
|
-
for (
|
|
35
|
-
const
|
|
37
|
+
for (let i = 0; i < len; i++) {
|
|
38
|
+
const validatorIndex = cache.indicesEligibleForActivation[i];
|
|
39
|
+
const validator = validators.get(validatorIndex);
|
|
36
40
|
// placement in queue is finalized
|
|
37
41
|
if (validator.activationEligibilityEpoch > finalityEpoch) {
|
|
38
42
|
// remaining validators all have an activationEligibilityEpoch that is higher anyway, break early
|
|
@@ -41,7 +45,7 @@ export function processRegistryUpdates(state, cache) {
|
|
|
41
45
|
// So we need to filter by finalityEpoch here to comply with the spec.
|
|
42
46
|
break;
|
|
43
47
|
}
|
|
44
|
-
validator.activationEpoch =
|
|
48
|
+
validator.activationEpoch = activationEpoch;
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
//# sourceMappingURL=processRegistryUpdates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processRegistryUpdates.js","sourceRoot":"","sources":["../../src/epoch/processRegistryUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAGxD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAgC,EAAE,KAA2B;IAClG,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAC;IAEzB,oDAAoD;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAEpC,mFAAmF;IAEnF,oBAAoB;IACpB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,kDAAkD;QAClD,0EAA0E;QAC1E,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,mCAAmC;IACnC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,iCAAiC,EAAE,CAAC;QAC5D,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,0BAA0B,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACtD,
|
|
1
|
+
{"version":3,"file":"processRegistryUpdates.js","sourceRoot":"","sources":["../../src/epoch/processRegistryUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAGxD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAgC,EAAE,KAA2B;IAClG,MAAM,EAAC,QAAQ,EAAC,GAAG,KAAK,CAAC;IAEzB,oDAAoD;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IAEpC,mFAAmF;IAEnF,oBAAoB;IACpB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzC,kDAAkD;QAClD,0EAA0E;QAC1E,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,mCAAmC;IACnC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,iCAAiC,EAAE,CAAC;QAC5D,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,0BAA0B,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACtD,wFAAwF;IACxF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAC/F,MAAM,eAAe,GAAG,0BAA0B,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvE,sDAAsD;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACjD,kCAAkC;QAClC,IAAI,SAAS,CAAC,0BAA0B,GAAG,aAAa,EAAE,CAAC;YACzD,iGAAiG;YACjG,kFAAkF;YAClF,iHAAiH;YACjH,sEAAsE;YACtE,MAAM;QACR,CAAC;QACD,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC;IAC9C,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { aggregateSerializedPublicKeys } from "@chainsafe/blst";
|
|
2
2
|
import { EPOCHS_PER_SYNC_COMMITTEE_PERIOD } from "@lodestar/params";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
4
|
import { getNextSyncCommitteeIndices } from "../util/seed.js";
|
|
@@ -20,7 +20,7 @@ export function processSyncCommitteeUpdates(state) {
|
|
|
20
20
|
state.currentSyncCommittee = state.nextSyncCommittee;
|
|
21
21
|
state.nextSyncCommittee = ssz.altair.SyncCommittee.toViewDU({
|
|
22
22
|
pubkeys: nextSyncCommitteePubkeys,
|
|
23
|
-
aggregatePubkey:
|
|
23
|
+
aggregatePubkey: aggregateSerializedPublicKeys(nextSyncCommitteePubkeys).toBytes(),
|
|
24
24
|
});
|
|
25
25
|
// Rotate syncCommittee cache
|
|
26
26
|
state.epochCtx.rotateSyncCommitteeIndexed(nextSyncCommitteeIndices);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processSyncCommitteeUpdates.js","sourceRoot":"","sources":["../../src/epoch/processSyncCommitteeUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"processSyncCommitteeUpdates.js","sourceRoot":"","sources":["../../src/epoch/processSyncCommitteeUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAC,gCAAgC,EAAC,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,2BAA2B,EAAC,MAAM,iBAAiB,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAA8B;IACxE,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IAE3C,IAAI,SAAS,GAAG,gCAAgC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,sBAAsB,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC;QAC1E,MAAM,EAAC,0BAA0B,EAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;QAEpD,MAAM,wBAAwB,GAAG,2BAA2B,CAC1D,KAAK,EACL,sBAAsB,EACtB,0BAA0B,CAC3B,CAAC;QAEF,iFAAiF;QACjF,MAAM,wBAAwB,GAAG,wBAAwB,CAAC,GAAG,CAC3D,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CACtD,CAAC;QAEF,gCAAgC;QAChC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACrD,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC1D,OAAO,EAAE,wBAAwB;YACjC,eAAe,EAAE,6BAA6B,CAAC,wBAAwB,CAAC,CAAC,OAAO,EAAE;SACnF,CAAC,CAAC;QAEH,6BAA6B;QAC7B,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;IACtE,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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CoordType } from "@chainsafe/bls/types";
|
|
1
|
+
import { PublicKey } from "@chainsafe/blst";
|
|
3
2
|
import { DOMAIN_BLS_TO_EXECUTION_CHANGE, ForkName } from "@lodestar/params";
|
|
4
3
|
import { ssz } from "@lodestar/types";
|
|
5
4
|
import { computeSigningRoot, SignatureSetType, verifySignatureSet } from "../util/index.js";
|
|
@@ -17,7 +16,7 @@ export function getBlsToExecutionChangeSignatureSet(config, signedBLSToExecution
|
|
|
17
16
|
type: SignatureSetType.single,
|
|
18
17
|
// The withdrawal pubkey is the same as signedBLSToExecutionChange's fromBlsPubkey as it should
|
|
19
18
|
// be validated against the withdrawal credentials digest
|
|
20
|
-
pubkey:
|
|
19
|
+
pubkey: PublicKey.fromBytes(signedBLSToExecutionChange.message.fromBlsPubkey, true),
|
|
21
20
|
signingRoot: computeSigningRoot(ssz.capella.BLSToExecutionChange, signedBLSToExecutionChange.message, domain),
|
|
22
21
|
signature: signedBLSToExecutionChange.signature,
|
|
23
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blsToExecutionChange.js","sourceRoot":"","sources":["../../src/signatureSets/blsToExecutionChange.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"blsToExecutionChange.js","sourceRoot":"","sources":["../../src/signatureSets/blsToExecutionChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,8BAA8B,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAU,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAC,kBAAkB,EAAiB,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAGzG,MAAM,UAAU,mCAAmC,CACjD,KAAgC,EAChC,0BAA8D;IAE9D,OAAO,kBAAkB,CAAC,mCAAmC,CAAC,KAAK,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mCAAmC,CACjD,MAAoB,EACpB,0BAA8D;IAE9D,4CAA4C;IAC5C,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;IAErF,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,+FAA+F;QAC/F,yDAAyD;QACzD,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;QACnF,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7G,SAAS,EAAE,0BAA0B,CAAC,SAAS;KAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,MAAoB,EACpB,WAAsC;IAEtC,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,EAAE,CACjF,mCAAmC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAClE,CAAC;AACJ,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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"}
|
|
@@ -35,6 +35,6 @@ export type EpochShuffling = {
|
|
|
35
35
|
committeesPerSlot: number;
|
|
36
36
|
};
|
|
37
37
|
export declare function computeCommitteeCount(activeValidatorCount: number): number;
|
|
38
|
-
export declare function computeEpochShuffling(state: BeaconStateAllForks, activeIndices: ArrayLike<ValidatorIndex>, epoch: Epoch): EpochShuffling;
|
|
38
|
+
export declare function computeEpochShuffling(state: BeaconStateAllForks, activeIndices: ArrayLike<ValidatorIndex>, activeValidatorCount: number, epoch: Epoch): EpochShuffling;
|
|
39
39
|
export declare function getShufflingDecisionBlock(state: BeaconStateAllForks, epoch: Epoch): RootHex;
|
|
40
40
|
//# sourceMappingURL=epochShuffling.d.ts.map
|