@lodestar/beacon-node 1.21.0-dev.2b627548d1 → 1.21.0-dev.2f86f4aafd
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/api.js +1 -1
- package/lib/api/impl/api.js.map +1 -1
- package/lib/api/impl/beacon/state/utils.d.ts +4 -4
- package/lib/api/impl/beacon/state/utils.js +20 -16
- package/lib/api/impl/beacon/state/utils.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts +2 -1
- package/lib/api/impl/validator/index.js +6 -5
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/options.d.ts +2 -0
- package/lib/api/options.js +1 -0
- package/lib/api/options.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +53 -47
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/chain.d.ts +14 -1
- package/lib/chain/chain.js +54 -32
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/historicalState/getHistoricalState.d.ts +17 -0
- package/lib/chain/historicalState/getHistoricalState.js +73 -0
- package/lib/chain/historicalState/getHistoricalState.js.map +1 -0
- package/lib/chain/historicalState/index.d.ts +15 -0
- package/lib/chain/historicalState/index.js +50 -0
- package/lib/chain/historicalState/index.js.map +1 -0
- package/lib/chain/historicalState/types.d.ts +52 -0
- package/lib/chain/historicalState/types.js +7 -0
- package/lib/chain/historicalState/types.js.map +1 -0
- package/lib/chain/historicalState/worker.d.ts +2 -0
- package/lib/chain/historicalState/worker.js +198 -0
- package/lib/chain/historicalState/worker.js.map +1 -0
- package/lib/chain/interface.d.ts +11 -0
- package/lib/chain/regen/interface.d.ts +1 -1
- package/lib/chain/regen/queued.d.ts +1 -1
- package/lib/chain/regen/queued.js +23 -12
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/eth1/provider/eth1Provider.js +2 -2
- package/lib/eth1/provider/eth1Provider.js.map +1 -1
- package/lib/execution/builder/http.js +2 -2
- package/lib/execution/builder/http.js.map +1 -1
- package/lib/execution/engine/http.d.ts +14 -2
- package/lib/execution/engine/http.js +29 -2
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/index.js +3 -3
- package/lib/execution/engine/index.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +26 -0
- package/lib/execution/engine/interface.js +20 -0
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +1 -0
- package/lib/execution/engine/mock.js +5 -1
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/types.d.ts +15 -0
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/metrics/server/http.d.ts +1 -1
- package/lib/metrics/server/http.js +3 -2
- package/lib/metrics/server/http.js.map +1 -1
- package/lib/network/libp2p/index.js +1 -2
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/peers/discover.d.ts +1 -1
- package/lib/network/peers/discover.js +11 -2
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/node/nodejs.js +13 -1
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/sync.js +6 -6
- package/lib/sync/sync.js.map +1 -1
- package/lib/util/graffiti.d.ts +4 -0
- package/lib/util/graffiti.js +12 -0
- package/lib/util/graffiti.js.map +1 -1
- package/lib/util/metadata.d.ts +6 -0
- package/lib/util/metadata.js +10 -0
- package/lib/util/metadata.js.map +1 -0
- package/package.json +18 -19
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import worker from "node:worker_threads";
|
|
2
|
+
import { Transfer, expose } from "@chainsafe/threads/worker";
|
|
3
|
+
import { createBeaconConfig, chainConfigFromJson } from "@lodestar/config";
|
|
4
|
+
import { getNodeLogger } from "@lodestar/logger/node";
|
|
5
|
+
import { PubkeyIndexMap, } from "@lodestar/state-transition";
|
|
6
|
+
import { LevelDbController } from "@lodestar/db";
|
|
7
|
+
import { RegistryMetricCreator, collectNodeJSMetrics } from "../../metrics/index.js";
|
|
8
|
+
import { JobFnQueue } from "../../util/queue/fnQueue.js";
|
|
9
|
+
import { BeaconDb } from "../../db/index.js";
|
|
10
|
+
import { getHistoricalState } from "./getHistoricalState.js";
|
|
11
|
+
// most of this setup copied from networkCoreWorker.ts
|
|
12
|
+
const workerData = worker.workerData;
|
|
13
|
+
// TODO: Pass options from main thread for logging
|
|
14
|
+
// TODO: Logging won't be visible in file loggers
|
|
15
|
+
const logger = getNodeLogger(workerData.loggerOpts);
|
|
16
|
+
logger.info("Historical state worker started");
|
|
17
|
+
const config = createBeaconConfig(chainConfigFromJson(workerData.chainConfigJson), workerData.genesisValidatorsRoot);
|
|
18
|
+
const db = new BeaconDb(config, await LevelDbController.create({ name: workerData.dbLocation }, { logger }));
|
|
19
|
+
const abortController = new AbortController();
|
|
20
|
+
// Set up metrics, nodejs, state transition, queue
|
|
21
|
+
const metricsRegister = workerData.metricsEnabled ? new RegistryMetricCreator() : null;
|
|
22
|
+
let historicalStateRegenMetrics;
|
|
23
|
+
let queueMetrics;
|
|
24
|
+
if (metricsRegister) {
|
|
25
|
+
const closeMetrics = collectNodeJSMetrics(metricsRegister, "lodestar_historical_state_worker_");
|
|
26
|
+
abortController.signal.addEventListener("abort", closeMetrics, { once: true });
|
|
27
|
+
historicalStateRegenMetrics = {
|
|
28
|
+
// state transition metrics
|
|
29
|
+
epochTransitionTime: metricsRegister.histogram({
|
|
30
|
+
name: "lodestar_historical_state_stfn_epoch_transition_seconds",
|
|
31
|
+
help: "Time to process a single epoch transition in seconds",
|
|
32
|
+
// Epoch transitions are 100ms on very fast clients, and average 800ms on heavy networks
|
|
33
|
+
buckets: [0.01, 0.05, 0.1, 0.2, 0.5, 0.75, 1, 1.25, 1.5, 3, 10],
|
|
34
|
+
}),
|
|
35
|
+
epochTransitionCommitTime: metricsRegister.histogram({
|
|
36
|
+
name: "lodestar_historical_state_stfn_epoch_transition_commit_seconds",
|
|
37
|
+
help: "Time to call commit after process a single epoch transition in seconds",
|
|
38
|
+
buckets: [0.01, 0.05, 0.1, 0.2, 0.5, 0.75, 1],
|
|
39
|
+
}),
|
|
40
|
+
epochTransitionStepTime: metricsRegister.histogram({
|
|
41
|
+
name: "lodestar_historical_state_stfn_epoch_transition_step_seconds",
|
|
42
|
+
help: "Time to call each step of epoch transition in seconds",
|
|
43
|
+
labelNames: ["step"],
|
|
44
|
+
buckets: [0.01, 0.05, 0.1, 0.2, 0.5, 0.75, 1],
|
|
45
|
+
}),
|
|
46
|
+
processBlockTime: metricsRegister.histogram({
|
|
47
|
+
name: "lodestar_historical_state_stfn_process_block_seconds",
|
|
48
|
+
help: "Time to process a single block in seconds",
|
|
49
|
+
// TODO: Add metrics for each step
|
|
50
|
+
// Block processing can take 5-40ms, 100ms max
|
|
51
|
+
buckets: [0.005, 0.01, 0.02, 0.05, 0.1, 1],
|
|
52
|
+
}),
|
|
53
|
+
processBlockCommitTime: metricsRegister.histogram({
|
|
54
|
+
name: "lodestar_historical_state_stfn_process_block_commit_seconds",
|
|
55
|
+
help: "Time to call commit after process a single block in seconds",
|
|
56
|
+
buckets: [0.005, 0.01, 0.02, 0.05, 0.1, 1],
|
|
57
|
+
}),
|
|
58
|
+
stateHashTreeRootTime: metricsRegister.histogram({
|
|
59
|
+
name: "lodestar_historical_state_stfn_hash_tree_root_seconds",
|
|
60
|
+
help: "Time to compute the hash tree root of a post state in seconds",
|
|
61
|
+
buckets: [0.05, 0.1, 0.2, 0.5, 1, 1.5],
|
|
62
|
+
labelNames: ["source"],
|
|
63
|
+
}),
|
|
64
|
+
preStateBalancesNodesPopulatedMiss: metricsRegister.gauge({
|
|
65
|
+
name: "lodestar_historical_state_stfn_balances_nodes_populated_miss_total",
|
|
66
|
+
help: "Total count state.balances nodesPopulated is false on stfn",
|
|
67
|
+
labelNames: ["source"],
|
|
68
|
+
}),
|
|
69
|
+
preStateBalancesNodesPopulatedHit: metricsRegister.gauge({
|
|
70
|
+
name: "lodestar_historical_state_stfn_balances_nodes_populated_hit_total",
|
|
71
|
+
help: "Total count state.balances nodesPopulated is true on stfn",
|
|
72
|
+
labelNames: ["source"],
|
|
73
|
+
}),
|
|
74
|
+
preStateValidatorsNodesPopulatedMiss: metricsRegister.gauge({
|
|
75
|
+
name: "lodestar_historical_state_stfn_validators_nodes_populated_miss_total",
|
|
76
|
+
help: "Total count state.validators nodesPopulated is false on stfn",
|
|
77
|
+
labelNames: ["source"],
|
|
78
|
+
}),
|
|
79
|
+
preStateValidatorsNodesPopulatedHit: metricsRegister.gauge({
|
|
80
|
+
name: "lodestar_historical_state_stfn_validators_nodes_populated_hit_total",
|
|
81
|
+
help: "Total count state.validators nodesPopulated is true on stfn",
|
|
82
|
+
labelNames: ["source"],
|
|
83
|
+
}),
|
|
84
|
+
preStateClonedCount: metricsRegister.histogram({
|
|
85
|
+
name: "lodestar_historical_state_stfn_state_cloned_count",
|
|
86
|
+
help: "Histogram of cloned count per state every time state.clone() is called",
|
|
87
|
+
buckets: [1, 2, 5, 10, 50, 250],
|
|
88
|
+
}),
|
|
89
|
+
postStateBalancesNodesPopulatedHit: metricsRegister.gauge({
|
|
90
|
+
name: "lodestar_historical_state_stfn_post_state_balances_nodes_populated_hit_total",
|
|
91
|
+
help: "Total count state.validators nodesPopulated is true on stfn for post state",
|
|
92
|
+
}),
|
|
93
|
+
postStateBalancesNodesPopulatedMiss: metricsRegister.gauge({
|
|
94
|
+
name: "lodestar_historical_state_stfn_post_state_balances_nodes_populated_miss_total",
|
|
95
|
+
help: "Total count state.validators nodesPopulated is false on stfn for post state",
|
|
96
|
+
}),
|
|
97
|
+
postStateValidatorsNodesPopulatedHit: metricsRegister.gauge({
|
|
98
|
+
name: "lodestar_historical_state_stfn_post_state_validators_nodes_populated_hit_total",
|
|
99
|
+
help: "Total count state.validators nodesPopulated is true on stfn for post state",
|
|
100
|
+
}),
|
|
101
|
+
postStateValidatorsNodesPopulatedMiss: metricsRegister.gauge({
|
|
102
|
+
name: "lodestar_historical_state_stfn_post_state_validators_nodes_populated_miss_total",
|
|
103
|
+
help: "Total count state.validators nodesPopulated is false on stfn for post state",
|
|
104
|
+
}),
|
|
105
|
+
registerValidatorStatuses: () => { },
|
|
106
|
+
// historical state regen metrics
|
|
107
|
+
regenTime: metricsRegister.histogram({
|
|
108
|
+
name: "lodestar_historical_state_regen_time_seconds",
|
|
109
|
+
help: "Time to regenerate a historical state in seconds",
|
|
110
|
+
// Historical state regen can take up to 3h as of Aug 2024
|
|
111
|
+
// 5m, 10m, 30m, 1h, 3h
|
|
112
|
+
buckets: [5 * 60, 10 * 60, 30 * 60, 60 * 60, 180 * 60],
|
|
113
|
+
}),
|
|
114
|
+
loadStateTime: metricsRegister.histogram({
|
|
115
|
+
name: "lodestar_historical_state_load_nearest_state_time_seconds",
|
|
116
|
+
help: "Time to load a nearest historical state from the database in seconds",
|
|
117
|
+
// 30s, 1m, 2m, 4m
|
|
118
|
+
buckets: [30, 60, 120, 240],
|
|
119
|
+
}),
|
|
120
|
+
stateTransitionTime: metricsRegister.histogram({
|
|
121
|
+
name: "lodestar_historical_state_state_transition_time_seconds",
|
|
122
|
+
help: "Time to run state transition to regen historical state in seconds",
|
|
123
|
+
// 5m, 10m, 30m, 1h, 3h
|
|
124
|
+
buckets: [5 * 60, 10 * 60, 30 * 60, 60 * 60, 180 * 60],
|
|
125
|
+
}),
|
|
126
|
+
stateTransitionBlocks: metricsRegister.histogram({
|
|
127
|
+
name: "lodestar_historical_state_state_transition_blocks",
|
|
128
|
+
help: "Count of blocks processed during state transition to regen historical state",
|
|
129
|
+
// given archiveStateEpochFrequency=1024, it could process up to 32768 blocks
|
|
130
|
+
buckets: [10, 100, 1000, 10000, 30000],
|
|
131
|
+
}),
|
|
132
|
+
stateSerializationTime: metricsRegister.histogram({
|
|
133
|
+
name: "lodestar_historical_state_serialization_time_seconds",
|
|
134
|
+
help: "Time to serialize a historical state in seconds",
|
|
135
|
+
buckets: [0.25, 0.5, 1, 2],
|
|
136
|
+
}),
|
|
137
|
+
regenRequestCount: metricsRegister.gauge({
|
|
138
|
+
name: "lodestar_historical_state_request_count",
|
|
139
|
+
help: "Count of total historical state requests",
|
|
140
|
+
}),
|
|
141
|
+
regenSuccessCount: metricsRegister.gauge({
|
|
142
|
+
name: "lodestar_historical_state_success_count",
|
|
143
|
+
help: "Count of successful historical state regen",
|
|
144
|
+
}),
|
|
145
|
+
regenErrorCount: metricsRegister.gauge({
|
|
146
|
+
name: "lodestar_historical_state_error_count",
|
|
147
|
+
help: "Count of failed historical state regen",
|
|
148
|
+
labelNames: ["reason"],
|
|
149
|
+
}),
|
|
150
|
+
};
|
|
151
|
+
queueMetrics = {
|
|
152
|
+
length: metricsRegister.gauge({
|
|
153
|
+
name: "lodestar_historical_state_queue_length",
|
|
154
|
+
help: "Count of total regen queue length",
|
|
155
|
+
}),
|
|
156
|
+
droppedJobs: metricsRegister.gauge({
|
|
157
|
+
name: "lodestar_historical_state_queue_dropped_jobs_total",
|
|
158
|
+
help: "Count of total regen queue dropped jobs",
|
|
159
|
+
}),
|
|
160
|
+
jobTime: metricsRegister.histogram({
|
|
161
|
+
name: "lodestar_historical_state_queue_job_time_seconds",
|
|
162
|
+
help: "Time to process regen queue job in seconds",
|
|
163
|
+
buckets: [0.01, 0.1, 1, 10, 100],
|
|
164
|
+
}),
|
|
165
|
+
jobWaitTime: metricsRegister.histogram({
|
|
166
|
+
name: "lodestar_historical_state_queue_job_wait_time_seconds",
|
|
167
|
+
help: "Time from job added to the regen queue to starting in seconds",
|
|
168
|
+
buckets: [0.01, 0.1, 1, 10, 100],
|
|
169
|
+
}),
|
|
170
|
+
concurrency: metricsRegister.gauge({
|
|
171
|
+
name: "lodestar_historical_state_queue_concurrency",
|
|
172
|
+
help: "Current concurrency of regen queue",
|
|
173
|
+
}),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
const queue = new JobFnQueue({
|
|
177
|
+
maxConcurrency: workerData.maxConcurrency,
|
|
178
|
+
maxLength: workerData.maxLength,
|
|
179
|
+
signal: abortController.signal,
|
|
180
|
+
}, queueMetrics);
|
|
181
|
+
const pubkey2index = new PubkeyIndexMap();
|
|
182
|
+
const api = {
|
|
183
|
+
async close() {
|
|
184
|
+
abortController.abort();
|
|
185
|
+
},
|
|
186
|
+
async scrapeMetrics() {
|
|
187
|
+
return metricsRegister?.metrics() ?? "";
|
|
188
|
+
},
|
|
189
|
+
async getHistoricalState(slot) {
|
|
190
|
+
historicalStateRegenMetrics?.regenRequestCount.inc();
|
|
191
|
+
const stateBytes = await queue.push(() => getHistoricalState(slot, config, db, pubkey2index, historicalStateRegenMetrics));
|
|
192
|
+
const result = Transfer(stateBytes, [stateBytes.buffer]);
|
|
193
|
+
historicalStateRegenMetrics?.regenSuccessCount.inc();
|
|
194
|
+
return result;
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
expose(api);
|
|
198
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/chain/historicalState/worker.ts"],"names":[],"mappings":"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"}
|
package/lib/chain/interface.d.ts
CHANGED
|
@@ -97,6 +97,11 @@ export interface IBeaconChain {
|
|
|
97
97
|
getHeadState(): CachedBeaconStateAllForks;
|
|
98
98
|
getHeadStateAtCurrentEpoch(regenCaller: RegenCaller): Promise<CachedBeaconStateAllForks>;
|
|
99
99
|
getHeadStateAtEpoch(epoch: Epoch, regenCaller: RegenCaller): Promise<CachedBeaconStateAllForks>;
|
|
100
|
+
getHistoricalStateBySlot(slot: Slot): Promise<{
|
|
101
|
+
state: Uint8Array;
|
|
102
|
+
executionOptimistic: boolean;
|
|
103
|
+
finalized: boolean;
|
|
104
|
+
} | null>;
|
|
100
105
|
/** Returns a local state canonical at `slot` */
|
|
101
106
|
getStateBySlot(slot: Slot, opts?: StateGetOpts): Promise<{
|
|
102
107
|
state: BeaconStateAllForks;
|
|
@@ -115,6 +120,12 @@ export interface IBeaconChain {
|
|
|
115
120
|
executionOptimistic: boolean;
|
|
116
121
|
finalized: boolean;
|
|
117
122
|
} | null;
|
|
123
|
+
/** Return state bytes by checkpoint */
|
|
124
|
+
getStateOrBytesByCheckpoint(checkpoint: CheckpointWithHex): Promise<{
|
|
125
|
+
state: CachedBeaconStateAllForks | Uint8Array;
|
|
126
|
+
executionOptimistic: boolean;
|
|
127
|
+
finalized: boolean;
|
|
128
|
+
} | null>;
|
|
118
129
|
/**
|
|
119
130
|
* Since we can have multiple parallel chains,
|
|
120
131
|
* this methods returns blocks in current chain head according to
|
|
@@ -40,7 +40,7 @@ export interface IStateRegenerator extends IStateRegeneratorInternal {
|
|
|
40
40
|
pruneOnFinalized(finalizedEpoch: Epoch): void;
|
|
41
41
|
processState(blockRootHex: RootHex, postState: CachedBeaconStateAllForks): void;
|
|
42
42
|
addCheckpointState(cp: phase0.Checkpoint, item: CachedBeaconStateAllForks): void;
|
|
43
|
-
updateHeadState(
|
|
43
|
+
updateHeadState(newHead: ProtoBlock, maybeHeadState: CachedBeaconStateAllForks): void;
|
|
44
44
|
updatePreComputedCheckpoint(rootHex: RootHex, epoch: Epoch): number | null;
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
@@ -59,7 +59,7 @@ export declare class QueuedStateRegenerator implements IStateRegenerator {
|
|
|
59
59
|
pruneOnFinalized(finalizedEpoch: number): void;
|
|
60
60
|
processState(blockRootHex: RootHex, postState: CachedBeaconStateAllForks): void;
|
|
61
61
|
addCheckpointState(cp: phase0.Checkpoint, item: CachedBeaconStateAllForks): void;
|
|
62
|
-
updateHeadState(
|
|
62
|
+
updateHeadState(newHead: ProtoBlock, maybeHeadState: CachedBeaconStateAllForks): void;
|
|
63
63
|
updatePreComputedCheckpoint(rootHex: RootHex, epoch: Epoch): number | null;
|
|
64
64
|
/**
|
|
65
65
|
* Get the state to run with `block`.
|
|
@@ -141,25 +141,36 @@ export class QueuedStateRegenerator {
|
|
|
141
141
|
addCheckpointState(cp, item) {
|
|
142
142
|
this.checkpointStateCache.add(cp, item);
|
|
143
143
|
}
|
|
144
|
-
updateHeadState(
|
|
145
|
-
|
|
146
|
-
const
|
|
147
|
-
const
|
|
144
|
+
updateHeadState(newHead, maybeHeadState) {
|
|
145
|
+
const { stateRoot: newHeadStateRoot, blockRoot: newHeadBlockRoot, slot: newHeadSlot } = newHead;
|
|
146
|
+
const maybeHeadStateRoot = toHexString(maybeHeadState.hashTreeRoot());
|
|
147
|
+
const logCtx = {
|
|
148
|
+
newHeadSlot,
|
|
149
|
+
newHeadBlockRoot,
|
|
150
|
+
newHeadStateRoot,
|
|
151
|
+
maybeHeadSlot: maybeHeadState.slot,
|
|
152
|
+
maybeHeadStateRoot,
|
|
153
|
+
};
|
|
154
|
+
const headState = newHeadStateRoot === maybeHeadStateRoot
|
|
148
155
|
? maybeHeadState
|
|
149
|
-
:
|
|
156
|
+
: // maybeHeadState was already in block state cache so we don't transfer the cache
|
|
157
|
+
this.blockStateCache.get(newHeadStateRoot, { dontTransferCache: true });
|
|
150
158
|
if (headState) {
|
|
151
159
|
this.blockStateCache.setHeadState(headState);
|
|
152
160
|
}
|
|
153
161
|
else {
|
|
154
162
|
// Trigger regen on head change if necessary
|
|
155
|
-
this.logger.warn("Head state not available, triggering regen",
|
|
156
|
-
//
|
|
157
|
-
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
// for legacy StateContextCache only
|
|
163
|
+
this.logger.warn("Head state not available, triggering regen", logCtx);
|
|
164
|
+
// for the old BlockStateCacheImpl only
|
|
165
|
+
// - head has changed, so the existing cached head state is no longer useful. Set strong reference to null to free
|
|
166
|
+
// up memory for regen step below. During regen, node won't be functional but eventually head will be available
|
|
167
|
+
// for the new FIFOBlockStateCache, this has no affect
|
|
161
168
|
this.blockStateCache.setHeadState(null);
|
|
162
|
-
|
|
169
|
+
// for the new FIFOBlockStateCache, it's important to reload state to regen head state here if needed
|
|
170
|
+
const allowDiskReload = true;
|
|
171
|
+
// transfer cache here because we want to regen state asap
|
|
172
|
+
const cloneOpts = { dontTransferCache: false };
|
|
173
|
+
this.regen.getState(newHeadStateRoot, RegenCaller.processBlock, cloneOpts, allowDiskReload).then((headStateRegen) => this.blockStateCache.setHeadState(headStateRegen), (e) => this.logger.error("Error on head state regen", logCtx, e));
|
|
163
174
|
}
|
|
164
175
|
}
|
|
165
176
|
updatePreComputedCheckpoint(rootHex, epoch) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queued.js","sourceRoot":"","sources":["../../../src/chain/regen/queued.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAA4B,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAGzF,OAAO,EAAgB,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAA+C,WAAW,EAAE,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AACtH,OAAO,EAAC,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAEvD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,iEAAiE;AACjE,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAU3C;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAUjC,YAAY,OAAsC;
|
|
1
|
+
{"version":3,"file":"queued.js","sourceRoot":"","sources":["../../../src/chain/regen/queued.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAA4B,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAGzF,OAAO,EAAgB,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAA+C,WAAW,EAAE,WAAW,EAAiB,MAAM,gBAAgB,CAAC;AACtH,OAAO,EAAC,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAEvD,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,iEAAiE;AACjE,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAU3C;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAUjC,YAAY,OAAsC;QAqP1C,sBAAiB,GAAG,KAAK,EAAE,YAA0B,EAAsC,EAAE;YACnG,MAAM,aAAa,GAAG;gBACpB,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAgB;gBACtE,UAAU,EAAE,YAAY,CAAC,GAAkB;aAC5C,CAAC;YACF,IAAI,KAAK,CAAC;YACV,IAAI,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACpE,QAAQ,YAAY,CAAC,GAAG,EAAE,CAAC;oBACzB,KAAK,aAAa;wBAChB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC5D,KAAK,oBAAoB;wBACvB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBACnE,KAAK,mBAAmB;wBACtB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAClE,KAAK,UAAU;wBACb,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACpD,MAAM,CAAC,CAAC;YACV,CAAC;oBAAS,CAAC;gBACT,IAAI,KAAK;oBAAE,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QA5QA,IAAI,CAAC,KAAK,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAC9B,IAAI,CAAC,iBAAiB,EACtB,EAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,EACxD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CACzD,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,+BAA+B,CAAC;IAChE,CAAC;IAED,SAAS;QACP,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,gBAAgB;QACd,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,SAAkB;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,eAAe,CACb,KAAkB,EAClB,OAAuB,EAAC,iBAAiB,EAAE,IAAI,EAAC;QAEhD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,UAAU,CAAC;gBACnB,IAAI,EAAE,cAAc,CAAC,uBAAuB;gBAC5C,SAAS,EAAE,KAAK,CAAC,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElD,sEAAsE;QACtE,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAC1F,IAAI,eAAe,IAAI,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;gBAC/E,OAAO,eAAe,CAAC;YACzB,CAAC;QACH,CAAC;QAED,2FAA2F;QAC3F,yFAAyF;QACzF,2CAA2C;QAC3C,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACpE,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,EAAiB;QAC/C,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,EAAiB;QACtC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,IAAgB;QAClC,MAAM,IAAI,GAAG,EAAC,iBAAiB,EAAE,IAAI,EAAC,CAAC;QACvC,OAAO,CACL,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC;YACnE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAC/C,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,cAAqB,EAAE,cAAqB,EAAE,aAAsB;QACpF,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,gBAAgB,CAAC,cAAsB;QACrC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,YAAY,CAAC,YAAqB,EAAE,SAAoC;QACtE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,EAAqB,EAAE,IAA+B;QACvE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,eAAe,CAAC,OAAmB,EAAE,cAAyC;QAC5E,MAAM,EAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAC,GAAG,OAAO,CAAC;QAC9F,MAAM,kBAAkB,GAAG,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG;YACb,WAAW;YACX,gBAAgB;YAChB,gBAAgB;YAChB,aAAa,EAAE,cAAc,CAAC,IAAI;YAClC,kBAAkB;SACnB,CAAC;QACF,MAAM,SAAS,GACb,gBAAgB,KAAK,kBAAkB;YACrC,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,iFAAiF;gBACjF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,CAAC,CAAC;QAE5E,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,MAAM,CAAC,CAAC;YACvE,uCAAuC;YACvC,sHAAsH;YACtH,qHAAqH;YACrH,sDAAsD;YACtD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAExC,qGAAqG;YACrG,MAAM,eAAe,GAAG,IAAI,CAAC;YAC7B,0DAA0D;YAC1D,MAAM,SAAS,GAAG,EAAC,iBAAiB,EAAE,KAAK,EAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,YAAY,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,IAAI,CAC9F,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,cAAc,CAAC,EACrE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,MAAM,EAAE,CAAC,CAAC,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2BAA2B,CAAC,OAAgB,EAAE,KAAY;QACxD,OAAO,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CACf,KAAkB,EAClB,IAAoB,EACpB,OAAoB;QAEpB,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,WAAW,EAAC,CAAC,CAAC;QAE3F,+DAA+D;QAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,WAAW,EAAC,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,EAAqB,EACrB,IAAoB,EACpB,OAAoB;QAEpB,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,kBAAkB,EAAC,CAAC,CAAC;QAElG,8DAA8D;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjF,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,kBAAkB,EAAC,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,EAAC,CAAC,CAAC;IACpF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CACrB,SAAkB,EAClB,IAAU,EACV,IAAoB,EACpB,OAAoB;QAEpB,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,iBAAiB,EAAC,CAAC,CAAC;QAEjG,wEAAwE;QACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAC,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,SAAkB,EAClB,OAAoB,EACpB,OAAuB,EAAC,iBAAiB,EAAE,IAAI,EAAC;QAEhD,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAC,CAAC,CAAC;QAExF,8DAA8D;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,uEAAuE;QACvE,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,EAAC,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAC,CAAC,CAAC;IACjF,CAAC;CA2BF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { toHexString } from "@chainsafe/ssz";
|
|
2
|
-
import { fromHex, isErrorAborted, createElapsedTimeTracker,
|
|
2
|
+
import { fromHex, isErrorAborted, createElapsedTimeTracker, toPrintableUrl } from "@lodestar/utils";
|
|
3
3
|
import { isFetchError } from "@lodestar/api";
|
|
4
4
|
import { linspace } from "../../util/numpy.js";
|
|
5
5
|
import { depositEventTopics, parseDepositLog } from "../utils/depositContract.js";
|
|
@@ -33,7 +33,7 @@ export class Eth1Provider {
|
|
|
33
33
|
jwtVersion: opts.jwtVersion,
|
|
34
34
|
metrics: metrics,
|
|
35
35
|
});
|
|
36
|
-
this.logger?.info("Eth1 provider", { urls: providerUrls.map(
|
|
36
|
+
this.logger?.info("Eth1 provider", { urls: providerUrls.map(toPrintableUrl).toString() });
|
|
37
37
|
this.rpc.emitter.on(JsonRpcHttpClientEvent.RESPONSE, () => {
|
|
38
38
|
const oldState = this.state;
|
|
39
39
|
this.state = Eth1ProviderState.ONLINE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth1Provider.js","sourceRoot":"","sources":["../../../src/eth1/provider/eth1Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"eth1Provider.js","sourceRoot":"","sources":["../../../src/eth1/provider/eth1Provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAGlG,OAAO,EAAa,YAAY,EAAC,MAAM,eAAe,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAC,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAY,iBAAiB,EAAgB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAC,qBAAqB,EAAc,MAAM,eAAe,CAAC;AACjE,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAC,2BAA2B,EAAE,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AACpG,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAC,uBAAuB,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAC,MAAM,YAAY,CAAC;AAyB9F,0DAA0D;AAC1D,MAAM,qBAAqB,GAAY,EAAC,OAAO,EAAE,0BAA0B,EAAC,CAAC;AAC7E,MAAM,oBAAoB,GAAY,EAAC,OAAO,EAAE,kBAAkB,EAAC,CAAC;AACpE,MAAM,kBAAkB,GAAY,EAAC,OAAO,EAAE,gBAAgB,EAAC,CAAC;AAChE,MAAM,kBAAkB,GAAY,EAAC,OAAO,EAAE,gBAAgB,EAAC,CAAC;AAChE,MAAM,WAAW,GAAY,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC;AAElD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,EAAC,cAAc,EAAE,MAAM,EAAC,CAAC,CAAC;AAE7E,MAAM,OAAO,YAAY;IAQvB,YACE,MAAqD,EACrD,IAEC,EACD,MAAoB,EACpB,OAAyC;QAV3C,wFAAwF;QAChF,UAAK,GAAsB,iBAAiB,CAAC,MAAM,CAAC;QAW1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,0BAA0B,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAE3E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAAC;QAChE,IAAI,CAAC,GAAG,GAAG,IAAI,iBAAiB,CAAC,YAAY,EAAE;YAC7C,MAAM;YACN,gGAAgG;YAChG,iBAAiB,EAAE,uBAAuB;YAC1C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YACrE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,EAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC;QAExF,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAEtC,IAAI,QAAQ,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,8BAA8B,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC;YACtF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE;YAC5D,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC;YACxC,CAAC;iBAAM,IAAK,KAAiB,YAAY,YAAY,IAAK,KAAiB,YAAY,oBAAoB,EAAE,CAAC;gBAC5G,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;YACvC,CAAC;iBAAM,IAAI,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAE,KAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvG,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC;YACzC,CAAC;iBAAM,IAAI,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC,QAAQ,CAAE,KAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5G,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC;YAC7C,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC5C,IAAI,iBAAiB,EAAE,EAAE,CAAC;oBACxB,IAAI,CAAC,MAAM,EAAE,KAAK,CAChB,qBAAqB,EACrB;wBACE,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC,kBAAkB,EAAE;qBAC3F,EACD,KAAK,CACN,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,CAAC,6BAA6B,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,SAAiB,EAAE,OAAe;QACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACpC,SAAS;YACT,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,sBAAsB;YACpC,MAAM,EAAE,kBAAkB;SAC3B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,OAAe;QACxD,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAC,CAAC,CAAC,EAC1G,qBAAqB,CACtB,CAAC;QACF,MAAM,MAAM,GAAyB,EAAE,CAAC;QACxC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAA8B;QACnD,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,MAAM,cAAc,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK;QACnB,2DAA2D;QAC3D,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,EAAC,EACzC,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,YAAoB;QACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK;QACnB,2DAA2D;QAC3D,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,EAAC,EACvC,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,MAAM,GAAG,iBAAiB,CAAC;QACjC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CACzC,EAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAC,EACpB,kBAAkB,CACnB,CAAC;QACF,OAAO,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAuC,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAC,CAAC,CAAC;IACrG,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAKb;QACC,MAAM,MAAM,GAAG,aAAa,CAAC;QAC7B,MAAM,UAAU,GAAG;YACjB,GAAG,OAAO;YACV,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;YAC3C,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAClC,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAC,EAC9B,WAAW,CACZ,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,QAA4B;IACzD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACxE,OAAO;QACL,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;QAC3D,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;KAChE,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parseExecutionPayloadAndBlobsBundle, reconstructFullBlockOrContents } from "@lodestar/state-transition";
|
|
2
2
|
import { getClient } from "@lodestar/api/builder";
|
|
3
3
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
4
|
-
import {
|
|
4
|
+
import { toPrintableUrl } from "@lodestar/utils";
|
|
5
5
|
export const defaultExecutionBuilderHttpOpts = {
|
|
6
6
|
enabled: false,
|
|
7
7
|
url: "http://localhost:8661",
|
|
@@ -21,7 +21,7 @@ export class ExecutionBuilderHttp {
|
|
|
21
21
|
headers: opts.userAgent ? { "User-Agent": opts.userAgent } : undefined,
|
|
22
22
|
},
|
|
23
23
|
}, { config, metrics: metrics?.builderHttpClient });
|
|
24
|
-
logger?.info("External builder", { url:
|
|
24
|
+
logger?.info("External builder", { url: toPrintableUrl(baseUrl) });
|
|
25
25
|
this.config = config;
|
|
26
26
|
this.issueLocalFcUWithFeeRecipient = opts.issueLocalFcUWithFeeRecipient;
|
|
27
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/builder/http.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,mCAAmC,EAAE,8BAA8B,EAAC,MAAM,4BAA4B,CAAC;AAG/G,OAAO,EAAC,SAAS,EAA0B,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAC,eAAe,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/builder/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { ForkName } from "@lodestar/params";
|
|
|
3
3
|
import { Logger } from "@lodestar/logger";
|
|
4
4
|
import { IJsonRpcHttpClient } from "../../eth1/provider/jsonRpcHttpClient.js";
|
|
5
5
|
import { Metrics } from "../../metrics/index.js";
|
|
6
|
-
import { ExecutePayloadResponse, IExecutionEngine, PayloadId, PayloadAttributes, BlobsBundle, VersionedHashes, ExecutionEngineState } from "./interface.js";
|
|
6
|
+
import { ExecutePayloadResponse, IExecutionEngine, PayloadId, PayloadAttributes, BlobsBundle, VersionedHashes, ExecutionEngineState, ClientVersion } from "./interface.js";
|
|
7
7
|
import { PayloadIdCache } from "./payloadIdCache.js";
|
|
8
8
|
import { ExecutionPayloadBody } from "./types.js";
|
|
9
9
|
export type ExecutionEngineModules = {
|
|
@@ -31,6 +31,14 @@ export type ExecutionEngineHttpOpts = {
|
|
|
31
31
|
* A version string that will be set in `clv` field of jwt claims
|
|
32
32
|
*/
|
|
33
33
|
jwtVersion?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Lodestar version to be used for `ClientVersion`
|
|
36
|
+
*/
|
|
37
|
+
version?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Lodestar commit to be used for `ClientVersion`
|
|
40
|
+
*/
|
|
41
|
+
commit?: string;
|
|
34
42
|
};
|
|
35
43
|
export declare const defaultExecutionEngineHttpOpts: ExecutionEngineHttpOpts;
|
|
36
44
|
/**
|
|
@@ -44,8 +52,11 @@ export declare const defaultExecutionEngineHttpOpts: ExecutionEngineHttpOpts;
|
|
|
44
52
|
*/
|
|
45
53
|
export declare class ExecutionEngineHttp implements IExecutionEngine {
|
|
46
54
|
private readonly rpc;
|
|
55
|
+
private readonly opts?;
|
|
47
56
|
private logger;
|
|
48
57
|
state: ExecutionEngineState;
|
|
58
|
+
/** Cached EL client version from the latest getClientVersion call */
|
|
59
|
+
clientVersion?: ClientVersion | null;
|
|
49
60
|
readonly payloadIdCache: PayloadIdCache;
|
|
50
61
|
/**
|
|
51
62
|
* A queue to serialize the fcUs and newPayloads calls:
|
|
@@ -58,7 +69,7 @@ export declare class ExecutionEngineHttp implements IExecutionEngine {
|
|
|
58
69
|
*/
|
|
59
70
|
private readonly rpcFetchQueue;
|
|
60
71
|
private jobQueueProcessor;
|
|
61
|
-
constructor(rpc: IJsonRpcHttpClient, { metrics, signal, logger }: ExecutionEngineModules);
|
|
72
|
+
constructor(rpc: IJsonRpcHttpClient, { metrics, signal, logger }: ExecutionEngineModules, opts?: ExecutionEngineHttpOpts | undefined);
|
|
62
73
|
/**
|
|
63
74
|
* `engine_newPayloadV1`
|
|
64
75
|
* From: https://github.com/ethereum/execution-apis/blob/v1.0.0-alpha.6/src/engine/specification.md#engine_newpayloadv1
|
|
@@ -132,6 +143,7 @@ export declare class ExecutionEngineHttp implements IExecutionEngine {
|
|
|
132
143
|
prunePayloadIdCache(): Promise<void>;
|
|
133
144
|
getPayloadBodiesByHash(blockHashes: RootHex[]): Promise<(ExecutionPayloadBody | null)[]>;
|
|
134
145
|
getPayloadBodiesByRange(startBlockNumber: number, blockCount: number): Promise<(ExecutionPayloadBody | null)[]>;
|
|
146
|
+
private getClientVersion;
|
|
135
147
|
private updateEngineState;
|
|
136
148
|
}
|
|
137
149
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -3,7 +3,8 @@ import { ErrorJsonRpcResponse, HttpRpcError, JsonRpcHttpClientEvent, } from "../
|
|
|
3
3
|
import { JobItemQueue } from "../../util/queue/index.js";
|
|
4
4
|
import { EPOCHS_PER_BATCH } from "../../sync/constants.js";
|
|
5
5
|
import { numToQuantity } from "../../eth1/provider/utils.js";
|
|
6
|
-
import {
|
|
6
|
+
import { getLodestarClientVersion } from "../../util/metadata.js";
|
|
7
|
+
import { ExecutionPayloadStatus, ExecutionEngineState, ClientCode, } from "./interface.js";
|
|
7
8
|
import { PayloadIdCache } from "./payloadIdCache.js";
|
|
8
9
|
import { parseExecutionPayload, serializeExecutionPayload, serializeVersionedHashes, serializePayloadAttributes, serializeBeaconBlockRoot, assertReqSizeLimit, deserializeExecutionPayloadBody, } from "./types.js";
|
|
9
10
|
import { getExecutionEngineState } from "./utils.js";
|
|
@@ -37,8 +38,9 @@ const getPayloadOpts = { routeId: "getPayload" };
|
|
|
37
38
|
* https://github.com/ethereum/execution-apis/blob/v1.0.0-alpha.1/src/engine/interop/specification.md
|
|
38
39
|
*/
|
|
39
40
|
export class ExecutionEngineHttp {
|
|
40
|
-
constructor(rpc, { metrics, signal, logger }) {
|
|
41
|
+
constructor(rpc, { metrics, signal, logger }, opts) {
|
|
41
42
|
this.rpc = rpc;
|
|
43
|
+
this.opts = opts;
|
|
42
44
|
// The default state is ONLINE, it will be updated to SYNCING once we receive the first payload
|
|
43
45
|
// This assumption is better than the OFFLINE state, since we can't be sure if the EL is offline and being offline may trigger some notifications
|
|
44
46
|
// It's safer to to avoid false positives and assume that the EL is syncing until we receive the first payload
|
|
@@ -53,6 +55,13 @@ export class ExecutionEngineHttp {
|
|
|
53
55
|
this.updateEngineState(getExecutionEngineState({ payloadError: error, oldState: this.state }));
|
|
54
56
|
});
|
|
55
57
|
this.rpc.emitter.on(JsonRpcHttpClientEvent.RESPONSE, () => {
|
|
58
|
+
if (this.clientVersion === undefined) {
|
|
59
|
+
this.clientVersion = null;
|
|
60
|
+
// This statement should only be called first time receiving response after startup
|
|
61
|
+
this.getClientVersion(getLodestarClientVersion(this.opts)).catch((e) => {
|
|
62
|
+
this.logger.debug("Unable to get execution client version", {}, e);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
56
65
|
this.updateEngineState(getExecutionEngineState({ targetState: ExecutionEngineState.ONLINE, oldState: this.state }));
|
|
57
66
|
});
|
|
58
67
|
}
|
|
@@ -259,6 +268,20 @@ export class ExecutionEngineHttp {
|
|
|
259
268
|
const response = await this.rpc.fetchWithRetries({ method, params: [start, count] });
|
|
260
269
|
return response.map(deserializeExecutionPayloadBody);
|
|
261
270
|
}
|
|
271
|
+
async getClientVersion(clientVersion) {
|
|
272
|
+
const method = "engine_getClientVersionV1";
|
|
273
|
+
const response = await this.rpc.fetchWithRetries({ method, params: [clientVersion] });
|
|
274
|
+
const clientVersions = response.map((cv) => {
|
|
275
|
+
const code = cv.code in ClientCode ? ClientCode[cv.code] : ClientCode.XX;
|
|
276
|
+
return { code, name: cv.name, version: cv.version, commit: cv.commit };
|
|
277
|
+
});
|
|
278
|
+
if (clientVersions.length === 0) {
|
|
279
|
+
throw Error("Received empty client versions array");
|
|
280
|
+
}
|
|
281
|
+
this.clientVersion = clientVersions[0];
|
|
282
|
+
this.logger.debug("Execution client version updated", this.clientVersion);
|
|
283
|
+
return clientVersions;
|
|
284
|
+
}
|
|
262
285
|
updateEngineState(newState) {
|
|
263
286
|
const oldState = this.state;
|
|
264
287
|
if (oldState === newState)
|
|
@@ -266,6 +289,10 @@ export class ExecutionEngineHttp {
|
|
|
266
289
|
switch (newState) {
|
|
267
290
|
case ExecutionEngineState.ONLINE:
|
|
268
291
|
this.logger.info("Execution client became online", { oldState, newState });
|
|
292
|
+
this.getClientVersion(getLodestarClientVersion(this.opts)).catch((e) => {
|
|
293
|
+
this.logger.debug("Unable to get execution client version", {}, e);
|
|
294
|
+
this.clientVersion = null;
|
|
295
|
+
});
|
|
269
296
|
break;
|
|
270
297
|
case ExecutionEngineState.OFFLINE:
|
|
271
298
|
this.logger.error("Execution client went offline", { oldState, newState });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/engine/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAY,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EACL,oBAAoB,EACpB,YAAY,EAEZ,sBAAsB,GAEvB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EACL,sBAAsB,EAOtB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/execution/engine/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { fromHex,
|
|
1
|
+
import { fromHex, toPrintableUrl } from "@lodestar/utils";
|
|
2
2
|
import { JsonRpcHttpClient } from "../../eth1/provider/jsonRpcHttpClient.js";
|
|
3
3
|
import { ExecutionEngineDisabled } from "./disabled.js";
|
|
4
4
|
import { ExecutionEngineHttp, defaultExecutionEngineHttpOpts, } from "./http.js";
|
|
@@ -19,8 +19,8 @@ export function getExecutionEngineHttp(opts, modules) {
|
|
|
19
19
|
jwtId: opts.jwtId,
|
|
20
20
|
jwtVersion: opts.jwtVersion,
|
|
21
21
|
});
|
|
22
|
-
modules.logger.info("Execution client", { urls: opts.urls.map(
|
|
23
|
-
return new ExecutionEngineHttp(rpc, modules);
|
|
22
|
+
modules.logger.info("Execution client", { urls: opts.urls.map(toPrintableUrl).toString() });
|
|
23
|
+
return new ExecutionEngineHttp(rpc, modules, opts);
|
|
24
24
|
}
|
|
25
25
|
export function initializeExecutionEngine(opts, modules) {
|
|
26
26
|
switch (opts.mode) {
|