@lodestar/beacon-node 1.49.0 → 1.50.0-dev.3579e999b5
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/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/index.js +28 -0
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.d.ts +1 -0
- package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
- package/lib/chain/archiveStore/archiveStore.js +26 -3
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/utils/pruneHistory.d.ts +4 -1
- package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -1
- package/lib/chain/archiveStore/utils/pruneHistory.js +4 -3
- package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
- package/lib/db/beacon.d.ts.map +1 -1
- package/lib/db/beacon.js +2 -0
- package/lib/db/beacon.js.map +1 -1
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +5 -4
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/jsonRpcHttpClient.d.ts +2 -1
- package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
- package/lib/execution/engine/jsonRpcHttpClient.js +6 -1
- package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
- package/lib/execution/engine/transportMetrics.d.ts +13 -0
- package/lib/execution/engine/transportMetrics.d.ts.map +1 -0
- package/lib/execution/engine/transportMetrics.js +2 -0
- package/lib/execution/engine/transportMetrics.js.map +1 -0
- package/lib/metrics/metrics/beacon.d.ts +1 -1
- package/lib/metrics/metrics/beacon.d.ts.map +1 -1
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +6 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +10 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/metadata.d.ts +1 -1
- package/lib/network/metadata.d.ts.map +1 -1
- package/lib/network/metadata.js +17 -17
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/peers/datastore.d.ts +9 -9
- package/lib/network/peers/datastore.d.ts.map +1 -1
- package/lib/network/peers/datastore.js +36 -36
- package/lib/network/peers/datastore.js.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +41 -26
- package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -1
- package/lib/util/execution.d.ts +2 -0
- package/lib/util/execution.d.ts.map +1 -1
- package/lib/util/execution.js +6 -6
- package/lib/util/execution.js.map +1 -1
- package/package.json +15 -15
- package/src/api/impl/beacon/state/index.ts +36 -0
- package/src/chain/archiveStore/archiveStore.ts +29 -4
- package/src/chain/archiveStore/utils/pruneHistory.ts +6 -4
- package/src/db/beacon.ts +2 -0
- package/src/execution/engine/http.ts +6 -4
- package/src/execution/engine/jsonRpcHttpClient.ts +9 -2
- package/src/execution/engine/transportMetrics.ts +9 -0
- package/src/metrics/metrics/beacon.ts +1 -1
- package/src/metrics/metrics/lodestar.ts +10 -0
- package/src/network/metadata.ts +17 -17
- package/src/network/peers/datastore.ts +36 -36
- package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +42 -28
- package/src/util/execution.ts +10 -6
|
@@ -6,23 +6,23 @@ import { Key } from "interface-datastore";
|
|
|
6
6
|
* This has a memory issue because all peer data stays in memory and loaded at startup time
|
|
7
7
|
* This is written for libp2p >=0.35, we maintain the same mechanism but with bounded data structure
|
|
8
8
|
* This datastore includes a memory datastore and fallback to db datastore
|
|
9
|
-
* Use an in-memory datastore with last accessed time and
|
|
9
|
+
* Use an in-memory datastore with last accessed time and maxMemoryItems, on start it's empty (lazy load)
|
|
10
10
|
* - get: Search in-memory datastore first, if not found search from db.
|
|
11
11
|
* - If found from db, add back to the in-memory datastore
|
|
12
12
|
* - Update lastAccessedMs
|
|
13
|
-
* - put: move oldest items from memory to db if there are more than
|
|
14
|
-
* - update memory datastore, only update db datastore if there are at least
|
|
13
|
+
* - put: move oldest items from memory to db if there are more than maxMemoryItems items in memory
|
|
14
|
+
* - update memory datastore, only update db datastore if there are at least threshold dirty items
|
|
15
15
|
* - Update lastAccessedMs
|
|
16
16
|
*/
|
|
17
17
|
export class Eth2PeerDataStore extends BaseDatastore {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
dbDatastore;
|
|
19
|
+
memoryDatastore;
|
|
20
20
|
/** Same to PersistentPeerStore of the old libp2p implementation */
|
|
21
|
-
|
|
21
|
+
dirtyItems = new Set();
|
|
22
22
|
/** If there are more dirty items than threshold, commit data to db */
|
|
23
|
-
|
|
23
|
+
threshold;
|
|
24
24
|
/** If there are more memory items than this, prune oldest ones from memory and move to db */
|
|
25
|
-
|
|
25
|
+
maxMemoryItems;
|
|
26
26
|
constructor(dbDatastore, { threshold = 5, maxMemoryItems = 50 } = {}) {
|
|
27
27
|
super();
|
|
28
28
|
if (threshold <= 0 || maxMemoryItems <= 0) {
|
|
@@ -31,31 +31,31 @@ export class Eth2PeerDataStore extends BaseDatastore {
|
|
|
31
31
|
if (threshold > maxMemoryItems) {
|
|
32
32
|
throw Error(`Threshold ${threshold} should be at most maxMemoryItems ${maxMemoryItems}`);
|
|
33
33
|
}
|
|
34
|
-
this.
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
34
|
+
this.dbDatastore = typeof dbDatastore === "string" ? new LevelDatastore(dbDatastore) : dbDatastore;
|
|
35
|
+
this.memoryDatastore = new Map();
|
|
36
|
+
this.threshold = threshold;
|
|
37
|
+
this.maxMemoryItems = maxMemoryItems;
|
|
38
38
|
}
|
|
39
39
|
async open() {
|
|
40
|
-
return this.
|
|
40
|
+
return this.dbDatastore.open();
|
|
41
41
|
}
|
|
42
42
|
async close() {
|
|
43
|
-
return this.
|
|
43
|
+
return this.dbDatastore.close();
|
|
44
44
|
}
|
|
45
45
|
async put(key, val, _options) {
|
|
46
46
|
return this._put(key, val, false);
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Same interface to put with "fromDb" option, if this item is updated back from db
|
|
50
|
-
* Move oldest items from memory data store to db if it's over this.
|
|
50
|
+
* Move oldest items from memory data store to db if it's over this.maxMemoryItems
|
|
51
51
|
*/
|
|
52
52
|
async _put(key, val, fromDb = false) {
|
|
53
|
-
while (this.
|
|
53
|
+
while (this.memoryDatastore.size >= this.maxMemoryItems) {
|
|
54
54
|
// it's likely this is called only 1 time
|
|
55
55
|
await this.pruneMemoryDatastore();
|
|
56
56
|
}
|
|
57
57
|
const keyStr = key.toString();
|
|
58
|
-
const memoryItem = this.
|
|
58
|
+
const memoryItem = this.memoryDatastore.get(keyStr);
|
|
59
59
|
if (memoryItem) {
|
|
60
60
|
// update existing
|
|
61
61
|
memoryItem.lastAccessedMs = Date.now();
|
|
@@ -63,7 +63,7 @@ export class Eth2PeerDataStore extends BaseDatastore {
|
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
65
65
|
// new
|
|
66
|
-
this.
|
|
66
|
+
this.memoryDatastore.set(keyStr, { data: val, lastAccessedMs: Date.now() });
|
|
67
67
|
}
|
|
68
68
|
if (!fromDb)
|
|
69
69
|
await this._addDirtyItem(keyStr);
|
|
@@ -77,14 +77,14 @@ export class Eth2PeerDataStore extends BaseDatastore {
|
|
|
77
77
|
*/
|
|
78
78
|
async get(key, options) {
|
|
79
79
|
const keyStr = key.toString();
|
|
80
|
-
const memoryItem = this.
|
|
80
|
+
const memoryItem = this.memoryDatastore.get(keyStr);
|
|
81
81
|
if (memoryItem) {
|
|
82
82
|
memoryItem.lastAccessedMs = Date.now();
|
|
83
83
|
return memoryItem.data;
|
|
84
84
|
}
|
|
85
85
|
// this throws error if not found
|
|
86
|
-
const dbValue = await this.
|
|
87
|
-
// don't call this.
|
|
86
|
+
const dbValue = await this.dbDatastore.get(key, options);
|
|
87
|
+
// don't call this.memoryDatastore.set directly
|
|
88
88
|
// we want to get through prune() logic with fromDb as true
|
|
89
89
|
await this._put(key, dbValue, true);
|
|
90
90
|
return dbValue;
|
|
@@ -103,27 +103,27 @@ export class Eth2PeerDataStore extends BaseDatastore {
|
|
|
103
103
|
return true;
|
|
104
104
|
}
|
|
105
105
|
async delete(key, options) {
|
|
106
|
-
this.
|
|
107
|
-
await this.
|
|
106
|
+
this.memoryDatastore.delete(key.toString());
|
|
107
|
+
await this.dbDatastore.delete(key, options);
|
|
108
108
|
}
|
|
109
109
|
async *_all(q, options) {
|
|
110
|
-
for (const [key, value] of this.
|
|
110
|
+
for (const [key, value] of this.memoryDatastore.entries()) {
|
|
111
111
|
yield {
|
|
112
112
|
key: new Key(key),
|
|
113
113
|
value: value.data,
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
|
-
yield* this.
|
|
116
|
+
yield* this.dbDatastore.query(q, options);
|
|
117
117
|
}
|
|
118
118
|
async *_allKeys(q, options) {
|
|
119
|
-
for (const key of this.
|
|
119
|
+
for (const key of this.memoryDatastore.keys()) {
|
|
120
120
|
yield new Key(key);
|
|
121
121
|
}
|
|
122
|
-
yield* this.
|
|
122
|
+
yield* this.dbDatastore.queryKeys(q, options);
|
|
123
123
|
}
|
|
124
124
|
async _addDirtyItem(keyStr) {
|
|
125
|
-
this.
|
|
126
|
-
if (this.
|
|
125
|
+
this.dirtyItems.add(keyStr);
|
|
126
|
+
if (this.dirtyItems.size >= this.threshold) {
|
|
127
127
|
try {
|
|
128
128
|
await this._commitData();
|
|
129
129
|
}
|
|
@@ -131,15 +131,15 @@ export class Eth2PeerDataStore extends BaseDatastore {
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
async _commitData() {
|
|
134
|
-
const batch = this.
|
|
135
|
-
for (const keyStr of this.
|
|
136
|
-
const memoryItem = this.
|
|
134
|
+
const batch = this.dbDatastore.batch();
|
|
135
|
+
for (const keyStr of this.dirtyItems) {
|
|
136
|
+
const memoryItem = this.memoryDatastore.get(keyStr);
|
|
137
137
|
if (memoryItem) {
|
|
138
138
|
batch.put(new Key(keyStr), memoryItem.data);
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
await batch.commit();
|
|
142
|
-
this.
|
|
142
|
+
this.dirtyItems.clear();
|
|
143
143
|
}
|
|
144
144
|
/**
|
|
145
145
|
* Prune from memory and move to db
|
|
@@ -148,7 +148,7 @@ export class Eth2PeerDataStore extends BaseDatastore {
|
|
|
148
148
|
let oldestAccessedMs = Date.now() + 1000;
|
|
149
149
|
let oldestKey = undefined;
|
|
150
150
|
let oldestValue = undefined;
|
|
151
|
-
for (const [key, value] of this.
|
|
151
|
+
for (const [key, value] of this.memoryDatastore) {
|
|
152
152
|
if (value.lastAccessedMs < oldestAccessedMs) {
|
|
153
153
|
oldestAccessedMs = value.lastAccessedMs;
|
|
154
154
|
oldestKey = key;
|
|
@@ -156,8 +156,8 @@ export class Eth2PeerDataStore extends BaseDatastore {
|
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
if (oldestKey && oldestValue) {
|
|
159
|
-
await this.
|
|
160
|
-
this.
|
|
159
|
+
await this.dbDatastore.put(new Key(oldestKey), oldestValue);
|
|
160
|
+
this.memoryDatastore.delete(oldestKey);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datastore.js","sourceRoot":"","sources":["../../../src/network/peers/datastore.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAC,GAAG,EAAwB,MAAM,qBAAqB,CAAC;AAU/D;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAC1C,
|
|
1
|
+
{"version":3,"file":"datastore.js","sourceRoot":"","sources":["../../../src/network/peers/datastore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionPayloadEnvelopesByRoot.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAK9E,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"executionPayloadEnvelopesByRoot.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAK9E,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAC,sCAAsC,EAAC,MAAM,wBAAwB,CAAC;AAG9E,wBAAuB,iCAAiC,CACtD,WAAW,EAAE,sCAAsC,EACnD,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,aAAa,CAAC,gBAAgB,CAAC,CAsEjC"}
|
|
@@ -2,14 +2,20 @@ import { RespStatus, ResponseError } from "@lodestar/reqresp";
|
|
|
2
2
|
import { computeEpochAtSlot } from "@lodestar/state-transition";
|
|
3
3
|
import { toRootHex } from "@lodestar/utils";
|
|
4
4
|
import { EnvelopeReconstructionError } from "../../../chain/errors/index.js";
|
|
5
|
+
import { MAX_BODIES_PER_REQUEST } from "../../../util/execution.js";
|
|
5
6
|
import { prettyPrintPeerId } from "../../util.js";
|
|
6
7
|
export async function* onExecutionPayloadEnvelopesByRoot(requestBody, chain, db, peerId, peerClient) {
|
|
7
8
|
// The gloas req/resp spec uses MIN_EPOCHS_FOR_BLOCK_REQUESTS to define the minimum range peers MUST serve.
|
|
8
9
|
// Archival nodes may still serve older retained payloads to allow genesis sync.
|
|
9
|
-
// Resolve slots first so archived
|
|
10
|
+
// Resolve slots first so archived envelopes can be reconstructed in EL batches.
|
|
11
|
+
// Duplicate roots are served once, since each archived envelope costs an EL fetch and a rebuild.
|
|
10
12
|
const requests = [];
|
|
13
|
+
const seenRoots = new Set();
|
|
11
14
|
for (const root of requestBody) {
|
|
12
15
|
const rootHex = toRootHex(root);
|
|
16
|
+
if (seenRoots.has(rootHex))
|
|
17
|
+
continue;
|
|
18
|
+
seenRoots.add(rootHex);
|
|
13
19
|
const block = chain.forkChoice.getBlockHexDefaultStatus(rootHex);
|
|
14
20
|
// If the block is not in fork choice, it may be finalized. Attempt to find its slot in block archive
|
|
15
21
|
const slot = block ? block.slot : await db.blockArchive.getSlotByRoot(root);
|
|
@@ -23,33 +29,42 @@ export async function* onExecutionPayloadEnvelopesByRoot(requestBody, chain, db,
|
|
|
23
29
|
}
|
|
24
30
|
requests.push({ blockSlot: slot, blockRootHex: rootHex });
|
|
25
31
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
// Yield between EL batches so the first response does not wait for the entire request.
|
|
33
|
+
let yielded = 0;
|
|
34
|
+
for (let i = 0; i < requests.length; i += MAX_BODIES_PER_REQUEST) {
|
|
35
|
+
const batch = requests.slice(i, i + MAX_BODIES_PER_REQUEST);
|
|
36
|
+
let envelopesBytes;
|
|
37
|
+
try {
|
|
38
|
+
// By-root allows omission, so a mismatched envelope is left out rather than failing the response.
|
|
39
|
+
envelopesBytes = await chain.getSerializedExecutionPayloadEnvelopes(batch, "omit");
|
|
34
40
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
boundary: chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(blockSlot)),
|
|
44
|
-
};
|
|
41
|
+
catch (e) {
|
|
42
|
+
if (e instanceof EnvelopeReconstructionError) {
|
|
43
|
+
// By-root permits partial responses, so an EL failure can end the response here.
|
|
44
|
+
if (yielded > 0)
|
|
45
|
+
return;
|
|
46
|
+
throw new ResponseError(RespStatus.RESOURCE_UNAVAILABLE, `Failed to reconstruct archived envelopes: ${e.message}`);
|
|
47
|
+
}
|
|
48
|
+
throw e;
|
|
45
49
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
for (let j = 0; j < batch.length; j++) {
|
|
51
|
+
const { blockSlot, blockRootHex } = batch[j];
|
|
52
|
+
const envelopeBytes = envelopesBytes[j];
|
|
53
|
+
if (envelopeBytes) {
|
|
54
|
+
yielded++;
|
|
55
|
+
yield {
|
|
56
|
+
data: envelopeBytes,
|
|
57
|
+
boundary: chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(blockSlot)),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
chain.logger.debug("Cannot serve ExecutionPayloadEnvelopesByRoot: envelope not found", {
|
|
62
|
+
slot: blockSlot,
|
|
63
|
+
root: blockRootHex,
|
|
64
|
+
peer: prettyPrintPeerId(peerId),
|
|
65
|
+
client: peerClient,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
53
68
|
}
|
|
54
69
|
}
|
|
55
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executionPayloadEnvelopesByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAmB,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,2BAA2B,EAAC,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"executionPayloadEnvelopesByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts"],"names":[],"mappings":"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"}
|
package/lib/util/execution.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export declare function getBlobSidecarsFromExecution(config: ChainForkConfig, ex
|
|
|
25
25
|
* Post gloas, immediately when beacon block is successfully imported and PayloadEnvelopeInput is created.
|
|
26
26
|
*/
|
|
27
27
|
export declare function getDataColumnSidecarsFromExecution(config: ChainForkConfig, executionEngine: IExecutionEngine, emitter: ChainEventEmitter, input: IBlockInput | PayloadEnvelopeInput, metrics: Metrics | null, blobAndProofBuffers?: Uint8Array[]): Promise<DataColumnEngineResult>;
|
|
28
|
+
/** engine_getPayloadBodiesByHashV2: every EL must accept requests of up to 32 hashes, larger ones may fail with -38004 */
|
|
29
|
+
export declare const MAX_BODIES_PER_REQUEST = 32;
|
|
28
30
|
type SlotEnvelopeBytes = {
|
|
29
31
|
slot: Slot;
|
|
30
32
|
envelopeBytes: Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAuC,IAAI,EAAS,KAAK,EAAgC,MAAM,iBAAiB,CAAC;AACxH,OAAO,EAAC,MAAM,EAA4B,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAmB,WAAW,EAAC,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAC,oBAAoB,EAA6B,MAAM,+CAA+C,CAAC;AAC/G,OAAO,EAAa,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,2BAA2B,EAE5B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAU5C,oBAAY,sBAAsB;IAChC,OAAO,aAAa;IAEpB,gBAAgB,uBAAuB;IAEvC,mBAAmB,2BAA2B;IAE9C,YAAY,kBAAkB;IAE9B,eAAe,qBAAqB;IAEpC,WAAW,iBAAiB;IAC5B,MAAM,WAAW;CAClB;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,WAAW,iBAqFxB;AAED;;;;;GAKG;AACH,wBAAsB,kCAAkC,CACtD,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,WAAW,GAAG,oBAAoB,EACzC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,mBAAmB,CAAC,EAAE,UAAU,EAAE,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAgHjC;
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAuC,IAAI,EAAS,KAAK,EAAgC,MAAM,iBAAiB,CAAC;AACxH,OAAO,EAAC,MAAM,EAA4B,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAmB,WAAW,EAAC,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAC,oBAAoB,EAA6B,MAAM,+CAA+C,CAAC;AAC/G,OAAO,EAAa,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,2BAA2B,EAE5B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAU5C,oBAAY,sBAAsB;IAChC,OAAO,aAAa;IAEpB,gBAAgB,uBAAuB;IAEvC,mBAAmB,2BAA2B;IAE9C,YAAY,kBAAkB;IAE9B,eAAe,qBAAqB;IAEpC,WAAW,iBAAiB;IAC5B,MAAM,WAAW;CAClB;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,WAAW,iBAqFxB;AAED;;;;;GAKG;AACH,wBAAsB,kCAAkC,CACtD,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,WAAW,GAAG,oBAAoB,EACzC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,mBAAmB,CAAC,EAAE,UAAU,EAAE,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAgHjC;AAED,0HAA0H;AAC1H,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,KAAK,iBAAiB,GAAG;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,UAAU,CAAA;CAAC,CAAC;AAIjE,8DAA8D;AAC9D,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzD,MAAM,MAAM,WAAW;AACrB,sEAAsE;AACpE;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAC;AACrC,wEAAwE;GACtE;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,2BAA2B,CAAA;CAAC,CAAC;AAEzE;;;;;;;;;;GAUG;AACH,wBAAuB,2CAA2C,CAChE,EAAE,EAAE,SAAS,EACb,eAAe,EAAE,gBAAgB,EACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,IAAI,GACZ,aAAa,CAAC,iBAAiB,CAAC,CAclC;AAyCD;;;;GAIG;AACH,wBAAsB,oCAAoC,CACxD,eAAe,EAAE,gBAAgB,EACjC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,eAAe,EAAE,KAAK,CAAC,oCAAoC,EAAE,GAC5D,OAAO,CAAC,CAAC,KAAK,CAAC,8BAA8B,GAAG,WAAW,CAAC,EAAE,CAAC,CAYjE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,8BAA8B,GAAG,WAAW,GAAG,MAAM,IAAI,WAAW,CAE/G"}
|
package/lib/util/execution.js
CHANGED
|
@@ -198,8 +198,8 @@ export async function getDataColumnSidecarsFromExecution(config, executionEngine
|
|
|
198
198
|
metrics?.dataColumns.bySource.inc({ source: BlockInputSource.engine }, previouslyMissingColumns.length - alreadyAddedColumnsCount);
|
|
199
199
|
return DataColumnEngineResult.SuccessResolved;
|
|
200
200
|
}
|
|
201
|
-
/** engine_getPayloadBodiesByHashV2:
|
|
202
|
-
const
|
|
201
|
+
/** engine_getPayloadBodiesByHashV2: every EL must accept requests of up to 32 hashes, larger ones may fail with -38004 */
|
|
202
|
+
export const MAX_BODIES_PER_REQUEST = 32;
|
|
203
203
|
/**
|
|
204
204
|
* Stream finalized envelopes over [startSlot, endSlot) as serialized bytes, rebuilding header
|
|
205
205
|
* entries from EL bodies 32 per round-trip.
|
|
@@ -216,7 +216,7 @@ export async function* reconstructExecutionPayloadEnvelopesByRange(db, execution
|
|
|
216
216
|
let batch = [];
|
|
217
217
|
for await (const { key, value: bytes } of archive.binaryEntriesStream({ gte: startSlot, lt: endSlot })) {
|
|
218
218
|
batch.push({ slot: archive.decodeKey(key), ...decodeArchivedEnvelope(bytes) });
|
|
219
|
-
if (batch.length ===
|
|
219
|
+
if (batch.length === MAX_BODIES_PER_REQUEST) {
|
|
220
220
|
yield* reconstructBatch(executionEngine, logger, metrics, batch);
|
|
221
221
|
batch = [];
|
|
222
222
|
}
|
|
@@ -263,8 +263,8 @@ async function* reconstructBatch(executionEngine, logger, metrics, batch) {
|
|
|
263
263
|
*/
|
|
264
264
|
export async function reconstructExecutionPayloadEnvelopes(executionEngine, metrics, headerEnvelopes) {
|
|
265
265
|
const out = [];
|
|
266
|
-
for (let i = 0; i < headerEnvelopes.length; i +=
|
|
267
|
-
out.push(...(await reconstructEnvelopesBatch(executionEngine, metrics, headerEnvelopes.slice(i, i +
|
|
266
|
+
for (let i = 0; i < headerEnvelopes.length; i += MAX_BODIES_PER_REQUEST) {
|
|
267
|
+
out.push(...(await reconstructEnvelopesBatch(executionEngine, metrics, headerEnvelopes.slice(i, i + MAX_BODIES_PER_REQUEST))));
|
|
268
268
|
}
|
|
269
269
|
return out;
|
|
270
270
|
}
|
|
@@ -302,7 +302,7 @@ async function reconstructEnvelopesBatch(executionEngine, metrics, headerEnvelop
|
|
|
302
302
|
withdrawals: body.withdrawals,
|
|
303
303
|
blockAccessList: body.blockAccessList,
|
|
304
304
|
});
|
|
305
|
-
metrics?.payloadEnvelopeReconstruction.envelopes.inc({ result: "
|
|
305
|
+
metrics?.payloadEnvelopeReconstruction.envelopes.inc({ result: "success" });
|
|
306
306
|
return envelope;
|
|
307
307
|
}
|
|
308
308
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.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.
|
|
14
|
+
"version": "1.50.0-dev.3579e999b5",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -127,17 +127,17 @@
|
|
|
127
127
|
"@libp2p/prometheus-metrics": "^5.0.28",
|
|
128
128
|
"@libp2p/tcp": "^11.0.27",
|
|
129
129
|
"@libp2p/utils": "^7.4.0",
|
|
130
|
-
"@lodestar/api": "^1.
|
|
131
|
-
"@lodestar/config": "^1.
|
|
132
|
-
"@lodestar/db": "^1.
|
|
133
|
-
"@lodestar/fork-choice": "^1.
|
|
134
|
-
"@lodestar/logger": "^1.
|
|
135
|
-
"@lodestar/params": "^1.
|
|
136
|
-
"@lodestar/reqresp": "^1.
|
|
137
|
-
"@lodestar/state-transition": "^1.
|
|
138
|
-
"@lodestar/types": "^1.
|
|
139
|
-
"@lodestar/utils": "^1.
|
|
140
|
-
"@lodestar/validator": "^1.
|
|
130
|
+
"@lodestar/api": "^1.50.0-dev.3579e999b5",
|
|
131
|
+
"@lodestar/config": "^1.50.0-dev.3579e999b5",
|
|
132
|
+
"@lodestar/db": "^1.50.0-dev.3579e999b5",
|
|
133
|
+
"@lodestar/fork-choice": "^1.50.0-dev.3579e999b5",
|
|
134
|
+
"@lodestar/logger": "^1.50.0-dev.3579e999b5",
|
|
135
|
+
"@lodestar/params": "^1.50.0-dev.3579e999b5",
|
|
136
|
+
"@lodestar/reqresp": "^1.50.0-dev.3579e999b5",
|
|
137
|
+
"@lodestar/state-transition": "^1.50.0-dev.3579e999b5",
|
|
138
|
+
"@lodestar/types": "^1.50.0-dev.3579e999b5",
|
|
139
|
+
"@lodestar/utils": "^1.50.0-dev.3579e999b5",
|
|
140
|
+
"@lodestar/validator": "^1.50.0-dev.3579e999b5",
|
|
141
141
|
"@multiformats/multiaddr": "^13.0.1",
|
|
142
142
|
"datastore-core": "^12.0.1",
|
|
143
143
|
"datastore-level": "^13.0.1",
|
|
@@ -158,8 +158,8 @@
|
|
|
158
158
|
"devDependencies": {
|
|
159
159
|
"@libp2p/interface-internal": "^3.1.12",
|
|
160
160
|
"@libp2p/logger": "^6.2.13",
|
|
161
|
-
"@lodestar/spec-test-util": "^1.
|
|
162
|
-
"@lodestar/test-utils": "^1.
|
|
161
|
+
"@lodestar/spec-test-util": "^1.50.0-dev.3579e999b5",
|
|
162
|
+
"@lodestar/test-utils": "^1.50.0-dev.3579e999b5",
|
|
163
163
|
"@types/js-yaml": "^4.0.5",
|
|
164
164
|
"@types/qs": "^6.9.7",
|
|
165
165
|
"@types/tmp": "^0.2.3",
|
|
@@ -174,5 +174,5 @@
|
|
|
174
174
|
"beacon",
|
|
175
175
|
"blockchain"
|
|
176
176
|
],
|
|
177
|
-
"gitHead": "
|
|
177
|
+
"gitHead": "608bcdcb8af0553ea0e9230470c95ccca3ab3dba"
|
|
178
178
|
}
|
|
@@ -441,5 +441,41 @@ export function getBeaconStateApi({
|
|
|
441
441
|
meta: {executionOptimistic, finalized, version: fork},
|
|
442
442
|
};
|
|
443
443
|
},
|
|
444
|
+
|
|
445
|
+
async getBuilderPendingPayments({stateId}, context) {
|
|
446
|
+
const {state, executionOptimistic, finalized} = await getState(stateId);
|
|
447
|
+
const fork = state.forkName;
|
|
448
|
+
|
|
449
|
+
if (!isStatePostGloas(state)) {
|
|
450
|
+
throw new ApiError(400, `Cannot retrieve pending builder payments for pre-gloas state fork=${fork}`);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
const builderPendingPayments = state.builderPendingPayments;
|
|
454
|
+
|
|
455
|
+
return {
|
|
456
|
+
data: context?.returnBytes
|
|
457
|
+
? ssz.gloas.BuilderPendingPayments.serialize(builderPendingPayments)
|
|
458
|
+
: builderPendingPayments,
|
|
459
|
+
meta: {executionOptimistic, finalized, version: fork},
|
|
460
|
+
};
|
|
461
|
+
},
|
|
462
|
+
|
|
463
|
+
async getBuilderPendingWithdrawals({stateId}, context) {
|
|
464
|
+
const {state, executionOptimistic, finalized} = await getState(stateId);
|
|
465
|
+
const fork = state.forkName;
|
|
466
|
+
|
|
467
|
+
if (!isStatePostGloas(state)) {
|
|
468
|
+
throw new ApiError(400, `Cannot retrieve pending builder withdrawals for pre-gloas state fork=${fork}`);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
const builderPendingWithdrawals = state.builderPendingWithdrawals;
|
|
472
|
+
|
|
473
|
+
return {
|
|
474
|
+
data: context?.returnBytes
|
|
475
|
+
? ssz.gloas.BuilderPendingWithdrawals.serialize(builderPendingWithdrawals)
|
|
476
|
+
: builderPendingWithdrawals,
|
|
477
|
+
meta: {executionOptimistic, finalized, version: fork},
|
|
478
|
+
};
|
|
479
|
+
},
|
|
444
480
|
};
|
|
445
481
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
2
2
|
import {LoggerNode} from "@lodestar/logger/node";
|
|
3
3
|
import {SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
4
|
+
import {Slot} from "@lodestar/types";
|
|
4
5
|
import {Checkpoint} from "@lodestar/types/phase0";
|
|
5
6
|
import {callFnWhenAwait} from "@lodestar/utils";
|
|
6
7
|
import {IBeaconDb} from "../../db/index.js";
|
|
@@ -47,6 +48,8 @@ export class ArchiveStore {
|
|
|
47
48
|
private jobQueue: JobItemQueue<[CheckpointWithHex], void>;
|
|
48
49
|
|
|
49
50
|
private archiveDataEpochs?: number;
|
|
51
|
+
// Finalized state writes are monotonic; reset on restart to include the newly persisted anchor.
|
|
52
|
+
private statePruneFromSlot: Slot = 0;
|
|
50
53
|
private readonly statesArchiverStrategy: StateArchiveStrategy;
|
|
51
54
|
private readonly chain: IBeaconChain;
|
|
52
55
|
private readonly db: IBeaconDb;
|
|
@@ -103,7 +106,7 @@ export class ArchiveStore {
|
|
|
103
106
|
if (this.opts.pruneHistory) {
|
|
104
107
|
// prune ALL stale data before starting
|
|
105
108
|
this.logger.info("Pruning historical data");
|
|
106
|
-
const
|
|
109
|
+
const {stateCutoffSlot} = await callFnWhenAwait(
|
|
107
110
|
pruneHistory(
|
|
108
111
|
this.chain.config,
|
|
109
112
|
this.db,
|
|
@@ -116,7 +119,27 @@ export class ArchiveStore {
|
|
|
116
119
|
30_000,
|
|
117
120
|
this.signal
|
|
118
121
|
);
|
|
119
|
-
this.
|
|
122
|
+
this.statePruneFromSlot = stateCutoffSlot;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Initialize earliestAvailableSlot from the earliest block actually retained (after any pruning
|
|
126
|
+
// above), rather than the anchor state slot set in the constructor. On an in-place restart the DB
|
|
127
|
+
// still holds finalized history below the anchor; leaving the value at the anchor makes the node
|
|
128
|
+
// reject by_range requests (beacon_blocks, execution_payload_envelopes and data_column_sidecars
|
|
129
|
+
// all gate on this slot) for data it still retains. An empty archive (e.g. a fresh checkpoint
|
|
130
|
+
// sync with nothing below the anchor) leaves the constructor's anchor slot in place.
|
|
131
|
+
const earliestArchivedBlockSlot = await this.db.blockArchive.firstKey();
|
|
132
|
+
if (earliestArchivedBlockSlot != null) {
|
|
133
|
+
const oldEarliestAvailableSlot = this.chain.earliestAvailableSlot;
|
|
134
|
+
this.chain.earliestAvailableSlot = earliestArchivedBlockSlot;
|
|
135
|
+
this.logger.verbose("Initialized earliestAvailableSlot from retained block archive", {
|
|
136
|
+
oldEarliestAvailableSlot,
|
|
137
|
+
newEarliestAvailableSlot: earliestArchivedBlockSlot,
|
|
138
|
+
});
|
|
139
|
+
} else {
|
|
140
|
+
this.logger.verbose("Empty block archive on init, keeping anchor earliestAvailableSlot", {
|
|
141
|
+
earliestAvailableSlot: this.chain.earliestAvailableSlot,
|
|
142
|
+
});
|
|
120
143
|
}
|
|
121
144
|
|
|
122
145
|
if (this.opts.serveHistoricalState) {
|
|
@@ -236,14 +259,16 @@ export class ArchiveStore {
|
|
|
236
259
|
|
|
237
260
|
if (this.opts.pruneHistory) {
|
|
238
261
|
timer = this.metrics?.processFinalizedCheckpoint.durationByTask.startTimer();
|
|
239
|
-
const blockCutoffSlot = await pruneHistory(
|
|
262
|
+
const {blockCutoffSlot, stateCutoffSlot} = await pruneHistory(
|
|
240
263
|
this.chain.config,
|
|
241
264
|
this.db,
|
|
242
265
|
this.logger,
|
|
243
266
|
this.metrics,
|
|
244
267
|
finalizedEpoch,
|
|
245
|
-
this.chain.clock.currentEpoch
|
|
268
|
+
this.chain.clock.currentEpoch,
|
|
269
|
+
this.statePruneFromSlot
|
|
246
270
|
);
|
|
271
|
+
this.statePruneFromSlot = stateCutoffSlot;
|
|
247
272
|
this.chain.earliestAvailableSlot = Math.max(this.chain.earliestAvailableSlot, blockCutoffSlot);
|
|
248
273
|
timer?.({source: ArchiveStoreTask.PruneHistory});
|
|
249
274
|
}
|