@lodestar/beacon-node 1.16.0-dev.d6a7a3982b → 1.16.0-dev.da0bcc8f19

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/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
 
@@ -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, true),
128
+ consensusBlockValue: prettyWeiToEth(consensusValue, true),
129
+ blockTotalValue: prettyWeiToEth(totalValue, true),
130
+ };
131
+ }
132
+ else if (source === ProducedBlockSource.builder) {
133
+ return {
134
+ builderExecutionPayloadValue: prettyWeiToEth(executionValue, true),
135
+ builderConsensusBlockValue: prettyWeiToEth(consensusValue, true),
136
+ builderBlockTotalValue: prettyWeiToEth(totalValue, true),
137
+ };
138
+ }
139
+ else {
140
+ return {
141
+ engineExecutionPayloadValue: prettyWeiToEth(executionValue, true),
142
+ engineConsensusBlockValue: prettyWeiToEth(consensusValue, true),
143
+ engineBlockTotalValue: prettyWeiToEth(totalValue, true),
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);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/validator/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/validator/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { BeaconStateAllForks } from "@lodestar/state-transition";
2
- import { BLSPubkey, CommitteeIndex, Slot, ValidatorIndex } from "@lodestar/types";
2
+ import { routes } from "@lodestar/api";
3
+ import { BLSPubkey, CommitteeIndex, ProducedBlockSource, Slot, ValidatorIndex } from "@lodestar/types";
3
4
  export declare function computeSubnetForCommitteesAtSlot(slot: Slot, committeesAtSlot: number, committeeIndex: CommitteeIndex): number;
4
5
  /**
5
6
  * Precompute all pubkeys for given `validatorIndices`. Ensures that all `validatorIndices` are known
@@ -11,4 +12,10 @@ export declare function computeSubnetForCommitteesAtSlot(slot: Slot, committeesA
11
12
  * See benchmark -> packages/beacon-node/test/perf/api/impl/validator/attester.test.ts
12
13
  */
13
14
  export declare function getPubkeysForIndices(validators: BeaconStateAllForks["validators"], indexes: ValidatorIndex[]): BLSPubkey[];
15
+ export declare function selectBlockProductionSource({ builderSelection, engineBlockValue, builderBlockValue, builderBoostFactor, }: {
16
+ builderSelection: routes.validator.BuilderSelection;
17
+ engineBlockValue: bigint;
18
+ builderBlockValue: bigint;
19
+ builderBoostFactor: bigint;
20
+ }): ProducedBlockSource;
14
21
  //# sourceMappingURL=utils.d.ts.map
@@ -1,5 +1,8 @@
1
1
  import { computeSlotsSinceEpochStart } from "@lodestar/state-transition";
2
2
  import { ATTESTATION_SUBNET_COUNT } from "@lodestar/params";
3
+ import { routes } from "@lodestar/api";
4
+ import { ProducedBlockSource } from "@lodestar/types";
5
+ import { MAX_BUILDER_BOOST_FACTOR } from "@lodestar/validator";
3
6
  export function computeSubnetForCommitteesAtSlot(slot, committeesAtSlot, committeeIndex) {
4
7
  const slotsSinceEpochStart = computeSlotsSinceEpochStart(slot);
5
8
  const committeesSinceEpochStart = committeesAtSlot * slotsSinceEpochStart;
@@ -28,4 +31,19 @@ export function getPubkeysForIndices(validators, indexes) {
28
31
  }
29
32
  return pubkeys;
30
33
  }
34
+ export function selectBlockProductionSource({ builderSelection, engineBlockValue, builderBlockValue, builderBoostFactor, }) {
35
+ switch (builderSelection) {
36
+ case routes.validator.BuilderSelection.ExecutionAlways:
37
+ case routes.validator.BuilderSelection.ExecutionOnly:
38
+ return ProducedBlockSource.engine;
39
+ case routes.validator.BuilderSelection.MaxProfit:
40
+ return builderBoostFactor !== MAX_BUILDER_BOOST_FACTOR &&
41
+ (builderBoostFactor === BigInt(0) || engineBlockValue >= (builderBlockValue * builderBoostFactor) / BigInt(100))
42
+ ? ProducedBlockSource.engine
43
+ : ProducedBlockSource.builder;
44
+ case routes.validator.BuilderSelection.BuilderAlways:
45
+ case routes.validator.BuilderSelection.BuilderOnly:
46
+ return ProducedBlockSource.builder;
47
+ }
48
+ }
31
49
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/api/impl/validator/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,2BAA2B,EAAC,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAC,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AAG1D,MAAM,UAAU,gCAAgC,CAC9C,IAAU,EACV,gBAAwB,EACxB,cAA8B;IAE9B,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,yBAAyB,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;IAC1E,OAAO,CAAC,yBAAyB,GAAG,cAAc,CAAC,GAAG,wBAAwB,CAAC;AACjF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAA6C,EAC7C,OAAyB;IAEzB,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,2BAA2B;IAEpE,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,KAAK,IAAI,aAAa,EAAE;YAC1B,MAAM,KAAK,CAAC,kBAAkB,KAAK,sCAAsC,aAAa,EAAE,CAAC,CAAC;SAC3F;QAED,0FAA0F;QAC1F,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAChC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/api/impl/validator/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,2BAA2B,EAAC,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAC,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAA4B,mBAAmB,EAAuB,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAE7D,MAAM,UAAU,gCAAgC,CAC9C,IAAU,EACV,gBAAwB,EACxB,cAA8B;IAE9B,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,yBAAyB,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;IAC1E,OAAO,CAAC,yBAAyB,GAAG,cAAc,CAAC,GAAG,wBAAwB,CAAC;AACjF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAA6C,EAC7C,OAAyB;IAEzB,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,2BAA2B;IAEpE,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,KAAK,IAAI,aAAa,EAAE;YAC1B,MAAM,KAAK,CAAC,kBAAkB,KAAK,sCAAsC,aAAa,EAAE,CAAC,CAAC;SAC3F;QAED,0FAA0F;QAC1F,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAChC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAC1C,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GAMnB;IACC,QAAQ,gBAAgB,EAAE;QACxB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,CAAC;QACvD,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa;YAClD,OAAO,mBAAmB,CAAC,MAAM,CAAC;QAEpC,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS;YAC9C,OAAO,kBAAkB,KAAK,wBAAwB;gBACpD,CAAC,kBAAkB,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,gBAAgB,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChH,CAAC,CAAC,mBAAmB,CAAC,MAAM;gBAC5B,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;QAElC,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACrD,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW;YAChD,OAAO,mBAAmB,CAAC,OAAO,CAAC;KACtC;AACH,CAAC"}
@@ -323,6 +323,16 @@ export async function importBlock(fullyVerifiedBlock, opts) {
323
323
  this.emitter.emit(routes.events.EventType.attestation, attestation);
324
324
  }
325
325
  }
326
+ if (this.emitter.listenerCount(routes.events.EventType.attesterSlashing)) {
327
+ for (const attesterSlashing of block.message.body.attesterSlashings) {
328
+ this.emitter.emit(routes.events.EventType.attesterSlashing, attesterSlashing);
329
+ }
330
+ }
331
+ if (this.emitter.listenerCount(routes.events.EventType.proposerSlashing)) {
332
+ for (const proposerSlashing of block.message.body.proposerSlashings) {
333
+ this.emitter.emit(routes.events.EventType.proposerSlashing, proposerSlashing);
334
+ }
335
+ }
326
336
  }
327
337
  // Register stat metrics about the block after importing it
328
338
  this.metrics?.parentBlockDistance.observe(blockSlot - parentBlockSlot);