Skip to content

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented Jun 13, 2025

Motivation

Right now we only emit blob_sidecar event during block import when we have received all blobs but this is not ideal as the event is mostly used to gather timing information of when blobs are received by nodes in the network. We should emit the event as soon as possible similar to #7953.

Description

Emit blob_sidecar event as soon as we receive BlobSidecar

  • through publishBlock api if we are proposer
  • on blob_sidecar gossip topic from the network
  • from engine api via engine_getBlobsV1 method
  • from req/resp via blob_sidecars_by_root method

@nflaig nflaig changed the title fix: emit blob_sidecar event as soon as we receive BlobSidecars fix: emit blob_sidecar event as soon as we receive BlobSidecars Jun 13, 2025
@nflaig nflaig marked this pull request as ready for review June 13, 2025 16:54
@nflaig nflaig requested a review from a team as a code owner June 13, 2025 16:54
await sleep(msToBlockSlot);
}

chain.emitter.emit(routes.events.EventType.blockGossip, {slot, block: blockRoot});
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moved event down to emit it after we publish to the network

];
await promiseAllMaybeAsync(publishPromises);

if (chain.emitter.listenerCount(routes.events.EventType.blockGossip)) {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should probably add this check to a bunch more events, I don't see why we would emit them if there is no listener

@codecov
Copy link

codecov bot commented Jun 13, 2025

Codecov Report

Attention: Patch coverage is 16.66667% with 55 lines in your changes missing coverage. Please review.

Project coverage is 55.71%. Comparing base (b93e9af) to head (eb57bac).
Report is 10 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7967      +/-   ##
============================================
- Coverage     55.74%   55.71%   -0.04%     
============================================
  Files           833      833              
  Lines         59383    59418      +35     
  Branches       4582     4583       +1     
============================================
- Hits          33105    33104       -1     
- Misses        26211    26247      +36     
  Partials         67       67              
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

github-actions bot commented Jun 13, 2025

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: de0dcf5 Previous: b93e9af Ratio
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4428 ms/op 5.2511 ms/op 0.27
Full benchmark results
Benchmark suite Current: de0dcf5 Previous: b93e9af Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 785.76 us/op 767.83 us/op 1.02
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 29.014 us/op 28.860 us/op 1.01
BLS verify - blst 1.0493 ms/op 865.93 us/op 1.21
BLS verifyMultipleSignatures 3 - blst 1.3402 ms/op 1.5659 ms/op 0.86
BLS verifyMultipleSignatures 8 - blst 2.1206 ms/op 1.9448 ms/op 1.09
BLS verifyMultipleSignatures 32 - blst 4.7715 ms/op 4.5336 ms/op 1.05
BLS verifyMultipleSignatures 64 - blst 8.5750 ms/op 8.4579 ms/op 1.01
BLS verifyMultipleSignatures 128 - blst 16.050 ms/op 16.000 ms/op 1.00
BLS deserializing 10000 signatures 643.95 ms/op 635.53 ms/op 1.01
BLS deserializing 100000 signatures 6.4693 s/op 6.0895 s/op 1.06
BLS verifyMultipleSignatures - same message - 3 - blst 1.2939 ms/op 934.46 us/op 1.38
BLS verifyMultipleSignatures - same message - 8 - blst 1.1236 ms/op 1.0485 ms/op 1.07
BLS verifyMultipleSignatures - same message - 32 - blst 1.7669 ms/op 1.5263 ms/op 1.16
BLS verifyMultipleSignatures - same message - 64 - blst 2.6264 ms/op 2.3990 ms/op 1.09
BLS verifyMultipleSignatures - same message - 128 - blst 4.3213 ms/op 3.9838 ms/op 1.08
BLS aggregatePubkeys 32 - blst 17.981 us/op 17.030 us/op 1.06
BLS aggregatePubkeys 128 - blst 62.806 us/op 61.359 us/op 1.02
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 43.005 ms/op 45.250 ms/op 0.95
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 45.229 ms/op 48.471 ms/op 0.93
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 38.333 ms/op 34.206 ms/op 1.12
getSlashingsAndExits - default max 53.771 us/op 46.985 us/op 1.14
getSlashingsAndExits - 2k 318.83 us/op 294.25 us/op 1.08
proposeBlockBody type=full, size=empty 4.8717 ms/op 4.9425 ms/op 0.99
isKnown best case - 1 super set check 402.00 ns/op 414.00 ns/op 0.97
isKnown normal case - 2 super set checks 395.00 ns/op 410.00 ns/op 0.96
isKnown worse case - 16 super set checks 396.00 ns/op 410.00 ns/op 0.97
InMemoryCheckpointStateCache - add get delete 2.4000 us/op 2.4850 us/op 0.97
validate api signedAggregateAndProof - struct 1.4783 ms/op 1.4254 ms/op 1.04
validate gossip signedAggregateAndProof - struct 1.6089 ms/op 1.4427 ms/op 1.12
batch validate gossip attestation - vc 640000 - chunk 32 107.35 us/op 108.91 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 64 92.914 us/op 89.154 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 128 84.862 us/op 85.981 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 256 85.325 us/op 83.976 us/op 1.02
pickEth1Vote - no votes 800.73 us/op 802.13 us/op 1.00
pickEth1Vote - max votes 4.4923 ms/op 4.1583 ms/op 1.08
pickEth1Vote - Eth1Data hashTreeRoot value x2048 9.6284 ms/op 8.5673 ms/op 1.12
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 13.682 ms/op 11.085 ms/op 1.23
pickEth1Vote - Eth1Data fastSerialize value x2048 360.13 us/op 373.89 us/op 0.96
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.3557 ms/op 1.9742 ms/op 1.19
bytes32 toHexString 518.00 ns/op 525.00 ns/op 0.99
bytes32 Buffer.toString(hex) 413.00 ns/op 426.00 ns/op 0.97
bytes32 Buffer.toString(hex) from Uint8Array 471.00 ns/op 487.00 ns/op 0.97
bytes32 Buffer.toString(hex) + 0x 403.00 ns/op 418.00 ns/op 0.96
Object access 1 prop 0.30000 ns/op 0.30900 ns/op 0.97
Map access 1 prop 0.30900 ns/op 0.31500 ns/op 0.98
Object get x1000 4.8910 ns/op 5.2070 ns/op 0.94
Map get x1000 5.4710 ns/op 5.8970 ns/op 0.93
Object set x1000 19.461 ns/op 18.158 ns/op 1.07
Map set x1000 16.650 ns/op 16.257 ns/op 1.02
Return object 10000 times 0.28560 ns/op 0.28970 ns/op 0.99
Throw Error 10000 times 3.4003 us/op 3.3515 us/op 1.01
toHex 96.907 ns/op 118.49 ns/op 0.82
Buffer.from 87.798 ns/op 100.20 ns/op 0.88
shared Buffer 60.726 ns/op 67.386 ns/op 0.90
fastMsgIdFn sha256 / 200 bytes 1.8790 us/op 1.9200 us/op 0.98
fastMsgIdFn h32 xxhash / 200 bytes 385.00 ns/op 381.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 200 bytes 434.00 ns/op 442.00 ns/op 0.98
fastMsgIdFn sha256 / 1000 bytes 5.5890 us/op 5.7260 us/op 0.98
fastMsgIdFn h32 xxhash / 1000 bytes 504.00 ns/op 505.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 1000 bytes 510.00 ns/op 511.00 ns/op 1.00
fastMsgIdFn sha256 / 10000 bytes 47.501 us/op 49.017 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.8420 us/op 1.8920 us/op 0.97
fastMsgIdFn h64 xxhash / 10000 bytes 1.2930 us/op 1.3300 us/op 0.97
send data - 1000 256B messages 9.1763 ms/op 11.328 ms/op 0.81
send data - 1000 512B messages 13.832 ms/op 12.797 ms/op 1.08
send data - 1000 1024B messages 20.537 ms/op 21.625 ms/op 0.95
send data - 1000 1200B messages 14.211 ms/op 13.651 ms/op 1.04
send data - 1000 2048B messages 13.901 ms/op 15.593 ms/op 0.89
send data - 1000 4096B messages 17.351 ms/op 17.889 ms/op 0.97
send data - 1000 16384B messages 57.982 ms/op 70.501 ms/op 0.82
send data - 1000 65536B messages 264.85 ms/op 267.99 ms/op 0.99
enrSubnets - fastDeserialize 64 bits 1.7340 us/op 966.00 ns/op 1.80
enrSubnets - ssz BitVector 64 bits 500.00 ns/op 520.00 ns/op 0.96
enrSubnets - fastDeserialize 4 bits 323.00 ns/op 328.00 ns/op 0.98
enrSubnets - ssz BitVector 4 bits 508.00 ns/op 525.00 ns/op 0.97
prioritizePeers score -10:0 att 32-0.1 sync 2-0 98.570 us/op 97.637 us/op 1.01
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 116.95 us/op 116.93 us/op 1.00
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 170.72 us/op 173.08 us/op 0.99
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 305.20 us/op 302.27 us/op 1.01
prioritizePeers score 0:0 att 64-1 sync 4-1 384.59 us/op 375.33 us/op 1.02
array of 16000 items push then shift 1.2799 us/op 1.2373 us/op 1.03
LinkedList of 16000 items push then shift 6.2010 ns/op 7.0060 ns/op 0.89
array of 16000 items push then pop 64.980 ns/op 63.973 ns/op 1.02
LinkedList of 16000 items push then pop 6.1030 ns/op 5.9550 ns/op 1.02
array of 24000 items push then shift 1.8857 us/op 1.8875 us/op 1.00
LinkedList of 24000 items push then shift 6.2850 ns/op 6.8060 ns/op 0.92
array of 24000 items push then pop 86.041 ns/op 86.803 ns/op 0.99
LinkedList of 24000 items push then pop 6.0900 ns/op 6.1590 ns/op 0.99
intersect bitArray bitLen 8 5.3590 ns/op 5.4470 ns/op 0.98
intersect array and set length 8 32.161 ns/op 32.254 ns/op 1.00
intersect bitArray bitLen 128 26.265 ns/op 26.494 ns/op 0.99
intersect array and set length 128 533.02 ns/op 538.53 ns/op 0.99
bitArray.getTrueBitIndexes() bitLen 128 1.1230 us/op 1.1340 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 248 1.7720 us/op 1.7820 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 512 3.2300 us/op 3.6700 us/op 0.88
Buffer.concat 32 items 755.00 ns/op 787.00 ns/op 0.96
Uint8Array.set 32 items 1.0330 us/op 991.00 ns/op 1.04
Buffer.copy 2.0070 us/op 1.9550 us/op 1.03
Uint8Array.set - with subarray 1.5710 us/op 1.5360 us/op 1.02
Uint8Array.set - without subarray 984.00 ns/op 939.00 ns/op 1.05
getUint32 - dataview 396.00 ns/op 398.00 ns/op 0.99
getUint32 - manual 308.00 ns/op 303.00 ns/op 1.02
Set add up to 64 items then delete first 1.7633 us/op 1.6636 us/op 1.06
OrderedSet add up to 64 items then delete first 2.7239 us/op 2.5820 us/op 1.05
Set add up to 64 items then delete last 2.0276 us/op 1.9038 us/op 1.07
OrderedSet add up to 64 items then delete last 3.0267 us/op 2.9842 us/op 1.01
Set add up to 64 items then delete middle 1.9175 us/op 2.0336 us/op 0.94
OrderedSet add up to 64 items then delete middle 4.5159 us/op 4.5472 us/op 0.99
Set add up to 128 items then delete first 4.0343 us/op 5.1590 us/op 0.78
OrderedSet add up to 128 items then delete first 6.2397 us/op 6.7066 us/op 0.93
Set add up to 128 items then delete last 3.9234 us/op 3.9934 us/op 0.98
OrderedSet add up to 128 items then delete last 5.8627 us/op 5.8751 us/op 1.00
Set add up to 128 items then delete middle 3.9115 us/op 3.8643 us/op 1.01
OrderedSet add up to 128 items then delete middle 11.432 us/op 11.780 us/op 0.97
Set add up to 256 items then delete first 7.8387 us/op 7.7870 us/op 1.01
OrderedSet add up to 256 items then delete first 12.224 us/op 12.437 us/op 0.98
Set add up to 256 items then delete last 7.5910 us/op 7.6414 us/op 0.99
OrderedSet add up to 256 items then delete last 11.509 us/op 11.586 us/op 0.99
Set add up to 256 items then delete middle 7.6488 us/op 8.6447 us/op 0.88
OrderedSet add up to 256 items then delete middle 33.988 us/op 34.958 us/op 0.97
transfer serialized Status (84 B) 1.9910 us/op 1.9310 us/op 1.03
copy serialized Status (84 B) 1.2390 us/op 1.1870 us/op 1.04
transfer serialized SignedVoluntaryExit (112 B) 1.9860 us/op 1.9660 us/op 1.01
copy serialized SignedVoluntaryExit (112 B) 1.2370 us/op 1.1980 us/op 1.03
transfer serialized ProposerSlashing (416 B) 1.9820 us/op 1.9990 us/op 0.99
copy serialized ProposerSlashing (416 B) 1.2770 us/op 1.2530 us/op 1.02
transfer serialized Attestation (485 B) 1.9860 us/op 1.9570 us/op 1.01
copy serialized Attestation (485 B) 1.2860 us/op 1.4330 us/op 0.90
transfer serialized AttesterSlashing (33232 B) 2.0630 us/op 2.2770 us/op 0.91
copy serialized AttesterSlashing (33232 B) 2.5390 us/op 2.6020 us/op 0.98
transfer serialized Small SignedBeaconBlock (128000 B) 2.1540 us/op 2.0940 us/op 1.03
copy serialized Small SignedBeaconBlock (128000 B) 5.6150 us/op 5.4740 us/op 1.03
transfer serialized Avg SignedBeaconBlock (200000 B) 2.4490 us/op 2.2110 us/op 1.11
copy serialized Avg SignedBeaconBlock (200000 B) 8.3110 us/op 8.1170 us/op 1.02
transfer serialized BlobsSidecar (524380 B) 3.1010 us/op 2.9070 us/op 1.07
copy serialized BlobsSidecar (524380 B) 92.918 us/op 66.600 us/op 1.40
transfer serialized Big SignedBeaconBlock (1000000 B) 3.5440 us/op 3.5030 us/op 1.01
copy serialized Big SignedBeaconBlock (1000000 B) 100.55 us/op 163.47 us/op 0.62
pass gossip attestations to forkchoice per slot 2.3175 ms/op 2.2885 ms/op 1.01
forkChoice updateHead vc 100000 bc 64 eq 0 363.44 us/op 338.78 us/op 1.07
forkChoice updateHead vc 600000 bc 64 eq 0 2.2769 ms/op 2.2603 ms/op 1.01
forkChoice updateHead vc 1000000 bc 64 eq 0 3.7691 ms/op 3.7878 ms/op 1.00
forkChoice updateHead vc 600000 bc 320 eq 0 2.2579 ms/op 2.2280 ms/op 1.01
forkChoice updateHead vc 600000 bc 1200 eq 0 2.2508 ms/op 2.7590 ms/op 0.82
forkChoice updateHead vc 600000 bc 7200 eq 0 2.5461 ms/op 2.4095 ms/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 1000 9.6140 ms/op 9.2931 ms/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 10000 9.3236 ms/op 8.6512 ms/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 300000 10.681 ms/op 10.926 ms/op 0.98
computeDeltas 500000 validators 300 proto nodes 3.1156 ms/op 3.1712 ms/op 0.98
computeDeltas 500000 validators 1200 proto nodes 3.1167 ms/op 3.1175 ms/op 1.00
computeDeltas 500000 validators 7200 proto nodes 3.1242 ms/op 3.0542 ms/op 1.02
computeDeltas 750000 validators 300 proto nodes 4.7017 ms/op 4.7500 ms/op 0.99
computeDeltas 750000 validators 1200 proto nodes 4.6534 ms/op 4.5330 ms/op 1.03
computeDeltas 750000 validators 7200 proto nodes 4.7903 ms/op 4.6279 ms/op 1.04
computeDeltas 1400000 validators 300 proto nodes 8.9320 ms/op 9.0100 ms/op 0.99
computeDeltas 1400000 validators 1200 proto nodes 8.7206 ms/op 8.7002 ms/op 1.00
computeDeltas 1400000 validators 7200 proto nodes 8.7084 ms/op 8.5099 ms/op 1.02
computeDeltas 2100000 validators 300 proto nodes 13.243 ms/op 12.949 ms/op 1.02
computeDeltas 2100000 validators 1200 proto nodes 13.054 ms/op 13.338 ms/op 0.98
computeDeltas 2100000 validators 7200 proto nodes 14.987 ms/op 13.084 ms/op 1.15
altair processAttestation - 250000 vs - 7PWei normalcase 1.6472 ms/op 1.6691 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei worstcase 2.3859 ms/op 3.8942 ms/op 0.61
altair processAttestation - setStatus - 1/6 committees join 105.23 us/op 106.93 us/op 0.98
altair processAttestation - setStatus - 1/3 committees join 201.33 us/op 205.70 us/op 0.98
altair processAttestation - setStatus - 1/2 committees join 285.09 us/op 303.49 us/op 0.94
altair processAttestation - setStatus - 2/3 committees join 376.82 us/op 399.28 us/op 0.94
altair processAttestation - setStatus - 4/5 committees join 509.58 us/op 554.12 us/op 0.92
altair processAttestation - setStatus - 100% committees join 589.91 us/op 645.36 us/op 0.91
altair processBlock - 250000 vs - 7PWei normalcase 4.3857 ms/op 5.2889 ms/op 0.83
altair processBlock - 250000 vs - 7PWei normalcase hashState 29.225 ms/op 31.663 ms/op 0.92
altair processBlock - 250000 vs - 7PWei worstcase 41.847 ms/op 40.246 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase hashState 83.904 ms/op 86.234 ms/op 0.97
phase0 processBlock - 250000 vs - 7PWei normalcase 1.8833 ms/op 2.1944 ms/op 0.86
phase0 processBlock - 250000 vs - 7PWei worstcase 22.176 ms/op 26.269 ms/op 0.84
altair processEth1Data - 250000 vs - 7PWei normalcase 271.00 us/op 291.07 us/op 0.93
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.0310 us/op 10.278 us/op 0.59
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 35.798 us/op 46.785 us/op 0.77
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.118 us/op 16.523 us/op 0.61
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.1150 us/op 11.568 us/op 0.53
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 169.14 us/op 160.66 us/op 1.05
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.4199 ms/op 1.4684 ms/op 0.97
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8669 ms/op 2.4521 ms/op 0.76
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8332 ms/op 2.9239 ms/op 0.63
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.7740 ms/op 7.1775 ms/op 0.53
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.8708 ms/op 2.7721 ms/op 0.67
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9540 ms/op 4.3328 ms/op 0.91
Tree 40 250000 create 383.65 ms/op 535.26 ms/op 0.72
Tree 40 250000 get(125000) 133.83 ns/op 106.47 ns/op 1.26
Tree 40 250000 set(125000) 1.3301 us/op 2.2033 us/op 0.60
Tree 40 250000 toArray() 14.562 ms/op 20.602 ms/op 0.71
Tree 40 250000 iterate all - toArray() + loop 12.096 ms/op 9.7998 ms/op 1.23
Tree 40 250000 iterate all - get(i) 45.561 ms/op 40.600 ms/op 1.12
Array 250000 create 2.0219 ms/op 1.9683 ms/op 1.03
Array 250000 clone - spread 671.06 us/op 726.62 us/op 0.92
Array 250000 get(125000) 0.61200 ns/op 0.82800 ns/op 0.74
Array 250000 set(125000) 0.60300 ns/op 0.63300 ns/op 0.95
Array 250000 iterate all - loop 77.622 us/op 80.908 us/op 0.96
phase0 afterProcessEpoch - 250000 vs - 7PWei 39.592 ms/op 40.500 ms/op 0.98
Array.fill - length 1000000 2.5170 ms/op 6.6611 ms/op 0.38
Array push - length 1000000 9.3887 ms/op 11.220 ms/op 0.84
Array.get 0.25807 ns/op 0.25610 ns/op 1.01
Uint8Array.get 0.33376 ns/op 0.32515 ns/op 1.03
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.912 ms/op 16.628 ms/op 1.02
altair processEpoch - mainnet_e81889 269.20 ms/op 274.70 ms/op 0.98
mainnet_e81889 - altair beforeProcessEpoch 14.171 ms/op 14.973 ms/op 0.95
mainnet_e81889 - altair processJustificationAndFinalization 5.9810 us/op 4.8210 us/op 1.24
mainnet_e81889 - altair processInactivityUpdates 3.2895 ms/op 3.6589 ms/op 0.90
mainnet_e81889 - altair processRewardsAndPenalties 35.363 ms/op 38.366 ms/op 0.92
mainnet_e81889 - altair processRegistryUpdates 862.00 ns/op 818.00 ns/op 1.05
mainnet_e81889 - altair processSlashings 390.00 ns/op 398.00 ns/op 0.98
mainnet_e81889 - altair processEth1DataReset 388.00 ns/op 401.00 ns/op 0.97
mainnet_e81889 - altair processEffectiveBalanceUpdates 940.51 us/op 1.0355 ms/op 0.91
mainnet_e81889 - altair processSlashingsReset 1.1990 us/op 1.0200 us/op 1.18
mainnet_e81889 - altair processRandaoMixesReset 1.4120 us/op 1.2240 us/op 1.15
mainnet_e81889 - altair processHistoricalRootsUpdate 397.00 ns/op 406.00 ns/op 0.98
mainnet_e81889 - altair processParticipationFlagUpdates 700.00 ns/op 958.00 ns/op 0.73
mainnet_e81889 - altair processSyncCommitteeUpdates 349.00 ns/op 360.00 ns/op 0.97
mainnet_e81889 - altair afterProcessEpoch 39.776 ms/op 42.920 ms/op 0.93
capella processEpoch - mainnet_e217614 901.86 ms/op 808.59 ms/op 1.12
mainnet_e217614 - capella beforeProcessEpoch 56.216 ms/op 62.280 ms/op 0.90
mainnet_e217614 - capella processJustificationAndFinalization 4.5410 us/op 4.4700 us/op 1.02
mainnet_e217614 - capella processInactivityUpdates 11.162 ms/op 12.164 ms/op 0.92
mainnet_e217614 - capella processRewardsAndPenalties 184.26 ms/op 177.79 ms/op 1.04
mainnet_e217614 - capella processRegistryUpdates 5.1660 us/op 5.3440 us/op 0.97
mainnet_e217614 - capella processSlashings 393.00 ns/op 399.00 ns/op 0.98
mainnet_e217614 - capella processEth1DataReset 395.00 ns/op 406.00 ns/op 0.97
mainnet_e217614 - capella processEffectiveBalanceUpdates 3.2258 ms/op 3.4653 ms/op 0.93
mainnet_e217614 - capella processSlashingsReset 1.2200 us/op 1.2420 us/op 0.98
mainnet_e217614 - capella processRandaoMixesReset 1.2790 us/op 1.4170 us/op 0.90
mainnet_e217614 - capella processHistoricalRootsUpdate 395.00 ns/op 414.00 ns/op 0.95
mainnet_e217614 - capella processParticipationFlagUpdates 691.00 ns/op 814.00 ns/op 0.85
mainnet_e217614 - capella afterProcessEpoch 107.79 ms/op 111.69 ms/op 0.97
phase0 processEpoch - mainnet_e58758 298.98 ms/op 319.49 ms/op 0.94
mainnet_e58758 - phase0 beforeProcessEpoch 70.047 ms/op 78.433 ms/op 0.89
mainnet_e58758 - phase0 processJustificationAndFinalization 6.1690 us/op 6.3570 us/op 0.97
mainnet_e58758 - phase0 processRewardsAndPenalties 37.199 ms/op 33.339 ms/op 1.12
mainnet_e58758 - phase0 processRegistryUpdates 2.6610 us/op 4.8230 us/op 0.55
mainnet_e58758 - phase0 processSlashings 387.00 ns/op 506.00 ns/op 0.76
mainnet_e58758 - phase0 processEth1DataReset 494.00 ns/op 416.00 ns/op 1.19
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 898.08 us/op 1.0364 ms/op 0.87
mainnet_e58758 - phase0 processSlashingsReset 1.1110 us/op 1.6380 us/op 0.68
mainnet_e58758 - phase0 processRandaoMixesReset 1.2690 us/op 1.7060 us/op 0.74
mainnet_e58758 - phase0 processHistoricalRootsUpdate 387.00 ns/op 654.00 ns/op 0.59
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1770 us/op 1.6230 us/op 0.73
mainnet_e58758 - phase0 afterProcessEpoch 33.418 ms/op 36.101 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 normalcase 984.66 us/op 1.8871 ms/op 0.52
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4428 ms/op 5.2511 ms/op 0.27
altair processInactivityUpdates - 250000 normalcase 17.794 ms/op 20.253 ms/op 0.88
altair processInactivityUpdates - 250000 worstcase 15.461 ms/op 18.018 ms/op 0.86
phase0 processRegistryUpdates - 250000 normalcase 3.1450 us/op 8.6600 us/op 0.36
phase0 processRegistryUpdates - 250000 badcase_full_deposits 283.63 us/op 265.58 us/op 1.07
phase0 processRegistryUpdates - 250000 worstcase 0.5 105.43 ms/op 113.12 ms/op 0.93
altair processRewardsAndPenalties - 250000 normalcase 29.774 ms/op 25.006 ms/op 1.19
altair processRewardsAndPenalties - 250000 worstcase 21.553 ms/op 21.134 ms/op 1.02
phase0 getAttestationDeltas - 250000 normalcase 4.7107 ms/op 6.4953 ms/op 0.73
phase0 getAttestationDeltas - 250000 worstcase 4.8007 ms/op 6.7636 ms/op 0.71
phase0 processSlashings - 250000 worstcase 92.520 us/op 74.770 us/op 1.24
altair processSyncCommitteeUpdates - 250000 9.2056 ms/op 10.207 ms/op 0.90
BeaconState.hashTreeRoot - No change 444.00 ns/op 521.00 ns/op 0.85
BeaconState.hashTreeRoot - 1 full validator 81.177 us/op 80.344 us/op 1.01
BeaconState.hashTreeRoot - 32 full validator 945.24 us/op 1.2960 ms/op 0.73
BeaconState.hashTreeRoot - 512 full validator 8.9037 ms/op 9.0495 ms/op 0.98
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 82.772 us/op 93.731 us/op 0.88
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1312 ms/op 1.7982 ms/op 0.63
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 19.936 ms/op 37.596 ms/op 0.53
BeaconState.hashTreeRoot - 1 balances 55.524 us/op 116.75 us/op 0.48
BeaconState.hashTreeRoot - 32 balances 801.92 us/op 1.0860 ms/op 0.74
BeaconState.hashTreeRoot - 512 balances 8.6588 ms/op 7.4254 ms/op 1.17
BeaconState.hashTreeRoot - 250000 balances 176.39 ms/op 179.72 ms/op 0.98
aggregationBits - 2048 els - zipIndexesInBitList 19.055 us/op 20.524 us/op 0.93
byteArrayEquals 32 43.990 ns/op 50.168 ns/op 0.88
Buffer.compare 32 14.968 ns/op 15.793 ns/op 0.95
byteArrayEquals 1024 1.2502 us/op 1.3456 us/op 0.93
Buffer.compare 1024 21.782 ns/op 23.434 ns/op 0.93
byteArrayEquals 16384 19.686 us/op 21.338 us/op 0.92
Buffer.compare 16384 206.93 ns/op 193.14 ns/op 1.07
byteArrayEquals 123687377 144.95 ms/op 153.63 ms/op 0.94
Buffer.compare 123687377 5.1684 ms/op 4.3620 ms/op 1.18
byteArrayEquals 32 - diff last byte 45.424 ns/op 44.736 ns/op 1.02
Buffer.compare 32 - diff last byte 14.998 ns/op 16.178 ns/op 0.93
byteArrayEquals 1024 - diff last byte 1.2105 us/op 1.2805 us/op 0.95
Buffer.compare 1024 - diff last byte 22.823 ns/op 23.421 ns/op 0.97
byteArrayEquals 16384 - diff last byte 19.252 us/op 20.325 us/op 0.95
Buffer.compare 16384 - diff last byte 186.33 ns/op 201.32 ns/op 0.93
byteArrayEquals 123687377 - diff last byte 145.47 ms/op 150.71 ms/op 0.97
Buffer.compare 123687377 - diff last byte 5.2186 ms/op 4.7463 ms/op 1.10
byteArrayEquals 32 - random bytes 4.6940 ns/op 5.0220 ns/op 0.93
Buffer.compare 32 - random bytes 14.926 ns/op 15.944 ns/op 0.94
byteArrayEquals 1024 - random bytes 4.7160 ns/op 5.0330 ns/op 0.94
Buffer.compare 1024 - random bytes 15.524 ns/op 16.031 ns/op 0.97
byteArrayEquals 16384 - random bytes 4.7340 ns/op 5.1250 ns/op 0.92
Buffer.compare 16384 - random bytes 14.825 ns/op 16.639 ns/op 0.89
byteArrayEquals 123687377 - random bytes 7.4600 ns/op 8.1000 ns/op 0.92
Buffer.compare 123687377 - random bytes 17.600 ns/op 18.790 ns/op 0.94
regular array get 100000 times 30.680 us/op 31.087 us/op 0.99
wrappedArray get 100000 times 30.715 us/op 31.047 us/op 0.99
arrayWithProxy get 100000 times 9.4862 ms/op 9.8418 ms/op 0.96
ssz.Root.equals 43.921 ns/op 42.350 ns/op 1.04
byteArrayEquals 43.097 ns/op 43.754 ns/op 0.98
Buffer.compare 8.9900 ns/op 8.6350 ns/op 1.04
processSlot - 1 slots 8.6580 us/op 9.4400 us/op 0.92
processSlot - 32 slots 2.2991 ms/op 2.3107 ms/op 0.99
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.9574 ms/op 2.2439 ms/op 1.32
getCommitteeAssignments - req 1 vs - 250000 vc 1.7901 ms/op 1.8052 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 3.5584 ms/op 3.5981 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7804 ms/op 3.8201 ms/op 0.99
findModifiedValidators - 10000 modified validators 764.09 ms/op 728.84 ms/op 1.05
findModifiedValidators - 1000 modified validators 646.11 ms/op 703.54 ms/op 0.92
findModifiedValidators - 100 modified validators 158.81 ms/op 163.68 ms/op 0.97
findModifiedValidators - 10 modified validators 172.23 ms/op 134.17 ms/op 1.28
findModifiedValidators - 1 modified validators 143.76 ms/op 169.96 ms/op 0.85
findModifiedValidators - no difference 129.42 ms/op 141.62 ms/op 0.91
compare ViewDUs 6.0409 s/op 6.1769 s/op 0.98
compare each validator Uint8Array 1.2480 s/op 1.6977 s/op 0.74
compare ViewDU to Uint8Array 949.13 ms/op 1.2922 s/op 0.73
migrate state 1000000 validators, 24 modified, 0 new 834.27 ms/op 871.56 ms/op 0.96
migrate state 1000000 validators, 1700 modified, 1000 new 1.0237 s/op 1.0286 s/op 1.00
migrate state 1000000 validators, 3400 modified, 2000 new 1.1628 s/op 1.3335 s/op 0.87
migrate state 1500000 validators, 24 modified, 0 new 762.48 ms/op 968.49 ms/op 0.79
migrate state 1500000 validators, 1700 modified, 1000 new 1.0944 s/op 1.1806 s/op 0.93
migrate state 1500000 validators, 3400 modified, 2000 new 1.3086 s/op 1.3868 s/op 0.94
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 6.0700 ns/op 6.1600 ns/op 0.99
state getBlockRootAtSlot - 250000 vs - 7PWei 545.20 ns/op 845.28 ns/op 0.64
naive computeProposerIndex 100000 validators 44.007 ms/op 49.603 ms/op 0.89
computeProposerIndex 100000 validators 1.3246 ms/op 1.4022 ms/op 0.94
naiveGetNextSyncCommitteeIndices 1000 validators 7.0728 s/op 7.7016 s/op 0.92
getNextSyncCommitteeIndices 1000 validators 91.583 ms/op 101.13 ms/op 0.91
naiveGetNextSyncCommitteeIndices 10000 validators 6.2026 s/op 7.6037 s/op 0.82
getNextSyncCommitteeIndices 10000 validators 96.480 ms/op 99.922 ms/op 0.97
naiveGetNextSyncCommitteeIndices 100000 validators 6.9132 s/op 7.3539 s/op 0.94
getNextSyncCommitteeIndices 100000 validators 95.471 ms/op 95.455 ms/op 1.00
naive computeShuffledIndex 100000 validators 20.990 s/op 23.592 s/op 0.89
cached computeShuffledIndex 100000 validators 480.79 ms/op 484.00 ms/op 0.99
naive computeShuffledIndex 2000000 validators 400.63 s/op 404.14 s/op 0.99
cached computeShuffledIndex 2000000 validators 16.247 s/op 25.732 s/op 0.63
computeProposers - vc 250000 519.42 us/op 524.64 us/op 0.99
computeEpochShuffling - vc 250000 37.785 ms/op 38.645 ms/op 0.98
getNextSyncCommittee - vc 250000 9.3420 ms/op 9.1565 ms/op 1.02
computeSigningRoot for AttestationData 17.817 us/op 19.367 us/op 0.92
hash AttestationData serialized data then Buffer.toString(base64) 1.1677 us/op 1.1577 us/op 1.01
toHexString serialized data 943.93 ns/op 956.31 ns/op 0.99
Buffer.toString(base64) 106.08 ns/op 103.76 ns/op 1.02
nodejs block root to RootHex using toHex 110.82 ns/op 100.49 ns/op 1.10
nodejs block root to RootHex using toRootHex 75.672 ns/op 66.809 ns/op 1.13
browser block root to RootHex using the deprecated toHexString 187.12 ns/op 178.56 ns/op 1.05
browser block root to RootHex using toHex 156.07 ns/op 149.05 ns/op 1.05
browser block root to RootHex using toRootHex 146.27 ns/op 140.04 ns/op 1.04

by benchmarkbot/action

@nflaig nflaig marked this pull request as draft June 16, 2025 15:56
@nflaig nflaig marked this pull request as ready for review June 17, 2025 12:16
@nflaig nflaig added this to the v1.32.0 milestone Jun 21, 2025
@wemeetagain wemeetagain merged commit 855e585 into unstable Jun 23, 2025
25 of 26 checks passed
@wemeetagain wemeetagain deleted the nflaig/fix-blobsidecar-sse branch June 23, 2025 08:16
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.32.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants