@lodestar/beacon-node 1.34.0-dev.27285cdee9 → 1.34.0-dev.44611dcdcc
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.js +35 -34
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +3 -3
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/index.js +15 -16
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/debug/index.js +2 -2
- package/lib/api/impl/debug/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +37 -26
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/impl/validator/utils.d.ts +3 -3
- package/lib/api/impl/validator/utils.js +2 -2
- package/lib/api/impl/validator/utils.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +19 -20
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/blocks/utils/zebraBanner.d.ts +2 -0
- package/lib/chain/blocks/utils/zebraBanner.js +45 -0
- package/lib/chain/blocks/utils/zebraBanner.js.map +1 -0
- package/lib/chain/blocks/verifyBlock.js +18 -5
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +7 -34
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/chain.d.ts +8 -80
- package/lib/chain/chain.js +51 -76
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/interface.d.ts +3 -10
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/prepareNextSlot.js +2 -1
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +30 -18
- package/lib/chain/produceBlock/produceBlockBody.js +27 -32
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +6 -4
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +21 -23
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +2 -1
- package/lib/chain/validation/dataColumnSidecar.js +9 -8
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/db/beacon.d.ts +3 -3
- package/lib/db/beacon.js +3 -3
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/interface.d.ts +3 -3
- package/lib/db/repositories/dataColumnSidecar.d.ts +26 -0
- package/lib/db/repositories/dataColumnSidecar.js +39 -0
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -0
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts +24 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js +39 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -0
- package/lib/db/repositories/index.d.ts +2 -2
- package/lib/db/repositories/index.js +2 -2
- package/lib/db/repositories/index.js.map +1 -1
- package/lib/execution/builder/http.d.ts +20 -4
- package/lib/execution/builder/http.js +30 -11
- package/lib/execution/builder/http.js.map +1 -1
- package/lib/execution/builder/interface.d.ts +5 -4
- package/lib/execution/engine/http.d.ts +2 -2
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +2 -11
- package/lib/execution/engine/mock.d.ts +4 -1
- package/lib/execution/engine/mock.js +54 -16
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +5 -5
- package/lib/execution/engine/types.js +2 -2
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +1 -5
- package/lib/metrics/metrics/beacon.js +4 -14
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +5 -0
- package/lib/metrics/metrics/lodestar.js +14 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/networkCore.js +11 -6
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +579 -51
- package/lib/network/interface.d.ts +3 -3
- package/lib/network/network.d.ts +3 -3
- package/lib/network/network.js +1 -1
- package/lib/network/network.js.map +1 -1
- package/lib/network/options.js +2 -2
- package/lib/network/peers/discover.js +1 -1
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.js +5 -5
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts +2 -1
- package/lib/network/peers/utils/prioritizePeers.js +5 -5
- package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +9 -6
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +6 -3
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +45 -17
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +7 -2
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +7 -7
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -3
- package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +2 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -3
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +3 -3
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +27 -46
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +2 -2
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +7 -21
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/handlers/index.js +4 -3
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +11 -5
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +3 -3
- package/lib/network/reqresp/types.js +3 -3
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/sync/range/chain.d.ts +1 -1
- package/lib/sync/range/chain.js +2 -2
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.js +2 -2
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/peerBalancer.d.ts +3 -1
- package/lib/sync/range/utils/peerBalancer.js +20 -1
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +46 -4
- package/lib/sync/unknownBlock.js +305 -201
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/util/blobs.d.ts +3 -13
- package/lib/util/blobs.js +9 -47
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/dataColumns.d.ts +7 -5
- package/lib/util/dataColumns.js +32 -27
- package/lib/util/dataColumns.js.map +1 -1
- package/lib/util/types.d.ts +7 -0
- package/lib/util/types.js +3 -0
- package/lib/util/types.js.map +1 -1
- package/package.json +16 -16
- package/lib/db/repositories/dataColumnSidecars.d.ts +0 -47
- package/lib/db/repositories/dataColumnSidecars.js +0 -40
- package/lib/db/repositories/dataColumnSidecars.js.map +0 -1
- package/lib/db/repositories/dataColumnSidecarsArchive.d.ts +0 -15
- package/lib/db/repositories/dataColumnSidecarsArchive.js +0 -23
- package/lib/db/repositories/dataColumnSidecarsArchive.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBlock.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAa,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"verifyBlock.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { ForkName,
|
|
2
|
-
import {
|
|
3
|
-
import { toRootHex } from "@lodestar/utils";
|
|
4
|
-
import { toHex } from "@lodestar/utils";
|
|
1
|
+
import { ForkName, isForkPostDeneb, isForkPostFulu } from "@lodestar/params";
|
|
2
|
+
import { toHex, toRootHex } from "@lodestar/utils";
|
|
5
3
|
import { BlockInputType } from "./types.js";
|
|
6
4
|
/**
|
|
7
5
|
* Persists block input data to DB. This operation must be eventually completed if a block is imported to the fork-choice.
|
|
@@ -38,38 +36,22 @@ export async function writeBlockInputToDb(blocksInput) {
|
|
|
38
36
|
// NOTE: Old data is pruned on archive
|
|
39
37
|
if (isForkPostFulu(blockData.fork)) {
|
|
40
38
|
const { custodyConfig } = this;
|
|
41
|
-
const {
|
|
39
|
+
const { custodyColumns } = custodyConfig;
|
|
42
40
|
const blobsLen = block.message.body.blobKzgCommitments.length;
|
|
43
41
|
let dataColumnsLen;
|
|
44
|
-
let dataColumnsIndex;
|
|
45
42
|
if (blobsLen === 0) {
|
|
46
43
|
dataColumnsLen = 0;
|
|
47
|
-
dataColumnsIndex = new Uint8Array(NUMBER_OF_COLUMNS);
|
|
48
44
|
}
|
|
49
45
|
else {
|
|
50
46
|
dataColumnsLen = custodyColumns.length;
|
|
51
|
-
dataColumnsIndex = custodyColumnsIndex;
|
|
52
47
|
}
|
|
53
48
|
const blockDataColumns = blockData.dataColumns;
|
|
54
49
|
const dataColumnSidecars = blockDataColumns.filter((dataColumnSidecar) => custodyColumns.includes(dataColumnSidecar.index));
|
|
55
50
|
if (dataColumnSidecars.length !== dataColumnsLen) {
|
|
56
51
|
throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
|
|
57
52
|
}
|
|
58
|
-
|
|
59
|
-
blobsLen * (ssz.fulu.Cell.fixedSize + ssz.deneb.KZGCommitment.fixedSize + ssz.deneb.KZGProof.fixedSize);
|
|
60
|
-
const slot = block.message.slot;
|
|
61
|
-
const writeData = {
|
|
62
|
-
blockRoot,
|
|
63
|
-
slot,
|
|
64
|
-
dataColumnsLen,
|
|
65
|
-
dataColumnsSize,
|
|
66
|
-
dataColumnsIndex,
|
|
67
|
-
dataColumnSidecars,
|
|
68
|
-
};
|
|
69
|
-
fnPromises.push(this.db.dataColumnSidecars.add(writeData));
|
|
53
|
+
fnPromises.push(this.db.dataColumnSidecar.putMany(blockRoot, dataColumnSidecars));
|
|
70
54
|
this.logger.debug("Persisted dataColumnSidecars to hot DB", {
|
|
71
|
-
dataColumnsSize,
|
|
72
|
-
dataColumnsLen,
|
|
73
55
|
dataColumnSidecars: dataColumnSidecars.length,
|
|
74
56
|
slot: block.message.slot,
|
|
75
57
|
root: blockRootHex,
|
|
@@ -114,22 +96,13 @@ export async function removeEagerlyPersistedBlockInputs(blockInputs) {
|
|
|
114
96
|
}
|
|
115
97
|
else {
|
|
116
98
|
const { custodyConfig } = this;
|
|
117
|
-
const {
|
|
99
|
+
const { custodyColumns } = custodyConfig;
|
|
118
100
|
const dataColumnsLen = custodyColumns.length;
|
|
119
101
|
const dataColumnSidecars = blockData.dataColumns.filter((dataColumnSidecar) => custodyColumns.includes(dataColumnSidecar.index));
|
|
120
102
|
if (dataColumnSidecars.length !== dataColumnsLen) {
|
|
121
103
|
throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
|
|
122
104
|
}
|
|
123
|
-
|
|
124
|
-
const dataColumnsSize = ssz.fulu.Cell.fixedSize * blobsLen;
|
|
125
|
-
dataColumnsToRemove.push({
|
|
126
|
-
blockRoot,
|
|
127
|
-
slot,
|
|
128
|
-
dataColumnsLen,
|
|
129
|
-
dataColumnsSize,
|
|
130
|
-
dataColumnsIndex,
|
|
131
|
-
dataColumnSidecars,
|
|
132
|
-
});
|
|
105
|
+
dataColumnsToRemove.push(blockRoot);
|
|
133
106
|
}
|
|
134
107
|
}
|
|
135
108
|
}
|
|
@@ -138,7 +111,7 @@ export async function removeEagerlyPersistedBlockInputs(blockInputs) {
|
|
|
138
111
|
// TODO: Batch DB operations not with Promise.all but with level db ops
|
|
139
112
|
this.db.block.batchRemove(blockToRemove),
|
|
140
113
|
this.db.blobSidecars.batchRemove(blobsToRemove),
|
|
141
|
-
this.db.
|
|
114
|
+
this.db.dataColumnSidecar.deleteMany(dataColumnsToRemove),
|
|
142
115
|
]);
|
|
143
116
|
}
|
|
144
117
|
//# sourceMappingURL=writeBlockInputToDb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeBlockInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writeBlockInputToDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"writeBlockInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writeBlockInputToDb.ts"],"names":[],"mappings":"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"}
|
package/lib/chain/chain.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { CompositeTypeAny, TreeView, Type } from "@chainsafe/ssz";
|
|
|
3
3
|
import { BeaconConfig } from "@lodestar/config";
|
|
4
4
|
import { CheckpointWithHex, IForkChoice, ProtoBlock } from "@lodestar/fork-choice";
|
|
5
5
|
import { BeaconStateAllForks, CachedBeaconStateAllForks, EpochShuffling, Index2PubkeyCache } from "@lodestar/state-transition";
|
|
6
|
-
import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei
|
|
6
|
+
import { BeaconBlock, BlindedBeaconBlock, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei } from "@lodestar/types";
|
|
7
7
|
import { Logger } from "@lodestar/utils";
|
|
8
8
|
import { ProcessShutdownCallback } from "@lodestar/validator";
|
|
9
9
|
import { PrivateKey } from "@libp2p/interface";
|
|
@@ -27,7 +27,7 @@ import { CommonBlockBody, IBeaconChain, ProposerPreparationData, StateGetOpts }
|
|
|
27
27
|
import { LightClientServer } from "./lightClient/index.js";
|
|
28
28
|
import { AggregatedAttestationPool, AttestationPool, OpPool, SyncCommitteeMessagePool, SyncContributionAndProofPool } from "./opPools/index.js";
|
|
29
29
|
import { IChainOptions } from "./options.js";
|
|
30
|
-
import { AssembledBlockType, BlockType } from "./produceBlock/index.js";
|
|
30
|
+
import { AssembledBlockType, BlockType, ProduceResult } from "./produceBlock/index.js";
|
|
31
31
|
import { BlockAttributes } from "./produceBlock/produceBlockBody.js";
|
|
32
32
|
import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
|
|
33
33
|
import { ReprocessController } from "./reprocess.js";
|
|
@@ -83,71 +83,12 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
83
83
|
readonly beaconProposerCache: BeaconProposerCache;
|
|
84
84
|
readonly checkpointBalancesCache: CheckpointBalancesCache;
|
|
85
85
|
readonly shufflingCache: ShufflingCache;
|
|
86
|
-
/**
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
parentHash: import("@chainsafe/ssz").ByteVectorType;
|
|
93
|
-
feeRecipient: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
|
|
94
|
-
stateRoot: import("@chainsafe/ssz").ByteVectorType;
|
|
95
|
-
receiptsRoot: import("@chainsafe/ssz").ByteVectorType;
|
|
96
|
-
logsBloom: import("@chainsafe/ssz").ByteVectorType;
|
|
97
|
-
prevRandao: import("@chainsafe/ssz").ByteVectorType;
|
|
98
|
-
blockNumber: import("@chainsafe/ssz").UintNumberType;
|
|
99
|
-
gasLimit: import("@chainsafe/ssz").UintNumberType;
|
|
100
|
-
gasUsed: import("@chainsafe/ssz").UintNumberType;
|
|
101
|
-
timestamp: import("@chainsafe/ssz").UintNumberType;
|
|
102
|
-
extraData: import("@chainsafe/ssz").ByteListType;
|
|
103
|
-
baseFeePerGas: import("@chainsafe/ssz").UintBigintType;
|
|
104
|
-
blockHash: import("@chainsafe/ssz").ByteVectorType;
|
|
105
|
-
}> | import("@chainsafe/ssz").ValueOfFields<{
|
|
106
|
-
withdrawals: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ContainerType<{
|
|
107
|
-
index: import("@chainsafe/ssz").UintNumberType;
|
|
108
|
-
validatorIndex: import("@chainsafe/ssz").UintNumberType;
|
|
109
|
-
address: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
|
|
110
|
-
amount: import("@chainsafe/ssz").UintBigintType;
|
|
111
|
-
}>>;
|
|
112
|
-
transactions: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteListType>;
|
|
113
|
-
parentHash: import("@chainsafe/ssz").ByteVectorType;
|
|
114
|
-
feeRecipient: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
|
|
115
|
-
stateRoot: import("@chainsafe/ssz").ByteVectorType;
|
|
116
|
-
receiptsRoot: import("@chainsafe/ssz").ByteVectorType;
|
|
117
|
-
logsBloom: import("@chainsafe/ssz").ByteVectorType;
|
|
118
|
-
prevRandao: import("@chainsafe/ssz").ByteVectorType;
|
|
119
|
-
blockNumber: import("@chainsafe/ssz").UintNumberType;
|
|
120
|
-
gasLimit: import("@chainsafe/ssz").UintNumberType;
|
|
121
|
-
gasUsed: import("@chainsafe/ssz").UintNumberType;
|
|
122
|
-
timestamp: import("@chainsafe/ssz").UintNumberType;
|
|
123
|
-
extraData: import("@chainsafe/ssz").ByteListType;
|
|
124
|
-
baseFeePerGas: import("@chainsafe/ssz").UintBigintType;
|
|
125
|
-
blockHash: import("@chainsafe/ssz").ByteVectorType;
|
|
126
|
-
}> | import("@chainsafe/ssz").ValueOfFields<{
|
|
127
|
-
blobGasUsed: import("@chainsafe/ssz").UintBigintType;
|
|
128
|
-
excessBlobGas: import("@chainsafe/ssz").UintBigintType;
|
|
129
|
-
withdrawals: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ContainerType<{
|
|
130
|
-
index: import("@chainsafe/ssz").UintNumberType;
|
|
131
|
-
validatorIndex: import("@chainsafe/ssz").UintNumberType;
|
|
132
|
-
address: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
|
|
133
|
-
amount: import("@chainsafe/ssz").UintBigintType;
|
|
134
|
-
}>>;
|
|
135
|
-
transactions: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteListType>;
|
|
136
|
-
parentHash: import("@chainsafe/ssz").ByteVectorType;
|
|
137
|
-
feeRecipient: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
|
|
138
|
-
stateRoot: import("@chainsafe/ssz").ByteVectorType;
|
|
139
|
-
receiptsRoot: import("@chainsafe/ssz").ByteVectorType;
|
|
140
|
-
logsBloom: import("@chainsafe/ssz").ByteVectorType;
|
|
141
|
-
prevRandao: import("@chainsafe/ssz").ByteVectorType;
|
|
142
|
-
blockNumber: import("@chainsafe/ssz").UintNumberType;
|
|
143
|
-
gasLimit: import("@chainsafe/ssz").UintNumberType;
|
|
144
|
-
gasUsed: import("@chainsafe/ssz").UintNumberType;
|
|
145
|
-
timestamp: import("@chainsafe/ssz").UintNumberType;
|
|
146
|
-
extraData: import("@chainsafe/ssz").ByteListType;
|
|
147
|
-
baseFeePerGas: import("@chainsafe/ssz").UintBigintType;
|
|
148
|
-
blockHash: import("@chainsafe/ssz").ByteVectorType;
|
|
149
|
-
}> | null>;
|
|
150
|
-
readonly producedBlindedBlockRoot: Set<string>;
|
|
86
|
+
/**
|
|
87
|
+
* Cache produced results (ExecutionPayload, DA Data) from the local execution so that we can send
|
|
88
|
+
* and get signed/published blinded versions which beacon node can
|
|
89
|
+
* assemble into full blocks before publishing to the network.
|
|
90
|
+
*/
|
|
91
|
+
readonly blockProductionCache: Map<string, ProduceResult>;
|
|
151
92
|
readonly blacklistedBlocks: Map<RootHex, Slot | null>;
|
|
152
93
|
readonly serializedCache: SerializedCache;
|
|
153
94
|
readonly opts: IChainOptions;
|
|
@@ -247,19 +188,6 @@ export declare class BeaconChain implements IBeaconChain {
|
|
|
247
188
|
consensusBlockValue: Wei;
|
|
248
189
|
shouldOverrideBuilder?: boolean;
|
|
249
190
|
}>;
|
|
250
|
-
/**
|
|
251
|
-
* https://github.com/ethereum/consensus-specs/blob/dev/specs/eip4844/validator.md#sidecar
|
|
252
|
-
* def get_blobs_sidecar(block: BeaconBlock, blobs: Sequence[Blob]) -> BlobSidecars:
|
|
253
|
-
* return BlobSidecars(
|
|
254
|
-
* beacon_block_root=hash_tree_root(block),
|
|
255
|
-
* beacon_block_slot=block.slot,
|
|
256
|
-
* blobs=blobs,
|
|
257
|
-
* kzg_aggregated_proof=compute_proof_from_blobs(blobs),
|
|
258
|
-
* )
|
|
259
|
-
*/
|
|
260
|
-
getContents(beaconBlock: deneb.BeaconBlock): deneb.Contents & {
|
|
261
|
-
cells?: fulu.Cell[][];
|
|
262
|
-
};
|
|
263
191
|
processBlock(block: BlockInput, opts?: ImportBlockOpts): Promise<void>;
|
|
264
192
|
processChainSegment(blocks: BlockInput[], opts?: ImportBlockOpts): Promise<void>;
|
|
265
193
|
getStatus(): Status;
|
package/lib/chain/chain.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
|
|
3
3
|
import { ExecutionStatus, UpdateHeadOpt } from "@lodestar/fork-choice";
|
|
4
|
-
import {
|
|
5
|
-
import { computeAnchorCheckpoint, computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, createCachedBeaconState, getEffectiveBalanceIncrementsZeroInactive, isCachedBeaconState, processSlots, } from "@lodestar/state-transition";
|
|
4
|
+
import { EFFECTIVE_BALANCE_INCREMENT, GENESIS_SLOT, SLOTS_PER_EPOCH, isForkPostElectra } from "@lodestar/params";
|
|
5
|
+
import { computeAnchorCheckpoint, computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, createCachedBeaconState, getEffectiveBalanceIncrementsZeroInactive, getEffectiveBalancesFromStateBytes, isCachedBeaconState, processSlots, } from "@lodestar/state-transition";
|
|
6
6
|
import { isBlindedBeaconBlock, } from "@lodestar/types";
|
|
7
7
|
import { fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRootHex } from "@lodestar/utils";
|
|
8
|
-
import { getEffectiveBalancesFromStateBytes } from "@lodestar/state-transition";
|
|
9
8
|
import { GENESIS_EPOCH, ZERO_HASH } from "../constants/index.js";
|
|
9
|
+
import { BuilderStatus } from "../execution/builder/http.js";
|
|
10
10
|
import { computeNodeIdFromPrivateKey } from "../network/subnets/interface.js";
|
|
11
11
|
import { BufferPool } from "../util/bufferPool.js";
|
|
12
12
|
import { Clock, ClockEvent } from "../util/clock.js";
|
|
@@ -21,12 +21,12 @@ import { BlockProcessor } from "./blocks/index.js";
|
|
|
21
21
|
import { BlsMultiThreadWorkerPool, BlsSingleThreadVerifier } from "./bls/index.js";
|
|
22
22
|
import { ChainEvent, ChainEventEmitter } from "./emitter.js";
|
|
23
23
|
import { initializeForkChoice } from "./forkChoice/index.js";
|
|
24
|
-
import { FindHeadFnName
|
|
24
|
+
import { FindHeadFnName } from "./interface.js";
|
|
25
25
|
import { LightClientServer } from "./lightClient/index.js";
|
|
26
26
|
import { AggregatedAttestationPool, AttestationPool, OpPool, SyncCommitteeMessagePool, SyncContributionAndProofPool, } from "./opPools/index.js";
|
|
27
27
|
import { PrepareNextSlotScheduler } from "./prepareNextSlot.js";
|
|
28
28
|
import { computeNewStateRoot } from "./produceBlock/computeNewStateRoot.js";
|
|
29
|
-
import {
|
|
29
|
+
import { BlockType } from "./produceBlock/index.js";
|
|
30
30
|
import { produceBlockBody, produceCommonBlockBody } from "./produceBlock/produceBlockBody.js";
|
|
31
31
|
import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
|
|
32
32
|
import { ReprocessController } from "./reprocess.js";
|
|
@@ -47,11 +47,13 @@ import { FIFOBlockStateCache } from "./stateCache/fifoBlockStateCache.js";
|
|
|
47
47
|
import { InMemoryCheckpointStateCache } from "./stateCache/inMemoryCheckpointsCache.js";
|
|
48
48
|
import { PersistentCheckpointStateCache } from "./stateCache/persistentCheckpointsCache.js";
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* The maximum number of cached produced results to keep in memory.
|
|
51
|
+
*
|
|
52
|
+
* Arbitrary constant. Blobs and payloads should be consumed immediately in the same slot
|
|
51
53
|
* they are produced. A value of 1 would probably be sufficient. However it's sensible to
|
|
52
54
|
* allow some margin if the node overloads.
|
|
53
55
|
*/
|
|
54
|
-
const
|
|
56
|
+
const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
|
|
55
57
|
export class BeaconChain {
|
|
56
58
|
get earliestAvailableSlot() {
|
|
57
59
|
return this._earliestAvailableSlot;
|
|
@@ -71,13 +73,12 @@ export class BeaconChain {
|
|
|
71
73
|
this.seenSyncCommitteeMessages = new SeenSyncCommitteeMessages();
|
|
72
74
|
// Seen cache for liveness checks
|
|
73
75
|
this.seenBlockAttesters = new SeenBlockAttesters();
|
|
74
|
-
/**
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
this.
|
|
80
|
-
this.producedBlindedBlockRoot = new Set();
|
|
76
|
+
/**
|
|
77
|
+
* Cache produced results (ExecutionPayload, DA Data) from the local execution so that we can send
|
|
78
|
+
* and get signed/published blinded versions which beacon node can
|
|
79
|
+
* assemble into full blocks before publishing to the network.
|
|
80
|
+
*/
|
|
81
|
+
this.blockProductionCache = new Map();
|
|
81
82
|
this.abortController = new AbortController();
|
|
82
83
|
this.opts = opts;
|
|
83
84
|
this.config = config;
|
|
@@ -110,7 +111,7 @@ export class BeaconChain {
|
|
|
110
111
|
this.seenContributionAndProof = new SeenContributionAndProof(metrics);
|
|
111
112
|
this.seenAttestationDatas = new SeenAttestationDatas(metrics, this.opts?.attDataCacheSlotDistance);
|
|
112
113
|
const nodeId = computeNodeIdFromPrivateKey(privateKey);
|
|
113
|
-
const initialCustodyGroupCount = opts.initialCustodyGroupCount ?? (opts.supernode ? NUMBER_OF_CUSTODY_GROUPS : config.CUSTODY_REQUIREMENT);
|
|
114
|
+
const initialCustodyGroupCount = opts.initialCustodyGroupCount ?? (opts.supernode ? config.NUMBER_OF_CUSTODY_GROUPS : config.CUSTODY_REQUIREMENT);
|
|
114
115
|
this.metrics?.peerDas.targetCustodyGroupCount.set(initialCustodyGroupCount);
|
|
115
116
|
this.custodyConfig = new CustodyConfig({
|
|
116
117
|
nodeId,
|
|
@@ -437,7 +438,7 @@ export class BeaconChain {
|
|
|
437
438
|
const state = await this.regen.getBlockSlotState(toRootHex(parentBlockRoot), slot, { dontTransferCache: true }, RegenCaller.produceBlock);
|
|
438
439
|
const proposerIndex = state.epochCtx.getBeaconProposer(slot);
|
|
439
440
|
const proposerPubKey = state.epochCtx.index2pubkey[proposerIndex].toBytes();
|
|
440
|
-
const { body,
|
|
441
|
+
const { body, produceResult, executionPayloadValue, shouldOverrideBuilder } = await produceBlockBody.call(this, blockType, state, {
|
|
441
442
|
randaoReveal,
|
|
442
443
|
graffiti,
|
|
443
444
|
slot,
|
|
@@ -449,7 +450,7 @@ export class BeaconChain {
|
|
|
449
450
|
commonBlockBodyPromise,
|
|
450
451
|
});
|
|
451
452
|
// The hashtree root computed here for debug log will get cached and hence won't introduce additional delays
|
|
452
|
-
const bodyRoot =
|
|
453
|
+
const bodyRoot = produceResult.type === BlockType.Full
|
|
453
454
|
? this.config.getForkTypes(slot).BeaconBlockBody.hashTreeRoot(body)
|
|
454
455
|
: this.config
|
|
455
456
|
.getPostBellatrixForkTypes(slot)
|
|
@@ -468,51 +469,15 @@ export class BeaconChain {
|
|
|
468
469
|
};
|
|
469
470
|
const { newStateRoot, proposerReward } = computeNewStateRoot(this.metrics, state, block);
|
|
470
471
|
block.stateRoot = newStateRoot;
|
|
471
|
-
const blockRoot =
|
|
472
|
+
const blockRoot = produceResult.type === BlockType.Full
|
|
472
473
|
? this.config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block)
|
|
473
474
|
: this.config.getPostBellatrixForkTypes(slot).BlindedBeaconBlock.hashTreeRoot(block);
|
|
474
475
|
const blockRootHex = toRootHex(blockRoot);
|
|
475
|
-
//
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
this.producedBlockRoot.set(blockRootHex, block.body.executionPayload ?? null);
|
|
479
|
-
this.metrics?.blockProductionCaches.producedBlockRoot.set(this.producedBlockRoot.size);
|
|
480
|
-
}
|
|
481
|
-
else {
|
|
482
|
-
this.logger.debug("Tracking the produced blinded block", { blockRootHex, slot, blockType });
|
|
483
|
-
this.producedBlindedBlockRoot.add(blockRootHex);
|
|
484
|
-
this.metrics?.blockProductionCaches.producedBlindedBlockRoot.set(this.producedBlindedBlockRoot.size);
|
|
485
|
-
}
|
|
486
|
-
// Cache for latter broadcasting
|
|
487
|
-
//
|
|
488
|
-
// blinded blobs will be fetched and added to this cache later before finally
|
|
489
|
-
// publishing the blinded block's full version
|
|
490
|
-
if (blobs.type === BlobsResultType.produced) {
|
|
491
|
-
// body is of full type here
|
|
492
|
-
const { blockHash, contents } = blobs;
|
|
493
|
-
this.producedContentsCache.set(blockHash, contents);
|
|
494
|
-
this.metrics?.blockProductionCaches.producedContentsCache.set(this.producedContentsCache.size);
|
|
495
|
-
}
|
|
476
|
+
// Track the produced block for consensus broadcast validations, later validation, etc.
|
|
477
|
+
this.blockProductionCache.set(blockRootHex, produceResult);
|
|
478
|
+
this.metrics?.blockProductionCacheSize.set(this.blockProductionCache.size);
|
|
496
479
|
return { block, executionPayloadValue, consensusBlockValue: gweiToWei(proposerReward), shouldOverrideBuilder };
|
|
497
480
|
}
|
|
498
|
-
/**
|
|
499
|
-
* https://github.com/ethereum/consensus-specs/blob/dev/specs/eip4844/validator.md#sidecar
|
|
500
|
-
* def get_blobs_sidecar(block: BeaconBlock, blobs: Sequence[Blob]) -> BlobSidecars:
|
|
501
|
-
* return BlobSidecars(
|
|
502
|
-
* beacon_block_root=hash_tree_root(block),
|
|
503
|
-
* beacon_block_slot=block.slot,
|
|
504
|
-
* blobs=blobs,
|
|
505
|
-
* kzg_aggregated_proof=compute_proof_from_blobs(blobs),
|
|
506
|
-
* )
|
|
507
|
-
*/
|
|
508
|
-
getContents(beaconBlock) {
|
|
509
|
-
const blockHash = toRootHex(beaconBlock.body.executionPayload.blockHash);
|
|
510
|
-
const contents = this.producedContentsCache.get(blockHash);
|
|
511
|
-
if (!contents) {
|
|
512
|
-
throw Error(`No contents for executionPayload.blockHash ${blockHash}`);
|
|
513
|
-
}
|
|
514
|
-
return contents;
|
|
515
|
-
}
|
|
516
481
|
async processBlock(block, opts) {
|
|
517
482
|
return this.blockProcessor.processBlocksJob([block], opts);
|
|
518
483
|
}
|
|
@@ -797,14 +762,8 @@ export class BeaconChain {
|
|
|
797
762
|
this.seenAttestationDatas.onSlot(slot);
|
|
798
763
|
this.reprocessController.onSlot(slot);
|
|
799
764
|
// Prune old cached block production artifacts, those are only useful on their slot
|
|
800
|
-
pruneSetToMax(this.
|
|
801
|
-
this.metrics?.
|
|
802
|
-
pruneSetToMax(this.producedBlindedBlockRoot, this.opts.maxCachedProducedRoots ?? DEFAULT_MAX_CACHED_PRODUCED_ROOTS);
|
|
803
|
-
this.metrics?.blockProductionCaches.producedBlindedBlockRoot.set(this.producedBlindedBlockRoot.size);
|
|
804
|
-
if (this.config.getForkSeq(slot) >= ForkSeq.deneb) {
|
|
805
|
-
pruneSetToMax(this.producedContentsCache, this.opts.maxCachedProducedRoots ?? DEFAULT_MAX_CACHED_PRODUCED_ROOTS);
|
|
806
|
-
this.metrics?.blockProductionCaches.producedContentsCache.set(this.producedContentsCache.size);
|
|
807
|
-
}
|
|
765
|
+
pruneSetToMax(this.blockProductionCache, this.opts.maxCachedProducedRoots ?? DEFAULT_MAX_CACHED_PRODUCED_RESULTS);
|
|
766
|
+
this.metrics?.blockProductionCacheSize.set(this.blockProductionCache.size);
|
|
808
767
|
const metrics = this.metrics;
|
|
809
768
|
if (metrics && (slot + 1) % SLOTS_PER_EPOCH === 0) {
|
|
810
769
|
// On the last slot of the epoch
|
|
@@ -878,19 +837,35 @@ export class BeaconChain {
|
|
|
878
837
|
// of all custody groups regardless of validator effective balances
|
|
879
838
|
return;
|
|
880
839
|
}
|
|
881
|
-
// Update custody requirement based on finalized state
|
|
882
|
-
const stateOrBytes = (await this.getStateOrBytesByCheckpoint(finalizedCheckpoint))?.state;
|
|
883
|
-
if (!stateOrBytes) {
|
|
884
|
-
throw Error(`No finalized state for epoch ${finalizedCheckpoint.epoch} and root ${finalizedCheckpoint.rootHex} to update target custody group count`);
|
|
885
|
-
}
|
|
886
840
|
// Validators attached to the node
|
|
887
841
|
const validatorIndices = this.beaconProposerCache.getValidatorIndices();
|
|
842
|
+
// Update custody requirement based on finalized state
|
|
888
843
|
let effectiveBalances;
|
|
889
|
-
|
|
890
|
-
|
|
844
|
+
const effectiveBalanceIncrements = this.checkpointBalancesCache.get(finalizedCheckpoint);
|
|
845
|
+
if (effectiveBalanceIncrements) {
|
|
846
|
+
effectiveBalances = validatorIndices.map((index) => (effectiveBalanceIncrements[index] ?? 0) * EFFECTIVE_BALANCE_INCREMENT);
|
|
891
847
|
}
|
|
892
848
|
else {
|
|
893
|
-
|
|
849
|
+
// If there's no cached effective balances, get the state from disk and parse them out
|
|
850
|
+
this.logger.debug("No cached finalized effective balances to update target custody group count", {
|
|
851
|
+
finalizedEpoch: finalizedCheckpoint.epoch,
|
|
852
|
+
finalizedRoot: finalizedCheckpoint.rootHex,
|
|
853
|
+
});
|
|
854
|
+
const stateOrBytes = (await this.getStateOrBytesByCheckpoint(finalizedCheckpoint))?.state;
|
|
855
|
+
if (!stateOrBytes) {
|
|
856
|
+
// If even the state is not available, we cannot update the custody group count
|
|
857
|
+
this.logger.debug("No finalized state or bytes available to update target custody group count", {
|
|
858
|
+
finalizedEpoch: finalizedCheckpoint.epoch,
|
|
859
|
+
finalizedRoot: finalizedCheckpoint.rootHex,
|
|
860
|
+
});
|
|
861
|
+
return;
|
|
862
|
+
}
|
|
863
|
+
if (stateOrBytes instanceof Uint8Array) {
|
|
864
|
+
effectiveBalances = getEffectiveBalancesFromStateBytes(this.config, stateOrBytes, validatorIndices);
|
|
865
|
+
}
|
|
866
|
+
else {
|
|
867
|
+
effectiveBalances = validatorIndices.map((index) => stateOrBytes.validators.get(index).effectiveBalance ?? 0);
|
|
868
|
+
}
|
|
894
869
|
}
|
|
895
870
|
const targetCustodyGroupCount = getValidatorsCustodyRequirement(this.config, effectiveBalances);
|
|
896
871
|
// Only update if target is increased
|
|
@@ -912,7 +887,7 @@ export class BeaconChain {
|
|
|
912
887
|
const slotsPresent = this.forkChoice.getSlotsPresent(clockSlot - faultInspectionWindow);
|
|
913
888
|
const previousStatus = executionBuilder.status;
|
|
914
889
|
const shouldEnable = slotsPresent >= Math.min(faultInspectionWindow - allowedFaults, clockSlot);
|
|
915
|
-
executionBuilder.updateStatus(shouldEnable);
|
|
890
|
+
executionBuilder.updateStatus(shouldEnable ? BuilderStatus.enabled : BuilderStatus.circuitBreaker);
|
|
916
891
|
// The status changed we should log
|
|
917
892
|
const status = executionBuilder.status;
|
|
918
893
|
const builderLog = {
|
|
@@ -922,10 +897,10 @@ export class BeaconChain {
|
|
|
922
897
|
allowedFaults,
|
|
923
898
|
};
|
|
924
899
|
if (status !== previousStatus) {
|
|
925
|
-
this.logger.info("
|
|
900
|
+
this.logger.info("External builder status updated", builderLog);
|
|
926
901
|
}
|
|
927
902
|
else {
|
|
928
|
-
this.logger.verbose("
|
|
903
|
+
this.logger.verbose("External builder status", builderLog);
|
|
929
904
|
}
|
|
930
905
|
}
|
|
931
906
|
}
|