@lodestar/beacon-node 1.35.0-dev.8689cc3545 → 1.35.0-dev.894daf8b44
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/blocks/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +8 -2
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/config/constants.d.ts +9 -9
- package/lib/api/impl/config/constants.js +16 -9
- package/lib/api/impl/config/constants.js.map +1 -1
- package/lib/api/impl/lodestar/index.js +1 -1
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +24 -33
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js +3 -2
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +7 -6
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +8 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +1 -7
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +1 -1
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +4 -6
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +2 -2
- package/lib/chain/emitter.d.ts.map +1 -1
- package/lib/chain/lightClient/index.d.ts +2 -2
- package/lib/chain/lightClient/index.d.ts.map +1 -1
- package/lib/chain/lightClient/index.js +2 -0
- package/lib/chain/lightClient/index.js.map +1 -1
- package/lib/chain/opPools/attestationPool.d.ts +2 -3
- package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/attestationPool.js +3 -5
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts +3 -2
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.js +6 -5
- package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
- package/lib/chain/opPools/types.d.ts +1 -1
- package/lib/chain/opPools/types.d.ts.map +1 -1
- package/lib/chain/opPools/types.js +1 -1
- package/lib/chain/opPools/types.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts +3 -3
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +8 -8
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -4
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +13 -4
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +1 -0
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/interface.js +1 -0
- package/lib/chain/regen/interface.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +8 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +9 -8
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.js +1 -1
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +1 -1
- package/lib/chain/validation/lightClientFinalityUpdate.js +4 -3
- package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.d.ts +6 -4
- package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +1 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.js +11 -11
- package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +21 -15
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +1 -1
- package/lib/metrics/metrics/lodestar.js +3 -3
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/gossip/gossipsub.js +1 -1
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/scoringParameters.js +4 -4
- package/lib/network/gossip/scoringParameters.js.map +1 -1
- package/lib/network/network.d.ts +1 -1
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +9 -9
- package/lib/network/network.js.map +1 -1
- package/lib/network/peers/peerManager.d.ts.map +1 -1
- package/lib/network/peers/peerManager.js +2 -1
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +1 -1
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/index.d.ts +1 -1
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +2 -3
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/subnets/attnetsService.d.ts.map +1 -1
- package/lib/network/subnets/attnetsService.js +1 -1
- package/lib/network/subnets/attnetsService.js.map +1 -1
- package/lib/node/notifier.js +1 -1
- package/lib/node/notifier.js.map +1 -1
- package/lib/sync/types.d.ts +0 -1
- package/lib/sync/types.d.ts.map +1 -1
- package/lib/sync/types.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +0 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +18 -20
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +2 -1
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +8 -3
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRoot.js +2 -1
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/util/clock.d.ts +8 -3
- package/lib/util/clock.d.ts.map +1 -1
- package/lib/util/clock.js +8 -5
- package/lib/util/clock.js.map +1 -1
- package/lib/util/dataColumns.d.ts.map +1 -1
- package/lib/util/dataColumns.js +4 -2
- package/lib/util/dataColumns.js.map +1 -1
- package/package.json +14 -14
- package/src/api/impl/beacon/blocks/index.ts +11 -2
- package/src/api/impl/config/constants.ts +17 -9
- package/src/api/impl/lodestar/index.ts +1 -1
- package/src/api/impl/validator/index.ts +25 -37
- package/src/chain/archiveStore/historicalState/worker.ts +1 -1
- package/src/chain/blocks/blockInput/blockInput.ts +7 -4
- package/src/chain/blocks/importBlock.ts +8 -12
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +10 -2
- package/src/chain/blocks/writeBlockInputToDb.ts +1 -9
- package/src/chain/chain.ts +3 -16
- package/src/chain/emitter.ts +2 -2
- package/src/chain/lightClient/index.ts +11 -3
- package/src/chain/opPools/attestationPool.ts +2 -3
- package/src/chain/opPools/syncCommitteeMessagePool.ts +5 -3
- package/src/chain/opPools/types.ts +1 -1
- package/src/chain/prepareNextSlot.ts +8 -8
- package/src/chain/produceBlock/produceBlockBody.ts +16 -14
- package/src/chain/regen/interface.ts +1 -0
- package/src/chain/seenCache/seenGossipBlockInput.ts +10 -2
- package/src/chain/stateCache/persistentCheckpointsCache.ts +10 -8
- package/src/chain/validation/dataColumnSidecar.ts +1 -1
- package/src/chain/validation/lightClientFinalityUpdate.ts +4 -3
- package/src/chain/validation/lightClientOptimisticUpdate.ts +12 -11
- package/src/chain/validatorMonitor.ts +28 -17
- package/src/metrics/metrics/lodestar.ts +3 -3
- package/src/network/gossip/gossipsub.ts +1 -1
- package/src/network/gossip/scoringParameters.ts +4 -4
- package/src/network/network.ts +9 -9
- package/src/network/peers/peerManager.ts +2 -1
- package/src/network/processor/gossipHandlers.ts +1 -1
- package/src/network/processor/index.ts +2 -3
- package/src/network/subnets/attnetsService.ts +3 -6
- package/src/node/notifier.ts +1 -1
- package/src/sync/types.ts +0 -2
- package/src/sync/unknownBlock.ts +19 -21
- package/src/sync/utils/downloadByRange.ts +12 -6
- package/src/sync/utils/downloadByRoot.ts +12 -4
- package/src/util/clock.ts +14 -6
- package/src/util/dataColumns.ts +11 -2
package/lib/util/clock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/util/clock.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAEjG,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,8BAA8B,EAAC,MAAM,2BAA2B,CAAC;AAEzE,MAAM,CAAN,IAAY,UAWX;AAXD,WAAY,UAAU;IACpB;;;OAGG;IACH,iCAAmB,CAAA;IACnB;;;OAGG;IACH,mCAAqB,CAAA;AACvB,CAAC,EAXW,UAAU,KAAV,UAAU,QAWrB;
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/util/clock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumns.d.ts","sourceRoot":"","sources":["../../src/util/dataColumns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"dataColumns.d.ts","sourceRoot":"","sources":["../../src/util/dataColumns.ts"],"names":[],"mappings":"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"}
|
package/lib/util/dataColumns.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { digest } from "@chainsafe/as-sha256";
|
|
2
2
|
import { Tree } from "@chainsafe/persistent-merkle-tree";
|
|
3
|
-
import { KZG_COMMITMENTS_GINDEX, NUMBER_OF_COLUMNS } from "@lodestar/params";
|
|
3
|
+
import { KZG_COMMITMENTS_GINDEX, NUMBER_OF_COLUMNS, } from "@lodestar/params";
|
|
4
4
|
import { signedBlockToSignedHeader } from "@lodestar/state-transition";
|
|
5
5
|
import { ssz, } from "@lodestar/types";
|
|
6
6
|
import { bytesToBigInt } from "@lodestar/utils";
|
|
@@ -231,7 +231,9 @@ export function getDataColumnSidecars(signedBlockHeader, kzgCommitments, kzgComm
|
|
|
231
231
|
* https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/validator.md#get_data_column_sidecars_from_block
|
|
232
232
|
*/
|
|
233
233
|
export function getDataColumnSidecarsFromBlock(config, signedBlock, cellsAndKzgProofs) {
|
|
234
|
-
|
|
234
|
+
// TODO GLOAS: Need to get blobKzgCommitments from somewhere else
|
|
235
|
+
const blobKzgCommitments = signedBlock.message.body
|
|
236
|
+
.blobKzgCommitments;
|
|
235
237
|
// No need to create data column sidecars if there are no blobs
|
|
236
238
|
if (blobKzgCommitments.length === 0) {
|
|
237
239
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumns.js","sourceRoot":"","sources":["../../src/util/dataColumns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAM,mCAAmC,CAAC;AAEvD,OAAO,
|
|
1
|
+
{"version":3,"file":"dataColumns.js","sourceRoot":"","sources":["../../src/util/dataColumns.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.35.0-dev.
|
|
14
|
+
"version": "1.35.0-dev.894daf8b44",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -134,18 +134,18 @@
|
|
|
134
134
|
"@libp2p/peer-id": "^5.1.0",
|
|
135
135
|
"@libp2p/prometheus-metrics": "^4.3.15",
|
|
136
136
|
"@libp2p/tcp": "^10.1.8",
|
|
137
|
-
"@lodestar/api": "1.35.0-dev.
|
|
138
|
-
"@lodestar/config": "1.35.0-dev.
|
|
139
|
-
"@lodestar/db": "1.35.0-dev.
|
|
140
|
-
"@lodestar/fork-choice": "1.35.0-dev.
|
|
141
|
-
"@lodestar/light-client": "1.35.0-dev.
|
|
142
|
-
"@lodestar/logger": "1.35.0-dev.
|
|
143
|
-
"@lodestar/params": "1.35.0-dev.
|
|
144
|
-
"@lodestar/reqresp": "1.35.0-dev.
|
|
145
|
-
"@lodestar/state-transition": "1.35.0-dev.
|
|
146
|
-
"@lodestar/types": "1.35.0-dev.
|
|
147
|
-
"@lodestar/utils": "1.35.0-dev.
|
|
148
|
-
"@lodestar/validator": "1.35.0-dev.
|
|
137
|
+
"@lodestar/api": "1.35.0-dev.894daf8b44",
|
|
138
|
+
"@lodestar/config": "1.35.0-dev.894daf8b44",
|
|
139
|
+
"@lodestar/db": "1.35.0-dev.894daf8b44",
|
|
140
|
+
"@lodestar/fork-choice": "1.35.0-dev.894daf8b44",
|
|
141
|
+
"@lodestar/light-client": "1.35.0-dev.894daf8b44",
|
|
142
|
+
"@lodestar/logger": "1.35.0-dev.894daf8b44",
|
|
143
|
+
"@lodestar/params": "1.35.0-dev.894daf8b44",
|
|
144
|
+
"@lodestar/reqresp": "1.35.0-dev.894daf8b44",
|
|
145
|
+
"@lodestar/state-transition": "1.35.0-dev.894daf8b44",
|
|
146
|
+
"@lodestar/types": "1.35.0-dev.894daf8b44",
|
|
147
|
+
"@lodestar/utils": "1.35.0-dev.894daf8b44",
|
|
148
|
+
"@lodestar/validator": "1.35.0-dev.894daf8b44",
|
|
149
149
|
"@multiformats/multiaddr": "^12.1.3",
|
|
150
150
|
"datastore-core": "^10.0.2",
|
|
151
151
|
"datastore-fs": "^10.0.6",
|
|
@@ -180,5 +180,5 @@
|
|
|
180
180
|
"beacon",
|
|
181
181
|
"blockchain"
|
|
182
182
|
],
|
|
183
|
-
"gitHead": "
|
|
183
|
+
"gitHead": "cf1dede49ff9ed1ed6a86cc5cc3b0321d8b6dd48"
|
|
184
184
|
}
|
|
@@ -3,12 +3,14 @@ import {ApiError, ApplicationMethods} from "@lodestar/api/server";
|
|
|
3
3
|
import {
|
|
4
4
|
ForkPostBellatrix,
|
|
5
5
|
ForkPostFulu,
|
|
6
|
+
ForkPreGloas,
|
|
6
7
|
NUMBER_OF_COLUMNS,
|
|
7
8
|
SLOTS_PER_HISTORICAL_ROOT,
|
|
8
9
|
isForkPostBellatrix,
|
|
9
10
|
isForkPostDeneb,
|
|
10
11
|
isForkPostElectra,
|
|
11
12
|
isForkPostFulu,
|
|
13
|
+
isForkPostGloas,
|
|
12
14
|
} from "@lodestar/params";
|
|
13
15
|
import {
|
|
14
16
|
computeEpochAtSlot,
|
|
@@ -256,7 +258,7 @@ export function getBeaconBlockApi({
|
|
|
256
258
|
}
|
|
257
259
|
|
|
258
260
|
// TODO: Validate block
|
|
259
|
-
const delaySec = seenTimestampSec - (
|
|
261
|
+
const delaySec = seenTimestampSec - computeTimeAtSlot(config, slot, chain.genesisTime);
|
|
260
262
|
metrics?.gossipBlock.elapsedTimeTillReceived.observe({source: OpSource.api}, delaySec);
|
|
261
263
|
chain.validatorMonitor?.registerBeaconBlock(OpSource.api, delaySec, signedBlock.message);
|
|
262
264
|
|
|
@@ -360,6 +362,10 @@ export function getBeaconBlockApi({
|
|
|
360
362
|
);
|
|
361
363
|
const fork = config.getForkName(slot);
|
|
362
364
|
|
|
365
|
+
if (isForkPostGloas(fork)) {
|
|
366
|
+
throw new ApiError(400, `Blinded blocks are not available for post-gloas fork=${fork}`);
|
|
367
|
+
}
|
|
368
|
+
|
|
363
369
|
// Either the payload/blobs are cached from i) engine locally or ii) they are from the builder
|
|
364
370
|
const producedResult = chain.blockProductionCache.get(blockRoot);
|
|
365
371
|
if (producedResult !== undefined && producedResult.type !== BlockType.Blinded) {
|
|
@@ -518,9 +524,12 @@ export function getBeaconBlockApi({
|
|
|
518
524
|
async getBlindedBlock({blockId}) {
|
|
519
525
|
const {block, executionOptimistic, finalized} = await getBlockResponse(chain, blockId);
|
|
520
526
|
const fork = config.getForkName(block.message.slot);
|
|
527
|
+
if (isForkPostGloas(fork)) {
|
|
528
|
+
throw new ApiError(400, `Blinded blocks are not available for post-gloas fork=${fork}`);
|
|
529
|
+
}
|
|
521
530
|
return {
|
|
522
531
|
data: isForkPostBellatrix(fork)
|
|
523
|
-
? signedBeaconBlockToBlinded(config, block as SignedBeaconBlock<ForkPostBellatrix>)
|
|
532
|
+
? signedBeaconBlockToBlinded(config, block as SignedBeaconBlock<ForkPostBellatrix & ForkPreGloas>)
|
|
524
533
|
: block,
|
|
525
534
|
meta: {
|
|
526
535
|
executionOptimistic,
|
|
@@ -65,10 +65,10 @@ export const specConstants = {
|
|
|
65
65
|
JUSTIFICATION_BITS_LENGTH,
|
|
66
66
|
ENDIANNESS: "little",
|
|
67
67
|
// ## Withdrawal prefixes
|
|
68
|
-
BLS_WITHDRAWAL_PREFIX,
|
|
69
|
-
ETH1_ADDRESS_WITHDRAWAL_PREFIX,
|
|
70
|
-
COMPOUNDING_WITHDRAWAL_PREFIX,
|
|
71
|
-
BUILDER_WITHDRAWAL_PREFIX,
|
|
68
|
+
BLS_WITHDRAWAL_PREFIX: toHexByte(BLS_WITHDRAWAL_PREFIX),
|
|
69
|
+
ETH1_ADDRESS_WITHDRAWAL_PREFIX: toHexByte(ETH1_ADDRESS_WITHDRAWAL_PREFIX),
|
|
70
|
+
COMPOUNDING_WITHDRAWAL_PREFIX: toHexByte(COMPOUNDING_WITHDRAWAL_PREFIX),
|
|
71
|
+
BUILDER_WITHDRAWAL_PREFIX: toHexByte(BUILDER_WITHDRAWAL_PREFIX),
|
|
72
72
|
// ## Domain types
|
|
73
73
|
DOMAIN_BEACON_PROPOSER,
|
|
74
74
|
DOMAIN_BEACON_ATTESTER,
|
|
@@ -113,15 +113,23 @@ export const specConstants = {
|
|
|
113
113
|
DOMAIN_BLS_TO_EXECUTION_CHANGE,
|
|
114
114
|
|
|
115
115
|
// Deneb types
|
|
116
|
-
BLOB_TX_TYPE,
|
|
117
|
-
VERSIONED_HASH_VERSION_KZG,
|
|
116
|
+
BLOB_TX_TYPE: toHexByte(BLOB_TX_TYPE),
|
|
117
|
+
VERSIONED_HASH_VERSION_KZG: toHexByte(VERSIONED_HASH_VERSION_KZG),
|
|
118
118
|
|
|
119
119
|
// electra
|
|
120
120
|
UNSET_DEPOSIT_REQUESTS_START_INDEX,
|
|
121
121
|
FULL_EXIT_REQUEST_AMOUNT,
|
|
122
|
-
DEPOSIT_REQUEST_TYPE,
|
|
123
|
-
WITHDRAWAL_REQUEST_TYPE,
|
|
124
|
-
CONSOLIDATION_REQUEST_TYPE,
|
|
122
|
+
DEPOSIT_REQUEST_TYPE: toHexByte(DEPOSIT_REQUEST_TYPE),
|
|
123
|
+
WITHDRAWAL_REQUEST_TYPE: toHexByte(WITHDRAWAL_REQUEST_TYPE),
|
|
124
|
+
CONSOLIDATION_REQUEST_TYPE: toHexByte(CONSOLIDATION_REQUEST_TYPE),
|
|
125
125
|
BUILDER_PAYMENT_THRESHOLD_NUMERATOR,
|
|
126
126
|
BUILDER_PAYMENT_THRESHOLD_DENOMINATOR,
|
|
127
127
|
};
|
|
128
|
+
|
|
129
|
+
/** Convert single-byte numbers to hex strings for API spec compliance */
|
|
130
|
+
function toHexByte(n: number): string {
|
|
131
|
+
if (n < 0 || n > 255 || !Number.isInteger(n)) {
|
|
132
|
+
throw new Error("toHexByte expected a single-byte integer, but received " + n);
|
|
133
|
+
}
|
|
134
|
+
return "0x" + n.toString(16).padStart(2, "0");
|
|
135
|
+
}
|
|
@@ -26,7 +26,7 @@ export function getLodestarApi({
|
|
|
26
26
|
}: Pick<ApiModules, "chain" | "config" | "db" | "network" | "sync">): ApplicationMethods<routes.lodestar.Endpoints> {
|
|
27
27
|
let writingHeapdump = false;
|
|
28
28
|
let writingProfile = false;
|
|
29
|
-
const defaultProfileMs = SLOTS_PER_EPOCH * config.
|
|
29
|
+
const defaultProfileMs = SLOTS_PER_EPOCH * config.SLOT_DURATION_MS;
|
|
30
30
|
|
|
31
31
|
return {
|
|
32
32
|
async writeHeapdump({thread = "main", dirpath = "."}) {
|
|
@@ -5,6 +5,7 @@ import {ExecutionStatus} from "@lodestar/fork-choice";
|
|
|
5
5
|
import {
|
|
6
6
|
ForkName,
|
|
7
7
|
ForkPostBellatrix,
|
|
8
|
+
ForkPreGloas,
|
|
8
9
|
ForkSeq,
|
|
9
10
|
GENESIS_SLOT,
|
|
10
11
|
SLOTS_PER_EPOCH,
|
|
@@ -22,6 +23,7 @@ import {
|
|
|
22
23
|
calculateCommitteeAssignments,
|
|
23
24
|
computeEpochAtSlot,
|
|
24
25
|
computeStartSlotAtEpoch,
|
|
26
|
+
computeTimeAtSlot,
|
|
25
27
|
createCachedBeaconState,
|
|
26
28
|
getBlockRootAtSlot,
|
|
27
29
|
getCurrentSlot,
|
|
@@ -66,7 +68,7 @@ import {
|
|
|
66
68
|
SyncCommitteeErrorCode,
|
|
67
69
|
} from "../../../chain/errors/index.js";
|
|
68
70
|
import {ChainEvent, CheckpointHex, CommonBlockBody} from "../../../chain/index.js";
|
|
69
|
-
import {
|
|
71
|
+
import {PREPARE_NEXT_SLOT_BPS} from "../../../chain/prepareNextSlot.js";
|
|
70
72
|
import {BlockType, ProduceFullDeneb} from "../../../chain/produceBlock/index.js";
|
|
71
73
|
import {RegenCaller} from "../../../chain/regen/index.js";
|
|
72
74
|
import {validateApiAggregateAndProof} from "../../../chain/validation/index.js";
|
|
@@ -82,7 +84,7 @@ import {getDefaultGraffiti, toGraffitiBytes} from "../../../util/graffiti.js";
|
|
|
82
84
|
import {getLodestarClientVersion} from "../../../util/metadata.js";
|
|
83
85
|
import {ApiOptions} from "../../options.js";
|
|
84
86
|
import {getStateResponseWithRegen} from "../beacon/state/utils.js";
|
|
85
|
-
import {ApiError, NodeIsSyncing, OnlySupportedByDVT} from "../errors.js";
|
|
87
|
+
import {ApiError, FailureList, IndexedError, NodeIsSyncing, OnlySupportedByDVT} from "../errors.js";
|
|
86
88
|
import {ApiModules} from "../types.js";
|
|
87
89
|
import {computeSubnetForCommitteesAtSlot, getPubkeysForIndices, selectBlockProductionSource} from "./utils.js";
|
|
88
90
|
|
|
@@ -108,6 +110,8 @@ export const SYNC_TOLERANCE_EPOCHS = 1;
|
|
|
108
110
|
* Empirically the builder block resolves in ~1 second, and execution block resolves in <500 ms.
|
|
109
111
|
* A cutoff of 2 seconds gives enough time and if there are unexpected delays it ensures we publish
|
|
110
112
|
* in time as proposals post 4 seconds into the slot will likely be orphaned due to proposer boost reorg.
|
|
113
|
+
*
|
|
114
|
+
* TODO GLOAS: re-evaluate cutoff timing
|
|
111
115
|
*/
|
|
112
116
|
const BLOCK_PRODUCTION_RACE_CUTOFF_MS = 2_000;
|
|
113
117
|
/** Overall timeout for execution and block production apis */
|
|
@@ -178,7 +182,7 @@ export function getValidatorApi(
|
|
|
178
182
|
* This value is the same to MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC.
|
|
179
183
|
* For very fast networks, reduce clock disparity to half a slot.
|
|
180
184
|
*/
|
|
181
|
-
const MAX_API_CLOCK_DISPARITY_SEC = Math.min(0.5, config.
|
|
185
|
+
const MAX_API_CLOCK_DISPARITY_SEC = Math.min(0.5, config.SLOT_DURATION_MS / 2000);
|
|
182
186
|
const MAX_API_CLOCK_DISPARITY_MS = MAX_API_CLOCK_DISPARITY_SEC * 1000;
|
|
183
187
|
|
|
184
188
|
/** Compute and cache the genesis block root */
|
|
@@ -211,7 +215,7 @@ export function getValidatorApi(
|
|
|
211
215
|
return;
|
|
212
216
|
}
|
|
213
217
|
|
|
214
|
-
const slotStartSec =
|
|
218
|
+
const slotStartSec = computeTimeAtSlot(config, slot, chain.genesisTime);
|
|
215
219
|
const msToSlot = slotStartSec * 1000 - Date.now();
|
|
216
220
|
|
|
217
221
|
if (msToSlot > MAX_API_CLOCK_DISPARITY_MS) {
|
|
@@ -242,7 +246,7 @@ export function getValidatorApi(
|
|
|
242
246
|
*/
|
|
243
247
|
function msToNextEpoch(): number {
|
|
244
248
|
const nextEpoch = chain.clock.currentEpoch + 1;
|
|
245
|
-
const secPerEpoch = SLOTS_PER_EPOCH * config.
|
|
249
|
+
const secPerEpoch = (SLOTS_PER_EPOCH * config.SLOT_DURATION_MS) / 1000;
|
|
246
250
|
const nextEpochStartSec = chain.genesisTime + nextEpoch * secPerEpoch;
|
|
247
251
|
return nextEpochStartSec * 1000 - Date.now();
|
|
248
252
|
}
|
|
@@ -407,11 +411,9 @@ export function getValidatorApi(
|
|
|
407
411
|
{
|
|
408
412
|
commonBlockBodyPromise,
|
|
409
413
|
parentBlockRoot,
|
|
410
|
-
parentSlot,
|
|
411
414
|
}: Omit<routes.validator.ExtraProduceBlockOpts, "builderSelection"> & {
|
|
412
415
|
commonBlockBodyPromise: Promise<CommonBlockBody>;
|
|
413
416
|
parentBlockRoot: Root;
|
|
414
|
-
parentSlot: Slot;
|
|
415
417
|
}
|
|
416
418
|
): Promise<ProduceBlindedBlockRes> {
|
|
417
419
|
const version = config.getForkName(slot);
|
|
@@ -443,7 +445,6 @@ export function getValidatorApi(
|
|
|
443
445
|
const {block, executionPayloadValue, consensusBlockValue} = await chain.produceBlindedBlock({
|
|
444
446
|
slot,
|
|
445
447
|
parentBlockRoot,
|
|
446
|
-
parentSlot,
|
|
447
448
|
randaoReveal,
|
|
448
449
|
graffiti,
|
|
449
450
|
commonBlockBodyPromise,
|
|
@@ -479,11 +480,9 @@ export function getValidatorApi(
|
|
|
479
480
|
strictFeeRecipientCheck,
|
|
480
481
|
commonBlockBodyPromise,
|
|
481
482
|
parentBlockRoot,
|
|
482
|
-
parentSlot,
|
|
483
483
|
}: Omit<routes.validator.ExtraProduceBlockOpts, "builderSelection"> & {
|
|
484
484
|
commonBlockBodyPromise: Promise<CommonBlockBody>;
|
|
485
485
|
parentBlockRoot: Root;
|
|
486
|
-
parentSlot: Slot;
|
|
487
486
|
}
|
|
488
487
|
): Promise<ProduceBlockContentsRes & {shouldOverrideBuilder?: boolean}> {
|
|
489
488
|
const source = ProducedBlockSource.engine;
|
|
@@ -495,7 +494,6 @@ export function getValidatorApi(
|
|
|
495
494
|
const {block, executionPayloadValue, consensusBlockValue, shouldOverrideBuilder} = await chain.produceBlock({
|
|
496
495
|
slot,
|
|
497
496
|
parentBlockRoot,
|
|
498
|
-
parentSlot,
|
|
499
497
|
randaoReveal,
|
|
500
498
|
graffiti,
|
|
501
499
|
feeRecipient,
|
|
@@ -638,7 +636,6 @@ export function getValidatorApi(
|
|
|
638
636
|
strictFeeRecipientCheck: false,
|
|
639
637
|
commonBlockBodyPromise,
|
|
640
638
|
parentBlockRoot,
|
|
641
|
-
parentSlot,
|
|
642
639
|
})
|
|
643
640
|
: Promise.reject(new Error("Builder disabled"));
|
|
644
641
|
|
|
@@ -648,7 +645,6 @@ export function getValidatorApi(
|
|
|
648
645
|
strictFeeRecipientCheck,
|
|
649
646
|
commonBlockBodyPromise,
|
|
650
647
|
parentBlockRoot,
|
|
651
|
-
parentSlot,
|
|
652
648
|
}).then((engineBlock) => {
|
|
653
649
|
// Once the engine returns a block, in the event of either:
|
|
654
650
|
// - suspected builder censorship
|
|
@@ -666,7 +662,7 @@ export function getValidatorApi(
|
|
|
666
662
|
: Promise.reject(new Error("Engine disabled"));
|
|
667
663
|
|
|
668
664
|
// Calculate cutoff time based on start of the slot
|
|
669
|
-
const cutoffMs = Math.max(0, BLOCK_PRODUCTION_RACE_CUTOFF_MS -
|
|
665
|
+
const cutoffMs = Math.max(0, BLOCK_PRODUCTION_RACE_CUTOFF_MS - chain.clock.msFromSlot(slot));
|
|
670
666
|
|
|
671
667
|
logger.verbose("Block production race (builder vs execution) starting", {
|
|
672
668
|
...loggerContext,
|
|
@@ -691,7 +687,6 @@ export function getValidatorApi(
|
|
|
691
687
|
.produceCommonBlockBody({
|
|
692
688
|
slot,
|
|
693
689
|
parentBlockRoot,
|
|
694
|
-
parentSlot,
|
|
695
690
|
randaoReveal,
|
|
696
691
|
graffiti: graffitiBytes,
|
|
697
692
|
})
|
|
@@ -884,13 +879,14 @@ export function getValidatorApi(
|
|
|
884
879
|
opts
|
|
885
880
|
);
|
|
886
881
|
|
|
887
|
-
|
|
882
|
+
const fork = ForkSeq[meta.version];
|
|
883
|
+
if (opts.blindedLocal === true && fork >= ForkSeq.bellatrix && fork < ForkSeq.gloas) {
|
|
888
884
|
if (meta.executionPayloadBlinded) {
|
|
889
885
|
return {data, meta};
|
|
890
886
|
}
|
|
891
887
|
|
|
892
888
|
const {block} = data as BlockContents;
|
|
893
|
-
const blindedBlock = beaconBlockToBlinded(config, block as BeaconBlock<ForkPostBellatrix>);
|
|
889
|
+
const blindedBlock = beaconBlockToBlinded(config, block as BeaconBlock<ForkPostBellatrix & ForkPreGloas>);
|
|
894
890
|
return {
|
|
895
891
|
data: blindedBlock,
|
|
896
892
|
meta: {...meta, executionPayloadBlinded: true},
|
|
@@ -1016,8 +1012,8 @@ export function getValidatorApi(
|
|
|
1016
1012
|
const head = chain.forkChoice.getHead();
|
|
1017
1013
|
let state: CachedBeaconStateAllForks | undefined = undefined;
|
|
1018
1014
|
const startSlot = computeStartSlotAtEpoch(epoch);
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1015
|
+
const prepareNextSlotLookAheadMs =
|
|
1016
|
+
config.SLOT_DURATION_MS - config.getSlotComponentDurationMs(PREPARE_NEXT_SLOT_BPS);
|
|
1021
1017
|
const toNextEpochMs = msToNextEpoch();
|
|
1022
1018
|
// validators may request next epoch's duties when it's close to next epoch
|
|
1023
1019
|
// this is to avoid missed block proposal due to 0 epoch look ahead
|
|
@@ -1290,7 +1286,7 @@ export function getValidatorApi(
|
|
|
1290
1286
|
notWhileSyncing();
|
|
1291
1287
|
|
|
1292
1288
|
const seenTimestampSec = Date.now() / 1000;
|
|
1293
|
-
const
|
|
1289
|
+
const failures: FailureList = [];
|
|
1294
1290
|
const fork = chain.config.getForkName(chain.clock.currentSlot);
|
|
1295
1291
|
|
|
1296
1292
|
await Promise.all(
|
|
@@ -1326,8 +1322,8 @@ export function getValidatorApi(
|
|
|
1326
1322
|
return; // Ok to submit the same aggregate twice
|
|
1327
1323
|
}
|
|
1328
1324
|
|
|
1329
|
-
|
|
1330
|
-
logger.
|
|
1325
|
+
failures.push({index: i, message: (e as Error).message});
|
|
1326
|
+
logger.verbose(`Error on publishAggregateAndProofs [${i}]`, logCtx, e as Error);
|
|
1331
1327
|
if (e instanceof AttestationError && e.action === GossipAction.REJECT) {
|
|
1332
1328
|
chain.persistInvalidSszValue(ssz.phase0.SignedAggregateAndProof, signedAggregateAndProof, "api_reject");
|
|
1333
1329
|
}
|
|
@@ -1335,12 +1331,8 @@ export function getValidatorApi(
|
|
|
1335
1331
|
})
|
|
1336
1332
|
);
|
|
1337
1333
|
|
|
1338
|
-
if (
|
|
1339
|
-
throw
|
|
1340
|
-
}
|
|
1341
|
-
|
|
1342
|
-
if (errors.length === 1) {
|
|
1343
|
-
throw errors[0];
|
|
1334
|
+
if (failures.length > 0) {
|
|
1335
|
+
throw new IndexedError("Error processing aggregate and proofs", failures);
|
|
1344
1336
|
}
|
|
1345
1337
|
},
|
|
1346
1338
|
|
|
@@ -1354,7 +1346,7 @@ export function getValidatorApi(
|
|
|
1354
1346
|
async publishContributionAndProofs({contributionAndProofs}) {
|
|
1355
1347
|
notWhileSyncing();
|
|
1356
1348
|
|
|
1357
|
-
const
|
|
1349
|
+
const failures: FailureList = [];
|
|
1358
1350
|
|
|
1359
1351
|
await Promise.all(
|
|
1360
1352
|
contributionAndProofs.map(async (contributionAndProof, i) => {
|
|
@@ -1386,8 +1378,8 @@ export function getValidatorApi(
|
|
|
1386
1378
|
return; // Ok to submit the same aggregate twice
|
|
1387
1379
|
}
|
|
1388
1380
|
|
|
1389
|
-
|
|
1390
|
-
logger.
|
|
1381
|
+
failures.push({index: i, message: (e as Error).message});
|
|
1382
|
+
logger.verbose(`Error on publishContributionAndProofs [${i}]`, logCtx, e as Error);
|
|
1391
1383
|
if (e instanceof SyncCommitteeError && e.action === GossipAction.REJECT) {
|
|
1392
1384
|
chain.persistInvalidSszValue(ssz.altair.SignedContributionAndProof, contributionAndProof, "api_reject");
|
|
1393
1385
|
}
|
|
@@ -1395,12 +1387,8 @@ export function getValidatorApi(
|
|
|
1395
1387
|
})
|
|
1396
1388
|
);
|
|
1397
1389
|
|
|
1398
|
-
if (
|
|
1399
|
-
throw
|
|
1400
|
-
}
|
|
1401
|
-
|
|
1402
|
-
if (errors.length === 1) {
|
|
1403
|
-
throw errors[0];
|
|
1390
|
+
if (failures.length > 0) {
|
|
1391
|
+
throw new IndexedError("Error processing contribution and proofs", failures);
|
|
1404
1392
|
}
|
|
1405
1393
|
},
|
|
1406
1394
|
|
|
@@ -2,7 +2,7 @@ import worker from "node:worker_threads";
|
|
|
2
2
|
import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
|
|
3
3
|
import {Transfer, expose} from "@chainsafe/threads/worker";
|
|
4
4
|
import {chainConfigFromJson, createBeaconConfig} from "@lodestar/config";
|
|
5
|
-
import {LevelDbController} from "@lodestar/db";
|
|
5
|
+
import {LevelDbController} from "@lodestar/db/controller/level";
|
|
6
6
|
import {getNodeLogger} from "@lodestar/logger/node";
|
|
7
7
|
import {BeaconDb} from "../../../db/index.js";
|
|
8
8
|
import {RegistryMetricCreator, collectNodeJSMetrics} from "../../../metrics/index.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {ForkName, ForkPreDeneb} from "@lodestar/params";
|
|
2
|
-
import {BlobIndex, ColumnIndex, SignedBeaconBlock, Slot, deneb, fulu} from "@lodestar/types";
|
|
1
|
+
import {ForkName, ForkPostFulu, ForkPreDeneb, ForkPreGloas} from "@lodestar/params";
|
|
2
|
+
import {BeaconBlockBody, BlobIndex, ColumnIndex, SignedBeaconBlock, Slot, deneb, fulu} from "@lodestar/types";
|
|
3
3
|
import {fromHex, prettyBytes, toRootHex, withTimeout} from "@lodestar/utils";
|
|
4
4
|
import {VersionedHashes} from "../../../execution/index.js";
|
|
5
5
|
import {kzgCommitmentToVersionedHash} from "../../../util/blobs.js";
|
|
@@ -652,7 +652,8 @@ export class BlockInputColumns extends AbstractBlockInput<ForkColumnsDA, fulu.Da
|
|
|
652
652
|
static createFromColumn(
|
|
653
653
|
props: AddColumn & CreateBlockInputMeta & {sampledColumns: ColumnIndex[]; custodyColumns: ColumnIndex[]}
|
|
654
654
|
): BlockInputColumns {
|
|
655
|
-
const hasAllData =
|
|
655
|
+
const hasAllData =
|
|
656
|
+
props.daOutOfRange || props.columnSidecar.kzgCommitments.length === 0 || props.sampledColumns.length === 0;
|
|
656
657
|
const state: BlockInputColumnsState = {
|
|
657
658
|
hasBlock: false,
|
|
658
659
|
hasAllData,
|
|
@@ -714,7 +715,9 @@ export class BlockInputColumns extends AbstractBlockInput<ForkColumnsDA, fulu.Da
|
|
|
714
715
|
);
|
|
715
716
|
}
|
|
716
717
|
|
|
717
|
-
const hasAllData =
|
|
718
|
+
const hasAllData =
|
|
719
|
+
(props.block.message.body as BeaconBlockBody<ForkPostFulu & ForkPreGloas>).blobKzgCommitments.length === 0 ||
|
|
720
|
+
this.state.hasAllData;
|
|
718
721
|
|
|
719
722
|
this.state = {
|
|
720
723
|
...this.state,
|
|
@@ -7,20 +7,14 @@ import {
|
|
|
7
7
|
ForkChoiceErrorCode,
|
|
8
8
|
NotReorgedReason,
|
|
9
9
|
} from "@lodestar/fork-choice";
|
|
10
|
-
import {
|
|
11
|
-
ForkPostAltair,
|
|
12
|
-
ForkPostElectra,
|
|
13
|
-
ForkSeq,
|
|
14
|
-
INTERVALS_PER_SLOT,
|
|
15
|
-
MAX_SEED_LOOKAHEAD,
|
|
16
|
-
SLOTS_PER_EPOCH,
|
|
17
|
-
} from "@lodestar/params";
|
|
10
|
+
import {ForkPostAltair, ForkPostElectra, ForkSeq, MAX_SEED_LOOKAHEAD, SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
18
11
|
import {
|
|
19
12
|
CachedBeaconStateAltair,
|
|
20
13
|
EpochCache,
|
|
21
14
|
RootCache,
|
|
22
15
|
computeEpochAtSlot,
|
|
23
16
|
computeStartSlotAtEpoch,
|
|
17
|
+
computeTimeAtSlot,
|
|
24
18
|
isExecutionStateType,
|
|
25
19
|
isStartSlotOfEpoch,
|
|
26
20
|
isStateValidatorsNodesPopulated,
|
|
@@ -85,7 +79,8 @@ export async function importBlock(
|
|
|
85
79
|
const currentEpoch = computeEpochAtSlot(currentSlot);
|
|
86
80
|
const blockEpoch = computeEpochAtSlot(blockSlot);
|
|
87
81
|
const prevFinalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
|
|
88
|
-
const blockDelaySec =
|
|
82
|
+
const blockDelaySec =
|
|
83
|
+
fullyVerifiedBlock.seenTimestampSec - computeTimeAtSlot(this.config, blockSlot, postState.genesisTime);
|
|
89
84
|
const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
|
|
90
85
|
const fork = this.config.getForkSeq(blockSlot);
|
|
91
86
|
|
|
@@ -265,10 +260,11 @@ export async function importBlock(
|
|
|
265
260
|
this.metrics.headSlot.set(newHead.slot);
|
|
266
261
|
// Only track "recent" blocks. Otherwise sync can distort this metrics heavily.
|
|
267
262
|
// We want to track recent blocks coming from gossip, unknown block sync, and API.
|
|
268
|
-
if (delaySec < SLOTS_PER_EPOCH * this.config.
|
|
263
|
+
if (delaySec < (SLOTS_PER_EPOCH * this.config.SLOT_DURATION_MS) / 1000) {
|
|
269
264
|
this.metrics.importBlock.elapsedTimeTillBecomeHead.observe(delaySec);
|
|
270
|
-
|
|
271
|
-
|
|
265
|
+
const cutOffSec = this.config.getAttestationDueMs(this.config.getForkName(blockSlot)) / 1000;
|
|
266
|
+
if (delaySec > cutOffSec) {
|
|
267
|
+
this.metrics.importBlock.setHeadAfterCutoff.inc();
|
|
272
268
|
}
|
|
273
269
|
}
|
|
274
270
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {DataAvailabilityStatus} from "@lodestar/state-transition";
|
|
2
|
-
import {DAType, IBlockInput} from "./blockInput/index.js";
|
|
2
|
+
import {DAData, DAType, IBlockInput} from "./blockInput/index.js";
|
|
3
3
|
|
|
4
4
|
// we can now wait for full 12 seconds because unavailable block sync will try pulling
|
|
5
5
|
// the blobs from the network anyway after 500ms of seeing the block
|
|
@@ -18,7 +18,15 @@ export async function verifyBlocksDataAvailability(
|
|
|
18
18
|
dataAvailabilityStatuses: DataAvailabilityStatus[];
|
|
19
19
|
availableTime: number;
|
|
20
20
|
}> {
|
|
21
|
-
|
|
21
|
+
const promises: Promise<DAData>[] = [];
|
|
22
|
+
for (const blockInput of blocks) {
|
|
23
|
+
// block verification is triggered on a verified gossip block so we only need to wait for all data
|
|
24
|
+
if (!blockInput.hasAllData()) {
|
|
25
|
+
promises.push(blockInput.waitForAllData(BLOB_AVAILABILITY_TIMEOUT, signal));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
await Promise.all(promises);
|
|
29
|
+
|
|
22
30
|
const availableTime = Math.max(0, Math.max(...blocks.map((blockInput) => blockInput.getTimeComplete())));
|
|
23
31
|
const dataAvailabilityStatuses: DataAvailabilityStatus[] = blocks.map((blockInput) => {
|
|
24
32
|
if (blockInput.type === DAType.PreData) {
|
|
@@ -102,15 +102,7 @@ export async function removeEagerlyPersistedBlockInputs(this: BeaconChain, block
|
|
|
102
102
|
if (!this.forkChoice.hasBlockHex(blockRootHex)) {
|
|
103
103
|
blockToRemove.push(block);
|
|
104
104
|
|
|
105
|
-
if (isBlockInputColumns(blockInput)) {
|
|
106
|
-
const {custodyColumns} = this.custodyConfig;
|
|
107
|
-
const dataColumnsLen = custodyColumns.length;
|
|
108
|
-
const dataColumnSidecars = blockInput.getCustodyColumns();
|
|
109
|
-
if (dataColumnSidecars.length !== dataColumnsLen) {
|
|
110
|
-
throw Error(
|
|
111
|
-
`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`
|
|
112
|
-
);
|
|
113
|
-
}
|
|
105
|
+
if (isBlockInputColumns(blockInput) && blockInput.getCustodyColumns().length > 0) {
|
|
114
106
|
dataColumnsToRemove.push(blockRoot);
|
|
115
107
|
} else if (isBlockInputBlobs(blockInput)) {
|
|
116
108
|
const blobSidecars = blockInput.getBlobs();
|