@lodestar/beacon-node 1.41.0-rc.2 → 1.42.0-dev.4411584fd8
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/api/impl/beacon/state/utils.d.ts +2 -2
- package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/utils.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +5 -1
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.d.ts +0 -1
- package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
- package/lib/chain/archiveStore/archiveStore.js +0 -9
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/interface.d.ts +4 -4
- package/lib/chain/archiveStore/interface.d.ts.map +1 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +4 -4
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +4 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +38 -0
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +11 -7
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/chain.d.ts +3 -3
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +16 -7
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -2
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/opPools/utils.js +1 -1
- package/lib/chain/opPools/utils.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +6 -2
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/errors.d.ts +11 -1
- package/lib/chain/regen/errors.d.ts.map +1 -1
- package/lib/chain/regen/errors.js +2 -0
- package/lib/chain/regen/errors.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +12 -6
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/queued.d.ts +11 -6
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js +40 -8
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +5 -0
- package/lib/chain/regen/regen.d.ts.map +1 -1
- package/lib/chain/regen/regen.js +33 -6
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/stateCache/datastore/db.d.ts +4 -5
- package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
- package/lib/chain/stateCache/datastore/db.js +32 -10
- package/lib/chain/stateCache/datastore/db.js.map +1 -1
- package/lib/chain/stateCache/datastore/file.d.ts +1 -1
- package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
- package/lib/chain/stateCache/datastore/file.js +5 -5
- package/lib/chain/stateCache/datastore/file.js.map +1 -1
- package/lib/chain/stateCache/datastore/types.d.ts +1 -1
- package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts +7 -4
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.js +8 -3
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +33 -14
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +217 -119
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/types.d.ts +15 -8
- package/lib/chain/stateCache/types.d.ts.map +1 -1
- package/lib/chain/stateCache/types.js.map +1 -1
- package/lib/chain/validation/lightClientFinalityUpdate.js +1 -1
- package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
- package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
- package/lib/chain/validation/voluntaryExit.js +2 -2
- package/lib/chain/validation/voluntaryExit.js.map +1 -1
- package/lib/chain/validatorMonitor.js +1 -1
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +2 -2
- package/lib/network/network.js +2 -2
- package/lib/network/network.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +1 -1
- package/lib/sync/backfill/backfill.d.ts +1 -1
- package/lib/sync/backfill/backfill.js +1 -1
- package/lib/sync/constants.d.ts +1 -1
- package/lib/sync/constants.js +1 -1
- package/package.json +15 -15
- package/src/api/impl/beacon/state/utils.ts +2 -2
- package/src/api/impl/validator/index.ts +7 -3
- package/src/chain/archiveStore/archiveStore.ts +0 -10
- package/src/chain/archiveStore/interface.ts +4 -4
- package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +8 -5
- package/src/chain/archiveStore/utils/archiveBlocks.ts +59 -1
- package/src/chain/blocks/importBlock.ts +11 -6
- package/src/chain/blocks/verifyBlocksSignatures.ts +1 -1
- package/src/chain/chain.ts +23 -12
- package/src/chain/interface.ts +2 -2
- package/src/chain/opPools/utils.ts +1 -1
- package/src/chain/prepareNextSlot.ts +6 -2
- package/src/chain/produceBlock/produceBlockBody.ts +1 -1
- package/src/chain/regen/errors.ts +6 -1
- package/src/chain/regen/interface.ts +12 -6
- package/src/chain/regen/queued.ts +48 -12
- package/src/chain/regen/regen.ts +37 -7
- package/src/chain/stateCache/datastore/db.ts +33 -10
- package/src/chain/stateCache/datastore/file.ts +6 -5
- package/src/chain/stateCache/datastore/types.ts +3 -2
- package/src/chain/stateCache/fifoBlockStateCache.ts +10 -4
- package/src/chain/stateCache/persistentCheckpointsCache.ts +248 -139
- package/src/chain/stateCache/types.ts +18 -8
- package/src/chain/validation/lightClientFinalityUpdate.ts +1 -1
- package/src/chain/validation/lightClientOptimisticUpdate.ts +1 -1
- package/src/chain/validation/voluntaryExit.ts +2 -1
- package/src/chain/validatorMonitor.ts +1 -1
- package/src/execution/engine/interface.ts +2 -2
- package/src/network/network.ts +2 -2
- package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
- package/src/sync/backfill/backfill.ts +1 -1
- package/src/sync/constants.ts +1 -1
- package/lib/chain/archiveStore/utils/archivePayloads.d.ts +0 -7
- package/lib/chain/archiveStore/utils/archivePayloads.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/archivePayloads.js +0 -10
- package/lib/chain/archiveStore/utils/archivePayloads.js.map +0 -1
- package/src/chain/archiveStore/utils/archivePayloads.ts +0 -15
|
@@ -3,7 +3,7 @@ import { ProtoBlock } from "@lodestar/fork-choice";
|
|
|
3
3
|
import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
|
|
4
4
|
import { BeaconBlock, Epoch, RootHex, Slot, phase0 } from "@lodestar/types";
|
|
5
5
|
import { JobItemQueue } from "../../util/queue/index.js";
|
|
6
|
-
import {
|
|
6
|
+
import { CheckpointHexPayload } from "../stateCache/types.js";
|
|
7
7
|
import { IStateRegenerator, IStateRegeneratorInternal, RegenCaller, StateRegenerationOpts } from "./interface.js";
|
|
8
8
|
import { RegenModules } from "./regen.js";
|
|
9
9
|
type QueuedStateRegeneratorModules = RegenModules & {
|
|
@@ -43,21 +43,26 @@ export declare class QueuedStateRegenerator implements IStateRegenerator {
|
|
|
43
43
|
* Get state for block processing.
|
|
44
44
|
*/
|
|
45
45
|
getPreStateSync(block: BeaconBlock): CachedBeaconStateAllForks | null;
|
|
46
|
-
getCheckpointStateOrBytes(cp:
|
|
46
|
+
getCheckpointStateOrBytes(cp: CheckpointHexPayload): Promise<CachedBeaconStateAllForks | Uint8Array | null>;
|
|
47
47
|
/**
|
|
48
48
|
* Get checkpoint state from cache
|
|
49
49
|
*/
|
|
50
|
-
getCheckpointStateSync(cp:
|
|
50
|
+
getCheckpointStateSync(cp: CheckpointHexPayload): CachedBeaconStateAllForks | null;
|
|
51
51
|
/**
|
|
52
52
|
* Get state closest to head
|
|
53
53
|
*/
|
|
54
54
|
getClosestHeadState(head: ProtoBlock): CachedBeaconStateAllForks | null;
|
|
55
55
|
pruneOnCheckpoint(finalizedEpoch: Epoch, justifiedEpoch: Epoch, headStateRoot: RootHex): void;
|
|
56
56
|
pruneOnFinalized(finalizedEpoch: number): void;
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
processBlockState(blockRootHex: RootHex, postState: CachedBeaconStateAllForks): void;
|
|
58
|
+
/**
|
|
59
|
+
* Process payload state for caching after importing execution payload.
|
|
60
|
+
*/
|
|
61
|
+
processPayloadState(payloadState: CachedBeaconStateAllForks): void;
|
|
62
|
+
addCheckpointState(cp: phase0.Checkpoint, item: CachedBeaconStateAllForks, payloadPresent: boolean): void;
|
|
59
63
|
updateHeadState(newHead: ProtoBlock, maybeHeadState: CachedBeaconStateAllForks): void;
|
|
60
|
-
updatePreComputedCheckpoint(rootHex: RootHex, epoch: Epoch): number | null;
|
|
64
|
+
updatePreComputedCheckpoint(rootHex: RootHex, epoch: Epoch, payloadPresent: boolean): number | null;
|
|
65
|
+
upgradeForGloas(epoch: Epoch): void;
|
|
61
66
|
/**
|
|
62
67
|
* Get the state to run with `block`.
|
|
63
68
|
* - State after `block.parentRoot` dialed forward to block.slot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queued.d.ts","sourceRoot":"","sources":["../../../src/chain/regen/queued.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"queued.d.ts","sourceRoot":"","sources":["../../../src/chain/regen/queued.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { PayloadStatus } from "@lodestar/fork-choice";
|
|
1
2
|
import { computeEpochAtSlot } from "@lodestar/state-transition";
|
|
2
3
|
import { isGloasBeaconBlock } from "@lodestar/types";
|
|
3
|
-
import { toRootHex } from "@lodestar/utils";
|
|
4
|
+
import { fromHex, toRootHex } from "@lodestar/utils";
|
|
4
5
|
import { JobItemQueue } from "../../util/queue/index.js";
|
|
5
6
|
import { RegenError, RegenErrorCode } from "./errors.js";
|
|
6
7
|
import { RegenCaller, RegenFnName, } from "./interface.js";
|
|
@@ -67,9 +68,18 @@ export class QueuedStateRegenerator {
|
|
|
67
68
|
}
|
|
68
69
|
const parentEpoch = computeEpochAtSlot(parentBlock.slot);
|
|
69
70
|
const blockEpoch = computeEpochAtSlot(block.slot);
|
|
71
|
+
// Convert PayloadStatus to payloadPresent boolean
|
|
72
|
+
if (parentBlock.payloadStatus === PayloadStatus.PENDING) {
|
|
73
|
+
throw new RegenError({
|
|
74
|
+
code: RegenErrorCode.UNEXPECTED_PAYLOAD_STATUS,
|
|
75
|
+
blockRoot: block.parentRoot,
|
|
76
|
+
payloadStatus: parentBlock.payloadStatus,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
const payloadPresent = parentBlock.payloadStatus === PayloadStatus.FULL;
|
|
70
80
|
// Check the checkpoint cache (if the pre-state is a checkpoint state)
|
|
71
81
|
if (parentEpoch < blockEpoch) {
|
|
72
|
-
const checkpointState = this.checkpointStateCache.getLatest(parentRoot, blockEpoch);
|
|
82
|
+
const checkpointState = this.checkpointStateCache.getLatest(parentRoot, blockEpoch, payloadPresent);
|
|
73
83
|
if (checkpointState && computeEpochAtSlot(checkpointState.slot) === blockEpoch) {
|
|
74
84
|
return checkpointState;
|
|
75
85
|
}
|
|
@@ -98,7 +108,17 @@ export class QueuedStateRegenerator {
|
|
|
98
108
|
* Get state closest to head
|
|
99
109
|
*/
|
|
100
110
|
getClosestHeadState(head) {
|
|
101
|
-
|
|
111
|
+
// Convert PayloadStatus to payloadPresent boolean
|
|
112
|
+
if (head.payloadStatus === PayloadStatus.PENDING) {
|
|
113
|
+
throw new RegenError({
|
|
114
|
+
code: RegenErrorCode.UNEXPECTED_PAYLOAD_STATUS,
|
|
115
|
+
blockRoot: fromHex(head.blockRoot),
|
|
116
|
+
payloadStatus: head.payloadStatus,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
const payloadPresent = head.payloadStatus === PayloadStatus.FULL;
|
|
120
|
+
return (this.checkpointStateCache.getLatest(head.blockRoot, Infinity, payloadPresent) ||
|
|
121
|
+
this.blockStateCache.get(head.stateRoot));
|
|
102
122
|
}
|
|
103
123
|
pruneOnCheckpoint(finalizedEpoch, justifiedEpoch, headStateRoot) {
|
|
104
124
|
this.checkpointStateCache.prune(finalizedEpoch, justifiedEpoch);
|
|
@@ -108,14 +128,22 @@ export class QueuedStateRegenerator {
|
|
|
108
128
|
this.checkpointStateCache.pruneFinalized(finalizedEpoch);
|
|
109
129
|
this.blockStateCache.deleteAllBeforeEpoch(finalizedEpoch);
|
|
110
130
|
}
|
|
111
|
-
|
|
131
|
+
processBlockState(blockRootHex, postState) {
|
|
112
132
|
this.blockStateCache.add(postState);
|
|
113
133
|
this.checkpointStateCache.processState(blockRootHex, postState).catch((e) => {
|
|
114
134
|
this.logger.debug("Error processing block state", { blockRootHex, slot: postState.slot }, e);
|
|
115
135
|
});
|
|
116
136
|
}
|
|
117
|
-
|
|
118
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Process payload state for caching after importing execution payload.
|
|
139
|
+
*/
|
|
140
|
+
processPayloadState(payloadState) {
|
|
141
|
+
// Add payload state to block state cache (keyed by payload state root)
|
|
142
|
+
this.blockStateCache.add(payloadState);
|
|
143
|
+
}
|
|
144
|
+
// TODO GLOAS: This should also be called when importing execution payload after we implement it
|
|
145
|
+
addCheckpointState(cp, item, payloadPresent) {
|
|
146
|
+
this.checkpointStateCache.add(cp, item, payloadPresent);
|
|
119
147
|
}
|
|
120
148
|
updateHeadState(newHead, maybeHeadState) {
|
|
121
149
|
const { stateRoot: newHeadStateRoot, blockRoot: newHeadBlockRoot, slot: newHeadSlot } = newHead;
|
|
@@ -144,8 +172,12 @@ export class QueuedStateRegenerator {
|
|
|
144
172
|
this.regen.getState(newHeadStateRoot, RegenCaller.processBlock, allowDiskReload).then((headStateRegen) => this.blockStateCache.setHeadState(headStateRegen), (e) => this.logger.error("Error on head state regen", logCtx, e));
|
|
145
173
|
}
|
|
146
174
|
}
|
|
147
|
-
updatePreComputedCheckpoint(rootHex, epoch) {
|
|
148
|
-
return this.checkpointStateCache.updatePreComputedCheckpoint(rootHex, epoch);
|
|
175
|
+
updatePreComputedCheckpoint(rootHex, epoch, payloadPresent) {
|
|
176
|
+
return this.checkpointStateCache.updatePreComputedCheckpoint(rootHex, epoch, payloadPresent);
|
|
177
|
+
}
|
|
178
|
+
upgradeForGloas(epoch) {
|
|
179
|
+
this.logger.verbose("Upgrading block state cache for Gloas fork", { epoch });
|
|
180
|
+
this.blockStateCache.upgradeToGloas();
|
|
149
181
|
}
|
|
150
182
|
/**
|
|
151
183
|
* Get the state to run with `block`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queued.js","sourceRoot":"","sources":["../../../src/chain/regen/queued.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"queued.js","sourceRoot":"","sources":["../../../src/chain/regen/queued.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,11 @@ export declare class StateRegenerator implements IStateRegeneratorInternal {
|
|
|
58
58
|
* emitting "checkpoint" events after every epoch processed.
|
|
59
59
|
*
|
|
60
60
|
* Stops processing after no more full epochs can be processed.
|
|
61
|
+
*
|
|
62
|
+
* Output state variant:
|
|
63
|
+
* - Post-Gloas: If slots are processed, returns block state (payloadPresent=false).
|
|
64
|
+
* If no slots processed, returns preState as-is (preserves variant).
|
|
65
|
+
* - Pre-Gloas: Always payloadPresent=true (no block/payload distinction).
|
|
61
66
|
*/
|
|
62
67
|
export declare function processSlotsToNearestCheckpoint(modules: {
|
|
63
68
|
checkpointStateCache: CheckpointStateCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regen.d.ts","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"regen.d.ts","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAiB,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EACL,yBAAyB,EAQ1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,WAAW,EAAE,OAAO,EAAqB,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAC,MAAM,EAAqB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EAAa,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,cAAc,EAAC,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAC,yBAAyB,EAAE,WAAW,EAAE,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;AAE7F,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,SAAS,CAAC;IACd,UAAU,EAAE,WAAW,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,mBAAmB,EAAE,cAAc,CAAC;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC3C,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,gBAAiB,YAAW,yBAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAApC,YAA6B,OAAO,EAAE,YAAY,EAAI;IAEtD;;;;;OAKG;IACG,WAAW,CACf,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,qBAAqB,EAC3B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,yBAAyB,CAAC,CA8BpC;IAED;;;OAGG;IACG,iBAAiB,CACrB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,qBAAqB,EAC3B,WAAW,EAAE,WAAW,EACxB,eAAe,UAAQ,GACtB,OAAO,CAAC,yBAAyB,CAAC,CAsCpC;IAED;;;;OAIG;IACG,QAAQ,CACZ,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,WAAW,EAEnB,eAAe,UAAQ,GACtB,OAAO,CAAC,yBAAyB,CAAC,CA6JpC;IAED,OAAO,CAAC,mBAAmB;CAY5B;AA2BD;;;;;;;;;;;GAWG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,EAAE;IACP,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,EACD,QAAQ,EAAE,yBAAyB,EACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CAiEpC"}
|
package/lib/chain/regen/regen.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PayloadStatus } from "@lodestar/fork-choice";
|
|
2
|
+
import { ForkSeq, SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
2
3
|
import { DataAvailabilityStatus, ExecutionPayloadStatus, StateHashTreeRootSource, computeEpochAtSlot, computeStartSlotAtEpoch, processSlots, stateTransition, } from "@lodestar/state-transition";
|
|
3
4
|
import { isGloasBeaconBlock } from "@lodestar/types";
|
|
4
5
|
import { fromHex, toRootHex } from "@lodestar/utils";
|
|
@@ -64,9 +65,18 @@ export class StateRegenerator {
|
|
|
64
65
|
const { blockRoot } = block;
|
|
65
66
|
const { checkpointStateCache } = this.modules;
|
|
66
67
|
const epoch = computeEpochAtSlot(slot);
|
|
68
|
+
// Convert PayloadStatus to payloadPresent boolean
|
|
69
|
+
if (block.payloadStatus === PayloadStatus.PENDING) {
|
|
70
|
+
throw new RegenError({
|
|
71
|
+
code: RegenErrorCode.UNEXPECTED_PAYLOAD_STATUS,
|
|
72
|
+
blockRoot: fromHex(blockRoot),
|
|
73
|
+
payloadStatus: block.payloadStatus,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
const payloadPresent = block.payloadStatus === PayloadStatus.FULL;
|
|
67
77
|
const latestCheckpointStateCtx = allowDiskReload
|
|
68
|
-
? await checkpointStateCache.getOrReloadLatest(blockRoot, epoch)
|
|
69
|
-
: checkpointStateCache.getLatest(blockRoot, epoch);
|
|
78
|
+
? await checkpointStateCache.getOrReloadLatest(blockRoot, epoch, payloadPresent)
|
|
79
|
+
: checkpointStateCache.getLatest(blockRoot, epoch, payloadPresent);
|
|
70
80
|
// If a checkpoint state exists with the given checkpoint root, it either is in requested epoch
|
|
71
81
|
// or needs to have empty slots processed until the requested epoch
|
|
72
82
|
if (latestCheckpointStateCtx) {
|
|
@@ -111,9 +121,17 @@ export class StateRegenerator {
|
|
|
111
121
|
if (!lastBlockToReplay)
|
|
112
122
|
continue;
|
|
113
123
|
const epoch = computeEpochAtSlot(lastBlockToReplay.slot - 1);
|
|
124
|
+
// Convert PayloadStatus to payloadPresent boolean
|
|
125
|
+
if (b.payloadStatus === PayloadStatus.PENDING) {
|
|
126
|
+
throw new RegenError({
|
|
127
|
+
code: RegenErrorCode.INTERNAL_ERROR,
|
|
128
|
+
message: `Unexpected PENDING payloadStatus for ancestor block ${b.blockRoot} at slot ${b.slot}`,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const payloadPresent = b.payloadStatus === PayloadStatus.FULL;
|
|
114
132
|
state = allowDiskReload
|
|
115
|
-
? await checkpointStateCache.getOrReloadLatest(b.blockRoot, epoch)
|
|
116
|
-
: checkpointStateCache.getLatest(b.blockRoot, epoch);
|
|
133
|
+
? await checkpointStateCache.getOrReloadLatest(b.blockRoot, epoch, payloadPresent)
|
|
134
|
+
: checkpointStateCache.getLatest(b.blockRoot, epoch, payloadPresent);
|
|
117
135
|
if (state) {
|
|
118
136
|
break;
|
|
119
137
|
}
|
|
@@ -242,6 +260,11 @@ async function processSlotsByCheckpoint(modules, preState, slot, regenCaller, op
|
|
|
242
260
|
* emitting "checkpoint" events after every epoch processed.
|
|
243
261
|
*
|
|
244
262
|
* Stops processing after no more full epochs can be processed.
|
|
263
|
+
*
|
|
264
|
+
* Output state variant:
|
|
265
|
+
* - Post-Gloas: If slots are processed, returns block state (payloadPresent=false).
|
|
266
|
+
* If no slots processed, returns preState as-is (preserves variant).
|
|
267
|
+
* - Pre-Gloas: Always payloadPresent=true (no block/payload distinction).
|
|
245
268
|
*/
|
|
246
269
|
export async function processSlotsToNearestCheckpoint(modules, preState, slot, regenCaller, opts) {
|
|
247
270
|
const preSlot = preState.slot;
|
|
@@ -266,7 +289,11 @@ export async function processSlotsToNearestCheckpoint(modules, preState, slot, r
|
|
|
266
289
|
// This may becomes the "official" checkpoint state if the 1st block of epoch is skipped
|
|
267
290
|
const checkpointState = postState;
|
|
268
291
|
const cp = getCheckpointFromState(checkpointState);
|
|
269
|
-
|
|
292
|
+
// processSlots() only does epoch transitions, never processes payloads
|
|
293
|
+
// Pre-Gloas: payloadPresent is always true (execution payload embedded in block)
|
|
294
|
+
// Post-Gloas: result is a block state (payloadPresent=false)
|
|
295
|
+
const isPayloadPresent = checkpointState.config.getForkSeq(checkpointState.slot) < ForkSeq.gloas;
|
|
296
|
+
checkpointStateCache.add(cp, checkpointState, isPayloadPresent);
|
|
270
297
|
// consumers should not mutate state ever
|
|
271
298
|
emitter?.emit(ChainEvent.checkpoint, cp, checkpointState);
|
|
272
299
|
if (count >= 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,18 +7,17 @@ import { CPStateDatastore, DatastoreKey } from "./types.js";
|
|
|
7
7
|
export declare class DbCPStateDatastore implements CPStateDatastore {
|
|
8
8
|
private readonly db;
|
|
9
9
|
constructor(db: IBeaconDb);
|
|
10
|
-
write(cpKey: phase0.Checkpoint, stateBytes: Uint8Array): Promise<DatastoreKey>;
|
|
10
|
+
write(cpKey: phase0.Checkpoint, stateBytes: Uint8Array, payloadPresent: boolean): Promise<DatastoreKey>;
|
|
11
11
|
remove(serializedCheckpoint: DatastoreKey): Promise<void>;
|
|
12
12
|
read(serializedCheckpoint: DatastoreKey): Promise<Uint8Array | null>;
|
|
13
13
|
readLatestSafe(): Promise<Uint8Array | null>;
|
|
14
14
|
readKeys(): Promise<DatastoreKey[]>;
|
|
15
15
|
}
|
|
16
16
|
export declare function datastoreKeyToCheckpoint(key: DatastoreKey): phase0.Checkpoint;
|
|
17
|
-
export declare function checkpointToDatastoreKey(cp: phase0.Checkpoint): DatastoreKey;
|
|
17
|
+
export declare function checkpointToDatastoreKey(cp: phase0.Checkpoint, payloadPresent: boolean): DatastoreKey;
|
|
18
18
|
/**
|
|
19
|
-
* Get the latest safe checkpoint state the node can use to boot from
|
|
20
|
-
* -
|
|
21
|
-
* - its last processed block slot should be at epoch boundary or last slot of previous epoch
|
|
19
|
+
* Get the latest "safe" checkpoint state the node can use to boot from
|
|
20
|
+
* - its last processed block slot should be at epoch boundary (CRCS) or last slot of previous epoch (PRCS)
|
|
22
21
|
* - state slot should be at epoch boundary
|
|
23
22
|
* - state slot should be equal to epoch * SLOTS_PER_EPOCH
|
|
24
23
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAKnD,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,kBAAmB,YAAW,gBAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE;IAA/B,YAA6B,EAAE,EAAE,SAAS,EAAI;IAExC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AAKnD,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,qBAAa,kBAAmB,YAAW,gBAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE;IAA/B,YAA6B,EAAE,EAAE,SAAS,EAAI;IAExC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAI5G;IAEK,MAAM,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;IAEK,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAEzE;IAEK,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAKjD;IAEK,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAExC;CACF;AAOD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,UAAU,CAE7E;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,GAAG,YAAY,CAMrG;AAMD;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,GACxD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAuE5B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
|
-
import { MapDef } from "@lodestar/utils";
|
|
3
|
+
import { MapDef, byteArrayEquals } from "@lodestar/utils";
|
|
4
4
|
import { getLastProcessedSlotFromBeaconStateSerialized, getSlotFromBeaconStateSerialized, } from "../../../util/sszBytes.js";
|
|
5
5
|
/**
|
|
6
6
|
* Implementation of CPStateDatastore using db.
|
|
@@ -10,8 +10,8 @@ export class DbCPStateDatastore {
|
|
|
10
10
|
constructor(db) {
|
|
11
11
|
this.db = db;
|
|
12
12
|
}
|
|
13
|
-
async write(cpKey, stateBytes) {
|
|
14
|
-
const serializedCheckpoint = checkpointToDatastoreKey(cpKey);
|
|
13
|
+
async write(cpKey, stateBytes, payloadPresent) {
|
|
14
|
+
const serializedCheckpoint = checkpointToDatastoreKey(cpKey, payloadPresent);
|
|
15
15
|
await this.db.checkpointState.putBinary(serializedCheckpoint, stateBytes);
|
|
16
16
|
return serializedCheckpoint;
|
|
17
17
|
}
|
|
@@ -31,16 +31,26 @@ export class DbCPStateDatastore {
|
|
|
31
31
|
return this.db.checkpointState.keys();
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
function extractCheckpointBytes(key) {
|
|
35
|
+
const fixedSize = ssz.phase0.Checkpoint.minSize;
|
|
36
|
+
return key.subarray(0, fixedSize);
|
|
37
|
+
}
|
|
34
38
|
export function datastoreKeyToCheckpoint(key) {
|
|
35
|
-
return ssz.phase0.Checkpoint.deserialize(key);
|
|
39
|
+
return ssz.phase0.Checkpoint.deserialize(extractCheckpointBytes(key));
|
|
40
|
+
}
|
|
41
|
+
export function checkpointToDatastoreKey(cp, payloadPresent) {
|
|
42
|
+
const cpBytes = ssz.phase0.Checkpoint.serialize(cp);
|
|
43
|
+
const key = new Uint8Array(cpBytes.length + 1);
|
|
44
|
+
key.set(cpBytes);
|
|
45
|
+
key[cpBytes.length] = payloadPresent ? 1 : 0;
|
|
46
|
+
return key;
|
|
36
47
|
}
|
|
37
|
-
|
|
38
|
-
return
|
|
48
|
+
function isPayloadCheckpointState(key) {
|
|
49
|
+
return key.at(-1) === 1;
|
|
39
50
|
}
|
|
40
51
|
/**
|
|
41
|
-
* Get the latest safe checkpoint state the node can use to boot from
|
|
42
|
-
* -
|
|
43
|
-
* - its last processed block slot should be at epoch boundary or last slot of previous epoch
|
|
52
|
+
* Get the latest "safe" checkpoint state the node can use to boot from
|
|
53
|
+
* - its last processed block slot should be at epoch boundary (CRCS) or last slot of previous epoch (PRCS)
|
|
44
54
|
* - state slot should be at epoch boundary
|
|
45
55
|
* - state slot should be equal to epoch * SLOTS_PER_EPOCH
|
|
46
56
|
*
|
|
@@ -55,10 +65,22 @@ export async function getLatestSafeDatastoreKey(allKeys, readFn) {
|
|
|
55
65
|
}
|
|
56
66
|
const dataStoreKeyByEpoch = new Map();
|
|
57
67
|
for (const [epoch, keys] of checkpointsByEpoch.entries()) {
|
|
58
|
-
// only consider epochs with a single checkpoint to avoid ambiguity from forks
|
|
59
68
|
if (keys.length === 1) {
|
|
69
|
+
// PRCS (skipped slot) or CRCS and no payloadPresent
|
|
70
|
+
// Pre-gloas always fall into this case
|
|
60
71
|
dataStoreKeyByEpoch.set(epoch, keys[0]);
|
|
61
72
|
}
|
|
73
|
+
else if (keys.length === 2) {
|
|
74
|
+
// CRCS without payload and CRCS with payload
|
|
75
|
+
// ie Two keys for the same checkpoint with different payloadPresent suffix (FULL/EMPTY)
|
|
76
|
+
// TODO GLOAS: Here we pick FULL key, there is a chance that payload is orphaned hence we not be able to sync
|
|
77
|
+
const cp0 = extractCheckpointBytes(keys[0]);
|
|
78
|
+
const cp1 = extractCheckpointBytes(keys[1]);
|
|
79
|
+
if (byteArrayEquals(cp0, cp1)) {
|
|
80
|
+
const fullKey = isPayloadCheckpointState(keys[0]) ? keys[0] : keys[1];
|
|
81
|
+
dataStoreKeyByEpoch.set(epoch, fullKey);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
62
84
|
}
|
|
63
85
|
const epochsDesc = Array.from(dataStoreKeyByEpoch.keys()).sort((a, b) => b - a);
|
|
64
86
|
for (const epoch of epochsDesc) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAgB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export declare class FileCPStateDatastore implements CPStateDatastore {
|
|
|
7
7
|
private readonly folderPath;
|
|
8
8
|
constructor(dataDir: string);
|
|
9
9
|
init(): Promise<void>;
|
|
10
|
-
write(cpKey: phase0.Checkpoint, stateBytes: Uint8Array): Promise<DatastoreKey>;
|
|
10
|
+
write(cpKey: phase0.Checkpoint, stateBytes: Uint8Array, payloadPresent: boolean): Promise<DatastoreKey>;
|
|
11
11
|
remove(serializedCheckpoint: DatastoreKey): Promise<void>;
|
|
12
12
|
read(serializedCheckpoint: DatastoreKey): Promise<Uint8Array | null>;
|
|
13
13
|
readLatestSafe(): Promise<Uint8Array | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAIvC,OAAO,EAAC,gBAAgB,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AAM1D;;GAEG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,OAAO,EAAE,MAAM,EAI1B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1B;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAK5G;IAEK,MAAM,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;IAEK,IAAI,CAAC,oBAAoB,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAGzE;IAEK,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAKjD;IAEK,QAAQ,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAKxC;CACF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { ssz } from "@lodestar/types";
|
|
3
2
|
import { fromHex, toHex } from "@lodestar/utils";
|
|
4
3
|
import { ensureDir, readFile, readFileNames, removeFile, writeIfNotExist } from "../../../util/file.js";
|
|
5
|
-
import { getLatestSafeDatastoreKey } from "./db.js";
|
|
4
|
+
import { checkpointToDatastoreKey, getLatestSafeDatastoreKey } from "./db.js";
|
|
6
5
|
const CHECKPOINT_STATES_FOLDER = "checkpoint_states";
|
|
7
|
-
|
|
6
|
+
/** 41 bytes (40 checkpoint + 1 payloadPresent) = 82 hex chars + "0x" prefix = 84 */
|
|
7
|
+
const CHECKPOINT_FILE_NAME_LENGTH = 84;
|
|
8
8
|
/**
|
|
9
9
|
* Implementation of CPStateDatastore using file system, this is beneficial for debugging.
|
|
10
10
|
*/
|
|
@@ -23,8 +23,8 @@ export class FileCPStateDatastore {
|
|
|
23
23
|
// do nothing
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
async write(cpKey, stateBytes) {
|
|
27
|
-
const serializedCheckpoint =
|
|
26
|
+
async write(cpKey, stateBytes, payloadPresent) {
|
|
27
|
+
const serializedCheckpoint = checkpointToDatastoreKey(cpKey, payloadPresent);
|
|
28
28
|
const filePath = path.join(this.folderPath, toHex(serializedCheckpoint));
|
|
29
29
|
await writeIfNotExist(filePath, stateBytes);
|
|
30
30
|
return serializedCheckpoint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/file.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAC,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,SAAS,CAAC;AAG5E,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACrD,oFAAoF;AACpF,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACd,UAAU,CAAS;IAEpC,YAAY,OAAe,EAAE;QAC3B,kDAAkD;QAClD,+CAA+C;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAAA,CAChE;IAED,KAAK,CAAC,IAAI,GAAkB;QAC1B,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,aAAa;QACf,CAAC;IAAA,CACF;IAED,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,UAAsB,EAAE,cAAuB,EAAyB;QAC5G,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5C,OAAO,oBAAoB,CAAC;IAAA,CAC7B;IAED,KAAK,CAAC,MAAM,CAAC,oBAAkC,EAAiB;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC5B;IAED,KAAK,CAAC,IAAI,CAAC,oBAAkC,EAA8B;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC3B;IAED,KAAK,CAAC,cAAc,GAA+B;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtC,OAAO,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAAA,CACjE;IAED,KAAK,CAAC,QAAQ,GAA4B;QACxC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,SAAS;aACb,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,2BAA2B,CAAC;aAClG,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAAA,CACzC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { phase0 } from "@lodestar/types";
|
|
2
2
|
export type DatastoreKey = Uint8Array;
|
|
3
3
|
export interface CPStateDatastore {
|
|
4
|
-
write: (cpKey: phase0.Checkpoint, stateBytes: Uint8Array) => Promise<DatastoreKey>;
|
|
4
|
+
write: (cpKey: phase0.Checkpoint, stateBytes: Uint8Array, payloadPresent: boolean) => Promise<DatastoreKey>;
|
|
5
5
|
remove: (key: DatastoreKey) => Promise<void>;
|
|
6
6
|
read: (key: DatastoreKey) => Promise<Uint8Array | null>;
|
|
7
7
|
readLatestSafe: () => Promise<Uint8Array | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/stateCache/datastore/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAIvC,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC;AAGtC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5G,MAAM,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACxD,cAAc,EAAE,MAAM,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACjD,QAAQ,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B"}
|
|
@@ -15,6 +15,11 @@ export type FIFOBlockStateCacheOpts = {
|
|
|
15
15
|
* clock slot
|
|
16
16
|
*/
|
|
17
17
|
export declare const DEFAULT_MAX_BLOCK_STATES = 64;
|
|
18
|
+
/**
|
|
19
|
+
* For Gloas (ePBS), each block can have two states: block state and payload state.
|
|
20
|
+
* Double the cache size to maintain the same effective block depth.
|
|
21
|
+
*/
|
|
22
|
+
export declare const DEFAULT_MAX_BLOCK_STATES_GLOAS = 128;
|
|
18
23
|
/**
|
|
19
24
|
* New implementation of BlockStateCache that keeps the most recent n states consistently
|
|
20
25
|
* - Maintain a linked list (FIFO) with special handling for head state, which is always the first item in the list
|
|
@@ -35,10 +40,7 @@ export declare const DEFAULT_MAX_BLOCK_STATES = 64;
|
|
|
35
40
|
* The maintained key order would be: 11 -> 13 -> 12 -> 10, and state 10 will be pruned first.
|
|
36
41
|
*/
|
|
37
42
|
export declare class FIFOBlockStateCache implements BlockStateCache {
|
|
38
|
-
|
|
39
|
-
* Max number of states allowed in the cache
|
|
40
|
-
*/
|
|
41
|
-
readonly maxStates: number;
|
|
43
|
+
private maxStates;
|
|
42
44
|
private readonly cache;
|
|
43
45
|
/**
|
|
44
46
|
* Key order to implement FIFO cache
|
|
@@ -76,6 +78,7 @@ export declare class FIFOBlockStateCache implements BlockStateCache {
|
|
|
76
78
|
* The FIFO cache helps with this.
|
|
77
79
|
*/
|
|
78
80
|
prune(lastAddedKey: string): void;
|
|
81
|
+
upgradeToGloas(): void;
|
|
79
82
|
/**
|
|
80
83
|
* No need for this implementation
|
|
81
84
|
* This is only to conform to the old api
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fifoBlockStateCache.d.ts","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,yBAAyB,EAAC,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"fifoBlockStateCache.d.ts","sourceRoot":"","sources":["../../../src/chain/stateCache/fifoBlockStateCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,yBAAyB,EAAC,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAC,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgD;IACtE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IAEnE,YAAY,IAAI,EAAE,uBAAuB,EAAE,EAAC,OAAO,EAAC,EAAE;QAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAC,EAQ/E;IAED;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAIzD;IAED;;;;OAIG;IACH,YAAY,IAAI,yBAAyB,CAUxC;IAED;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,yBAAyB,GAAG,IAAI,CAWtD;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,yBAAyB,EAAE,MAAM,UAAQ,GAAG,IAAI,CA+BzD;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAehC;IAED,cAAc,IAAI,IAAI,CAErB;IAED;;;OAGG;IACH,oBAAoB,IAAI,IAAI,CAAG;IAE/B;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED,0DAA0D;IAC1D,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAQ9C;IAED,SAAS,IAAI,gBAAgB,CAAC,yBAAyB,CAAC,CAEvD;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,CAEvB;CACF"}
|
|
@@ -10,6 +10,11 @@ import { MapTracker } from "./mapMetrics.js";
|
|
|
10
10
|
* clock slot
|
|
11
11
|
*/
|
|
12
12
|
export const DEFAULT_MAX_BLOCK_STATES = 64;
|
|
13
|
+
/**
|
|
14
|
+
* For Gloas (ePBS), each block can have two states: block state and payload state.
|
|
15
|
+
* Double the cache size to maintain the same effective block depth.
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_MAX_BLOCK_STATES_GLOAS = 128;
|
|
13
18
|
/**
|
|
14
19
|
* New implementation of BlockStateCache that keeps the most recent n states consistently
|
|
15
20
|
* - Maintain a linked list (FIFO) with special handling for head state, which is always the first item in the list
|
|
@@ -30,9 +35,6 @@ export const DEFAULT_MAX_BLOCK_STATES = 64;
|
|
|
30
35
|
* The maintained key order would be: 11 -> 13 -> 12 -> 10, and state 10 will be pruned first.
|
|
31
36
|
*/
|
|
32
37
|
export class FIFOBlockStateCache {
|
|
33
|
-
/**
|
|
34
|
-
* Max number of states allowed in the cache
|
|
35
|
-
*/
|
|
36
38
|
maxStates;
|
|
37
39
|
cache;
|
|
38
40
|
/**
|
|
@@ -149,6 +151,9 @@ export class FIFOBlockStateCache {
|
|
|
149
151
|
this.cache.delete(key);
|
|
150
152
|
}
|
|
151
153
|
}
|
|
154
|
+
upgradeToGloas() {
|
|
155
|
+
this.maxStates = DEFAULT_MAX_BLOCK_STATES_GLOAS;
|
|
156
|
+
}
|
|
152
157
|
/**
|
|
153
158
|
* No need for this implementation
|
|
154
159
|
* This is only to conform to the old api
|