@lodestar/beacon-node 1.47.0 → 1.48.0-dev.04d463c59a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +4 -0
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +5 -0
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/blocks/index.js +7 -7
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +5 -2
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/chain.d.ts +1 -1
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +2 -1
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/errors/executionPayloadBid.d.ts +5 -0
- package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadBid.js +1 -0
- package/lib/chain/errors/executionPayloadBid.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -2
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts +5 -0
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +24 -1
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
- package/lib/chain/produceBlock/computeNewStateRoot.js +3 -25
- package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
- package/lib/chain/regen/interface.d.ts +1 -0
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/interface.js +1 -0
- package/lib/chain/regen/interface.js.map +1 -1
- package/lib/chain/validation/block.d.ts.map +1 -1
- package/lib/chain/validation/block.js +40 -10
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.d.ts +15 -3
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +183 -28
- package/lib/chain/validation/executionPayloadBid.js.map +1 -1
- package/lib/execution/builder/apiClient.d.ts +6 -0
- package/lib/execution/builder/apiClient.d.ts.map +1 -1
- package/lib/execution/builder/apiClient.js +19 -1
- package/lib/execution/builder/apiClient.js.map +1 -1
- package/lib/execution/builder/validateBid.d.ts +1 -0
- package/lib/execution/builder/validateBid.d.ts.map +1 -1
- package/lib/execution/builder/validateBid.js +14 -6
- package/lib/execution/builder/validateBid.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +10 -1
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +19 -3
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +5 -4
- package/lib/network/network.js.map +1 -1
- package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
- package/lib/network/processor/gossipQueues/indexed.js +0 -1
- package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +16 -8
- package/lib/network/processor/index.js.map +1 -1
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +9 -2
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.js +1 -1
- package/lib/sync/range/range.js.map +1 -1
- package/package.json +15 -15
- package/src/api/impl/beacon/blocks/index.ts +4 -0
- package/src/api/impl/validator/index.ts +5 -0
- package/src/chain/blocks/index.ts +7 -7
- package/src/chain/blocks/verifyBlock.ts +5 -2
- package/src/chain/chain.ts +2 -1
- package/src/chain/errors/executionPayloadBid.ts +6 -0
- package/src/chain/interface.ts +2 -2
- package/src/chain/prepareNextSlot.ts +26 -1
- package/src/chain/produceBlock/computeNewStateRoot.ts +3 -38
- package/src/chain/regen/interface.ts +1 -0
- package/src/chain/validation/block.ts +43 -10
- package/src/chain/validation/executionPayloadBid.ts +212 -32
- package/src/execution/builder/apiClient.ts +21 -1
- package/src/execution/builder/validateBid.ts +22 -7
- package/src/metrics/metrics/lodestar.ts +21 -4
- package/src/network/network.ts +7 -4
- package/src/network/processor/gossipQueues/indexed.ts +0 -1
- package/src/network/processor/index.ts +25 -11
- package/src/sync/range/chain.ts +9 -2
- package/src/sync/range/range.ts +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {TopicValidatorResult} from "@libp2p/gossipsub";
|
|
1
2
|
import {routes} from "@lodestar/api";
|
|
2
3
|
import {ForkSeq} from "@lodestar/params";
|
|
3
4
|
import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
@@ -560,6 +561,7 @@ export class NetworkProcessor {
|
|
|
560
561
|
|
|
561
562
|
private pushPendingGossipsubMessageToQueue(message: PendingGossipsubMessage): void {
|
|
562
563
|
const topicType = message.topic.type;
|
|
564
|
+
message.queueAddedMs = Date.now();
|
|
563
565
|
const droppedCount = this.gossipQueues[topicType].add(message);
|
|
564
566
|
if (droppedCount) {
|
|
565
567
|
// No need to report the dropped job to gossip. It will be eventually pruned from the mcache
|
|
@@ -746,12 +748,20 @@ export class NetworkProcessor {
|
|
|
746
748
|
for (const msg of messageOrArray) {
|
|
747
749
|
msg.startProcessUnixSec = nowSec;
|
|
748
750
|
if (msg.queueAddedMs !== undefined) {
|
|
749
|
-
this.metrics?.gossipValidationQueue.queueTime.observe(
|
|
751
|
+
this.metrics?.gossipValidationQueue.queueTime.observe(
|
|
752
|
+
{topic: msg.topic.type},
|
|
753
|
+
nowSec - msg.queueAddedMs / 1000
|
|
754
|
+
);
|
|
750
755
|
}
|
|
751
756
|
}
|
|
752
757
|
} else {
|
|
753
|
-
// indexed queue is not used here
|
|
754
758
|
messageOrArray.startProcessUnixSec = nowSec;
|
|
759
|
+
if (messageOrArray.queueAddedMs !== undefined) {
|
|
760
|
+
this.metrics?.gossipValidationQueue.queueTime.observe(
|
|
761
|
+
{topic: messageOrArray.topic.type},
|
|
762
|
+
nowSec - messageOrArray.queueAddedMs / 1000
|
|
763
|
+
);
|
|
764
|
+
}
|
|
755
765
|
}
|
|
756
766
|
|
|
757
767
|
const acceptanceArr = Array.isArray(messageOrArray)
|
|
@@ -764,11 +774,11 @@ export class NetworkProcessor {
|
|
|
764
774
|
];
|
|
765
775
|
|
|
766
776
|
if (Array.isArray(messageOrArray)) {
|
|
767
|
-
for (const msg of messageOrArray) {
|
|
768
|
-
this.trackJobTime(msg, messageOrArray.length);
|
|
777
|
+
for (const [i, msg] of messageOrArray.entries()) {
|
|
778
|
+
this.trackJobTime(msg, messageOrArray.length, acceptanceArr[i]);
|
|
769
779
|
}
|
|
770
780
|
} else {
|
|
771
|
-
this.trackJobTime(messageOrArray, 1);
|
|
781
|
+
this.trackJobTime(messageOrArray, 1, acceptanceArr[0]);
|
|
772
782
|
}
|
|
773
783
|
|
|
774
784
|
// Use setTimeout to yield to the macro queue
|
|
@@ -796,17 +806,21 @@ export class NetworkProcessor {
|
|
|
796
806
|
}
|
|
797
807
|
}
|
|
798
808
|
|
|
799
|
-
private trackJobTime(message: PendingGossipsubMessage, numJob: number): void {
|
|
809
|
+
private trackJobTime(message: PendingGossipsubMessage, numJob: number, acceptance: TopicValidatorResult): void {
|
|
800
810
|
if (message.startProcessUnixSec !== null) {
|
|
811
|
+
// record job wait time for all messages
|
|
801
812
|
this.metrics?.gossipValidationQueue.jobWaitTime.observe(
|
|
802
813
|
{topic: message.topic.type},
|
|
803
814
|
message.startProcessUnixSec - message.seenTimestampSec
|
|
804
815
|
);
|
|
805
|
-
//
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
816
|
+
// but only record job time for ACCEPT messages
|
|
817
|
+
if (acceptance === TopicValidatorResult.Accept) {
|
|
818
|
+
// if it takes 64ms to process 64 jobs, the average job time is 1ms
|
|
819
|
+
this.metrics?.gossipValidationQueue.jobTime.observe(
|
|
820
|
+
{topic: message.topic.type},
|
|
821
|
+
(Date.now() / 1000 - message.startProcessUnixSec) / numJob
|
|
822
|
+
);
|
|
823
|
+
}
|
|
810
824
|
}
|
|
811
825
|
}
|
|
812
826
|
|
package/src/sync/range/chain.ts
CHANGED
|
@@ -652,7 +652,9 @@ export class SyncChain {
|
|
|
652
652
|
|
|
653
653
|
const blockSlots = downloadSuccessOutput.blocks.map((b) => b.slot);
|
|
654
654
|
const envelopeSlots = downloadSuccessOutput.payloadEnvelopes
|
|
655
|
-
? Array.from(downloadSuccessOutput.payloadEnvelopes.
|
|
655
|
+
? Array.from(downloadSuccessOutput.payloadEnvelopes.entries())
|
|
656
|
+
.filter(([, payloadInput]) => payloadInput.hasPayloadEnvelope())
|
|
657
|
+
.map(([slot]) => slot)
|
|
656
658
|
: null;
|
|
657
659
|
|
|
658
660
|
this.logger.debug(logMessage, {
|
|
@@ -684,13 +686,18 @@ export class SyncChain {
|
|
|
684
686
|
*/
|
|
685
687
|
private async processBatch(batch: Batch): Promise<void> {
|
|
686
688
|
const {blocks, payloadEnvelopes, peers} = batch.startProcessing();
|
|
689
|
+
const envelopeSlots = payloadEnvelopes
|
|
690
|
+
? Array.from(payloadEnvelopes.entries())
|
|
691
|
+
.filter(([, payloadInput]) => payloadInput.hasPayloadEnvelope())
|
|
692
|
+
.map(([slot]) => slot)
|
|
693
|
+
: null;
|
|
687
694
|
|
|
688
695
|
const logCtx = {
|
|
689
696
|
id: this.logId,
|
|
690
697
|
...batch.getMetadata(),
|
|
691
698
|
blockCount: blocks.length,
|
|
692
699
|
blockSlots: prettyPrintIndices(blocks.map((b) => b.slot)),
|
|
693
|
-
...(
|
|
700
|
+
...(envelopeSlots ? {envelopeSlots: prettyPrintIndices(envelopeSlots)} : {}),
|
|
694
701
|
peers: peers.map(prettyPrintPeerIdStr).join(","),
|
|
695
702
|
};
|
|
696
703
|
this.logger.verbose("Processing batch", logCtx);
|
package/src/sync/range/range.ts
CHANGED
|
@@ -212,7 +212,7 @@ export class RangeSync extends (EventEmitter as {new (): RangeSyncEmitter}) {
|
|
|
212
212
|
for (const block of blocks) {
|
|
213
213
|
await this.chain.processBlock(block, flags);
|
|
214
214
|
const payloadEnvelope = payloadEnvelopes?.get(block.slot);
|
|
215
|
-
if (payloadEnvelope) {
|
|
215
|
+
if (payloadEnvelope?.hasPayloadEnvelope()) {
|
|
216
216
|
await this.chain.processExecutionPayload(payloadEnvelope);
|
|
217
217
|
}
|
|
218
218
|
}
|