@lodestar/state-transition 1.21.0 → 1.22.0-dev.0e79d29720
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/LICENSE +201 -165
- package/lib/block/index.js +1 -1
- package/lib/block/index.js.map +1 -1
- package/lib/block/initiateValidatorExit.d.ts +2 -1
- package/lib/block/initiateValidatorExit.js +21 -13
- package/lib/block/initiateValidatorExit.js.map +1 -1
- package/lib/block/isValidIndexedAttestation.js +5 -2
- package/lib/block/isValidIndexedAttestation.js.map +1 -1
- package/lib/block/processAttestationPhase0.d.ts +2 -2
- package/lib/block/processAttestationPhase0.js +33 -11
- package/lib/block/processAttestationPhase0.js.map +1 -1
- package/lib/block/processAttestations.d.ts +2 -2
- package/lib/block/processAttestations.js.map +1 -1
- package/lib/block/processAttestationsAltair.d.ts +2 -2
- package/lib/block/processAttestationsAltair.js +3 -3
- package/lib/block/processAttestationsAltair.js.map +1 -1
- package/lib/block/processBlockHeader.js +3 -2
- package/lib/block/processBlockHeader.js.map +1 -1
- package/lib/block/processConsolidationRequest.d.ts +4 -0
- package/lib/block/processConsolidationRequest.js +55 -0
- package/lib/block/processConsolidationRequest.js.map +1 -0
- package/lib/block/processDeposit.d.ts +8 -0
- package/lib/block/processDeposit.js +94 -54
- package/lib/block/processDeposit.js.map +1 -1
- package/lib/block/processDepositRequest.d.ts +5 -0
- package/lib/block/processDepositRequest.js +9 -0
- package/lib/block/processDepositRequest.js.map +1 -0
- package/lib/block/processOperations.d.ts +4 -1
- package/lib/block/processOperations.js +21 -4
- package/lib/block/processOperations.js.map +1 -1
- package/lib/block/processVoluntaryExit.d.ts +2 -1
- package/lib/block/processVoluntaryExit.js +16 -6
- package/lib/block/processVoluntaryExit.js.map +1 -1
- package/lib/block/processWithdrawalRequest.d.ts +5 -0
- package/lib/block/processWithdrawalRequest.js +67 -0
- package/lib/block/processWithdrawalRequest.js.map +1 -0
- package/lib/block/processWithdrawals.d.ts +5 -3
- package/lib/block/processWithdrawals.js +70 -17
- package/lib/block/processWithdrawals.js.map +1 -1
- package/lib/block/slashValidator.js +9 -5
- package/lib/block/slashValidator.js.map +1 -1
- package/lib/cache/effectiveBalanceIncrements.d.ts +3 -4
- package/lib/cache/effectiveBalanceIncrements.js +5 -5
- package/lib/cache/effectiveBalanceIncrements.js.map +1 -1
- package/lib/cache/epochCache.d.ts +66 -8
- package/lib/cache/epochCache.js +190 -27
- package/lib/cache/epochCache.js.map +1 -1
- package/lib/cache/epochTransitionCache.d.ts +12 -2
- package/lib/cache/epochTransitionCache.js +6 -3
- package/lib/cache/epochTransitionCache.js.map +1 -1
- package/lib/cache/pubkeyCache.d.ts +25 -6
- package/lib/cache/pubkeyCache.js +13 -7
- package/lib/cache/pubkeyCache.js.map +1 -1
- package/lib/cache/stateCache.d.ts +4 -2
- package/lib/cache/stateCache.js +2 -1
- package/lib/cache/stateCache.js.map +1 -1
- package/lib/cache/syncCommitteeCache.js +2 -2
- package/lib/cache/syncCommitteeCache.js.map +1 -1
- package/lib/cache/types.d.ts +1 -0
- package/lib/epoch/index.d.ts +6 -2
- package/lib/epoch/index.js +27 -5
- package/lib/epoch/index.js.map +1 -1
- package/lib/epoch/processEffectiveBalanceUpdates.d.ts +4 -1
- package/lib/epoch/processEffectiveBalanceUpdates.js +25 -6
- package/lib/epoch/processEffectiveBalanceUpdates.js.map +1 -1
- package/lib/epoch/processPendingBalanceDeposits.d.ts +12 -0
- package/lib/epoch/processPendingBalanceDeposits.js +68 -0
- package/lib/epoch/processPendingBalanceDeposits.js.map +1 -0
- package/lib/epoch/processPendingConsolidations.d.ts +16 -0
- package/lib/epoch/processPendingConsolidations.js +49 -0
- package/lib/epoch/processPendingConsolidations.js.map +1 -0
- package/lib/epoch/processRegistryUpdates.d.ts +2 -1
- package/lib/epoch/processRegistryUpdates.js +6 -3
- package/lib/epoch/processRegistryUpdates.js.map +1 -1
- package/lib/epoch/processRewardsAndPenalties.js +2 -1
- package/lib/epoch/processRewardsAndPenalties.js.map +1 -1
- package/lib/epoch/processSyncCommitteeUpdates.d.ts +2 -1
- package/lib/epoch/processSyncCommitteeUpdates.js +4 -3
- package/lib/epoch/processSyncCommitteeUpdates.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/metrics.d.ts +5 -0
- package/lib/metrics.js.map +1 -1
- package/lib/signatureSets/attesterSlashings.d.ts +3 -3
- package/lib/signatureSets/attesterSlashings.js +1 -2
- package/lib/signatureSets/attesterSlashings.js.map +1 -1
- package/lib/signatureSets/index.js +2 -2
- package/lib/signatureSets/index.js.map +1 -1
- package/lib/signatureSets/indexedAttestation.js +2 -1
- package/lib/signatureSets/indexedAttestation.js.map +1 -1
- package/lib/slot/index.d.ts +1 -0
- package/lib/slot/index.js +1 -0
- package/lib/slot/index.js.map +1 -1
- package/lib/slot/upgradeStateToAltair.js +1 -1
- package/lib/slot/upgradeStateToAltair.js.map +1 -1
- package/lib/slot/upgradeStateToElectra.d.ts +8 -0
- package/lib/slot/upgradeStateToElectra.js +138 -0
- package/lib/slot/upgradeStateToElectra.js.map +1 -0
- package/lib/stateTransition.d.ts +1 -0
- package/lib/stateTransition.js +12 -8
- package/lib/stateTransition.js.map +1 -1
- package/lib/types.d.ts +2 -2
- package/lib/util/balance.js +2 -2
- package/lib/util/balance.js.map +1 -1
- package/lib/util/deposit.d.ts +4 -0
- package/lib/util/deposit.js +22 -0
- package/lib/util/deposit.js.map +1 -0
- package/lib/util/electra.d.ts +8 -0
- package/lib/util/electra.js +47 -0
- package/lib/util/electra.js.map +1 -0
- package/lib/util/epoch.d.ts +4 -1
- package/lib/util/epoch.js +37 -0
- package/lib/util/epoch.js.map +1 -1
- package/lib/util/epochShuffling.js +2 -3
- package/lib/util/epochShuffling.js.map +1 -1
- package/lib/util/execution.js +8 -0
- package/lib/util/execution.js.map +1 -1
- package/lib/util/genesis.d.ts +1 -1
- package/lib/util/genesis.js +30 -9
- package/lib/util/genesis.js.map +1 -1
- package/lib/util/index.d.ts +2 -0
- package/lib/util/index.js +2 -0
- package/lib/util/index.js.map +1 -1
- package/lib/util/seed.d.ts +4 -3
- package/lib/util/seed.js +11 -10
- package/lib/util/seed.js.map +1 -1
- package/lib/util/syncCommittee.d.ts +2 -1
- package/lib/util/syncCommittee.js +2 -2
- package/lib/util/syncCommittee.js.map +1 -1
- package/lib/util/validator.d.ts +10 -1
- package/lib/util/validator.js +35 -1
- package/lib/util/validator.js.map +1 -1
- package/lib/util/weakSubjectivity.js +2 -2
- package/lib/util/weakSubjectivity.js.map +1 -1
- package/package.json +11 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/util/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAIvD,MAAM,UAAU,mBAAmB,CAAC,KAAgC,EAAE,QAA0B;IAC9F,MAAM,aAAa,GAAG,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,KAAiC,CAAC;QACvD,kFAAkF;QAClF,kEAAkE;QAClE,MAAM,kBAAkB,GACtB,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,yBAAyB;YACjE,CAAC,CAAC,aAAa,CAAC,YAAY;YAC5B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;QAErD,IAAI,KAAK,CAAC,gBAAgB,GAAG,kBAAkB,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ValidatorIndex } from "@lodestar/types";
|
|
2
|
+
import { CachedBeaconStateElectra } from "../types.js";
|
|
3
|
+
export declare function hasCompoundingWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
|
|
4
|
+
export declare function hasExecutionWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
|
|
5
|
+
export declare function switchToCompoundingValidator(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
|
|
6
|
+
export declare function queueExcessActiveBalance(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
|
|
7
|
+
export declare function queueEntireBalanceAndResetValidator(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
|
|
8
|
+
//# sourceMappingURL=electra.d.ts.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { COMPOUNDING_WITHDRAWAL_PREFIX, FAR_FUTURE_EPOCH, MIN_ACTIVATION_BALANCE } from "@lodestar/params";
|
|
2
|
+
import { ssz } from "@lodestar/types";
|
|
3
|
+
import { hasEth1WithdrawalCredential } from "./capella.js";
|
|
4
|
+
export function hasCompoundingWithdrawalCredential(withdrawalCredentials) {
|
|
5
|
+
return withdrawalCredentials[0] === COMPOUNDING_WITHDRAWAL_PREFIX;
|
|
6
|
+
}
|
|
7
|
+
export function hasExecutionWithdrawalCredential(withdrawalCredentials) {
|
|
8
|
+
return (hasCompoundingWithdrawalCredential(withdrawalCredentials) || hasEth1WithdrawalCredential(withdrawalCredentials));
|
|
9
|
+
}
|
|
10
|
+
export function switchToCompoundingValidator(state, index) {
|
|
11
|
+
const validator = state.validators.get(index);
|
|
12
|
+
if (hasEth1WithdrawalCredential(validator.withdrawalCredentials)) {
|
|
13
|
+
// directly modifying the byte leads to ssz missing the modification resulting into
|
|
14
|
+
// wrong root compute, although slicing can be avoided but anyway this is not going
|
|
15
|
+
// to be a hot path so its better to clean slice and avoid side effects
|
|
16
|
+
const newWithdrawalCredentials = validator.withdrawalCredentials.slice();
|
|
17
|
+
newWithdrawalCredentials[0] = COMPOUNDING_WITHDRAWAL_PREFIX;
|
|
18
|
+
validator.withdrawalCredentials = newWithdrawalCredentials;
|
|
19
|
+
queueExcessActiveBalance(state, index);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function queueExcessActiveBalance(state, index) {
|
|
23
|
+
const balance = state.balances.get(index);
|
|
24
|
+
if (balance > MIN_ACTIVATION_BALANCE) {
|
|
25
|
+
const excessBalance = balance - MIN_ACTIVATION_BALANCE;
|
|
26
|
+
state.balances.set(index, MIN_ACTIVATION_BALANCE);
|
|
27
|
+
const pendingBalanceDeposit = ssz.electra.PendingBalanceDeposit.toViewDU({
|
|
28
|
+
index,
|
|
29
|
+
amount: BigInt(excessBalance),
|
|
30
|
+
});
|
|
31
|
+
state.pendingBalanceDeposits.push(pendingBalanceDeposit);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function queueEntireBalanceAndResetValidator(state, index) {
|
|
35
|
+
const balance = state.balances.get(index);
|
|
36
|
+
state.balances.set(index, 0);
|
|
37
|
+
const validator = state.validators.get(index);
|
|
38
|
+
validator.effectiveBalance = 0;
|
|
39
|
+
state.epochCtx.effectiveBalanceIncrementsSet(index, 0);
|
|
40
|
+
validator.activationEligibilityEpoch = FAR_FUTURE_EPOCH;
|
|
41
|
+
const pendingBalanceDeposit = ssz.electra.PendingBalanceDeposit.toViewDU({
|
|
42
|
+
index,
|
|
43
|
+
amount: BigInt(balance),
|
|
44
|
+
});
|
|
45
|
+
state.pendingBalanceDeposits.push(pendingBalanceDeposit);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=electra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,gBAAgB,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAC,2BAA2B,EAAC,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,kCAAkC,CAAC,qBAAiC;IAClF,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,qBAAiC;IAChF,OAAO,CACL,kCAAkC,CAAC,qBAAqB,CAAC,IAAI,2BAA2B,CAAC,qBAAqB,CAAC,CAChH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAA+B,EAAE,KAAqB;IACjG,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,2BAA2B,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACjE,mFAAmF;QACnF,mFAAmF;QACnF,uEAAuE;QACvE,MAAM,wBAAwB,GAAG,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACzE,wBAAwB,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC;QAC5D,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;QAC3D,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAA+B,EAAE,KAAqB;IAC7F,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,OAAO,GAAG,sBAAsB,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YACvE,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC;SAC9B,CAAC,CAAC;QACH,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAA+B,EAAE,KAAqB;IACxG,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9C,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC/B,KAAK,CAAC,QAAQ,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvD,SAAS,CAAC,0BAA0B,GAAG,gBAAgB,CAAC;IAExD,MAAM,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;QACvE,KAAK;QACL,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;KACxB,CAAC,CAAC;IACH,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC3D,CAAC"}
|
package/lib/util/epoch.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BeaconState, Epoch, Slot, SyncPeriod } from "@lodestar/types";
|
|
1
|
+
import { BeaconState, Epoch, Slot, SyncPeriod, Gwei } from "@lodestar/types";
|
|
2
|
+
import { CachedBeaconStateElectra } from "../types.js";
|
|
2
3
|
/**
|
|
3
4
|
* Return the epoch number at the given slot.
|
|
4
5
|
*/
|
|
@@ -22,6 +23,8 @@ export declare function computeEndSlotAtEpoch(epoch: Epoch): Slot;
|
|
|
22
23
|
* Return the epoch at which an activation or exit triggered in ``epoch`` takes effect.
|
|
23
24
|
*/
|
|
24
25
|
export declare function computeActivationExitEpoch(epoch: Epoch): Epoch;
|
|
26
|
+
export declare function computeExitEpochAndUpdateChurn(state: CachedBeaconStateElectra, exitBalance: Gwei): number;
|
|
27
|
+
export declare function computeConsolidationEpochAndUpdateChurn(state: CachedBeaconStateElectra, consolidationBalance: Gwei): number;
|
|
25
28
|
/**
|
|
26
29
|
* Return the current epoch of the given state.
|
|
27
30
|
*/
|
package/lib/util/epoch.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EPOCHS_PER_SYNC_COMMITTEE_PERIOD, GENESIS_EPOCH, MAX_SEED_LOOKAHEAD, SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
2
|
+
import { getActivationExitChurnLimit, getConsolidationChurnLimit } from "./validator.js";
|
|
2
3
|
/**
|
|
3
4
|
* Return the epoch number at the given slot.
|
|
4
5
|
*/
|
|
@@ -32,6 +33,42 @@ export function computeEndSlotAtEpoch(epoch) {
|
|
|
32
33
|
export function computeActivationExitEpoch(epoch) {
|
|
33
34
|
return epoch + 1 + MAX_SEED_LOOKAHEAD;
|
|
34
35
|
}
|
|
36
|
+
export function computeExitEpochAndUpdateChurn(state, exitBalance) {
|
|
37
|
+
let earliestExitEpoch = Math.max(state.earliestExitEpoch, computeActivationExitEpoch(state.epochCtx.epoch));
|
|
38
|
+
const perEpochChurn = getActivationExitChurnLimit(state.epochCtx);
|
|
39
|
+
// New epoch for exits.
|
|
40
|
+
let exitBalanceToConsume = state.earliestExitEpoch < earliestExitEpoch ? perEpochChurn : Number(state.exitBalanceToConsume);
|
|
41
|
+
// Exit doesn't fit in the current earliest epoch.
|
|
42
|
+
if (exitBalance > exitBalanceToConsume) {
|
|
43
|
+
const balanceToProcess = Number(exitBalance) - exitBalanceToConsume;
|
|
44
|
+
const additionalEpochs = Math.floor((balanceToProcess - 1) / perEpochChurn) + 1;
|
|
45
|
+
earliestExitEpoch += additionalEpochs;
|
|
46
|
+
exitBalanceToConsume += additionalEpochs * perEpochChurn;
|
|
47
|
+
}
|
|
48
|
+
// Consume the balance and update state variables.
|
|
49
|
+
state.exitBalanceToConsume = BigInt(exitBalanceToConsume) - exitBalance;
|
|
50
|
+
state.earliestExitEpoch = earliestExitEpoch;
|
|
51
|
+
return state.earliestExitEpoch;
|
|
52
|
+
}
|
|
53
|
+
export function computeConsolidationEpochAndUpdateChurn(state, consolidationBalance) {
|
|
54
|
+
let earliestConsolidationEpoch = Math.max(state.earliestConsolidationEpoch, computeActivationExitEpoch(state.epochCtx.epoch));
|
|
55
|
+
const perEpochConsolidationChurn = getConsolidationChurnLimit(state.epochCtx);
|
|
56
|
+
// New epoch for consolidations
|
|
57
|
+
let consolidationBalanceToConsume = state.earliestConsolidationEpoch < earliestConsolidationEpoch
|
|
58
|
+
? perEpochConsolidationChurn
|
|
59
|
+
: Number(state.consolidationBalanceToConsume);
|
|
60
|
+
// Consolidation doesn't fit in the current earliest epoch.
|
|
61
|
+
if (consolidationBalance > consolidationBalanceToConsume) {
|
|
62
|
+
const balanceToProcess = Number(consolidationBalance) - consolidationBalanceToConsume;
|
|
63
|
+
const additionalEpochs = Math.floor((balanceToProcess - 1) / perEpochConsolidationChurn) + 1;
|
|
64
|
+
earliestConsolidationEpoch += additionalEpochs;
|
|
65
|
+
consolidationBalanceToConsume += additionalEpochs * perEpochConsolidationChurn;
|
|
66
|
+
}
|
|
67
|
+
// Consume the balance and update state variables.
|
|
68
|
+
state.consolidationBalanceToConsume = BigInt(consolidationBalanceToConsume) - consolidationBalance;
|
|
69
|
+
state.earliestConsolidationEpoch = earliestConsolidationEpoch;
|
|
70
|
+
return state.earliestConsolidationEpoch;
|
|
71
|
+
}
|
|
35
72
|
/**
|
|
36
73
|
* Return the current epoch of the given state.
|
|
37
74
|
*/
|
package/lib/util/epoch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch.js","sourceRoot":"","sources":["../../src/util/epoch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gCAAgC,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAGtH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAU;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAAC,IAAU;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAY;IAClD,OAAO,KAAK,GAAG,eAAe,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAY;IAChD,OAAO,uBAAuB,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAY;IACrD,OAAO,KAAK,GAAG,CAAC,GAAG,kBAAkB,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAgC;IAC9D,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAgC;IAC/D,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;QACnC,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,YAAY,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAU;IAChD,OAAO,wBAAwB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAY;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,gCAAgC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAU;IAC3C,OAAO,IAAI,GAAG,eAAe,KAAK,CAAC,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"epoch.js","sourceRoot":"","sources":["../../src/util/epoch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { intDiv } from "@lodestar/utils";
|
|
1
|
+
import { intDiv, toRootHex } from "@lodestar/utils";
|
|
3
2
|
import { DOMAIN_BEACON_ATTESTER, MAX_COMMITTEES_PER_SLOT, SLOTS_PER_EPOCH, TARGET_COMMITTEE_SIZE, } from "@lodestar/params";
|
|
4
3
|
import { getSeed } from "./seed.js";
|
|
5
4
|
import { unshuffleList } from "./shuffle.js";
|
|
@@ -48,6 +47,6 @@ export function computeEpochShuffling(state, activeIndices, activeValidatorCount
|
|
|
48
47
|
}
|
|
49
48
|
export function getShufflingDecisionBlock(state, epoch) {
|
|
50
49
|
const pivotSlot = computeStartSlotAtEpoch(epoch - 1) - 1;
|
|
51
|
-
return
|
|
50
|
+
return toRootHex(getBlockRootAtSlot(state, pivotSlot));
|
|
52
51
|
}
|
|
53
52
|
//# sourceMappingURL=epochShuffling.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochShuffling.js","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"epochShuffling.js","sourceRoot":"","sources":["../../src/util/epochShuffling.ts"],"names":[],"mappings":"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"}
|
package/lib/util/execution.js
CHANGED
|
@@ -109,6 +109,14 @@ export function executionPayloadToPayloadHeader(fork, payload) {
|
|
|
109
109
|
bellatrixPayloadFields.blobGasUsed = payload.blobGasUsed;
|
|
110
110
|
bellatrixPayloadFields.excessBlobGas = payload.excessBlobGas;
|
|
111
111
|
}
|
|
112
|
+
if (fork >= ForkSeq.electra) {
|
|
113
|
+
bellatrixPayloadFields.depositRequestsRoot =
|
|
114
|
+
ssz.electra.DepositRequests.hashTreeRoot(payload.depositRequests);
|
|
115
|
+
bellatrixPayloadFields.withdrawalRequestsRoot =
|
|
116
|
+
ssz.electra.WithdrawalRequests.hashTreeRoot(payload.withdrawalRequests);
|
|
117
|
+
bellatrixPayloadFields.consolidationRequestsRoot =
|
|
118
|
+
ssz.electra.ConsolidationRequests.hashTreeRoot(payload.consolidationRequests);
|
|
119
|
+
}
|
|
112
120
|
return bellatrixPayloadFields;
|
|
113
121
|
}
|
|
114
122
|
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"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"}
|
package/lib/util/genesis.d.ts
CHANGED
|
@@ -58,6 +58,6 @@ export declare function applyDeposits(config: ChainForkConfig, state: CachedBeac
|
|
|
58
58
|
*
|
|
59
59
|
* SLOW CODE - 🐢
|
|
60
60
|
*/
|
|
61
|
-
export declare function initializeBeaconStateFromEth1(config: ChainForkConfig, immutableData: EpochCacheImmutableData, eth1BlockHash: Bytes32, eth1Timestamp: TimeSeconds, deposits: phase0.Deposit[], fullDepositDataRootList?: DepositDataRootViewDU, executionPayloadHeader?: CompositeViewDU<typeof ssz.bellatrix.ExecutionPayloadHeader | typeof ssz.capella.ExecutionPayloadHeader | typeof ssz.deneb.ExecutionPayloadHeader>): CachedBeaconStateAllForks;
|
|
61
|
+
export declare function initializeBeaconStateFromEth1(config: ChainForkConfig, immutableData: EpochCacheImmutableData, eth1BlockHash: Bytes32, eth1Timestamp: TimeSeconds, deposits: phase0.Deposit[], fullDepositDataRootList?: DepositDataRootViewDU, executionPayloadHeader?: CompositeViewDU<typeof ssz.bellatrix.ExecutionPayloadHeader | typeof ssz.capella.ExecutionPayloadHeader | typeof ssz.deneb.ExecutionPayloadHeader | typeof ssz.electra.ExecutionPayloadHeader>): CachedBeaconStateAllForks;
|
|
62
62
|
export {};
|
|
63
63
|
//# sourceMappingURL=genesis.d.ts.map
|
package/lib/util/genesis.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { EFFECTIVE_BALANCE_INCREMENT, EPOCHS_PER_HISTORICAL_VECTOR, GENESIS_EPOCH, GENESIS_SLOT, MAX_EFFECTIVE_BALANCE, } from "@lodestar/params";
|
|
1
|
+
import { EFFECTIVE_BALANCE_INCREMENT, EPOCHS_PER_HISTORICAL_VECTOR, ForkSeq, GENESIS_EPOCH, GENESIS_SLOT, MAX_EFFECTIVE_BALANCE, UNSET_DEPOSIT_REQUESTS_START_INDEX, } from "@lodestar/params";
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
3
|
import { createCachedBeaconState } from "../cache/stateCache.js";
|
|
4
4
|
import { processDeposit } from "../block/processDeposit.js";
|
|
5
|
+
import { increaseBalance } from "../index.js";
|
|
5
6
|
import { computeEpochAtSlot } from "./epoch.js";
|
|
6
|
-
import { getActiveValidatorIndices } from "./validator.js";
|
|
7
|
+
import { getActiveValidatorIndices, getMaxEffectiveBalance } from "./validator.js";
|
|
7
8
|
import { getTemporaryBlockHeader } from "./blockRoot.js";
|
|
8
9
|
import { newFilledArray } from "./array.js";
|
|
9
10
|
import { getNextSyncCommittee } from "./syncCommittee.js";
|
|
@@ -91,6 +92,7 @@ export function applyTimestamp(config, state, eth1Timestamp) {
|
|
|
91
92
|
* @returns active validator indices
|
|
92
93
|
*/
|
|
93
94
|
export function applyDeposits(config, state, newDeposits, fullDepositDataRootList) {
|
|
95
|
+
const fork = config.getForkSeq(state.slot);
|
|
94
96
|
const depositDataRootList = [];
|
|
95
97
|
const fullDepositDataRootArr = fullDepositDataRootList ? fullDepositDataRootList.getAllReadonlyValues() : null;
|
|
96
98
|
if (fullDepositDataRootArr) {
|
|
@@ -115,6 +117,15 @@ export function applyDeposits(config, state, newDeposits, fullDepositDataRootLis
|
|
|
115
117
|
const fork = config.getForkSeq(GENESIS_SLOT);
|
|
116
118
|
processDeposit(fork, state, deposit);
|
|
117
119
|
}
|
|
120
|
+
// Process deposit balance updates
|
|
121
|
+
if (fork >= ForkSeq.electra) {
|
|
122
|
+
const stateElectra = state;
|
|
123
|
+
stateElectra.commit();
|
|
124
|
+
for (const { index: validatorIndex, amount } of stateElectra.pendingBalanceDeposits.getAllReadonly()) {
|
|
125
|
+
increaseBalance(state, validatorIndex, Number(amount));
|
|
126
|
+
}
|
|
127
|
+
stateElectra.pendingBalanceDeposits = ssz.electra.PendingBalanceDeposits.defaultViewDU();
|
|
128
|
+
}
|
|
118
129
|
// Process activations
|
|
119
130
|
const { epochCtx } = state;
|
|
120
131
|
const balancesArr = state.balances.getAll();
|
|
@@ -128,10 +139,10 @@ export function applyDeposits(config, state, newDeposits, fullDepositDataRootLis
|
|
|
128
139
|
continue;
|
|
129
140
|
}
|
|
130
141
|
const balance = balancesArr[i];
|
|
131
|
-
const effectiveBalance = Math.min(balance - (balance % EFFECTIVE_BALANCE_INCREMENT),
|
|
142
|
+
const effectiveBalance = Math.min(balance - (balance % EFFECTIVE_BALANCE_INCREMENT), getMaxEffectiveBalance(validator.withdrawalCredentials));
|
|
132
143
|
validator.effectiveBalance = effectiveBalance;
|
|
133
144
|
epochCtx.effectiveBalanceIncrementsSet(i, effectiveBalance);
|
|
134
|
-
if (validator.effectiveBalance
|
|
145
|
+
if (validator.effectiveBalance >= MAX_EFFECTIVE_BALANCE) {
|
|
135
146
|
validator.activationEligibilityEpoch = GENESIS_EPOCH;
|
|
136
147
|
validator.activationEpoch = GENESIS_EPOCH;
|
|
137
148
|
activatedValidatorCount++;
|
|
@@ -152,6 +163,7 @@ export function initializeBeaconStateFromEth1(config, immutableData, eth1BlockHa
|
|
|
152
163
|
// CachedBeaconcState is used for convinience only, we return BeaconStateAllForks anyway
|
|
153
164
|
// so it's safe to do a cast here, we can't use get domain until we have genesisValidatorRoot
|
|
154
165
|
config, ssz.phase0.Eth1Data.defaultValue(), getTemporaryBlockHeader(config, config.getForkTypes(GENESIS_SLOT).BeaconBlock.defaultValue()));
|
|
166
|
+
const fork = config.getForkSeq(GENESIS_SLOT);
|
|
155
167
|
// We need a CachedBeaconState to run processDeposit() which uses various caches.
|
|
156
168
|
// However at this point the state's syncCommittees are not known.
|
|
157
169
|
// This function can be called by:
|
|
@@ -168,15 +180,15 @@ export function initializeBeaconStateFromEth1(config, immutableData, eth1BlockHa
|
|
|
168
180
|
// Commit before reading all validators in `getActiveValidatorIndices()`
|
|
169
181
|
state.commit();
|
|
170
182
|
const activeValidatorIndices = getActiveValidatorIndices(state, computeEpochAtSlot(GENESIS_SLOT));
|
|
171
|
-
if (
|
|
172
|
-
const { syncCommittee } = getNextSyncCommittee(state, activeValidatorIndices, state.epochCtx.effectiveBalanceIncrements);
|
|
183
|
+
if (fork >= ForkSeq.altair) {
|
|
184
|
+
const { syncCommittee } = getNextSyncCommittee(fork, state, activeValidatorIndices, state.epochCtx.effectiveBalanceIncrements);
|
|
173
185
|
const stateAltair = state;
|
|
174
186
|
stateAltair.fork.previousVersion = config.ALTAIR_FORK_VERSION;
|
|
175
187
|
stateAltair.fork.currentVersion = config.ALTAIR_FORK_VERSION;
|
|
176
188
|
stateAltair.currentSyncCommittee = ssz.altair.SyncCommittee.toViewDU(syncCommittee);
|
|
177
189
|
stateAltair.nextSyncCommittee = ssz.altair.SyncCommittee.toViewDU(syncCommittee);
|
|
178
190
|
}
|
|
179
|
-
if (
|
|
191
|
+
if (fork >= ForkSeq.bellatrix) {
|
|
180
192
|
const stateBellatrix = state;
|
|
181
193
|
stateBellatrix.fork.previousVersion = config.BELLATRIX_FORK_VERSION;
|
|
182
194
|
stateBellatrix.fork.currentVersion = config.BELLATRIX_FORK_VERSION;
|
|
@@ -184,7 +196,7 @@ export function initializeBeaconStateFromEth1(config, immutableData, eth1BlockHa
|
|
|
184
196
|
executionPayloadHeader ??
|
|
185
197
|
ssz.bellatrix.ExecutionPayloadHeader.defaultViewDU();
|
|
186
198
|
}
|
|
187
|
-
if (
|
|
199
|
+
if (fork >= ForkSeq.capella) {
|
|
188
200
|
const stateCapella = state;
|
|
189
201
|
stateCapella.fork.previousVersion = config.CAPELLA_FORK_VERSION;
|
|
190
202
|
stateCapella.fork.currentVersion = config.CAPELLA_FORK_VERSION;
|
|
@@ -192,7 +204,7 @@ export function initializeBeaconStateFromEth1(config, immutableData, eth1BlockHa
|
|
|
192
204
|
executionPayloadHeader ??
|
|
193
205
|
ssz.capella.ExecutionPayloadHeader.defaultViewDU();
|
|
194
206
|
}
|
|
195
|
-
if (
|
|
207
|
+
if (fork >= ForkSeq.deneb) {
|
|
196
208
|
const stateDeneb = state;
|
|
197
209
|
stateDeneb.fork.previousVersion = config.DENEB_FORK_VERSION;
|
|
198
210
|
stateDeneb.fork.currentVersion = config.DENEB_FORK_VERSION;
|
|
@@ -200,6 +212,15 @@ export function initializeBeaconStateFromEth1(config, immutableData, eth1BlockHa
|
|
|
200
212
|
executionPayloadHeader ??
|
|
201
213
|
ssz.deneb.ExecutionPayloadHeader.defaultViewDU();
|
|
202
214
|
}
|
|
215
|
+
if (fork >= ForkSeq.electra) {
|
|
216
|
+
const stateElectra = state;
|
|
217
|
+
stateElectra.fork.previousVersion = config.ELECTRA_FORK_VERSION;
|
|
218
|
+
stateElectra.fork.currentVersion = config.ELECTRA_FORK_VERSION;
|
|
219
|
+
stateElectra.latestExecutionPayloadHeader =
|
|
220
|
+
executionPayloadHeader ??
|
|
221
|
+
ssz.electra.ExecutionPayloadHeader.defaultViewDU();
|
|
222
|
+
stateElectra.depositRequestsStartIndex = UNSET_DEPOSIT_REQUESTS_START_INDEX;
|
|
223
|
+
}
|
|
203
224
|
state.commit();
|
|
204
225
|
return state;
|
|
205
226
|
}
|
package/lib/util/genesis.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../src/util/genesis.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAE5B,aAAa,EACb,YAAY,EACZ,qBAAqB,
|
|
1
|
+
{"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../src/util/genesis.ts"],"names":[],"mappings":"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"}
|
package/lib/util/index.d.ts
CHANGED
package/lib/util/index.js
CHANGED
package/lib/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
package/lib/util/seed.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Epoch, Bytes32, DomainType, ValidatorIndex } from "@lodestar/types";
|
|
2
|
+
import { ForkSeq } from "@lodestar/params";
|
|
2
3
|
import { BeaconStateAllForks } from "../types.js";
|
|
3
4
|
import { EffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
|
|
4
5
|
/**
|
|
5
6
|
* Compute proposer indices for an epoch
|
|
6
7
|
*/
|
|
7
|
-
export declare function computeProposers(epochSeed: Uint8Array, shuffling: {
|
|
8
|
+
export declare function computeProposers(fork: ForkSeq, epochSeed: Uint8Array, shuffling: {
|
|
8
9
|
epoch: Epoch;
|
|
9
10
|
activeIndices: ArrayLike<ValidatorIndex>;
|
|
10
11
|
}, effectiveBalanceIncrements: EffectiveBalanceIncrements): number[];
|
|
@@ -13,7 +14,7 @@ export declare function computeProposers(epochSeed: Uint8Array, shuffling: {
|
|
|
13
14
|
*
|
|
14
15
|
* SLOW CODE - 🐢
|
|
15
16
|
*/
|
|
16
|
-
export declare function computeProposerIndex(effectiveBalanceIncrements: EffectiveBalanceIncrements, indices: ArrayLike<ValidatorIndex>, seed: Uint8Array): ValidatorIndex;
|
|
17
|
+
export declare function computeProposerIndex(fork: ForkSeq, effectiveBalanceIncrements: EffectiveBalanceIncrements, indices: ArrayLike<ValidatorIndex>, seed: Uint8Array): ValidatorIndex;
|
|
17
18
|
/**
|
|
18
19
|
* TODO: NAIVE
|
|
19
20
|
*
|
|
@@ -24,7 +25,7 @@ export declare function computeProposerIndex(effectiveBalanceIncrements: Effecti
|
|
|
24
25
|
*
|
|
25
26
|
* SLOW CODE - 🐢
|
|
26
27
|
*/
|
|
27
|
-
export declare function getNextSyncCommitteeIndices(state: BeaconStateAllForks, activeValidatorIndices: ArrayLike<ValidatorIndex>, effectiveBalanceIncrements: EffectiveBalanceIncrements): ValidatorIndex[];
|
|
28
|
+
export declare function getNextSyncCommitteeIndices(fork: ForkSeq, state: BeaconStateAllForks, activeValidatorIndices: ArrayLike<ValidatorIndex>, effectiveBalanceIncrements: EffectiveBalanceIncrements): ValidatorIndex[];
|
|
28
29
|
/**
|
|
29
30
|
* Return the shuffled validator index corresponding to ``seed`` (and ``index_count``).
|
|
30
31
|
*
|
package/lib/util/seed.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { digest } from "@chainsafe/as-sha256";
|
|
2
2
|
import { assert, bytesToBigInt, intToBytes } from "@lodestar/utils";
|
|
3
|
-
import { DOMAIN_SYNC_COMMITTEE, EFFECTIVE_BALANCE_INCREMENT, EPOCHS_PER_HISTORICAL_VECTOR, MAX_EFFECTIVE_BALANCE, MIN_SEED_LOOKAHEAD, SHUFFLE_ROUND_COUNT, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SIZE, } from "@lodestar/params";
|
|
3
|
+
import { DOMAIN_SYNC_COMMITTEE, EFFECTIVE_BALANCE_INCREMENT, EPOCHS_PER_HISTORICAL_VECTOR, ForkSeq, MAX_EFFECTIVE_BALANCE, MAX_EFFECTIVE_BALANCE_ELECTRA, MIN_SEED_LOOKAHEAD, SHUFFLE_ROUND_COUNT, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SIZE, } from "@lodestar/params";
|
|
4
4
|
import { computeStartSlotAtEpoch } from "./epoch.js";
|
|
5
5
|
import { computeEpochAtSlot } from "./epoch.js";
|
|
6
6
|
/**
|
|
7
7
|
* Compute proposer indices for an epoch
|
|
8
8
|
*/
|
|
9
|
-
export function computeProposers(epochSeed, shuffling, effectiveBalanceIncrements) {
|
|
9
|
+
export function computeProposers(fork, epochSeed, shuffling, effectiveBalanceIncrements) {
|
|
10
10
|
const startSlot = computeStartSlotAtEpoch(shuffling.epoch);
|
|
11
11
|
const proposers = [];
|
|
12
12
|
for (let slot = startSlot; slot < startSlot + SLOTS_PER_EPOCH; slot++) {
|
|
13
|
-
proposers.push(computeProposerIndex(effectiveBalanceIncrements, shuffling.activeIndices, digest(Buffer.concat([epochSeed, intToBytes(slot, 8)]))));
|
|
13
|
+
proposers.push(computeProposerIndex(fork, effectiveBalanceIncrements, shuffling.activeIndices, digest(Buffer.concat([epochSeed, intToBytes(slot, 8)]))));
|
|
14
14
|
}
|
|
15
15
|
return proposers;
|
|
16
16
|
}
|
|
@@ -19,13 +19,15 @@ export function computeProposers(epochSeed, shuffling, effectiveBalanceIncrement
|
|
|
19
19
|
*
|
|
20
20
|
* SLOW CODE - 🐢
|
|
21
21
|
*/
|
|
22
|
-
export function computeProposerIndex(effectiveBalanceIncrements, indices, seed) {
|
|
22
|
+
export function computeProposerIndex(fork, effectiveBalanceIncrements, indices, seed) {
|
|
23
23
|
if (indices.length === 0) {
|
|
24
24
|
throw Error("Validator indices must not be empty");
|
|
25
25
|
}
|
|
26
26
|
// TODO: Inline outside this function
|
|
27
27
|
const MAX_RANDOM_BYTE = 2 ** 8 - 1;
|
|
28
|
-
const MAX_EFFECTIVE_BALANCE_INCREMENT =
|
|
28
|
+
const MAX_EFFECTIVE_BALANCE_INCREMENT = fork >= ForkSeq.electra
|
|
29
|
+
? MAX_EFFECTIVE_BALANCE_ELECTRA / EFFECTIVE_BALANCE_INCREMENT
|
|
30
|
+
: MAX_EFFECTIVE_BALANCE / EFFECTIVE_BALANCE_INCREMENT;
|
|
29
31
|
let i = 0;
|
|
30
32
|
/* eslint-disable-next-line no-constant-condition */
|
|
31
33
|
while (true) {
|
|
@@ -40,9 +42,6 @@ export function computeProposerIndex(effectiveBalanceIncrements, indices, seed)
|
|
|
40
42
|
return candidateIndex;
|
|
41
43
|
}
|
|
42
44
|
i += 1;
|
|
43
|
-
if (i === indices.length) {
|
|
44
|
-
return -1;
|
|
45
|
-
}
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
47
|
/**
|
|
@@ -55,10 +54,12 @@ export function computeProposerIndex(effectiveBalanceIncrements, indices, seed)
|
|
|
55
54
|
*
|
|
56
55
|
* SLOW CODE - 🐢
|
|
57
56
|
*/
|
|
58
|
-
export function getNextSyncCommitteeIndices(state, activeValidatorIndices, effectiveBalanceIncrements) {
|
|
57
|
+
export function getNextSyncCommitteeIndices(fork, state, activeValidatorIndices, effectiveBalanceIncrements) {
|
|
59
58
|
// TODO: Bechmark if it's necessary to inline outside of this function
|
|
60
59
|
const MAX_RANDOM_BYTE = 2 ** 8 - 1;
|
|
61
|
-
const MAX_EFFECTIVE_BALANCE_INCREMENT =
|
|
60
|
+
const MAX_EFFECTIVE_BALANCE_INCREMENT = fork >= ForkSeq.electra
|
|
61
|
+
? MAX_EFFECTIVE_BALANCE_ELECTRA / EFFECTIVE_BALANCE_INCREMENT
|
|
62
|
+
: MAX_EFFECTIVE_BALANCE / EFFECTIVE_BALANCE_INCREMENT;
|
|
62
63
|
const epoch = computeEpochAtSlot(state.slot) + 1;
|
|
63
64
|
const activeValidatorCount = activeValidatorIndices.length;
|
|
64
65
|
const seed = getSeed(state, epoch, DOMAIN_SYNC_COMMITTEE);
|
package/lib/util/seed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAClE,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,4BAA4B,EAC5B,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAC,uBAAuB,EAAC,MAAM,YAAY,CAAC;AACnD,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAqB,EACrB,SAAmE,EACnE,0BAAsD;IAEtD,MAAM,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,KAAK,IAAI,IAAI,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,GAAG,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;QACtE,SAAS,CAAC,IAAI,CACZ,oBAAoB,CAClB,0BAA0B,EAC1B,SAAS,CAAC,aAAa,EACvB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACxD,CACF,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,0BAAsD,EACtD,OAAkC,EAClC,IAAgB;IAEhB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED,qCAAqC;IACrC,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,+BAA+B,GAAG,qBAAqB,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ForkSeq } from "@lodestar/params";
|
|
1
2
|
import { altair, ValidatorIndex } from "@lodestar/types";
|
|
2
3
|
import { BeaconStateAllForks } from "../types.js";
|
|
3
4
|
import { EffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
|
|
@@ -6,7 +7,7 @@ import { EffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.
|
|
|
6
7
|
*
|
|
7
8
|
* SLOW CODE - 🐢
|
|
8
9
|
*/
|
|
9
|
-
export declare function getNextSyncCommittee(state: BeaconStateAllForks, activeValidatorIndices: ArrayLike<ValidatorIndex>, effectiveBalanceIncrements: EffectiveBalanceIncrements): {
|
|
10
|
+
export declare function getNextSyncCommittee(fork: ForkSeq, state: BeaconStateAllForks, activeValidatorIndices: ArrayLike<ValidatorIndex>, effectiveBalanceIncrements: EffectiveBalanceIncrements): {
|
|
10
11
|
indices: ValidatorIndex[];
|
|
11
12
|
syncCommittee: altair.SyncCommittee;
|
|
12
13
|
};
|
|
@@ -7,8 +7,8 @@ import { getNextSyncCommitteeIndices } from "./seed.js";
|
|
|
7
7
|
*
|
|
8
8
|
* SLOW CODE - 🐢
|
|
9
9
|
*/
|
|
10
|
-
export function getNextSyncCommittee(state, activeValidatorIndices, effectiveBalanceIncrements) {
|
|
11
|
-
const indices = getNextSyncCommitteeIndices(state, activeValidatorIndices, effectiveBalanceIncrements);
|
|
10
|
+
export function getNextSyncCommittee(fork, state, activeValidatorIndices, effectiveBalanceIncrements) {
|
|
11
|
+
const indices = getNextSyncCommitteeIndices(fork, state, activeValidatorIndices, effectiveBalanceIncrements);
|
|
12
12
|
// Using the index2pubkey cache is slower because it needs the serialized pubkey.
|
|
13
13
|
const pubkeys = indices.map((index) => state.validators.getReadonly(index).pubkey);
|
|
14
14
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../src/util/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,2BAA2B,
|
|
1
|
+
{"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../src/util/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAE3B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAC,2BAA2B,EAAC,MAAM,WAAW,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAa,EACb,KAA0B,EAC1B,sBAAiD,EACjD,0BAAsD;IAEtD,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,CAAC,CAAC;IAE7G,iFAAiF;IACjF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAEnF,OAAO;QACL,OAAO;QACP,aAAa,EAAE;YACb,OAAO;YACP,eAAe,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;SAClE;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,4BAAoC;IAC/E,MAAM,kBAAkB,GAAG,MAAM,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACtG,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CACvC,CAAC,2BAA2B,GAAG,kBAAkB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAC5F,CAAC;IACF,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,4BAA4B,CAAC;IAC/E,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CACtC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,kBAAkB,CAAC,GAAG,eAAe,CAC3F,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,CAAC;AACjE,CAAC;AAED;;;IAGI;AACJ,MAAM,UAAU,6BAA6B,CAAC,2BAAmC;IAC/E,OAAO,IAAI,CAAC,KAAK,CACf,CAAC,2BAA2B,GAAG,kBAAkB,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAChG,CAAC;AACJ,CAAC"}
|
package/lib/util/validator.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Epoch, phase0, ValidatorIndex } from "@lodestar/types";
|
|
2
2
|
import { ChainForkConfig } from "@lodestar/config";
|
|
3
3
|
import { ForkSeq } from "@lodestar/params";
|
|
4
|
-
import { BeaconStateAllForks } from "../types.js";
|
|
4
|
+
import { BeaconStateAllForks, CachedBeaconStateElectra, EpochCache } from "../types.js";
|
|
5
5
|
/**
|
|
6
6
|
* Check if [[validator]] is active
|
|
7
7
|
*/
|
|
@@ -18,4 +18,13 @@ export declare function isSlashableValidator(validator: phase0.Validator, epoch:
|
|
|
18
18
|
export declare function getActiveValidatorIndices(state: BeaconStateAllForks, epoch: Epoch): ValidatorIndex[];
|
|
19
19
|
export declare function getActivationChurnLimit(config: ChainForkConfig, fork: ForkSeq, activeValidatorCount: number): number;
|
|
20
20
|
export declare function getChurnLimit(config: ChainForkConfig, activeValidatorCount: number): number;
|
|
21
|
+
/**
|
|
22
|
+
* Get combined churn limit of activation-exit and consolidation
|
|
23
|
+
*/
|
|
24
|
+
export declare function getBalanceChurnLimit(epochCtx: EpochCache): number;
|
|
25
|
+
export declare function getActivationExitChurnLimit(epochCtx: EpochCache): number;
|
|
26
|
+
export declare function getConsolidationChurnLimit(epochCtx: EpochCache): number;
|
|
27
|
+
export declare function getMaxEffectiveBalance(withdrawalCredentials: Uint8Array): number;
|
|
28
|
+
export declare function getActiveBalance(state: CachedBeaconStateElectra, validatorIndex: ValidatorIndex): number;
|
|
29
|
+
export declare function getPendingBalanceToWithdraw(state: CachedBeaconStateElectra, validatorIndex: ValidatorIndex): number;
|
|
21
30
|
//# sourceMappingURL=validator.d.ts.map
|