@lodestar/beacon-node 1.16.0-dev.f2e352ff01 → 1.16.0-rc.1

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.
Files changed (74) hide show
  1. package/README.md +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +14 -2
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/validator/index.js +148 -162
  5. package/lib/api/impl/validator/index.js.map +1 -1
  6. package/lib/api/impl/validator/utils.d.ts +8 -1
  7. package/lib/api/impl/validator/utils.js +18 -0
  8. package/lib/api/impl/validator/utils.js.map +1 -1
  9. package/lib/api/rest/base.js +4 -4
  10. package/lib/api/rest/base.js.map +1 -1
  11. package/lib/chain/archiver/archiveBlocks.d.ts +1 -1
  12. package/lib/chain/archiver/archiveBlocks.js +18 -11
  13. package/lib/chain/archiver/archiveBlocks.js.map +1 -1
  14. package/lib/chain/archiver/index.d.ts +2 -0
  15. package/lib/chain/archiver/index.js +2 -1
  16. package/lib/chain/archiver/index.js.map +1 -1
  17. package/lib/chain/blocks/importBlock.js +16 -3
  18. package/lib/chain/blocks/importBlock.js.map +1 -1
  19. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +9 -4
  20. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  21. package/lib/chain/blocks/verifyBlocksSignatures.js +11 -3
  22. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  23. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +6 -3
  24. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  25. package/lib/chain/emitter.d.ts +1 -1
  26. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +27 -6
  27. package/lib/chain/opPools/aggregatedAttestationPool.js +174 -76
  28. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  29. package/lib/chain/options.d.ts +1 -0
  30. package/lib/chain/options.js.map +1 -1
  31. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
  32. package/lib/eth1/provider/jsonRpcHttpClient.js +4 -5
  33. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  34. package/lib/eth1/provider/jwt.js +1 -0
  35. package/lib/eth1/provider/jwt.js.map +1 -1
  36. package/lib/execution/builder/http.js +1 -1
  37. package/lib/execution/builder/http.js.map +1 -1
  38. package/lib/metrics/metrics/lodestar.d.ts +25 -6
  39. package/lib/metrics/metrics/lodestar.js +70 -30
  40. package/lib/metrics/metrics/lodestar.js.map +1 -1
  41. package/lib/monitoring/system.js +4 -0
  42. package/lib/monitoring/system.js.map +1 -1
  43. package/lib/network/core/networkCoreWorker.js +0 -1
  44. package/lib/network/core/networkCoreWorker.js.map +1 -1
  45. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  46. package/lib/network/discv5/index.d.ts +1 -1
  47. package/lib/network/gossip/topic.d.ts +4 -4
  48. package/lib/network/interface.d.ts +2 -0
  49. package/lib/network/libp2p/index.js +3 -1
  50. package/lib/network/libp2p/index.js.map +1 -1
  51. package/lib/network/peers/peerManager.js +9 -10
  52. package/lib/network/peers/peerManager.js.map +1 -1
  53. package/lib/network/peers/score/score.js +0 -2
  54. package/lib/network/peers/score/score.js.map +1 -1
  55. package/lib/network/processor/gossipHandlers.js +49 -25
  56. package/lib/network/processor/gossipHandlers.js.map +1 -1
  57. package/lib/network/processor/index.js +13 -5
  58. package/lib/network/processor/index.js.map +1 -1
  59. package/lib/network/reqresp/ReqRespBeaconNode.js +0 -1
  60. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  61. package/lib/network/subnets/attnetsService.js +2 -2
  62. package/lib/network/subnets/attnetsService.js.map +1 -1
  63. package/lib/network/subnets/dllAttnetsService.js +2 -2
  64. package/lib/network/subnets/dllAttnetsService.js.map +1 -1
  65. package/lib/network/subnets/syncnetsService.js +2 -2
  66. package/lib/network/subnets/syncnetsService.js.map +1 -1
  67. package/lib/sync/range/range.d.ts +1 -1
  68. package/lib/util/blobs.js +2 -2
  69. package/lib/util/blobs.js.map +1 -1
  70. package/lib/util/clock.d.ts +1 -1
  71. package/lib/util/kzg.js +2 -2
  72. package/lib/util/kzg.js.map +1 -1
  73. package/lib/util/types.d.ts +1 -1
  74. package/package.json +23 -23
package/README.md CHANGED
@@ -18,7 +18,7 @@ You will need to go over the [specification](https://github.com/ethereum/consens
18
18
  ## Getting started
19
19
 
20
20
  - Follow the [installation guide](https://chainsafe.github.io/lodestar/) to install Lodestar.
21
- - Quickly try out the whole stack by [starting a local testnet](https://chainsafe.github.io/lodestar/usage/local).
21
+ - Quickly try out the whole stack by [starting a local testnet](https://chainsafe.github.io/lodestar/advanced-topics/setting-up-a-testnet/).
22
22
 
23
23
  ## Contributors
24
24
 
@@ -8,7 +8,7 @@ import { BlockSource, getBlockInput } from "../../../../chain/blocks/types.js";
8
8
  import { promiseAllMaybeAsync } from "../../../../util/promises.js";
9
9
  import { isOptimisticBlock } from "../../../../util/forkChoice.js";
10
10
  import { computeBlobSidecars } from "../../../../util/blobs.js";
11
- import { BlockError, BlockErrorCode } from "../../../../chain/errors/index.js";
11
+ import { BlockError, BlockErrorCode, BlockGossipError } from "../../../../chain/errors/index.js";
12
12
  import { OpSource } from "../../../../metrics/validatorMonitor.js";
13
13
  import { NetworkEvent } from "../../../../network/index.js";
14
14
  import { validateGossipBlock } from "../../../../chain/validation/block.js";
@@ -59,6 +59,12 @@ export function getBeaconBlockApi({ chain, config, metrics, network, db, }) {
59
59
  await validateGossipBlock(config, chain, signedBlock, fork);
60
60
  }
61
61
  catch (error) {
62
+ if (error instanceof BlockGossipError && error.type.code === BlockErrorCode.ALREADY_KNOWN) {
63
+ chain.logger.debug("Ignoring known block during publishing", valLogMeta);
64
+ // Blocks might already be published by another node as part of a fallback setup or DVT cluster
65
+ // and can reach our node by gossip before the api. The error can be ignored and should not result in a 500 response.
66
+ return;
67
+ }
62
68
  chain.logger.error("Gossip validations failed while publishing the block", valLogMeta, error);
63
69
  chain.persistInvalidSszValue(chain.config.getForkTypes(slot).SignedBeaconBlock, signedBlock, "api_reject_gossip_failure");
64
70
  throw error;
@@ -137,6 +143,13 @@ export function getBeaconBlockApi({ chain, config, metrics, network, db, }) {
137
143
  const publishPromises = [
138
144
  // Send the block, regardless of whether or not it is valid. The API
139
145
  // specification is very clear that this is the desired behaviour.
146
+ //
147
+ // i) Publish blobs and block before importing so that network can see them asap
148
+ // ii) publish blobs first because
149
+ // a) by the times nodes see block, they might decide to pull blobs
150
+ // b) they might require more hops to reach recipients in peerDAS kind of setup where
151
+ // blobs might need to hop between nodes because of partial subnet subscription
152
+ ...blobSidecars.map((blobSidecar) => () => network.publishBlobSidecar(blobSidecar)),
140
153
  () => network.publishBeaconBlock(signedBlock),
141
154
  () =>
142
155
  // there is no rush to persist block since we published it to gossip anyway
@@ -149,7 +162,6 @@ export function getBeaconBlockApi({ chain, config, metrics, network, db, }) {
149
162
  }
150
163
  throw e;
151
164
  }),
152
- ...blobSidecars.map((blobSidecar) => () => network.publishBlobSidecar(blobSidecar)),
153
165
  ];
154
166
  await promiseAllMaybeAsync(publishPromises);
155
167
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/impl/beacon/blocks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/api/impl/beacon/blocks/index.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { GENESIS_SLOT, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT, SYNC_COMMITTE
5
5
  import { MAX_BUILDER_BOOST_FACTOR } from "@lodestar/validator";
6
6
  import { ssz, ProducedBlockSource, isBlindedBeaconBlock, isBlockContents, } from "@lodestar/types";
7
7
  import { ExecutionStatus } from "@lodestar/fork-choice";
8
- import { toHex, racePromisesWithCutoff } from "@lodestar/utils";
8
+ import { toHex, resolveOrRacePromises, prettyWeiToEth } from "@lodestar/utils";
9
9
  import { AttestationError, AttestationErrorCode, GossipAction, SyncCommitteeError, SyncCommitteeErrorCode, } from "../../../chain/errors/index.js";
10
10
  import { validateApiAggregateAndProof } from "../../../chain/validation/index.js";
11
11
  import { ZERO_HASH } from "../../../constants/index.js";
@@ -19,7 +19,7 @@ import { getValidatorStatus } from "../beacon/state/utils.js";
19
19
  import { validateGossipFnRetryUnknownRoot } from "../../../network/processor/gossipHandlers.js";
20
20
  import { SCHEDULER_LOOKAHEAD_FACTOR } from "../../../chain/prepareNextSlot.js";
21
21
  import { ChainEvent } from "../../../chain/index.js";
22
- import { computeSubnetForCommitteesAtSlot, getPubkeysForIndices } from "./utils.js";
22
+ import { computeSubnetForCommitteesAtSlot, getPubkeysForIndices, selectBlockProductionSource } from "./utils.js";
23
23
  /**
24
24
  * If the node is within this many epochs from the head, we declare it to be synced regardless of
25
25
  * the network sync state.
@@ -118,6 +118,32 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
118
118
  function currentEpochWithDisparity() {
119
119
  return computeEpochAtSlot(getCurrentSlot(config, chain.genesisTime - MAX_API_CLOCK_DISPARITY_SEC));
120
120
  }
121
+ function getBlockValueLogInfo(block, source) {
122
+ const executionValue = block.executionPayloadValue;
123
+ const consensusValue = block.consensusBlockValue;
124
+ const totalValue = executionValue + consensusValue;
125
+ if (source == null) {
126
+ return {
127
+ executionPayloadValue: prettyWeiToEth(executionValue),
128
+ consensusBlockValue: prettyWeiToEth(consensusValue),
129
+ blockTotalValue: prettyWeiToEth(totalValue),
130
+ };
131
+ }
132
+ else if (source === ProducedBlockSource.builder) {
133
+ return {
134
+ builderExecutionPayloadValue: prettyWeiToEth(executionValue),
135
+ builderConsensusBlockValue: prettyWeiToEth(consensusValue),
136
+ builderBlockTotalValue: prettyWeiToEth(totalValue),
137
+ };
138
+ }
139
+ else {
140
+ return {
141
+ engineExecutionPayloadValue: prettyWeiToEth(executionValue),
142
+ engineConsensusBlockValue: prettyWeiToEth(consensusValue),
143
+ engineBlockTotalValue: prettyWeiToEth(totalValue),
144
+ };
145
+ }
146
+ }
121
147
  /**
122
148
  * This function is called 1s before next epoch, usually at that time PrepareNextSlotScheduler finishes
123
149
  * so we should have checkpoint state, otherwise wait for up to the slot 1 of epoch.
@@ -352,11 +378,24 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
352
378
  const isBuilderEnabled = ForkSeq[fork] >= ForkSeq.bellatrix &&
353
379
  chain.executionBuilder !== undefined &&
354
380
  builderSelection !== routes.validator.BuilderSelection.ExecutionOnly;
381
+ // At any point either the builder or execution or both flows should be active.
382
+ //
383
+ // Ideally such a scenario should be prevented on startup, but proposerSettingsFile or keymanager
384
+ // configurations could cause a validator pubkey to have builder disabled with builder selection builder only
385
+ // (TODO: independently make sure such an options update is not successful for a validator pubkey)
386
+ //
387
+ // So if builder is disabled ignore builder selection of builder only if caused by user mistake
388
+ // https://github.com/ChainSafe/lodestar/issues/6338
389
+ const isEngineEnabled = !isBuilderEnabled || builderSelection !== routes.validator.BuilderSelection.BuilderOnly;
390
+ if (!isEngineEnabled && !isBuilderEnabled) {
391
+ throw Error(`Internal Error: Neither builder nor execution proposal flow activated isBuilderEnabled=${isBuilderEnabled} builderSelection=${builderSelection}`);
392
+ }
355
393
  const loggerContext = {
356
394
  fork,
357
395
  builderSelection,
358
396
  slot,
359
397
  isBuilderEnabled,
398
+ isEngineEnabled,
360
399
  strictFeeRecipientCheck,
361
400
  // winston logger doesn't like bigint
362
401
  builderBoostFactor: `${builderBoostFactor}`,
@@ -368,176 +407,123 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
368
407
  graffiti: toGraffitiBuffer(graffiti || ""),
369
408
  });
370
409
  logger.debug("Produced common block body", loggerContext);
410
+ logger.verbose("Block production race (builder vs execution) starting", {
411
+ ...loggerContext,
412
+ cutoffMs: BLOCK_PRODUCTION_RACE_CUTOFF_MS,
413
+ timeoutMs: BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
414
+ });
415
+ // use abort controller to stop waiting for both block sources
416
+ const controller = new AbortController();
371
417
  // Start calls for building execution and builder blocks
372
- const blindedBlockPromise = isBuilderEnabled
373
- ? // can't do fee recipient checks as builder bid doesn't return feeRecipient as of now
374
- produceBuilderBlindedBlock(slot, randaoReveal, graffiti, {
375
- feeRecipient,
376
- // skip checking and recomputing head in these individual produce calls
377
- skipHeadChecksAndUpdate: true,
378
- commonBlockBody,
379
- }).catch((e) => {
380
- logger.error("produceBuilderBlindedBlock failed to produce block", { slot }, e);
381
- return null;
382
- })
383
- : null;
384
- const fullBlockPromise =
385
- // At any point either the builder or execution or both flows should be active.
386
- //
387
- // Ideally such a scenario should be prevented on startup, but proposerSettingsFile or keymanager
388
- // configurations could cause a validator pubkey to have builder disabled with builder selection builder only
389
- // (TODO: independently make sure such an options update is not successful for a validator pubkey)
390
- //
391
- // So if builder is disabled ignore builder selection of builderonly if caused by user mistake
392
- !isBuilderEnabled || builderSelection !== routes.validator.BuilderSelection.BuilderOnly
393
- ? // TODO deneb: builderSelection needs to be figured out if to be done beacon side
394
- // || builderSelection !== BuilderSelection.BuilderOnly
395
- produceEngineFullBlockOrContents(slot, randaoReveal, graffiti, {
396
- feeRecipient,
397
- strictFeeRecipientCheck,
398
- // skip checking and recomputing head in these individual produce calls
399
- skipHeadChecksAndUpdate: true,
400
- commonBlockBody,
401
- }).catch((e) => {
402
- logger.error("produceEngineFullBlockOrContents failed to produce block", { slot }, e);
403
- return null;
404
- })
405
- : null;
406
- let blindedBlock, fullBlock;
407
- if (blindedBlockPromise !== null && fullBlockPromise !== null) {
408
- // reference index of promises in the race
409
- const promisesOrder = [ProducedBlockSource.builder, ProducedBlockSource.engine];
410
- [blindedBlock, fullBlock] = await racePromisesWithCutoff([blindedBlockPromise, fullBlockPromise], BLOCK_PRODUCTION_RACE_CUTOFF_MS, BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
411
- // Callback to log the race events for better debugging capability
412
- (event, delayMs, index) => {
413
- const eventRef = index !== undefined ? { source: promisesOrder[index] } : {};
414
- logger.verbose("Block production race (builder vs execution)", {
415
- event,
416
- ...eventRef,
417
- delayMs,
418
- cutoffMs: BLOCK_PRODUCTION_RACE_CUTOFF_MS,
419
- timeoutMs: BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
420
- slot,
421
- });
422
- });
423
- if (blindedBlock instanceof Error) {
424
- // error here means race cutoff exceeded
425
- logger.error("Failed to produce builder block", { slot }, blindedBlock);
426
- blindedBlock = null;
427
- }
428
- if (fullBlock instanceof Error) {
429
- logger.error("Failed to produce execution block", { slot }, fullBlock);
430
- fullBlock = null;
431
- }
432
- }
433
- else if (blindedBlockPromise !== null && fullBlockPromise === null) {
434
- blindedBlock = await blindedBlockPromise;
435
- fullBlock = null;
436
- }
437
- else if (blindedBlockPromise === null && fullBlockPromise !== null) {
438
- blindedBlock = null;
439
- fullBlock = await fullBlockPromise;
440
- }
441
- else {
442
- throw Error(`Internal Error: Neither builder nor execution proposal flow activated isBuilderEnabled=${isBuilderEnabled} builderSelection=${builderSelection}`);
443
- }
444
- const builderPayloadValue = blindedBlock?.executionPayloadValue ?? BigInt(0);
445
- const enginePayloadValue = fullBlock?.executionPayloadValue ?? BigInt(0);
446
- const consensusBlockValueBuilder = blindedBlock?.consensusBlockValue ?? BigInt(0);
447
- const consensusBlockValueEngine = fullBlock?.consensusBlockValue ?? BigInt(0);
448
- const blockValueBuilder = builderPayloadValue + consensusBlockValueBuilder; // Total block value is in wei
449
- const blockValueEngine = enginePayloadValue + consensusBlockValueEngine; // Total block value is in wei
450
- let executionPayloadSource = null;
451
- const shouldOverrideBuilder = fullBlock?.shouldOverrideBuilder ?? false;
452
- // handle the builder override case separately
453
- if (shouldOverrideBuilder === true) {
454
- executionPayloadSource = ProducedBlockSource.engine;
455
- logger.info("Selected engine block as censorship suspected in builder blocks", {
456
- // winston logger doesn't like bigint
457
- enginePayloadValue: `${enginePayloadValue}`,
458
- consensusBlockValueEngine: `${consensusBlockValueEngine}`,
459
- blockValueEngine: `${blockValueEngine}`,
460
- shouldOverrideBuilder,
461
- slot,
418
+ const builderPromise = isBuilderEnabled
419
+ ? produceBuilderBlindedBlock(slot, randaoReveal, graffiti, {
420
+ feeRecipient,
421
+ // can't do fee recipient checks as builder bid doesn't return feeRecipient as of now
422
+ strictFeeRecipientCheck: false,
423
+ // skip checking and recomputing head in these individual produce calls
424
+ skipHeadChecksAndUpdate: true,
425
+ commonBlockBody,
426
+ })
427
+ : Promise.reject(new Error("Builder disabled"));
428
+ const enginePromise = isEngineEnabled
429
+ ? produceEngineFullBlockOrContents(slot, randaoReveal, graffiti, {
430
+ feeRecipient,
431
+ strictFeeRecipientCheck,
432
+ // skip checking and recomputing head in these individual produce calls
433
+ skipHeadChecksAndUpdate: true,
434
+ commonBlockBody,
435
+ }).then((engineBlock) => {
436
+ // Once the engine returns a block, in the event of either:
437
+ // - suspected builder censorship
438
+ // - builder boost factor set to 0 or builder selection `executionalways`
439
+ // we don't need to wait for builder block as engine block will always be selected
440
+ if (engineBlock.shouldOverrideBuilder ||
441
+ builderBoostFactor === BigInt(0) ||
442
+ builderSelection === routes.validator.BuilderSelection.ExecutionAlways) {
443
+ controller.abort();
444
+ }
445
+ return engineBlock;
446
+ })
447
+ : Promise.reject(new Error("Engine disabled"));
448
+ const [builder, engine] = await resolveOrRacePromises([builderPromise, enginePromise], {
449
+ resolveTimeoutMs: BLOCK_PRODUCTION_RACE_CUTOFF_MS,
450
+ raceTimeoutMs: BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
451
+ signal: controller.signal,
452
+ });
453
+ if (builder.status === "pending" && engine.status === "pending") {
454
+ throw Error("Builder and engine both failed to produce the block within timeout");
455
+ }
456
+ if (builder.status === "rejected" && engine.status === "rejected") {
457
+ throw Error("Builder and engine both failed to produce the block");
458
+ }
459
+ if (engine.status === "rejected" && isEngineEnabled) {
460
+ logger.warn("Engine failed to produce the block", {
461
+ ...loggerContext,
462
+ durationMs: engine.durationMs,
463
+ }, engine.reason);
464
+ }
465
+ if (builder.status === "rejected" && isBuilderEnabled) {
466
+ logger.warn("Builder failed to produce the block", {
467
+ ...loggerContext,
468
+ durationMs: builder.durationMs,
469
+ }, builder.reason);
470
+ }
471
+ // handle shouldOverrideBuilder separately
472
+ if (engine.status === "fulfilled" && engine.value.shouldOverrideBuilder) {
473
+ logger.info("Selected engine block: censorship suspected in builder blocks", {
474
+ ...loggerContext,
475
+ durationMs: engine.durationMs,
476
+ shouldOverrideBuilder: engine.value.shouldOverrideBuilder,
477
+ ...getBlockValueLogInfo(engine.value),
462
478
  });
479
+ return { ...engine.value, executionPayloadBlinded: false, executionPayloadSource: ProducedBlockSource.engine };
463
480
  }
464
- else if (fullBlock && blindedBlock) {
465
- switch (builderSelection) {
466
- case routes.validator.BuilderSelection.MaxProfit: {
467
- if (
468
- // explicitly handle the two special values mentioned in spec for builder preferred / engine preferred
469
- builderBoostFactor !== MAX_BUILDER_BOOST_FACTOR &&
470
- (builderBoostFactor === BigInt(0) ||
471
- blockValueEngine >= (blockValueBuilder * builderBoostFactor) / BigInt(100))) {
472
- executionPayloadSource = ProducedBlockSource.engine;
473
- }
474
- else {
475
- executionPayloadSource = ProducedBlockSource.builder;
476
- }
477
- break;
478
- }
479
- case routes.validator.BuilderSelection.ExecutionOnly: {
480
- executionPayloadSource = ProducedBlockSource.engine;
481
- break;
482
- }
483
- // For everything else just select the builder
484
- default: {
485
- executionPayloadSource = ProducedBlockSource.builder;
486
- }
487
- }
488
- logger.info(`Selected executionPayloadSource=${executionPayloadSource} block`, {
489
- builderSelection,
490
- // winston logger doesn't like bigint
491
- builderBoostFactor: `${builderBoostFactor}`,
492
- enginePayloadValue: `${enginePayloadValue}`,
493
- builderPayloadValue: `${builderPayloadValue}`,
494
- consensusBlockValueEngine: `${consensusBlockValueEngine}`,
495
- consensusBlockValueBuilder: `${consensusBlockValueBuilder}`,
496
- blockValueEngine: `${blockValueEngine}`,
497
- blockValueBuilder: `${blockValueBuilder}`,
498
- shouldOverrideBuilder,
499
- slot,
481
+ if (builder.status === "fulfilled" && engine.status !== "fulfilled") {
482
+ logger.info("Selected builder block: no engine block produced", {
483
+ ...loggerContext,
484
+ durationMs: builder.durationMs,
485
+ ...getBlockValueLogInfo(builder.value),
500
486
  });
487
+ return { ...builder.value, executionPayloadBlinded: true, executionPayloadSource: ProducedBlockSource.builder };
501
488
  }
502
- else if (fullBlock && !blindedBlock) {
503
- executionPayloadSource = ProducedBlockSource.engine;
489
+ if (engine.status === "fulfilled" && builder.status !== "fulfilled") {
504
490
  logger.info("Selected engine block: no builder block produced", {
505
- // winston logger doesn't like bigint
506
- enginePayloadValue: `${enginePayloadValue}`,
507
- consensusBlockValueEngine: `${consensusBlockValueEngine}`,
508
- blockValueEngine: `${blockValueEngine}`,
509
- shouldOverrideBuilder,
510
- slot,
491
+ ...loggerContext,
492
+ durationMs: engine.durationMs,
493
+ ...getBlockValueLogInfo(engine.value),
511
494
  });
495
+ return { ...engine.value, executionPayloadBlinded: false, executionPayloadSource: ProducedBlockSource.engine };
512
496
  }
513
- else if (blindedBlock && !fullBlock) {
514
- executionPayloadSource = ProducedBlockSource.builder;
515
- logger.info("Selected builder block: no engine block produced", {
516
- // winston logger doesn't like bigint
517
- builderPayloadValue: `${builderPayloadValue}`,
518
- consensusBlockValueBuilder: `${consensusBlockValueBuilder}`,
519
- blockValueBuilder: `${blockValueBuilder}`,
520
- shouldOverrideBuilder,
521
- slot,
497
+ if (engine.status === "fulfilled" && builder.status === "fulfilled") {
498
+ const executionPayloadSource = selectBlockProductionSource({
499
+ builderBlockValue: builder.value.executionPayloadValue + builder.value.consensusBlockValue,
500
+ engineBlockValue: engine.value.executionPayloadValue + engine.value.consensusBlockValue,
501
+ builderBoostFactor,
502
+ builderSelection,
522
503
  });
504
+ logger.info(`Selected ${executionPayloadSource} block`, {
505
+ ...loggerContext,
506
+ engineDurationMs: engine.durationMs,
507
+ ...getBlockValueLogInfo(engine.value, ProducedBlockSource.engine),
508
+ builderDurationMs: builder.durationMs,
509
+ ...getBlockValueLogInfo(builder.value, ProducedBlockSource.builder),
510
+ });
511
+ if (executionPayloadSource === ProducedBlockSource.engine) {
512
+ return {
513
+ ...engine.value,
514
+ executionPayloadBlinded: false,
515
+ executionPayloadSource,
516
+ };
517
+ }
518
+ else {
519
+ return {
520
+ ...builder.value,
521
+ executionPayloadBlinded: true,
522
+ executionPayloadSource,
523
+ };
524
+ }
523
525
  }
524
- if (executionPayloadSource === null) {
525
- throw Error(`Failed to produce engine or builder block for slot=${slot}`);
526
- }
527
- if (executionPayloadSource === ProducedBlockSource.engine) {
528
- return {
529
- ...fullBlock,
530
- executionPayloadBlinded: false,
531
- executionPayloadSource,
532
- };
533
- }
534
- else {
535
- return {
536
- ...blindedBlock,
537
- executionPayloadBlinded: true,
538
- executionPayloadSource,
539
- };
540
- }
526
+ throw Error("Unreachable error occurred during the builder and execution block production");
541
527
  };
542
528
  const produceBlock = async function produceBlock(slot, randaoReveal, graffiti) {
543
529
  const producedData = await produceEngineFullBlockOrContents(slot, randaoReveal, graffiti);