@lodestar/state-transition 1.42.0 → 1.43.0-dev.07452fe3b7
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/index.d.ts +2 -2
- package/lib/block/index.d.ts.map +1 -1
- package/lib/block/index.js +11 -4
- package/lib/block/index.js.map +1 -1
- package/lib/block/processDepositRequest.d.ts +11 -2
- package/lib/block/processDepositRequest.d.ts.map +1 -1
- package/lib/block/processDepositRequest.js +34 -4
- package/lib/block/processDepositRequest.js.map +1 -1
- package/lib/block/processParentExecutionPayload.d.ts +20 -0
- package/lib/block/processParentExecutionPayload.d.ts.map +1 -0
- package/lib/block/processParentExecutionPayload.js +100 -0
- package/lib/block/processParentExecutionPayload.js.map +1 -0
- package/lib/block/processWithdrawals.d.ts.map +1 -1
- package/lib/block/processWithdrawals.js +10 -4
- package/lib/block/processWithdrawals.js.map +1 -1
- package/lib/cache/epochCache.d.ts +3 -1
- package/lib/cache/epochCache.d.ts.map +1 -1
- package/lib/cache/epochCache.js +31 -13
- package/lib/cache/epochCache.js.map +1 -1
- package/lib/cache/epochTransitionCache.d.ts +5 -0
- package/lib/cache/epochTransitionCache.d.ts.map +1 -1
- package/lib/cache/epochTransitionCache.js +1 -0
- package/lib/cache/epochTransitionCache.js.map +1 -1
- package/lib/epoch/index.d.ts +3 -1
- package/lib/epoch/index.d.ts.map +1 -1
- package/lib/epoch/index.js +8 -1
- package/lib/epoch/index.js.map +1 -1
- package/lib/epoch/processPtcWindow.d.ts +11 -0
- package/lib/epoch/processPtcWindow.d.ts.map +1 -0
- package/lib/epoch/processPtcWindow.js +28 -0
- package/lib/epoch/processPtcWindow.js.map +1 -0
- package/lib/index.d.ts +4 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/lib/signatureSets/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/signatureSets/executionPayloadEnvelope.js +5 -1
- package/lib/signatureSets/executionPayloadEnvelope.js.map +1 -1
- package/lib/signatureSets/index.d.ts +1 -0
- package/lib/signatureSets/index.d.ts.map +1 -1
- package/lib/signatureSets/index.js +1 -0
- package/lib/signatureSets/index.js.map +1 -1
- package/lib/signatureSets/proposerPreferences.d.ts +4 -0
- package/lib/signatureSets/proposerPreferences.d.ts.map +1 -0
- package/lib/signatureSets/proposerPreferences.js +8 -0
- package/lib/signatureSets/proposerPreferences.js.map +1 -0
- package/lib/signatureSets/voluntaryExits.d.ts +2 -2
- package/lib/signatureSets/voluntaryExits.d.ts.map +1 -1
- package/lib/signatureSets/voluntaryExits.js +4 -0
- package/lib/signatureSets/voluntaryExits.js.map +1 -1
- package/lib/slot/upgradeStateToGloas.d.ts.map +1 -1
- package/lib/slot/upgradeStateToGloas.js +3 -1
- package/lib/slot/upgradeStateToGloas.js.map +1 -1
- package/lib/stateTransition.d.ts +1 -2
- package/lib/stateTransition.d.ts.map +1 -1
- package/lib/stateTransition.js +1 -2
- package/lib/stateTransition.js.map +1 -1
- package/lib/stateView/beaconStateView.d.ts +18 -12
- package/lib/stateView/beaconStateView.d.ts.map +1 -1
- package/lib/stateView/beaconStateView.js +69 -42
- package/lib/stateView/beaconStateView.js.map +1 -1
- package/lib/stateView/interface.d.ts +111 -54
- package/lib/stateView/interface.d.ts.map +1 -1
- package/lib/stateView/interface.js +22 -1
- package/lib/stateView/interface.js.map +1 -1
- package/lib/util/attestation.d.ts +12 -1
- package/lib/util/attestation.d.ts.map +1 -1
- package/lib/util/attestation.js +23 -8
- package/lib/util/attestation.js.map +1 -1
- package/lib/util/computeAnchorCheckpoint.d.ts +1 -1
- package/lib/util/computeAnchorCheckpoint.d.ts.map +1 -1
- package/lib/util/computeAnchorCheckpoint.js +6 -19
- package/lib/util/computeAnchorCheckpoint.js.map +1 -1
- package/lib/util/execution.d.ts +4 -2
- package/lib/util/execution.d.ts.map +1 -1
- package/lib/util/execution.js +7 -0
- package/lib/util/execution.js.map +1 -1
- package/lib/util/gloas.d.ts +7 -2
- package/lib/util/gloas.d.ts.map +1 -1
- package/lib/util/gloas.js +25 -3
- package/lib/util/gloas.js.map +1 -1
- package/package.json +8 -8
- package/src/block/index.ts +12 -4
- package/src/block/processDepositRequest.ts +50 -5
- package/src/block/processParentExecutionPayload.ts +116 -0
- package/src/block/processWithdrawals.ts +12 -4
- package/src/cache/epochCache.ts +32 -30
- package/src/cache/epochTransitionCache.ts +7 -0
- package/src/epoch/index.ts +9 -0
- package/src/epoch/processPtcWindow.ts +38 -0
- package/src/index.ts +20 -2
- package/src/signatureSets/executionPayloadEnvelope.ts +6 -2
- package/src/signatureSets/index.ts +1 -0
- package/src/signatureSets/proposerPreferences.ts +12 -0
- package/src/signatureSets/voluntaryExits.ts +5 -2
- package/src/slot/upgradeStateToGloas.ts +5 -1
- package/src/stateTransition.ts +1 -2
- package/src/stateView/beaconStateView.ts +91 -56
- package/src/stateView/interface.ts +163 -79
- package/src/util/attestation.ts +37 -8
- package/src/util/computeAnchorCheckpoint.ts +6 -19
- package/src/util/execution.ts +11 -1
- package/src/util/gloas.ts +46 -3
- package/lib/block/processExecutionPayloadEnvelope.d.ts +0 -9
- package/lib/block/processExecutionPayloadEnvelope.d.ts.map +0 -1
- package/lib/block/processExecutionPayloadEnvelope.js +0 -102
- package/lib/block/processExecutionPayloadEnvelope.js.map +0 -1
- package/src/block/processExecutionPayloadEnvelope.ts +0 -170
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DOMAIN_PROPOSER_PREFERENCES } from "@lodestar/params";
|
|
2
|
+
import { ssz } from "@lodestar/types";
|
|
3
|
+
import { computeSigningRoot } from "../util/index.js";
|
|
4
|
+
export function getProposerPreferencesSigningRoot(config, preferences) {
|
|
5
|
+
const domain = config.getDomain(preferences.proposalSlot, DOMAIN_PROPOSER_PREFERENCES);
|
|
6
|
+
return computeSigningRoot(ssz.gloas.ProposerPreferences, preferences, domain);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=proposerPreferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposerPreferences.js","sourceRoot":"","sources":["../../src/signatureSets/proposerPreferences.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,2BAA2B,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAQ,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD,MAAM,UAAU,iCAAiC,CAC/C,MAAoB,EACpB,WAAsC,EAC1B;IACZ,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;IACvF,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAAA,CAC/E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BeaconConfig } from "@lodestar/config";
|
|
2
2
|
import { SignedBeaconBlock, Slot, phase0 } from "@lodestar/types";
|
|
3
3
|
import { PubkeyCache } from "../cache/pubkeyCache.js";
|
|
4
|
-
import { IBeaconStateView } from "../stateView/interface.js";
|
|
4
|
+
import { IBeaconStateView, IBeaconStateViewGloas } from "../stateView/interface.js";
|
|
5
5
|
import { ISignatureSet } from "../util/index.js";
|
|
6
6
|
export declare function verifyVoluntaryExitSignature(config: BeaconConfig, pubkeyCache: PubkeyCache, state: IBeaconStateView, signedVoluntaryExit: phase0.SignedVoluntaryExit): boolean;
|
|
7
7
|
/**
|
|
@@ -10,6 +10,6 @@ export declare function verifyVoluntaryExitSignature(config: BeaconConfig, pubke
|
|
|
10
10
|
export declare function getVoluntaryExitSignatureSet(config: BeaconConfig, state: IBeaconStateView, signedVoluntaryExit: phase0.SignedVoluntaryExit): ISignatureSet;
|
|
11
11
|
export declare function getVoluntaryExitsSignatureSets(config: BeaconConfig, state: IBeaconStateView, signedBlock: SignedBeaconBlock): ISignatureSet[];
|
|
12
12
|
export declare function getValidatorVoluntaryExitSignatureSet(config: BeaconConfig, stateSlot: Slot, signedVoluntaryExit: phase0.SignedVoluntaryExit): ISignatureSet;
|
|
13
|
-
export declare function getBuilderVoluntaryExitSignatureSet(config: BeaconConfig, state:
|
|
13
|
+
export declare function getBuilderVoluntaryExitSignatureSet(config: BeaconConfig, state: IBeaconStateViewGloas, signedVoluntaryExit: phase0.SignedVoluntaryExit): ISignatureSet;
|
|
14
14
|
export declare function isBuilderVoluntaryExit(signedVoluntaryExit: phase0.SignedVoluntaryExit): boolean;
|
|
15
15
|
//# sourceMappingURL=voluntaryExits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voluntaryExits.d.ts","sourceRoot":"","sources":["../../src/signatureSets/voluntaryExits.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"voluntaryExits.d.ts","sourceRoot":"","sources":["../../src/signatureSets/voluntaryExits.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAC,gBAAgB,EAAE,qBAAqB,EAAmB,MAAM,2BAA2B,CAAC;AACpG,OAAO,EACL,aAAa,EAOd,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,gBAAgB,EACvB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAC9C,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,gBAAgB,EACvB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAC9C,aAAa,CAWf;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,gBAAgB,EACvB,WAAW,EAAE,iBAAiB,GAC7B,aAAa,EAAE,CAIjB;AAED,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,IAAI,EACf,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAC9C,aAAa,CAUf;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,qBAAqB,EAC5B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAC9C,aAAa,CAYf;AAED,wBAAgB,sBAAsB,CAAC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,GAAG,OAAO,CAE/F"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PublicKey } from "@chainsafe/blst";
|
|
2
2
|
import { ForkSeq } from "@lodestar/params";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
|
+
import { isStatePostGloas } from "../stateView/interface.js";
|
|
4
5
|
import { SignatureSetType, computeSigningRoot, computeStartSlotAtEpoch, convertValidatorIndexToBuilderIndex, isBuilderIndex, verifySignatureSet, } from "../util/index.js";
|
|
5
6
|
export function verifyVoluntaryExitSignature(config, pubkeyCache, state, signedVoluntaryExit) {
|
|
6
7
|
return verifySignatureSet(getVoluntaryExitSignatureSet(config, state, signedVoluntaryExit), pubkeyCache);
|
|
@@ -11,6 +12,9 @@ export function verifyVoluntaryExitSignature(config, pubkeyCache, state, signedV
|
|
|
11
12
|
export function getVoluntaryExitSignatureSet(config, state, signedVoluntaryExit) {
|
|
12
13
|
const fork = config.getForkSeq(state.slot);
|
|
13
14
|
if (fork >= ForkSeq.gloas && isBuilderVoluntaryExit(signedVoluntaryExit)) {
|
|
15
|
+
if (!isStatePostGloas(state)) {
|
|
16
|
+
throw new Error(`Expected gloas+ state for builder voluntary exit signature, got fork=${state.forkName}`);
|
|
17
|
+
}
|
|
14
18
|
return getBuilderVoluntaryExitSignatureSet(config, state, signedVoluntaryExit);
|
|
15
19
|
}
|
|
16
20
|
return getValidatorVoluntaryExitSignatureSet(config, state.slot, signedVoluntaryExit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voluntaryExits.js","sourceRoot":"","sources":["../../src/signatureSets/voluntaryExits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAkC,GAAG,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"voluntaryExits.js","sourceRoot":"","sources":["../../src/signatureSets/voluntaryExits.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeStateToGloas.d.ts","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAI1E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"upgradeStateToGloas.d.ts","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAI1E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,GAAG,sBAAsB,CAuE5F"}
|
|
@@ -4,7 +4,7 @@ import { toHex } from "@lodestar/utils";
|
|
|
4
4
|
import { isValidDepositSignature } from "../block/processDeposit.js";
|
|
5
5
|
import { applyDepositForBuilder } from "../block/processDepositRequest.js";
|
|
6
6
|
import { getCachedBeaconState } from "../cache/stateCache.js";
|
|
7
|
-
import { isBuilderWithdrawalCredential } from "../util/gloas.js";
|
|
7
|
+
import { initializePtcWindow, isBuilderWithdrawalCredential } from "../util/gloas.js";
|
|
8
8
|
import { isValidatorKnown } from "../util/index.js";
|
|
9
9
|
/**
|
|
10
10
|
* Upgrade a state from Fulu to Gloas.
|
|
@@ -43,6 +43,7 @@ export function upgradeStateToGloas(stateFulu) {
|
|
|
43
43
|
stateGloasView.currentSyncCommittee = stateGloasCloned.currentSyncCommittee;
|
|
44
44
|
stateGloasView.nextSyncCommittee = stateGloasCloned.nextSyncCommittee;
|
|
45
45
|
stateGloasView.latestExecutionPayloadBid.blockHash = stateFulu.latestExecutionPayloadHeader.blockHash;
|
|
46
|
+
stateGloasView.latestExecutionPayloadBid.executionRequestsRoot = ssz.electra.ExecutionRequests.hashTreeRoot(ssz.electra.ExecutionRequests.defaultValue());
|
|
46
47
|
stateGloasView.nextWithdrawalIndex = stateGloasCloned.nextWithdrawalIndex;
|
|
47
48
|
stateGloasView.nextWithdrawalValidatorIndex = stateGloasCloned.nextWithdrawalValidatorIndex;
|
|
48
49
|
stateGloasView.historicalSummaries = stateGloasCloned.historicalSummaries;
|
|
@@ -56,6 +57,7 @@ export function upgradeStateToGloas(stateFulu) {
|
|
|
56
57
|
stateGloasView.pendingPartialWithdrawals = stateGloasCloned.pendingPartialWithdrawals;
|
|
57
58
|
stateGloasView.pendingConsolidations = stateGloasCloned.pendingConsolidations;
|
|
58
59
|
stateGloasView.proposerLookahead = stateGloasCloned.proposerLookahead;
|
|
60
|
+
stateGloasView.ptcWindow = ssz.gloas.PtcWindow.toViewDU(initializePtcWindow(stateFulu));
|
|
59
61
|
for (let i = 0; i < SLOTS_PER_HISTORICAL_ROOT; i++) {
|
|
60
62
|
stateGloasView.executionPayloadAvailability.set(i, true);
|
|
61
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeStateToGloas.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAC,sBAAsB,EAAC,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAC,6BAA6B,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"upgradeStateToGloas.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"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"}
|
package/lib/stateTransition.d.ts
CHANGED
|
@@ -33,8 +33,7 @@ export declare enum StateHashTreeRootSource {
|
|
|
33
33
|
prepareNextSlot = "prepare_next_slot",
|
|
34
34
|
prepareNextEpoch = "prepare_next_epoch",
|
|
35
35
|
regenState = "regen_state",
|
|
36
|
-
computeNewStateRoot = "compute_new_state_root"
|
|
37
|
-
computeEnvelopeStateRoot = "compute_envelope_state_root"
|
|
36
|
+
computeNewStateRoot = "compute_new_state_root"
|
|
38
37
|
}
|
|
39
38
|
/**
|
|
40
39
|
* Implementation Note: follows the optimizations in protolambda's eth2fastspec (https://github.com/protolambda/eth2fastspec)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateTransition.d.ts","sourceRoot":"","sources":["../src/stateTransition.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAM,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAC,iBAAiB,EAAiD,MAAM,yBAAyB,CAAC;AAE1G,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAuB,wBAAwB,EAAqB,MAAM,iCAAiC,CAAC;AAEnH,OAAO,EAAC,4BAA4B,EAA0C,MAAM,cAAc,CAAC;AAYnG,OAAO,EACL,yBAAyB,EAQ1B,MAAM,YAAY,CAAC;AAMpB,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GACjD,wBAAwB,GACxB,gBAAgB,GAAG;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEJ,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,UAAU,gBAAgB;IACxB,yBAAyB,CACvB,YAAY,EAAE,KAAK,EACnB,eAAe,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,MAAM,EAAE,EACf,iBAAiB,EAAE,OAAO,EAAE,EAC5B,iBAAiB,EAAE,OAAO,EAAE,EAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,IAAI,CAAC;CACT;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;CAC9B;AAED;;GAEG;AACH,oBAAY,uBAAuB;IACjC,eAAe,qBAAqB;IACpC,eAAe,qBAAqB;IACpC,eAAe,sBAAsB;IACrC,gBAAgB,uBAAuB;IACvC,UAAU,gBAAgB;IAC1B,mBAAmB,2BAA2B;
|
|
1
|
+
{"version":3,"file":"stateTransition.d.ts","sourceRoot":"","sources":["../src/stateTransition.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,IAAI,EAAM,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAC,iBAAiB,EAAiD,MAAM,yBAAyB,CAAC;AAE1G,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAuB,wBAAwB,EAAqB,MAAM,iCAAiC,CAAC;AAEnH,OAAO,EAAC,4BAA4B,EAA0C,MAAM,cAAc,CAAC;AAYnG,OAAO,EACL,yBAAyB,EAQ1B,MAAM,YAAY,CAAC;AAMpB,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GACjD,wBAAwB,GACxB,gBAAgB,GAAG;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEJ,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,UAAU,gBAAgB;IACxB,yBAAyB,CACvB,YAAY,EAAE,KAAK,EACnB,eAAe,EAAE,MAAM,EAAE,EACzB,KAAK,EAAE,MAAM,EAAE,EACf,iBAAiB,EAAE,OAAO,EAAE,EAC5B,iBAAiB,EAAE,OAAO,EAAE,EAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,IAAI,CAAC;CACT;AAED;;GAEG;AACH,oBAAY,gBAAgB;IAC1B,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;CAC9B;AAED;;GAEG;AACH,oBAAY,uBAAuB;IACjC,eAAe,qBAAqB;IACpC,eAAe,qBAAqB;IACpC,eAAe,sBAAsB;IACrC,gBAAgB,uBAAuB;IACvC,UAAU,gBAAgB;IAC1B,mBAAmB,2BAA2B;CAC/C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,yBAAyB,EAChC,WAAW,EAAE,iBAAiB,GAAG,wBAAwB,EACzD,OAAO,GAAE,mBAIR,EACD,EAAC,OAAO,EAAE,gBAAgB,EAAC,GAAE,sBAA2B,GACvD,yBAAyB,CA8D3B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,yBAAyB,EAChC,IAAI,EAAE,IAAI,EACV,wBAAwB,CAAC,EAAE,wBAAwB,GAAG;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAC,EACnF,EAAC,OAAO,EAAE,gBAAgB,EAAC,GAAE,sBAA2B,GACvD,yBAAyB,CAiB3B"}
|
package/lib/stateTransition.js
CHANGED
|
@@ -31,7 +31,6 @@ var StateHashTreeRootSource;
|
|
|
31
31
|
StateHashTreeRootSource["prepareNextEpoch"] = "prepare_next_epoch";
|
|
32
32
|
StateHashTreeRootSource["regenState"] = "regen_state";
|
|
33
33
|
StateHashTreeRootSource["computeNewStateRoot"] = "compute_new_state_root";
|
|
34
|
-
StateHashTreeRootSource["computeEnvelopeStateRoot"] = "compute_envelope_state_root";
|
|
35
34
|
})(StateHashTreeRootSource || (StateHashTreeRootSource = {}));
|
|
36
35
|
/**
|
|
37
36
|
* Implementation Note: follows the optimizations in protolambda's eth2fastspec (https://github.com/protolambda/eth2fastspec)
|
|
@@ -179,7 +178,7 @@ function processSlotsWithTransientCache(postState, slot, epochTransitionCacheOpt
|
|
|
179
178
|
{
|
|
180
179
|
const timer = metrics?.epochTransitionStepTime.startTimer({ step: EpochTransitionStep.finalProcessEpoch });
|
|
181
180
|
// last step to prepare epoch data that depends on the upgraded state, for example proposerLookahead of BeaconStateFulu
|
|
182
|
-
postState.epochCtx.finalProcessEpoch(postState);
|
|
181
|
+
postState.epochCtx.finalProcessEpoch(postState, epochTransitionCache);
|
|
183
182
|
timer?.();
|
|
184
183
|
}
|
|
185
184
|
// Running commit here is not strictly necessary. The cost of running commit twice (here + after process block)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stateTransition.js","sourceRoot":"","sources":["../src/stateTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAA2D,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAoB,sBAAsB,EAAE,sBAAsB,EAAC,MAAM,yBAAyB,CAAC;AAC1G,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAiD,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAA+B,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,cAAc,CAAC;AACnG,OAAO,EAAC,uBAAuB,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAWhE,OAAO,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;SAiCvC,gBAAgB;AAH5B;;GAEG;AACH,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,uDAAmC,CAAA;IACnC,iDAA6B,CAAA;AAAC,CAChC,EAHY,gBAAgB,KAAhB,gBAAgB,QAG3B;SAKW,uBAAuB;AAHnC;;GAEG;AACH,IAAY,
|
|
1
|
+
{"version":3,"file":"stateTransition.js","sourceRoot":"","sources":["../src/stateTransition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CompactMultiProof } from "@chainsafe/persistent-merkle-tree";
|
|
2
2
|
import { BitArray, ByteViews } from "@chainsafe/ssz";
|
|
3
|
+
import { ForkName } from "@lodestar/params";
|
|
3
4
|
import { BeaconBlock, BeaconState, BlindedBeaconBlock, BuilderIndex, Bytes32, Epoch, ExecutionPayloadBid, ExecutionPayloadHeader, Root, RootHex, SignedBeaconBlock, SignedBlindedBeaconBlock, Slot, SyncCommittee, ValidatorIndex, capella, electra, fulu, gloas, phase0, rewards } from "@lodestar/types";
|
|
4
5
|
import { Checkpoint, Fork } from "@lodestar/types/phase0";
|
|
5
|
-
import { ProcessExecutionPayloadEnvelopeOpts } from "../block/processExecutionPayloadEnvelope.js";
|
|
6
6
|
import { VoluntaryExitValidity } from "../block/processVoluntaryExit.js";
|
|
7
7
|
import { EffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
|
|
8
8
|
import { EpochTransitionCacheOpts } from "../cache/epochTransitionCache.js";
|
|
@@ -12,8 +12,8 @@ import { SyncCommitteeCache } from "../cache/syncCommitteeCache.js";
|
|
|
12
12
|
import { SyncCommitteeWitness } from "../lightClient/types.js";
|
|
13
13
|
import { StateTransitionModules, StateTransitionOpts } from "../stateTransition.js";
|
|
14
14
|
import { EpochShuffling } from "../util/epochShuffling.js";
|
|
15
|
-
import { IBeaconStateView } from "./interface.js";
|
|
16
|
-
export declare class BeaconStateView implements
|
|
15
|
+
import { IBeaconStateView, IBeaconStateViewGloas, IBeaconStateViewLatestFork } from "./interface.js";
|
|
16
|
+
export declare class BeaconStateView implements IBeaconStateViewLatestFork {
|
|
17
17
|
readonly cachedState: CachedBeaconStateAllForks;
|
|
18
18
|
private readonly config;
|
|
19
19
|
private _fork;
|
|
@@ -23,7 +23,6 @@ export declare class BeaconStateView implements IBeaconStateView {
|
|
|
23
23
|
private _previousEpochParticipation;
|
|
24
24
|
private _currentEpochParticipation;
|
|
25
25
|
private _latestExecutionPayloadHeader;
|
|
26
|
-
private _latestBlockHash;
|
|
27
26
|
private _historicalSummaries;
|
|
28
27
|
private _pendingPartialWithdrawals;
|
|
29
28
|
private _pendingConsolidations;
|
|
@@ -31,7 +30,9 @@ export declare class BeaconStateView implements IBeaconStateView {
|
|
|
31
30
|
private _proposerLookahead;
|
|
32
31
|
private _executionPayloadAvailability;
|
|
33
32
|
private _latestExecutionPayloadBid;
|
|
33
|
+
private _payloadExpectedWithdrawals;
|
|
34
34
|
constructor(cachedState: CachedBeaconStateAllForks);
|
|
35
|
+
get forkName(): ForkName;
|
|
35
36
|
get slot(): number;
|
|
36
37
|
get fork(): Fork;
|
|
37
38
|
get epoch(): number;
|
|
@@ -51,12 +52,6 @@ export declare class BeaconStateView implements IBeaconStateView {
|
|
|
51
52
|
getPreviousEpochParticipation(validatorIndex: ValidatorIndex): number;
|
|
52
53
|
getCurrentEpochParticipation(validatorIndex: ValidatorIndex): number;
|
|
53
54
|
get latestExecutionPayloadHeader(): ExecutionPayloadHeader;
|
|
54
|
-
/**
|
|
55
|
-
* Cross-fork accessor for the execution block hash of the most recently included payload.
|
|
56
|
-
* Pre-gloas: reads from latestExecutionPayloadHeader.blockHash.
|
|
57
|
-
* Gloas+: reads the dedicated latestBlockHash field (EIP-7732).
|
|
58
|
-
*/
|
|
59
|
-
get latestBlockHash(): Bytes32;
|
|
60
55
|
/**
|
|
61
56
|
* The execution block number of the most recently included payload.
|
|
62
57
|
* Named payloadBlockNumber (not latestBlockNumber) to mirror ExecutionPayloadHeader.blockNumber pre-gloas.
|
|
@@ -71,10 +66,16 @@ export declare class BeaconStateView implements IBeaconStateView {
|
|
|
71
66
|
get pendingConsolidations(): electra.PendingConsolidations;
|
|
72
67
|
get pendingConsolidationsCount(): number;
|
|
73
68
|
get proposerLookahead(): fulu.ProposerLookahead;
|
|
69
|
+
get latestBlockHash(): Bytes32;
|
|
74
70
|
get executionPayloadAvailability(): BitArray;
|
|
75
71
|
get latestExecutionPayloadBid(): ExecutionPayloadBid;
|
|
72
|
+
get payloadExpectedWithdrawals(): capella.Withdrawal[];
|
|
76
73
|
getBuilder(index: BuilderIndex): gloas.Builder;
|
|
77
74
|
canBuilderCoverBid(builderIndex: BuilderIndex, bidAmount: number): boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Return the PTCs for an epoch
|
|
77
|
+
*/
|
|
78
|
+
getEpochPTCs(epoch: Epoch): Uint32Array[];
|
|
78
79
|
/**
|
|
79
80
|
* Return the index of the validator in the PTC committee for the given slot.
|
|
80
81
|
* return -1 if validator is not in the PTC committee for the given slot.
|
|
@@ -140,7 +141,9 @@ export declare class BeaconStateView implements IBeaconStateView {
|
|
|
140
141
|
get clonedCountWithTransferCache(): number;
|
|
141
142
|
get createdWithTransferCache(): boolean;
|
|
142
143
|
isStateValidatorsNodesPopulated(): boolean;
|
|
143
|
-
loadOtherState(stateBytes: Uint8Array, seedValidatorsBytes?: Uint8Array
|
|
144
|
+
loadOtherState(stateBytes: Uint8Array, seedValidatorsBytes?: Uint8Array, opts?: {
|
|
145
|
+
preloadValidatorsAndBalances?: boolean;
|
|
146
|
+
}): IBeaconStateView;
|
|
144
147
|
toValue(): BeaconState;
|
|
145
148
|
serialize(): Uint8Array;
|
|
146
149
|
serializedSize(): number;
|
|
@@ -153,6 +156,9 @@ export declare class BeaconStateView implements IBeaconStateView {
|
|
|
153
156
|
processSlots(slot: Slot, epochTransitionCacheOpts?: EpochTransitionCacheOpts & {
|
|
154
157
|
dontTransferCache?: boolean;
|
|
155
158
|
}, modules?: StateTransitionModules): IBeaconStateView;
|
|
156
|
-
|
|
159
|
+
/**
|
|
160
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.5/specs/gloas/validator.md#executionpayload
|
|
161
|
+
*/
|
|
162
|
+
withParentPayloadApplied(executionRequests: electra.ExecutionRequests): IBeaconStateViewGloas;
|
|
157
163
|
}
|
|
158
164
|
//# sourceMappingURL=beaconStateView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beaconStateView.d.ts","sourceRoot":"","sources":["../../src/stateView/beaconStateView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAA+B,MAAM,mCAAmC,CAAC;AAClG,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"beaconStateView.d.ts","sourceRoot":"","sources":["../../src/stateView/beaconStateView.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ProofType, Tree, createProof } from "@chainsafe/persistent-merkle-tree";
|
|
2
|
-
import { ForkSeq, SLOTS_PER_HISTORICAL_ROOT
|
|
2
|
+
import { ForkSeq, SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
|
|
3
3
|
import { getValidatorStatus, mapToGeneralStatus, } from "@lodestar/types";
|
|
4
|
-
import {
|
|
4
|
+
import { applyParentExecutionPayload } from "../block/processParentExecutionPayload.js";
|
|
5
5
|
import { VoluntaryExitValidity, getVoluntaryExitValidity } from "../block/processVoluntaryExit.js";
|
|
6
6
|
import { getExpectedWithdrawals } from "../block/processWithdrawals.js";
|
|
7
7
|
import { createCachedBeaconState, isStateValidatorsNodesPopulated, } from "../cache/stateCache.js";
|
|
@@ -15,11 +15,12 @@ import { getEffectiveBalanceIncrementsZeroInactive } from "../util/balance.js";
|
|
|
15
15
|
import { getBlockRootAtSlot } from "../util/blockRoot.js";
|
|
16
16
|
import { computeAnchorCheckpoint } from "../util/computeAnchorCheckpoint.js";
|
|
17
17
|
import { computeEpochAtSlot, computeStartSlotAtEpoch } from "../util/epoch.js";
|
|
18
|
-
import { isExecutionEnabled, isExecutionStateType, isMergeTransitionComplete } from "../util/execution.js";
|
|
18
|
+
import { isExecutionEnabled, isExecutionStateType, isGloasStateType, isMergeTransitionComplete, } from "../util/execution.js";
|
|
19
19
|
import { canBuilderCoverBid } from "../util/gloas.js";
|
|
20
20
|
import { loadState } from "../util/loadState/loadState.js";
|
|
21
21
|
import { getRandaoMix } from "../util/seed.js";
|
|
22
22
|
import { getLatestWeakSubjectivityCheckpointEpoch } from "../util/weakSubjectivity.js";
|
|
23
|
+
import { isStatePostGloas } from "./interface.js";
|
|
23
24
|
export class BeaconStateView {
|
|
24
25
|
cachedState;
|
|
25
26
|
config;
|
|
@@ -34,8 +35,6 @@ export class BeaconStateView {
|
|
|
34
35
|
_currentEpochParticipation = null;
|
|
35
36
|
// bellatrix
|
|
36
37
|
_latestExecutionPayloadHeader = null;
|
|
37
|
-
// Caches the cross-fork latestBlockHash value
|
|
38
|
-
_latestBlockHash = null;
|
|
39
38
|
// capella
|
|
40
39
|
_historicalSummaries = null;
|
|
41
40
|
// electra
|
|
@@ -47,11 +46,15 @@ export class BeaconStateView {
|
|
|
47
46
|
// gloas
|
|
48
47
|
_executionPayloadAvailability = null;
|
|
49
48
|
_latestExecutionPayloadBid = null;
|
|
49
|
+
_payloadExpectedWithdrawals = null;
|
|
50
50
|
constructor(cachedState) {
|
|
51
51
|
this.cachedState = cachedState;
|
|
52
52
|
this.config = cachedState.config;
|
|
53
53
|
}
|
|
54
54
|
// phase0
|
|
55
|
+
get forkName() {
|
|
56
|
+
return this.config.getForkName(this.cachedState.slot);
|
|
57
|
+
}
|
|
55
58
|
get slot() {
|
|
56
59
|
return this.cachedState.slot;
|
|
57
60
|
}
|
|
@@ -133,34 +136,18 @@ export class BeaconStateView {
|
|
|
133
136
|
}
|
|
134
137
|
// bellatrix
|
|
135
138
|
get latestExecutionPayloadHeader() {
|
|
136
|
-
|
|
139
|
+
const forkSeq = this.config.getForkSeq(this.cachedState.slot);
|
|
140
|
+
if (forkSeq < ForkSeq.bellatrix) {
|
|
137
141
|
throw new Error("latestExecutionPayloadHeader is not available before Bellatrix");
|
|
138
142
|
}
|
|
143
|
+
if (forkSeq >= ForkSeq.gloas) {
|
|
144
|
+
throw new Error("latestExecutionPayloadHeader is not available after Gloas");
|
|
145
|
+
}
|
|
139
146
|
if (this._latestExecutionPayloadHeader === null) {
|
|
140
147
|
this._latestExecutionPayloadHeader = this.cachedState.latestExecutionPayloadHeader.toValue();
|
|
141
148
|
}
|
|
142
149
|
return this._latestExecutionPayloadHeader;
|
|
143
150
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Cross-fork accessor for the execution block hash of the most recently included payload.
|
|
146
|
-
* Pre-gloas: reads from latestExecutionPayloadHeader.blockHash.
|
|
147
|
-
* Gloas+: reads the dedicated latestBlockHash field (EIP-7732).
|
|
148
|
-
*/
|
|
149
|
-
get latestBlockHash() {
|
|
150
|
-
const forkSeq = this.config.getForkSeq(this.cachedState.slot);
|
|
151
|
-
if (forkSeq < ForkSeq.bellatrix) {
|
|
152
|
-
throw new Error("latestBlockHash is not available before Bellatrix");
|
|
153
|
-
}
|
|
154
|
-
if (this._latestBlockHash === null) {
|
|
155
|
-
if (forkSeq >= ForkSeq.gloas) {
|
|
156
|
-
this._latestBlockHash = this.cachedState.latestBlockHash;
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
this._latestBlockHash = this.cachedState.latestExecutionPayloadHeader.blockHash;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return this._latestBlockHash;
|
|
163
|
-
}
|
|
164
151
|
/**
|
|
165
152
|
* The execution block number of the most recently included payload.
|
|
166
153
|
* Named payloadBlockNumber (not latestBlockNumber) to mirror ExecutionPayloadHeader.blockNumber pre-gloas.
|
|
@@ -243,9 +230,15 @@ export class BeaconStateView {
|
|
|
243
230
|
return this._proposerLookahead;
|
|
244
231
|
}
|
|
245
232
|
// gloas
|
|
233
|
+
get latestBlockHash() {
|
|
234
|
+
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
235
|
+
throw new Error("latestBlockHash is not available before Gloas");
|
|
236
|
+
}
|
|
237
|
+
return this.cachedState.latestBlockHash;
|
|
238
|
+
}
|
|
246
239
|
get executionPayloadAvailability() {
|
|
247
240
|
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
248
|
-
throw new Error("executionPayloadAvailability is not available before
|
|
241
|
+
throw new Error("executionPayloadAvailability is not available before Gloas");
|
|
249
242
|
}
|
|
250
243
|
if (this._executionPayloadAvailability === null) {
|
|
251
244
|
this._executionPayloadAvailability = this.cachedState.executionPayloadAvailability.toValue();
|
|
@@ -254,32 +247,57 @@ export class BeaconStateView {
|
|
|
254
247
|
}
|
|
255
248
|
get latestExecutionPayloadBid() {
|
|
256
249
|
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
257
|
-
throw new Error("latestExecutionPayloadBid is not available before
|
|
250
|
+
throw new Error("latestExecutionPayloadBid is not available before Gloas");
|
|
258
251
|
}
|
|
259
252
|
if (this._latestExecutionPayloadBid === null) {
|
|
260
253
|
this._latestExecutionPayloadBid = this.cachedState.latestExecutionPayloadBid.toValue();
|
|
261
254
|
}
|
|
262
255
|
return this._latestExecutionPayloadBid;
|
|
263
256
|
}
|
|
257
|
+
get payloadExpectedWithdrawals() {
|
|
258
|
+
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
259
|
+
throw new Error("payloadExpectedWithdrawals is not available before Gloas");
|
|
260
|
+
}
|
|
261
|
+
if (this._payloadExpectedWithdrawals === null) {
|
|
262
|
+
this._payloadExpectedWithdrawals = this.cachedState.payloadExpectedWithdrawals.toValue();
|
|
263
|
+
}
|
|
264
|
+
return this._payloadExpectedWithdrawals;
|
|
265
|
+
}
|
|
264
266
|
getBuilder(index) {
|
|
265
267
|
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
266
|
-
throw new Error("Builders are not supported before
|
|
268
|
+
throw new Error("Builders are not supported before Gloas");
|
|
267
269
|
}
|
|
268
270
|
return this.cachedState.builders.getReadonly(index);
|
|
269
271
|
}
|
|
270
272
|
canBuilderCoverBid(builderIndex, bidAmount) {
|
|
271
273
|
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
272
|
-
throw new Error("Builders are not supported before
|
|
274
|
+
throw new Error("Builders are not supported before Gloas");
|
|
273
275
|
}
|
|
274
276
|
return canBuilderCoverBid(this.cachedState, builderIndex, bidAmount);
|
|
275
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Return the PTCs for an epoch
|
|
280
|
+
*/
|
|
281
|
+
getEpochPTCs(epoch) {
|
|
282
|
+
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
283
|
+
throw new Error("PTC committees are not supported before Gloas");
|
|
284
|
+
}
|
|
285
|
+
const epochCtx = this.cachedState.epochCtx;
|
|
286
|
+
if (epoch === epochCtx.epoch) {
|
|
287
|
+
return epochCtx.payloadTimelinessCommittees;
|
|
288
|
+
}
|
|
289
|
+
if (epoch === epochCtx.nextEpoch) {
|
|
290
|
+
return epochCtx.nextPayloadTimelinessCommittees;
|
|
291
|
+
}
|
|
292
|
+
throw new Error(`PTC committees are not available for epoch=${epoch}`);
|
|
293
|
+
}
|
|
276
294
|
/**
|
|
277
295
|
* Return the index of the validator in the PTC committee for the given slot.
|
|
278
296
|
* return -1 if validator is not in the PTC committee for the given slot.
|
|
279
297
|
*/
|
|
280
298
|
getIndexInPayloadTimelinessCommittee(validatorIndex, slot) {
|
|
281
299
|
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
282
|
-
throw new Error("PTC committees are not supported before
|
|
300
|
+
throw new Error("PTC committees are not supported before Gloas");
|
|
283
301
|
}
|
|
284
302
|
const ptcCommittee = this.cachedState.epochCtx.getPayloadTimelinessCommittee(slot);
|
|
285
303
|
return ptcCommittee.indexOf(validatorIndex);
|
|
@@ -403,7 +421,8 @@ export class BeaconStateView {
|
|
|
403
421
|
return isExecutionEnabled(this.cachedState, block);
|
|
404
422
|
}
|
|
405
423
|
get isMergeTransitionComplete() {
|
|
406
|
-
return isExecutionStateType(this.cachedState)
|
|
424
|
+
return ((isExecutionStateType(this.cachedState) || isGloasStateType(this.cachedState)) &&
|
|
425
|
+
isMergeTransitionComplete(this.cachedState));
|
|
407
426
|
}
|
|
408
427
|
// Block production
|
|
409
428
|
getExpectedWithdrawals() {
|
|
@@ -470,7 +489,7 @@ export class BeaconStateView {
|
|
|
470
489
|
return isStateValidatorsNodesPopulated(this.cachedState);
|
|
471
490
|
}
|
|
472
491
|
// Serialization
|
|
473
|
-
loadOtherState(stateBytes, seedValidatorsBytes) {
|
|
492
|
+
loadOtherState(stateBytes, seedValidatorsBytes, opts) {
|
|
474
493
|
const { state } = loadState(this.config, this.cachedState, stateBytes, seedValidatorsBytes);
|
|
475
494
|
const cachedState = createCachedBeaconState(state, {
|
|
476
495
|
config: this.config,
|
|
@@ -479,9 +498,10 @@ export class BeaconStateView {
|
|
|
479
498
|
}, {
|
|
480
499
|
skipSyncPubkeys: true,
|
|
481
500
|
});
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
501
|
+
if (opts?.preloadValidatorsAndBalances) {
|
|
502
|
+
cachedState.validators.getAllReadonlyValues();
|
|
503
|
+
cachedState.balances.getAll();
|
|
504
|
+
}
|
|
485
505
|
return new BeaconStateView(cachedState);
|
|
486
506
|
}
|
|
487
507
|
toValue() {
|
|
@@ -518,13 +538,20 @@ export class BeaconStateView {
|
|
|
518
538
|
const newState = processSlots(this.cachedState, slot, epochTransitionCacheOpts, modules);
|
|
519
539
|
return new BeaconStateView(newState);
|
|
520
540
|
}
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
541
|
+
/**
|
|
542
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.5/specs/gloas/validator.md#executionpayload
|
|
543
|
+
*/
|
|
544
|
+
withParentPayloadApplied(executionRequests) {
|
|
545
|
+
if (this.config.getForkSeq(this.cachedState.slot) < ForkSeq.gloas) {
|
|
546
|
+
throw new Error("withParentPayloadApplied is not available before Gloas");
|
|
547
|
+
}
|
|
548
|
+
const stateCopy = this.cachedState.clone(true);
|
|
549
|
+
applyParentExecutionPayload(stateCopy, executionRequests);
|
|
550
|
+
const stateView = new BeaconStateView(stateCopy);
|
|
551
|
+
if (!isStatePostGloas(stateView)) {
|
|
552
|
+
throw new Error("Expected gloas state after clone");
|
|
525
553
|
}
|
|
526
|
-
|
|
527
|
-
return new BeaconStateView(postPayloadState);
|
|
554
|
+
return stateView;
|
|
528
555
|
}
|
|
529
556
|
}
|
|
530
557
|
//# sourceMappingURL=beaconStateView.js.map
|