@lodestar/state-transition 1.23.0-dev.de0d6ab89b → 1.23.0-dev.e6c1c5b3e3
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/processConsolidationRequest.js +54 -8
- package/lib/block/processConsolidationRequest.js.map +1 -1
- package/lib/block/processDeposit.d.ts +4 -1
- package/lib/block/processDeposit.js +32 -36
- package/lib/block/processDeposit.js.map +1 -1
- package/lib/block/processDepositRequest.d.ts +1 -2
- package/lib/block/processDepositRequest.js +11 -3
- package/lib/block/processDepositRequest.js.map +1 -1
- package/lib/block/processOperations.js +1 -1
- package/lib/block/processOperations.js.map +1 -1
- package/lib/block/processWithdrawals.js +3 -2
- package/lib/block/processWithdrawals.js.map +1 -1
- package/lib/cache/epochTransitionCache.d.ts +0 -5
- package/lib/cache/epochTransitionCache.js +0 -2
- package/lib/cache/epochTransitionCache.js.map +1 -1
- package/lib/constants/constants.d.ts +3 -4
- package/lib/constants/constants.js +4 -4
- package/lib/constants/constants.js.map +1 -1
- package/lib/epoch/index.d.ts +3 -3
- package/lib/epoch/index.js +5 -5
- package/lib/epoch/index.js.map +1 -1
- package/lib/epoch/processEffectiveBalanceUpdates.js +4 -7
- package/lib/epoch/processEffectiveBalanceUpdates.js.map +1 -1
- package/lib/epoch/processPendingConsolidations.js +7 -12
- package/lib/epoch/processPendingConsolidations.js.map +1 -1
- package/lib/epoch/{processPendingBalanceDeposits.d.ts → processPendingDeposits.d.ts} +4 -4
- package/lib/epoch/processPendingDeposits.js +102 -0
- package/lib/epoch/processPendingDeposits.js.map +1 -0
- package/lib/slot/upgradeStateToElectra.d.ts +0 -1
- package/lib/slot/upgradeStateToElectra.js +18 -37
- package/lib/slot/upgradeStateToElectra.js.map +1 -1
- package/lib/util/electra.d.ts +0 -1
- package/lib/util/electra.js +19 -27
- package/lib/util/electra.js.map +1 -1
- package/lib/util/genesis.js +8 -3
- package/lib/util/genesis.js.map +1 -1
- package/lib/util/validator.d.ts +0 -1
- package/lib/util/validator.js +0 -4
- package/lib/util/validator.js.map +1 -1
- package/package.json +6 -6
- package/lib/epoch/processPendingBalanceDeposits.js +0 -66
- package/lib/epoch/processPendingBalanceDeposits.js.map +0 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { decreaseBalance, increaseBalance } from "../util/balance.js";
|
|
2
|
-
import {
|
|
3
|
-
import { switchToCompoundingValidator } from "../util/electra.js";
|
|
2
|
+
import { getMaxEffectiveBalance } from "../util/validator.js";
|
|
4
3
|
/**
|
|
5
4
|
* Starting from Electra:
|
|
6
5
|
* Process every `pendingConsolidation` in `state.pendingConsolidations`.
|
|
@@ -19,7 +18,6 @@ export function processPendingConsolidations(state, cache) {
|
|
|
19
18
|
let nextPendingConsolidation = 0;
|
|
20
19
|
const validators = state.validators;
|
|
21
20
|
const cachedBalances = cache.balances;
|
|
22
|
-
const newCompoundingValidators = new Set();
|
|
23
21
|
for (const pendingConsolidation of state.pendingConsolidations.getAllReadonly()) {
|
|
24
22
|
const { sourceIndex, targetIndex } = pendingConsolidation;
|
|
25
23
|
const sourceValidator = validators.getReadonly(sourceIndex);
|
|
@@ -30,20 +28,17 @@ export function processPendingConsolidations(state, cache) {
|
|
|
30
28
|
if (sourceValidator.withdrawableEpoch > nextEpoch) {
|
|
31
29
|
break;
|
|
32
30
|
}
|
|
33
|
-
// Churn any target excess active balance of target and raise its max
|
|
34
|
-
switchToCompoundingValidator(state, targetIndex);
|
|
35
|
-
newCompoundingValidators.add(targetIndex);
|
|
36
31
|
// Move active balance to target. Excess balance is withdrawable.
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
const maxEffectiveBalance = getMaxEffectiveBalance(state.validators.getReadonly(sourceIndex).withdrawalCredentials);
|
|
33
|
+
const sourceEffectiveBalance = Math.min(state.balances.get(sourceIndex), maxEffectiveBalance);
|
|
34
|
+
decreaseBalance(state, sourceIndex, sourceEffectiveBalance);
|
|
35
|
+
increaseBalance(state, targetIndex, sourceEffectiveBalance);
|
|
40
36
|
if (cachedBalances) {
|
|
41
|
-
cachedBalances[sourceIndex] -=
|
|
42
|
-
cachedBalances[targetIndex] +=
|
|
37
|
+
cachedBalances[sourceIndex] -= sourceEffectiveBalance;
|
|
38
|
+
cachedBalances[targetIndex] += sourceEffectiveBalance;
|
|
43
39
|
}
|
|
44
40
|
nextPendingConsolidation++;
|
|
45
41
|
}
|
|
46
|
-
cache.newCompoundingValidators = newCompoundingValidators;
|
|
47
42
|
state.pendingConsolidations = state.pendingConsolidations.sliceFrom(nextPendingConsolidation);
|
|
48
43
|
}
|
|
49
44
|
//# sourceMappingURL=processPendingConsolidations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processPendingConsolidations.js","sourceRoot":"","sources":["../../src/epoch/processPendingConsolidations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"processPendingConsolidations.js","sourceRoot":"","sources":["../../src/epoch/processPendingConsolidations.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAE,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAA+B,EAAE,KAA2B;IACvG,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3C,IAAI,wBAAwB,GAAG,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEtC,KAAK,MAAM,oBAAoB,IAAI,KAAK,CAAC,qBAAqB,CAAC,cAAc,EAAE,EAAE,CAAC;QAChF,MAAM,EAAC,WAAW,EAAE,WAAW,EAAC,GAAG,oBAAoB,CAAC;QACxD,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,wBAAwB,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,IAAI,eAAe,CAAC,iBAAiB,GAAG,SAAS,EAAE,CAAC;YAClD,MAAM;QACR,CAAC;QACD,iEAAiE;QACjE,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC;QACpH,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC9F,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAC5D,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAC5D,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC;YACtD,cAAc,CAAC,WAAW,CAAC,IAAI,sBAAsB,CAAC;QACxD,CAAC;QAED,wBAAwB,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAChG,CAAC"}
|
|
@@ -3,10 +3,10 @@ import { CachedBeaconStateElectra, EpochTransitionCache } from "../types.js";
|
|
|
3
3
|
* Starting from Electra:
|
|
4
4
|
* Process pending balance deposits from state subject to churn limit and depsoitBalanceToConsume.
|
|
5
5
|
* For each eligible `deposit`, call `increaseBalance()`.
|
|
6
|
-
* Remove the processed deposits from `state.
|
|
6
|
+
* Remove the processed deposits from `state.pendingDeposits`.
|
|
7
7
|
* Update `state.depositBalanceToConsume` for the next epoch
|
|
8
8
|
*
|
|
9
|
-
* TODO Electra: Update ssz library to support batch push to `
|
|
9
|
+
* TODO Electra: Update ssz library to support batch push to `pendingDeposits`
|
|
10
10
|
*/
|
|
11
|
-
export declare function
|
|
12
|
-
//# sourceMappingURL=
|
|
11
|
+
export declare function processPendingDeposits(state: CachedBeaconStateElectra, cache: EpochTransitionCache): void;
|
|
12
|
+
//# sourceMappingURL=processPendingDeposits.d.ts.map
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { FAR_FUTURE_EPOCH, ForkSeq, GENESIS_SLOT, MAX_PENDING_DEPOSITS_PER_EPOCH } from "@lodestar/params";
|
|
2
|
+
import { increaseBalance } from "../util/balance.js";
|
|
3
|
+
import { getActivationExitChurnLimit } from "../util/validator.js";
|
|
4
|
+
import { computeStartSlotAtEpoch } from "../util/epoch.js";
|
|
5
|
+
import { addValidatorToRegistry, isValidDepositSignature } from "../block/processDeposit.js";
|
|
6
|
+
/**
|
|
7
|
+
* Starting from Electra:
|
|
8
|
+
* Process pending balance deposits from state subject to churn limit and depsoitBalanceToConsume.
|
|
9
|
+
* For each eligible `deposit`, call `increaseBalance()`.
|
|
10
|
+
* Remove the processed deposits from `state.pendingDeposits`.
|
|
11
|
+
* Update `state.depositBalanceToConsume` for the next epoch
|
|
12
|
+
*
|
|
13
|
+
* TODO Electra: Update ssz library to support batch push to `pendingDeposits`
|
|
14
|
+
*/
|
|
15
|
+
export function processPendingDeposits(state, cache) {
|
|
16
|
+
const nextEpoch = state.epochCtx.epoch + 1;
|
|
17
|
+
const availableForProcessing = state.depositBalanceToConsume + BigInt(getActivationExitChurnLimit(state.epochCtx));
|
|
18
|
+
let processedAmount = 0;
|
|
19
|
+
let nextDepositIndex = 0;
|
|
20
|
+
const depositsToPostpone = [];
|
|
21
|
+
let isChurnLimitReached = false;
|
|
22
|
+
const finalizedSlot = computeStartSlotAtEpoch(state.finalizedCheckpoint.epoch);
|
|
23
|
+
for (const deposit of state.pendingDeposits.getAllReadonly()) {
|
|
24
|
+
// Do not process deposit requests if Eth1 bridge deposits are not yet applied.
|
|
25
|
+
if (
|
|
26
|
+
// Is deposit request
|
|
27
|
+
deposit.slot > GENESIS_SLOT &&
|
|
28
|
+
// There are pending Eth1 bridge deposits
|
|
29
|
+
state.eth1DepositIndex < state.depositRequestsStartIndex) {
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
// Check if deposit has been finalized, otherwise, stop processing.
|
|
33
|
+
if (deposit.slot > finalizedSlot) {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
// Check if number of processed deposits has not reached the limit, otherwise, stop processing.
|
|
37
|
+
if (nextDepositIndex >= MAX_PENDING_DEPOSITS_PER_EPOCH) {
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
// Read validator state
|
|
41
|
+
let isValidatorExited = false;
|
|
42
|
+
let isValidatorWithdrawn = false;
|
|
43
|
+
const validatorIndex = state.epochCtx.getValidatorIndex(deposit.pubkey);
|
|
44
|
+
if (validatorIndex !== null) {
|
|
45
|
+
const validator = state.validators.getReadonly(validatorIndex);
|
|
46
|
+
isValidatorExited = validator.exitEpoch < FAR_FUTURE_EPOCH;
|
|
47
|
+
isValidatorWithdrawn = validator.withdrawableEpoch < nextEpoch;
|
|
48
|
+
}
|
|
49
|
+
if (isValidatorWithdrawn) {
|
|
50
|
+
// Deposited balance will never become active. Increase balance but do not consume churn
|
|
51
|
+
applyPendingDeposit(state, deposit, cache);
|
|
52
|
+
}
|
|
53
|
+
else if (isValidatorExited) {
|
|
54
|
+
// Validator is exiting, postpone the deposit until after withdrawable epoch
|
|
55
|
+
depositsToPostpone.push(deposit);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Check if deposit fits in the churn, otherwise, do no more deposit processing in this epoch.
|
|
59
|
+
isChurnLimitReached = processedAmount + deposit.amount > availableForProcessing;
|
|
60
|
+
if (isChurnLimitReached) {
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
// Consume churn and apply deposit.
|
|
64
|
+
processedAmount += deposit.amount;
|
|
65
|
+
applyPendingDeposit(state, deposit, cache);
|
|
66
|
+
}
|
|
67
|
+
// Regardless of how the deposit was handled, we move on in the queue.
|
|
68
|
+
nextDepositIndex++;
|
|
69
|
+
}
|
|
70
|
+
const remainingPendingDeposits = state.pendingDeposits.sliceFrom(nextDepositIndex);
|
|
71
|
+
state.pendingDeposits = remainingPendingDeposits;
|
|
72
|
+
// TODO Electra: add a function in ListCompositeTreeView to support batch push operation
|
|
73
|
+
for (const deposit of depositsToPostpone) {
|
|
74
|
+
state.pendingDeposits.push(deposit);
|
|
75
|
+
}
|
|
76
|
+
// Accumulate churn only if the churn limit has been hit.
|
|
77
|
+
if (isChurnLimitReached) {
|
|
78
|
+
state.depositBalanceToConsume = availableForProcessing - BigInt(processedAmount);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
state.depositBalanceToConsume = 0n;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function applyPendingDeposit(state, deposit, cache) {
|
|
85
|
+
const validatorIndex = state.epochCtx.getValidatorIndex(deposit.pubkey);
|
|
86
|
+
const { pubkey, withdrawalCredentials, amount, signature } = deposit;
|
|
87
|
+
const cachedBalances = cache.balances;
|
|
88
|
+
if (validatorIndex === null) {
|
|
89
|
+
// Verify the deposit signature (proof of possession) which is not checked by the deposit contract
|
|
90
|
+
if (isValidDepositSignature(state.config, pubkey, withdrawalCredentials, amount, signature)) {
|
|
91
|
+
addValidatorToRegistry(ForkSeq.electra, state, pubkey, withdrawalCredentials, amount);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Increase balance
|
|
96
|
+
increaseBalance(state, validatorIndex, amount);
|
|
97
|
+
if (cachedBalances) {
|
|
98
|
+
cachedBalances[validatorIndex] += amount;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=processPendingDeposits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processPendingDeposits.js","sourceRoot":"","sources":["../../src/epoch/processPendingDeposits.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,4 @@ import { CachedBeaconStateElectra } from "../cache/stateCache.js";
|
|
|
4
4
|
* Upgrade a state from Deneb to Electra.
|
|
5
5
|
*/
|
|
6
6
|
export declare function upgradeStateToElectra(stateDeneb: CachedBeaconStateDeneb): CachedBeaconStateElectra;
|
|
7
|
-
export declare function upgradeStateToElectraOriginal(stateDeneb: CachedBeaconStateDeneb): CachedBeaconStateElectra;
|
|
8
7
|
//# sourceMappingURL=upgradeStateToElectra.d.ts.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { ssz } from "@lodestar/types";
|
|
2
|
-
import { FAR_FUTURE_EPOCH, UNSET_DEPOSIT_REQUESTS_START_INDEX } from "@lodestar/params";
|
|
2
|
+
import { FAR_FUTURE_EPOCH, GENESIS_SLOT, UNSET_DEPOSIT_REQUESTS_START_INDEX } from "@lodestar/params";
|
|
3
3
|
import { getCachedBeaconState } from "../cache/stateCache.js";
|
|
4
|
-
import { hasCompoundingWithdrawalCredential,
|
|
4
|
+
import { hasCompoundingWithdrawalCredential, queueExcessActiveBalance } from "../util/electra.js";
|
|
5
5
|
import { computeActivationExitEpoch } from "../util/epoch.js";
|
|
6
6
|
import { getActivationExitChurnLimit, getConsolidationChurnLimit } from "../util/validator.js";
|
|
7
|
+
import { G2_POINT_AT_INFINITY } from "../constants/constants.js";
|
|
7
8
|
/**
|
|
8
9
|
* Upgrade a state from Deneb to Electra.
|
|
9
10
|
*/
|
|
@@ -68,8 +69,6 @@ export function upgradeStateToElectra(stateDeneb) {
|
|
|
68
69
|
stateElectraView.earliestExitEpoch = Math.max(...exitEpochs) + 1;
|
|
69
70
|
stateElectraView.consolidationBalanceToConsume = BigInt(0);
|
|
70
71
|
stateElectraView.earliestConsolidationEpoch = computeActivationExitEpoch(currentEpochPre);
|
|
71
|
-
// stateElectraView.pendingBalanceDeposits = ssz.electra.PendingBalanceDeposits.defaultViewDU();
|
|
72
|
-
// pendingBalanceDeposits, pendingPartialWithdrawals, pendingConsolidations are default values
|
|
73
72
|
// TODO-electra: can we improve this?
|
|
74
73
|
stateElectraView.commit();
|
|
75
74
|
const tmpElectraState = getCachedBeaconState(stateElectraView, stateDeneb);
|
|
@@ -80,7 +79,21 @@ export function upgradeStateToElectra(stateDeneb) {
|
|
|
80
79
|
return res !== 0 ? res : i0 - i1;
|
|
81
80
|
});
|
|
82
81
|
for (const validatorIndex of preActivation) {
|
|
83
|
-
|
|
82
|
+
const stateElectra = stateElectraView;
|
|
83
|
+
const balance = stateElectra.balances.get(validatorIndex);
|
|
84
|
+
stateElectra.balances.set(validatorIndex, 0);
|
|
85
|
+
const validator = stateElectra.validators.get(validatorIndex);
|
|
86
|
+
validator.effectiveBalance = 0;
|
|
87
|
+
stateElectra.epochCtx.effectiveBalanceIncrementsSet(validatorIndex, 0);
|
|
88
|
+
validator.activationEligibilityEpoch = FAR_FUTURE_EPOCH;
|
|
89
|
+
const pendingDeposit = ssz.electra.PendingDeposit.toViewDU({
|
|
90
|
+
pubkey: validator.pubkey,
|
|
91
|
+
withdrawalCredentials: validator.withdrawalCredentials,
|
|
92
|
+
amount: balance,
|
|
93
|
+
signature: G2_POINT_AT_INFINITY,
|
|
94
|
+
slot: GENESIS_SLOT,
|
|
95
|
+
});
|
|
96
|
+
stateElectra.pendingDeposits.push(pendingDeposit);
|
|
84
97
|
}
|
|
85
98
|
for (let i = 0; i < validatorsArr.length; i++) {
|
|
86
99
|
const validator = validatorsArr[i];
|
|
@@ -98,36 +111,4 @@ export function upgradeStateToElectra(stateDeneb) {
|
|
|
98
111
|
stateElectra["clearCache"]();
|
|
99
112
|
return stateElectra;
|
|
100
113
|
}
|
|
101
|
-
export function upgradeStateToElectraOriginal(stateDeneb) {
|
|
102
|
-
const { config } = stateDeneb;
|
|
103
|
-
const stateElectraNode = ssz.deneb.BeaconState.commitViewDU(stateDeneb);
|
|
104
|
-
const stateElectraView = ssz.electra.BeaconState.getViewDU(stateElectraNode);
|
|
105
|
-
const stateElectra = getCachedBeaconState(stateElectraView, stateDeneb);
|
|
106
|
-
stateElectra.fork = ssz.phase0.Fork.toViewDU({
|
|
107
|
-
previousVersion: stateDeneb.fork.currentVersion,
|
|
108
|
-
currentVersion: config.ELECTRA_FORK_VERSION,
|
|
109
|
-
epoch: stateDeneb.epochCtx.epoch,
|
|
110
|
-
});
|
|
111
|
-
// default value of depositRequestsStartIndex is UNSET_DEPOSIT_REQUESTS_START_INDEX
|
|
112
|
-
stateElectra.depositRequestsStartIndex = UNSET_DEPOSIT_REQUESTS_START_INDEX;
|
|
113
|
-
const validatorsArr = stateElectra.validators.getAllReadonly();
|
|
114
|
-
for (let i = 0; i < validatorsArr.length; i++) {
|
|
115
|
-
const validator = validatorsArr[i];
|
|
116
|
-
// [EIP-7251]: add validators that are not yet active to pending balance deposits
|
|
117
|
-
if (validator.activationEligibilityEpoch === FAR_FUTURE_EPOCH) {
|
|
118
|
-
queueEntireBalanceAndResetValidator(stateElectra, i);
|
|
119
|
-
}
|
|
120
|
-
// [EIP-7251]: Ensure early adopters of compounding credentials go through the activation churn
|
|
121
|
-
const withdrawalCredential = validator.withdrawalCredentials;
|
|
122
|
-
if (hasCompoundingWithdrawalCredential(withdrawalCredential)) {
|
|
123
|
-
queueExcessActiveBalance(stateElectra, i);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Commit new added fields ViewDU to the root node
|
|
127
|
-
stateElectra.commit();
|
|
128
|
-
// Clear cache to ensure the cache of deneb fields is not used by new ELECTRA fields
|
|
129
|
-
// biome-ignore lint/complexity/useLiteralKeys: It is a protected attribute
|
|
130
|
-
stateElectra["clearCache"]();
|
|
131
|
-
return stateElectra;
|
|
132
|
-
}
|
|
133
114
|
//# sourceMappingURL=upgradeStateToElectra.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeStateToElectra.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToElectra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAE,kCAAkC,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"upgradeStateToElectra.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToElectra.ts"],"names":[],"mappings":"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"}
|
package/lib/util/electra.d.ts
CHANGED
|
@@ -4,5 +4,4 @@ export declare function hasCompoundingWithdrawalCredential(withdrawalCredentials
|
|
|
4
4
|
export declare function hasExecutionWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
|
|
5
5
|
export declare function switchToCompoundingValidator(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
|
|
6
6
|
export declare function queueExcessActiveBalance(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
|
|
7
|
-
export declare function queueEntireBalanceAndResetValidator(state: CachedBeaconStateElectra, index: ValidatorIndex): void;
|
|
8
7
|
//# sourceMappingURL=electra.d.ts.map
|
package/lib/util/electra.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { COMPOUNDING_WITHDRAWAL_PREFIX,
|
|
1
|
+
import { COMPOUNDING_WITHDRAWAL_PREFIX, GENESIS_SLOT, MIN_ACTIVATION_BALANCE } from "@lodestar/params";
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
|
+
import { G2_POINT_AT_INFINITY } from "../constants/constants.js";
|
|
3
4
|
import { hasEth1WithdrawalCredential } from "./capella.js";
|
|
4
5
|
export function hasCompoundingWithdrawalCredential(withdrawalCredentials) {
|
|
5
6
|
return withdrawalCredentials[0] === COMPOUNDING_WITHDRAWAL_PREFIX;
|
|
@@ -9,39 +10,30 @@ export function hasExecutionWithdrawalCredential(withdrawalCredentials) {
|
|
|
9
10
|
}
|
|
10
11
|
export function switchToCompoundingValidator(state, index) {
|
|
11
12
|
const validator = state.validators.get(index);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
queueExcessActiveBalance(state, index);
|
|
20
|
-
}
|
|
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);
|
|
21
20
|
}
|
|
22
21
|
export function queueExcessActiveBalance(state, index) {
|
|
23
22
|
const balance = state.balances.get(index);
|
|
24
23
|
if (balance > MIN_ACTIVATION_BALANCE) {
|
|
24
|
+
const validator = state.validators.getReadonly(index);
|
|
25
25
|
const excessBalance = balance - MIN_ACTIVATION_BALANCE;
|
|
26
26
|
state.balances.set(index, MIN_ACTIVATION_BALANCE);
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
const pendingDeposit = ssz.electra.PendingDeposit.toViewDU({
|
|
28
|
+
pubkey: validator.pubkey,
|
|
29
|
+
withdrawalCredentials: validator.withdrawalCredentials,
|
|
30
|
+
amount: excessBalance,
|
|
31
|
+
// Use bls.G2_POINT_AT_INFINITY as a signature field placeholder
|
|
32
|
+
signature: G2_POINT_AT_INFINITY,
|
|
33
|
+
// Use GENESIS_SLOT to distinguish from a pending deposit request
|
|
34
|
+
slot: GENESIS_SLOT,
|
|
30
35
|
});
|
|
31
|
-
state.
|
|
36
|
+
state.pendingDeposits.push(pendingDeposit);
|
|
32
37
|
}
|
|
33
38
|
}
|
|
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
39
|
//# sourceMappingURL=electra.js.map
|
package/lib/util/electra.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,
|
|
1
|
+
{"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,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,mFAAmF;IACnF,mFAAmF;IACnF,uEAAuE;IACvE,MAAM,wBAAwB,GAAG,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;IACzE,wBAAwB,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC;IAC5D,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;IAC3D,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzC,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,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,GAAG,sBAAsB,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,MAAM,EAAE,aAAa;YACrB,gEAAgE;YAChE,SAAS,EAAE,oBAAoB;YAC/B,iEAAiE;YACjE,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
package/lib/util/genesis.js
CHANGED
|
@@ -121,10 +121,15 @@ export function applyDeposits(config, state, newDeposits, fullDepositDataRootLis
|
|
|
121
121
|
if (fork >= ForkSeq.electra) {
|
|
122
122
|
const stateElectra = state;
|
|
123
123
|
stateElectra.commit();
|
|
124
|
-
for (const {
|
|
125
|
-
|
|
124
|
+
for (const { pubkey, amount } of stateElectra.pendingDeposits.getAllReadonly()) {
|
|
125
|
+
const validatorIndex = state.epochCtx.getValidatorIndex(pubkey);
|
|
126
|
+
if (validatorIndex === null) {
|
|
127
|
+
// Should not happen if the gensis state is correct
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
increaseBalance(state, validatorIndex, amount);
|
|
126
131
|
}
|
|
127
|
-
stateElectra.
|
|
132
|
+
stateElectra.pendingDeposits = ssz.electra.PendingDeposits.defaultViewDU();
|
|
128
133
|
}
|
|
129
134
|
// Process activations
|
|
130
135
|
const { epochCtx } = state;
|
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,OAAO,EACP,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,kCAAkC,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAwB,GAAG,EAAc,MAAM,iBAAiB,CAAC;AAGxE,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,yBAAyB,EAAE,sBAAsB,EAAC,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAC,uBAAuB,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AAKxD,uDAAuD;AAEvD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAuB,EAAE,KAA0B;IACrF,OAAO,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,gBAAgB,IAAI,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACjG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAuB,EAAE,KAA0B;IAC1F,OAAO,CACL,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;QACzE,MAAM,CAAC,kCAAkC,CAC1C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAuB,EACvB,eAAgC,EAChC,iBAA2C;IAE3C,gCAAgC;IAChC,MAAM,WAAW,GAAG,cAAc,CAAC,4BAA4B,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAE5F,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC;IACtE,MAAM,KAAK,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;IAE9C,OAAO;IACP,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAe,CAAC;IAC7D,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAEpD,mGAAmG;IACnG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpC,eAAe,EAAE,YAAY,CAAC,OAAO;QACrC,cAAc,EAAE,OAAO;QACvB,KAAK,EAAE,kBAAkB,CAAC,YAAY,CAAC;KACxC,CAAC,CAAC;IAEH,qBAAqB;IAErB,4BAA4B;IAC5B,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAEnF,0BAA0B;IAC1B,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC/D,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEjE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgC,EAAE,aAAsB;IACzF,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC;IACzC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAC,CAAC;AACnH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAuB,EAAE,KAAgC,EAAE,aAAqB;IAC7G,KAAK,CAAC,WAAW,GAAG,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAuB,EACvB,KAAgC,EAChC,WAA6B,EAC7B,uBAA+C;IAE/C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,mBAAmB,GAAW,EAAE,CAAC;IAEvC,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/G,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC;IACpD,MAAM,YAAY,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,MAAM,EAAC,WAAW,EAAE,mBAAmB,EAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IAEtD,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC;YAC3E,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,mBAAmB,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACrF,CAAC;aAAM,IAAI,YAAY,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACzD,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,mBAAmB,CAAC,YAAY,CAC3D,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACxD,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC7C,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,kCAAkC;IAClC,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,KAAiC,CAAC;QACvD,YAAY,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,MAAM,EAAC,
|
|
1
|
+
{"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../src/util/genesis.ts"],"names":[],"mappings":"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"}
|
package/lib/util/validator.d.ts
CHANGED
|
@@ -25,6 +25,5 @@ export declare function getBalanceChurnLimit(epochCtx: EpochCache): number;
|
|
|
25
25
|
export declare function getActivationExitChurnLimit(epochCtx: EpochCache): number;
|
|
26
26
|
export declare function getConsolidationChurnLimit(epochCtx: EpochCache): number;
|
|
27
27
|
export declare function getMaxEffectiveBalance(withdrawalCredentials: Uint8Array): number;
|
|
28
|
-
export declare function getActiveBalance(state: CachedBeaconStateElectra, validatorIndex: ValidatorIndex): number;
|
|
29
28
|
export declare function getPendingBalanceToWithdraw(state: CachedBeaconStateElectra, validatorIndex: ValidatorIndex): number;
|
|
30
29
|
//# sourceMappingURL=validator.d.ts.map
|
package/lib/util/validator.js
CHANGED
|
@@ -58,10 +58,6 @@ export function getMaxEffectiveBalance(withdrawalCredentials) {
|
|
|
58
58
|
}
|
|
59
59
|
return MIN_ACTIVATION_BALANCE;
|
|
60
60
|
}
|
|
61
|
-
export function getActiveBalance(state, validatorIndex) {
|
|
62
|
-
const validatorMaxEffectiveBalance = getMaxEffectiveBalance(state.validators.getReadonly(validatorIndex).withdrawalCredentials);
|
|
63
|
-
return Math.min(state.balances.get(validatorIndex), validatorMaxEffectiveBalance);
|
|
64
|
-
}
|
|
65
61
|
export function getPendingBalanceToWithdraw(state, validatorIndex) {
|
|
66
62
|
return state.pendingPartialWithdrawals
|
|
67
63
|
.getAllReadonly()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/util/validator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/util/validator.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.23.0-dev.
|
|
14
|
+
"version": "1.23.0-dev.e6c1c5b3e3",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"@chainsafe/pubkey-index-map": "2.0.0",
|
|
66
66
|
"@chainsafe/ssz": "^0.17.1",
|
|
67
67
|
"@chainsafe/swap-or-not-shuffle": "^0.0.2",
|
|
68
|
-
"@lodestar/config": "1.23.0-dev.
|
|
69
|
-
"@lodestar/params": "1.23.0-dev.
|
|
70
|
-
"@lodestar/types": "1.23.0-dev.
|
|
71
|
-
"@lodestar/utils": "1.23.0-dev.
|
|
68
|
+
"@lodestar/config": "1.23.0-dev.e6c1c5b3e3",
|
|
69
|
+
"@lodestar/params": "1.23.0-dev.e6c1c5b3e3",
|
|
70
|
+
"@lodestar/types": "1.23.0-dev.e6c1c5b3e3",
|
|
71
|
+
"@lodestar/utils": "1.23.0-dev.e6c1c5b3e3",
|
|
72
72
|
"bigint-buffer": "^1.1.5",
|
|
73
73
|
"immutable": "^4.3.2"
|
|
74
74
|
},
|
|
@@ -78,5 +78,5 @@
|
|
|
78
78
|
"beacon",
|
|
79
79
|
"blockchain"
|
|
80
80
|
],
|
|
81
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "138461c874f12a8ce275b8e26b2f5aa319f70843"
|
|
82
82
|
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { FAR_FUTURE_EPOCH } from "@lodestar/params";
|
|
2
|
-
import { increaseBalance } from "../util/balance.js";
|
|
3
|
-
import { getActivationExitChurnLimit } from "../util/validator.js";
|
|
4
|
-
/**
|
|
5
|
-
* Starting from Electra:
|
|
6
|
-
* Process pending balance deposits from state subject to churn limit and depsoitBalanceToConsume.
|
|
7
|
-
* For each eligible `deposit`, call `increaseBalance()`.
|
|
8
|
-
* Remove the processed deposits from `state.pendingBalanceDeposits`.
|
|
9
|
-
* Update `state.depositBalanceToConsume` for the next epoch
|
|
10
|
-
*
|
|
11
|
-
* TODO Electra: Update ssz library to support batch push to `pendingBalanceDeposits`
|
|
12
|
-
*/
|
|
13
|
-
export function processPendingBalanceDeposits(state, cache) {
|
|
14
|
-
const nextEpoch = state.epochCtx.epoch + 1;
|
|
15
|
-
const availableForProcessing = state.depositBalanceToConsume + BigInt(getActivationExitChurnLimit(state.epochCtx));
|
|
16
|
-
let processedAmount = 0n;
|
|
17
|
-
let nextDepositIndex = 0;
|
|
18
|
-
const depositsToPostpone = [];
|
|
19
|
-
const validators = state.validators;
|
|
20
|
-
const cachedBalances = cache.balances;
|
|
21
|
-
for (const deposit of state.pendingBalanceDeposits.getAllReadonly()) {
|
|
22
|
-
const { amount, index: depositIndex } = deposit;
|
|
23
|
-
const validator = validators.getReadonly(depositIndex);
|
|
24
|
-
// Validator is exiting, postpone the deposit until after withdrawable epoch
|
|
25
|
-
if (validator.exitEpoch < FAR_FUTURE_EPOCH) {
|
|
26
|
-
if (nextEpoch <= validator.withdrawableEpoch) {
|
|
27
|
-
depositsToPostpone.push(deposit);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
// Deposited balance will never become active. Increase balance but do not consume churn
|
|
31
|
-
increaseBalance(state, depositIndex, Number(amount));
|
|
32
|
-
if (cachedBalances) {
|
|
33
|
-
cachedBalances[depositIndex] += Number(amount);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
// Validator is not exiting, attempt to process deposit
|
|
39
|
-
if (processedAmount + amount > availableForProcessing) {
|
|
40
|
-
// Deposit does not fit in the churn, no more deposit processing in this epoch.
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
// Deposit fits in the churn, process it. Increase balance and consume churn.
|
|
44
|
-
increaseBalance(state, depositIndex, Number(amount));
|
|
45
|
-
if (cachedBalances) {
|
|
46
|
-
cachedBalances[depositIndex] += Number(amount);
|
|
47
|
-
}
|
|
48
|
-
processedAmount = processedAmount + amount;
|
|
49
|
-
}
|
|
50
|
-
// Regardless of how the deposit was handled, we move on in the queue.
|
|
51
|
-
nextDepositIndex++;
|
|
52
|
-
}
|
|
53
|
-
const remainingPendingBalanceDeposits = state.pendingBalanceDeposits.sliceFrom(nextDepositIndex);
|
|
54
|
-
state.pendingBalanceDeposits = remainingPendingBalanceDeposits;
|
|
55
|
-
if (remainingPendingBalanceDeposits.length === 0) {
|
|
56
|
-
state.depositBalanceToConsume = 0n;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
state.depositBalanceToConsume = availableForProcessing - processedAmount;
|
|
60
|
-
}
|
|
61
|
-
// TODO Electra: add a function in ListCompositeTreeView to support batch push operation
|
|
62
|
-
for (const deposit of depositsToPostpone) {
|
|
63
|
-
state.pendingBalanceDeposits.push(deposit);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=processPendingBalanceDeposits.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processPendingBalanceDeposits.js","sourceRoot":"","sources":["../../src/epoch/processPendingBalanceDeposits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,2BAA2B,EAAC,MAAM,sBAAsB,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAA+B,EAAE,KAA2B;IACxG,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;IAC3C,MAAM,sBAAsB,GAAG,KAAK,CAAC,uBAAuB,GAAG,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnH,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEtC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,sBAAsB,CAAC,cAAc,EAAE,EAAE,CAAC;QACpE,MAAM,EAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAC,GAAG,OAAO,CAAC;QAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAEvD,4EAA4E;QAC5E,IAAI,SAAS,CAAC,SAAS,GAAG,gBAAgB,EAAE,CAAC;YAC3C,IAAI,SAAS,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;gBAC7C,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,wFAAwF;gBACxF,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrD,IAAI,cAAc,EAAE,CAAC;oBACnB,cAAc,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,IAAI,eAAe,GAAG,MAAM,GAAG,sBAAsB,EAAE,CAAC;gBACtD,+EAA+E;gBAC/E,MAAM;YACR,CAAC;YACD,6EAA6E;YAC7E,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACrD,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;YACD,eAAe,GAAG,eAAe,GAAG,MAAM,CAAC;QAC7C,CAAC;QACD,sEAAsE;QACtE,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,+BAA+B,GAAG,KAAK,CAAC,sBAAsB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjG,KAAK,CAAC,sBAAsB,GAAG,+BAA+B,CAAC;IAE/D,IAAI,+BAA+B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,uBAAuB,GAAG,sBAAsB,GAAG,eAAe,CAAC;IAC3E,CAAC;IAED,wFAAwF;IACxF,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|