Skip to content

Conversation

@ensi321
Copy link
Contributor

@ensi321 ensi321 commented Jun 10, 2025

We should validate the correctness of blob schedule in addition to its format when parsing it.

Relevant spec ethereum/consensus-specs#4370

@ensi321 ensi321 marked this pull request as ready for review June 10, 2025 09:02
@ensi321 ensi321 requested a review from a team as a code owner June 10, 2025 09:02
@codecov
Copy link

codecov bot commented Jun 10, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 55.75%. Comparing base (b2b1a6d) to head (78a53bf).
Report is 1 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7942      +/-   ##
============================================
+ Coverage     55.73%   55.75%   +0.01%     
============================================
  Files           832      833       +1     
  Lines         59332    59356      +24     
  Branches       4570     4582      +12     
============================================
+ Hits          33070    33095      +25     
+ Misses        26195    26194       -1     
  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 10, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 3885ef2 Previous: b2b1a6d Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 798.29 us/op 1.1413 ms/op 0.70
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 33.353 us/op 41.109 us/op 0.81
BLS verify - blst 955.19 us/op 887.48 us/op 1.08
BLS verifyMultipleSignatures 3 - blst 1.3178 ms/op 1.3319 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst 1.8581 ms/op 1.7830 ms/op 1.04
BLS verifyMultipleSignatures 32 - blst 5.7541 ms/op 5.2600 ms/op 1.09
BLS verifyMultipleSignatures 64 - blst 9.0807 ms/op 9.6292 ms/op 0.94
BLS verifyMultipleSignatures 128 - blst 17.382 ms/op 17.987 ms/op 0.97
BLS deserializing 10000 signatures 654.86 ms/op 715.97 ms/op 0.91
BLS deserializing 100000 signatures 6.5094 s/op 7.0539 s/op 0.92
BLS verifyMultipleSignatures - same message - 3 - blst 924.29 us/op 887.80 us/op 1.04
BLS verifyMultipleSignatures - same message - 8 - blst 1.0360 ms/op 1.0486 ms/op 0.99
BLS verifyMultipleSignatures - same message - 32 - blst 1.6647 ms/op 1.7307 ms/op 0.96
BLS verifyMultipleSignatures - same message - 64 - blst 2.5572 ms/op 2.6600 ms/op 0.96
BLS verifyMultipleSignatures - same message - 128 - blst 4.1195 ms/op 4.5467 ms/op 0.91
BLS aggregatePubkeys 32 - blst 18.102 us/op 19.778 us/op 0.92
BLS aggregatePubkeys 128 - blst 63.800 us/op 71.440 us/op 0.89
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 55.106 ms/op 48.070 ms/op 1.15
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 48.960 ms/op 48.056 ms/op 1.02
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 41.249 ms/op 35.900 ms/op 1.15
getSlashingsAndExits - default max 51.319 us/op 78.799 us/op 0.65
getSlashingsAndExits - 2k 314.76 us/op 293.25 us/op 1.07
proposeBlockBody type=full, size=empty 4.8735 ms/op 6.3638 ms/op 0.77
isKnown best case - 1 super set check 403.00 ns/op 221.00 ns/op 1.82
isKnown normal case - 2 super set checks 404.00 ns/op 222.00 ns/op 1.82
isKnown worse case - 16 super set checks 402.00 ns/op 224.00 ns/op 1.79
InMemoryCheckpointStateCache - add get delete 2.5450 us/op 2.4120 us/op 1.06
validate api signedAggregateAndProof - struct 1.4856 ms/op 1.3924 ms/op 1.07
validate gossip signedAggregateAndProof - struct 1.4872 ms/op 1.4055 ms/op 1.06
batch validate gossip attestation - vc 640000 - chunk 32 108.68 us/op 116.27 us/op 0.93
batch validate gossip attestation - vc 640000 - chunk 64 90.109 us/op 102.50 us/op 0.88
batch validate gossip attestation - vc 640000 - chunk 128 86.248 us/op 95.530 us/op 0.90
batch validate gossip attestation - vc 640000 - chunk 256 84.626 us/op 95.459 us/op 0.89
pickEth1Vote - no votes 729.49 us/op 975.51 us/op 0.75
pickEth1Vote - max votes 4.3966 ms/op 7.4104 ms/op 0.59
pickEth1Vote - Eth1Data hashTreeRoot value x2048 8.4388 ms/op 10.797 ms/op 0.78
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 11.819 ms/op 14.665 ms/op 0.81
pickEth1Vote - Eth1Data fastSerialize value x2048 327.55 us/op 461.75 us/op 0.71
pickEth1Vote - Eth1Data fastSerialize tree x2048 1.8329 ms/op 2.0903 ms/op 0.88
bytes32 toHexString 487.00 ns/op 367.00 ns/op 1.33
bytes32 Buffer.toString(hex) 402.00 ns/op 235.00 ns/op 1.71
bytes32 Buffer.toString(hex) from Uint8Array 475.00 ns/op 322.00 ns/op 1.48
bytes32 Buffer.toString(hex) + 0x 398.00 ns/op 238.00 ns/op 1.67
Object access 1 prop 0.29600 ns/op 0.12400 ns/op 2.39
Map access 1 prop 0.30200 ns/op 0.12800 ns/op 2.36
Object get x1000 4.7570 ns/op 6.0210 ns/op 0.79
Map get x1000 5.4950 ns/op 6.5930 ns/op 0.83
Object set x1000 18.773 ns/op 28.326 ns/op 0.66
Map set x1000 16.542 ns/op 19.632 ns/op 0.84
Return object 10000 times 0.27640 ns/op 0.28800 ns/op 0.96
Throw Error 10000 times 3.2523 us/op 4.3302 us/op 0.75
toHex 91.108 ns/op 132.45 ns/op 0.69
Buffer.from 83.388 ns/op 129.50 ns/op 0.64
shared Buffer 59.624 ns/op 79.293 ns/op 0.75
fastMsgIdFn sha256 / 200 bytes 1.7940 us/op 2.1820 us/op 0.82
fastMsgIdFn h32 xxhash / 200 bytes 377.00 ns/op 206.00 ns/op 1.83
fastMsgIdFn h64 xxhash / 200 bytes 427.00 ns/op 270.00 ns/op 1.58
fastMsgIdFn sha256 / 1000 bytes 5.3390 us/op 7.3560 us/op 0.73
fastMsgIdFn h32 xxhash / 1000 bytes 489.00 ns/op 346.00 ns/op 1.41
fastMsgIdFn h64 xxhash / 1000 bytes 490.00 ns/op 344.00 ns/op 1.42
fastMsgIdFn sha256 / 10000 bytes 45.749 us/op 65.993 us/op 0.69
fastMsgIdFn h32 xxhash / 10000 bytes 1.8010 us/op 1.8340 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 1.2750 us/op 1.2290 us/op 1.04
send data - 1000 256B messages 9.7669 ms/op 11.171 ms/op 0.87
send data - 1000 512B messages 12.584 ms/op 16.135 ms/op 0.78
send data - 1000 1024B messages 19.705 ms/op 25.434 ms/op 0.77
send data - 1000 1200B messages 16.131 ms/op 19.266 ms/op 0.84
send data - 1000 2048B messages 19.858 ms/op 21.685 ms/op 0.92
send data - 1000 4096B messages 17.844 ms/op 24.742 ms/op 0.72
send data - 1000 16384B messages 75.531 ms/op 66.590 ms/op 1.13
send data - 1000 65536B messages 264.53 ms/op 189.73 ms/op 1.39
enrSubnets - fastDeserialize 64 bits 917.00 ns/op 890.00 ns/op 1.03
enrSubnets - ssz BitVector 64 bits 487.00 ns/op 327.00 ns/op 1.49
enrSubnets - fastDeserialize 4 bits 324.00 ns/op 136.00 ns/op 2.38
enrSubnets - ssz BitVector 4 bits 510.00 ns/op 325.00 ns/op 1.57
prioritizePeers score -10:0 att 32-0.1 sync 2-0 96.512 us/op 118.01 us/op 0.82
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 117.91 us/op 139.00 us/op 0.85
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 168.83 us/op 198.78 us/op 0.85
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 306.60 us/op 375.46 us/op 0.82
prioritizePeers score 0:0 att 64-1 sync 4-1 378.61 us/op 454.74 us/op 0.83
array of 16000 items push then shift 1.2720 us/op 1.6088 us/op 0.79
LinkedList of 16000 items push then shift 7.0830 ns/op 6.9880 ns/op 1.01
array of 16000 items push then pop 63.533 ns/op 74.797 ns/op 0.85
LinkedList of 16000 items push then pop 6.1060 ns/op 6.8900 ns/op 0.89
array of 24000 items push then shift 1.8704 us/op 2.4480 us/op 0.76
LinkedList of 24000 items push then shift 6.2050 ns/op 7.1030 ns/op 0.87
array of 24000 items push then pop 85.831 ns/op 104.00 ns/op 0.83
LinkedList of 24000 items push then pop 6.0310 ns/op 6.8300 ns/op 0.88
intersect bitArray bitLen 8 5.4210 ns/op 6.2860 ns/op 0.86
intersect array and set length 8 30.641 ns/op 40.213 ns/op 0.76
intersect bitArray bitLen 128 25.057 ns/op 30.697 ns/op 0.82
intersect array and set length 128 511.14 ns/op 648.23 ns/op 0.79
bitArray.getTrueBitIndexes() bitLen 128 1.1320 us/op 1.0360 us/op 1.09
bitArray.getTrueBitIndexes() bitLen 248 1.8410 us/op 1.8160 us/op 1.01
bitArray.getTrueBitIndexes() bitLen 512 3.5340 us/op 3.6890 us/op 0.96
Buffer.concat 32 items 699.00 ns/op 619.00 ns/op 1.13
Uint8Array.set 32 items 1.0580 us/op 950.00 ns/op 1.11
Buffer.copy 1.9620 us/op 2.6080 us/op 0.75
Uint8Array.set - with subarray 1.5720 us/op 1.7390 us/op 0.90
Uint8Array.set - without subarray 984.00 ns/op 887.00 ns/op 1.11
getUint32 - dataview 370.00 ns/op 213.00 ns/op 1.74
getUint32 - manual 303.00 ns/op 133.00 ns/op 2.28
Set add up to 64 items then delete first 1.7069 us/op 2.1914 us/op 0.78
OrderedSet add up to 64 items then delete first 2.6464 us/op 3.2290 us/op 0.82
Set add up to 64 items then delete last 1.7776 us/op 2.4693 us/op 0.72
OrderedSet add up to 64 items then delete last 2.9967 us/op 3.5734 us/op 0.84
Set add up to 64 items then delete middle 1.9643 us/op 2.5079 us/op 0.78
OrderedSet add up to 64 items then delete middle 4.3220 us/op 5.1898 us/op 0.83
Set add up to 128 items then delete first 3.7410 us/op 5.0340 us/op 0.74
OrderedSet add up to 128 items then delete first 5.5624 us/op 7.8998 us/op 0.70
Set add up to 128 items then delete last 3.6722 us/op 4.9747 us/op 0.74
OrderedSet add up to 128 items then delete last 5.7136 us/op 7.3635 us/op 0.78
Set add up to 128 items then delete middle 4.4321 us/op 6.0597 us/op 0.73
OrderedSet add up to 128 items then delete middle 11.165 us/op 13.790 us/op 0.81
Set add up to 256 items then delete first 7.1315 us/op 10.316 us/op 0.69
OrderedSet add up to 256 items then delete first 10.964 us/op 16.050 us/op 0.68
Set add up to 256 items then delete last 7.1647 us/op 9.9493 us/op 0.72
OrderedSet add up to 256 items then delete last 11.373 us/op 14.629 us/op 0.78
Set add up to 256 items then delete middle 7.1243 us/op 9.6809 us/op 0.74
OrderedSet add up to 256 items then delete middle 32.343 us/op 41.386 us/op 0.78
transfer serialized Status (84 B) 1.9090 us/op 2.2420 us/op 0.85
copy serialized Status (84 B) 1.2400 us/op 1.1910 us/op 1.04
transfer serialized SignedVoluntaryExit (112 B) 1.9290 us/op 2.2480 us/op 0.86
copy serialized SignedVoluntaryExit (112 B) 1.2630 us/op 1.2210 us/op 1.03
transfer serialized ProposerSlashing (416 B) 2.0330 us/op 2.3090 us/op 0.88
copy serialized ProposerSlashing (416 B) 1.3630 us/op 1.2760 us/op 1.07
transfer serialized Attestation (485 B) 2.0330 us/op 2.3440 us/op 0.87
copy serialized Attestation (485 B) 1.5670 us/op 1.2690 us/op 1.23
transfer serialized AttesterSlashing (33232 B) 2.3580 us/op 2.4020 us/op 0.98
copy serialized AttesterSlashing (33232 B) 3.5640 us/op 3.4600 us/op 1.03
transfer serialized Small SignedBeaconBlock (128000 B) 2.5660 us/op 3.0010 us/op 0.86
copy serialized Small SignedBeaconBlock (128000 B) 8.5620 us/op 9.0630 us/op 0.94
transfer serialized Avg SignedBeaconBlock (200000 B) 2.6890 us/op 3.6070 us/op 0.75
copy serialized Avg SignedBeaconBlock (200000 B) 12.198 us/op 16.390 us/op 0.74
transfer serialized BlobsSidecar (524380 B) 2.9700 us/op 3.6240 us/op 0.82
copy serialized BlobsSidecar (524380 B) 64.267 us/op 59.979 us/op 1.07
transfer serialized Big SignedBeaconBlock (1000000 B) 3.3060 us/op 3.5820 us/op 0.92
copy serialized Big SignedBeaconBlock (1000000 B) 106.05 us/op 117.80 us/op 0.90
pass gossip attestations to forkchoice per slot 2.2301 ms/op 2.9375 ms/op 0.76
forkChoice updateHead vc 100000 bc 64 eq 0 328.48 us/op 475.73 us/op 0.69
forkChoice updateHead vc 600000 bc 64 eq 0 2.0686 ms/op 3.0554 ms/op 0.68
forkChoice updateHead vc 1000000 bc 64 eq 0 3.6551 ms/op 4.8271 ms/op 0.76
forkChoice updateHead vc 600000 bc 320 eq 0 2.0837 ms/op 2.9622 ms/op 0.70
forkChoice updateHead vc 600000 bc 1200 eq 0 2.1041 ms/op 3.7308 ms/op 0.56
forkChoice updateHead vc 600000 bc 7200 eq 0 2.2876 ms/op 3.4530 ms/op 0.66
forkChoice updateHead vc 600000 bc 64 eq 1000 8.5076 ms/op 10.633 ms/op 0.80
forkChoice updateHead vc 600000 bc 64 eq 10000 8.3389 ms/op 10.584 ms/op 0.79
forkChoice updateHead vc 600000 bc 64 eq 300000 10.826 ms/op 13.873 ms/op 0.78
computeDeltas 500000 validators 300 proto nodes 2.9836 ms/op 4.0012 ms/op 0.75
computeDeltas 500000 validators 1200 proto nodes 2.9931 ms/op 3.9799 ms/op 0.75
computeDeltas 500000 validators 7200 proto nodes 2.9713 ms/op 3.9983 ms/op 0.74
computeDeltas 750000 validators 300 proto nodes 4.5179 ms/op 5.8407 ms/op 0.77
computeDeltas 750000 validators 1200 proto nodes 4.5083 ms/op 5.9881 ms/op 0.75
computeDeltas 750000 validators 7200 proto nodes 4.4768 ms/op 5.8400 ms/op 0.77
computeDeltas 1400000 validators 300 proto nodes 8.4484 ms/op 11.057 ms/op 0.76
computeDeltas 1400000 validators 1200 proto nodes 8.6290 ms/op 11.091 ms/op 0.78
computeDeltas 1400000 validators 7200 proto nodes 8.4969 ms/op 11.294 ms/op 0.75
computeDeltas 2100000 validators 300 proto nodes 13.259 ms/op 16.757 ms/op 0.79
computeDeltas 2100000 validators 1200 proto nodes 13.052 ms/op 16.901 ms/op 0.77
computeDeltas 2100000 validators 7200 proto nodes 12.902 ms/op 17.343 ms/op 0.74
altair processAttestation - 250000 vs - 7PWei normalcase 1.5894 ms/op 2.0773 ms/op 0.77
altair processAttestation - 250000 vs - 7PWei worstcase 2.3984 ms/op 3.1168 ms/op 0.77
altair processAttestation - setStatus - 1/6 committees join 88.174 us/op 137.54 us/op 0.64
altair processAttestation - setStatus - 1/3 committees join 171.16 us/op 248.88 us/op 0.69
altair processAttestation - setStatus - 1/2 committees join 236.43 us/op 345.60 us/op 0.68
altair processAttestation - setStatus - 2/3 committees join 320.87 us/op 452.27 us/op 0.71
altair processAttestation - setStatus - 4/5 committees join 483.79 us/op 603.93 us/op 0.80
altair processAttestation - setStatus - 100% committees join 570.02 us/op 741.84 us/op 0.77
altair processBlock - 250000 vs - 7PWei normalcase 4.6620 ms/op 4.7924 ms/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase hashState 26.666 ms/op 29.107 ms/op 0.92
altair processBlock - 250000 vs - 7PWei worstcase 31.233 ms/op 36.422 ms/op 0.86
altair processBlock - 250000 vs - 7PWei worstcase hashState 61.130 ms/op 80.084 ms/op 0.76
phase0 processBlock - 250000 vs - 7PWei normalcase 1.3031 ms/op 1.6615 ms/op 0.78
phase0 processBlock - 250000 vs - 7PWei worstcase 23.077 ms/op 23.327 ms/op 0.99
altair processEth1Data - 250000 vs - 7PWei normalcase 276.48 us/op 350.11 us/op 0.79
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.0460 us/op 6.0790 us/op 0.99
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 33.066 us/op 42.167 us/op 0.78
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.456 us/op 12.535 us/op 0.83
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 3.8170 us/op 7.2980 us/op 0.52
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 93.318 us/op 219.49 us/op 0.43
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.3676 ms/op 1.9371 ms/op 0.71
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8213 ms/op 2.4274 ms/op 0.75
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7945 ms/op 2.4323 ms/op 0.74
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6665 ms/op 4.8925 ms/op 0.75
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.8609 ms/op 2.5104 ms/op 0.74
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.7656 ms/op 5.0029 ms/op 0.75
Tree 40 250000 create 337.06 ms/op 479.67 ms/op 0.70
Tree 40 250000 get(125000) 103.61 ns/op 147.31 ns/op 0.70
Tree 40 250000 set(125000) 1.1458 us/op 1.6296 us/op 0.70
Tree 40 250000 toArray() 14.441 ms/op 20.906 ms/op 0.69
Tree 40 250000 iterate all - toArray() + loop 15.636 ms/op 19.715 ms/op 0.79
Tree 40 250000 iterate all - get(i) 42.101 ms/op 62.964 ms/op 0.67
Array 250000 create 2.3915 ms/op 2.6799 ms/op 0.89
Array 250000 clone - spread 619.81 us/op 853.47 us/op 0.73
Array 250000 get(125000) 0.54600 ns/op 0.41400 ns/op 1.32
Array 250000 set(125000) 0.55500 ns/op 0.43600 ns/op 1.27
Array 250000 iterate all - loop 73.093 us/op 112.04 us/op 0.65
phase0 afterProcessEpoch - 250000 vs - 7PWei 37.361 ms/op 43.980 ms/op 0.85
Array.fill - length 1000000 2.3880 ms/op 4.5031 ms/op 0.53
Array push - length 1000000 9.4700 ms/op 17.366 ms/op 0.55
Array.get 0.25279 ns/op 0.28987 ns/op 0.87
Uint8Array.get 0.32215 ns/op 0.47821 ns/op 0.67
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.082 ms/op 20.110 ms/op 0.80
altair processEpoch - mainnet_e81889 219.58 ms/op 279.71 ms/op 0.79
mainnet_e81889 - altair beforeProcessEpoch 15.037 ms/op 20.906 ms/op 0.72
mainnet_e81889 - altair processJustificationAndFinalization 4.7550 us/op 5.7750 us/op 0.82
mainnet_e81889 - altair processInactivityUpdates 3.3575 ms/op 5.1075 ms/op 0.66
mainnet_e81889 - altair processRewardsAndPenalties 43.359 ms/op 39.911 ms/op 1.09
mainnet_e81889 - altair processRegistryUpdates 842.00 ns/op 751.00 ns/op 1.12
mainnet_e81889 - altair processSlashings 407.00 ns/op 194.00 ns/op 2.10
mainnet_e81889 - altair processEth1DataReset 390.00 ns/op 184.00 ns/op 2.12
mainnet_e81889 - altair processEffectiveBalanceUpdates 940.17 us/op 1.2630 ms/op 0.74
mainnet_e81889 - altair processSlashingsReset 1.1470 us/op 920.00 ns/op 1.25
mainnet_e81889 - altair processRandaoMixesReset 1.2080 us/op 1.2190 us/op 0.99
mainnet_e81889 - altair processHistoricalRootsUpdate 392.00 ns/op 190.00 ns/op 2.06
mainnet_e81889 - altair processParticipationFlagUpdates 716.00 ns/op 552.00 ns/op 1.30
mainnet_e81889 - altair processSyncCommitteeUpdates 352.00 ns/op 163.00 ns/op 2.16
mainnet_e81889 - altair afterProcessEpoch 39.639 ms/op 46.832 ms/op 0.85
capella processEpoch - mainnet_e217614 932.14 ms/op 874.37 ms/op 1.07
mainnet_e217614 - capella beforeProcessEpoch 58.139 ms/op 62.584 ms/op 0.93
mainnet_e217614 - capella processJustificationAndFinalization 4.5330 us/op 5.4570 us/op 0.83
mainnet_e217614 - capella processInactivityUpdates 11.253 ms/op 15.354 ms/op 0.73
mainnet_e217614 - capella processRewardsAndPenalties 190.14 ms/op 182.47 ms/op 1.04
mainnet_e217614 - capella processRegistryUpdates 5.1410 us/op 6.6830 us/op 0.77
mainnet_e217614 - capella processSlashings 387.00 ns/op 185.00 ns/op 2.09
mainnet_e217614 - capella processEth1DataReset 379.00 ns/op 189.00 ns/op 2.01
mainnet_e217614 - capella processEffectiveBalanceUpdates 3.1797 ms/op 11.918 ms/op 0.27
mainnet_e217614 - capella processSlashingsReset 1.0800 us/op 903.00 ns/op 1.20
mainnet_e217614 - capella processRandaoMixesReset 1.2190 us/op 1.2340 us/op 0.99
mainnet_e217614 - capella processHistoricalRootsUpdate 394.00 ns/op 192.00 ns/op 2.05
mainnet_e217614 - capella processParticipationFlagUpdates 694.00 ns/op 547.00 ns/op 1.27
mainnet_e217614 - capella afterProcessEpoch 109.68 ms/op 118.00 ms/op 0.93
phase0 processEpoch - mainnet_e58758 251.46 ms/op 293.13 ms/op 0.86
mainnet_e58758 - phase0 beforeProcessEpoch 62.478 ms/op 75.649 ms/op 0.83
mainnet_e58758 - phase0 processJustificationAndFinalization 4.5030 us/op 5.7820 us/op 0.78
mainnet_e58758 - phase0 processRewardsAndPenalties 33.011 ms/op 37.219 ms/op 0.89
mainnet_e58758 - phase0 processRegistryUpdates 2.9950 us/op 3.2400 us/op 0.92
mainnet_e58758 - phase0 processSlashings 399.00 ns/op 186.00 ns/op 2.15
mainnet_e58758 - phase0 processEth1DataReset 400.00 ns/op 184.00 ns/op 2.17
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 996.33 us/op 1.2805 ms/op 0.78
mainnet_e58758 - phase0 processSlashingsReset 951.00 ns/op 978.00 ns/op 0.97
mainnet_e58758 - phase0 processRandaoMixesReset 1.2480 us/op 1.2270 us/op 1.02
mainnet_e58758 - phase0 processHistoricalRootsUpdate 393.00 ns/op 192.00 ns/op 2.05
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1660 us/op 917.00 ns/op 1.27
mainnet_e58758 - phase0 afterProcessEpoch 33.572 ms/op 36.612 ms/op 0.92
phase0 processEffectiveBalanceUpdates - 250000 normalcase 990.34 us/op 1.3937 ms/op 0.71
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4362 ms/op 2.2169 ms/op 0.65
altair processInactivityUpdates - 250000 normalcase 15.943 ms/op 18.003 ms/op 0.89
altair processInactivityUpdates - 250000 worstcase 17.549 ms/op 17.611 ms/op 1.00
phase0 processRegistryUpdates - 250000 normalcase 5.3670 us/op 7.8370 us/op 0.68
phase0 processRegistryUpdates - 250000 badcase_full_deposits 285.91 us/op 281.31 us/op 1.02
phase0 processRegistryUpdates - 250000 worstcase 0.5 110.17 ms/op 101.80 ms/op 1.08
altair processRewardsAndPenalties - 250000 normalcase 22.710 ms/op 25.894 ms/op 0.88
altair processRewardsAndPenalties - 250000 worstcase 26.957 ms/op 27.477 ms/op 0.98
phase0 getAttestationDeltas - 250000 normalcase 4.6091 ms/op 9.2617 ms/op 0.50
phase0 getAttestationDeltas - 250000 worstcase 16.492 ms/op 6.3366 ms/op 2.60
phase0 processSlashings - 250000 worstcase 88.740 us/op 107.83 us/op 0.82
altair processSyncCommitteeUpdates - 250000 9.7331 ms/op 10.980 ms/op 0.89
BeaconState.hashTreeRoot - No change 430.00 ns/op 231.00 ns/op 1.86
BeaconState.hashTreeRoot - 1 full validator 76.195 us/op 79.713 us/op 0.96
BeaconState.hashTreeRoot - 32 full validator 886.90 us/op 838.00 us/op 1.06
BeaconState.hashTreeRoot - 512 full validator 7.1209 ms/op 10.735 ms/op 0.66
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 95.362 us/op 97.844 us/op 0.97
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.6628 ms/op 2.0977 ms/op 0.79
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 24.269 ms/op 28.499 ms/op 0.85
BeaconState.hashTreeRoot - 1 balances 61.157 us/op 73.483 us/op 0.83
BeaconState.hashTreeRoot - 32 balances 678.52 us/op 713.69 us/op 0.95
BeaconState.hashTreeRoot - 512 balances 5.7512 ms/op 8.5501 ms/op 0.67
BeaconState.hashTreeRoot - 250000 balances 179.42 ms/op 167.34 ms/op 1.07
aggregationBits - 2048 els - zipIndexesInBitList 18.185 us/op 21.988 us/op 0.83
byteArrayEquals 32 40.645 ns/op 54.669 ns/op 0.74
Buffer.compare 32 14.398 ns/op 17.550 ns/op 0.82
byteArrayEquals 1024 1.1884 us/op 1.6362 us/op 0.73
Buffer.compare 1024 22.132 ns/op 27.271 ns/op 0.81
byteArrayEquals 16384 18.880 us/op 25.730 us/op 0.73
Buffer.compare 16384 185.65 ns/op 182.98 ns/op 1.01
byteArrayEquals 123687377 143.22 ms/op 196.59 ms/op 0.73
Buffer.compare 123687377 5.2868 ms/op 8.9596 ms/op 0.59
byteArrayEquals 32 - diff last byte 44.895 ns/op 54.082 ns/op 0.83
Buffer.compare 32 - diff last byte 14.721 ns/op 17.577 ns/op 0.84
byteArrayEquals 1024 - diff last byte 1.1937 us/op 1.6956 us/op 0.70
Buffer.compare 1024 - diff last byte 21.643 ns/op 26.321 ns/op 0.82
byteArrayEquals 16384 - diff last byte 18.962 us/op 26.367 us/op 0.72
Buffer.compare 16384 - diff last byte 193.11 ns/op 193.13 ns/op 1.00
byteArrayEquals 123687377 - diff last byte 146.94 ms/op 201.50 ms/op 0.73
Buffer.compare 123687377 - diff last byte 3.9525 ms/op 9.5561 ms/op 0.41
byteArrayEquals 32 - random bytes 4.8930 ns/op 5.2340 ns/op 0.93
Buffer.compare 32 - random bytes 15.888 ns/op 17.659 ns/op 0.90
byteArrayEquals 1024 - random bytes 4.8930 ns/op 5.2770 ns/op 0.93
Buffer.compare 1024 - random bytes 15.971 ns/op 17.635 ns/op 0.91
byteArrayEquals 16384 - random bytes 4.8750 ns/op 5.2900 ns/op 0.92
Buffer.compare 16384 - random bytes 16.258 ns/op 17.968 ns/op 0.90
byteArrayEquals 123687377 - random bytes 7.6700 ns/op 6.7600 ns/op 1.13
Buffer.compare 123687377 - random bytes 19.210 ns/op 19.410 ns/op 0.99
regular array get 100000 times 30.622 us/op 35.290 us/op 0.87
wrappedArray get 100000 times 30.599 us/op 34.979 us/op 0.87
arrayWithProxy get 100000 times 9.1795 ms/op 14.167 ms/op 0.65
ssz.Root.equals 43.612 ns/op 49.405 ns/op 0.88
byteArrayEquals 43.093 ns/op 47.880 ns/op 0.90
Buffer.compare 9.3090 ns/op 10.974 ns/op 0.85
processSlot - 1 slots 8.9410 us/op 12.315 us/op 0.73
processSlot - 32 slots 3.6197 ms/op 2.1696 ms/op 1.67
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.0431 ms/op 3.6214 ms/op 0.56
getCommitteeAssignments - req 1 vs - 250000 vc 1.7988 ms/op 2.7136 ms/op 0.66
getCommitteeAssignments - req 100 vs - 250000 vc 3.5273 ms/op 4.2916 ms/op 0.82
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7398 ms/op 4.6190 ms/op 0.81
findModifiedValidators - 10000 modified validators 751.16 ms/op 824.44 ms/op 0.91
findModifiedValidators - 1000 modified validators 650.92 ms/op 794.27 ms/op 0.82
findModifiedValidators - 100 modified validators 152.28 ms/op 233.63 ms/op 0.65
findModifiedValidators - 10 modified validators 165.23 ms/op 220.77 ms/op 0.75
findModifiedValidators - 1 modified validators 125.94 ms/op 276.93 ms/op 0.45
findModifiedValidators - no difference 130.81 ms/op 183.11 ms/op 0.71
compare ViewDUs 6.0347 s/op 7.2018 s/op 0.84
compare each validator Uint8Array 1.3216 s/op 1.6189 s/op 0.82
compare ViewDU to Uint8Array 819.69 ms/op 1.0637 s/op 0.77
migrate state 1000000 validators, 24 modified, 0 new 868.90 ms/op 846.79 ms/op 1.03
migrate state 1000000 validators, 1700 modified, 1000 new 1.1084 s/op 1.0751 s/op 1.03
migrate state 1000000 validators, 3400 modified, 2000 new 1.2512 s/op 1.6644 s/op 0.75
migrate state 1500000 validators, 24 modified, 0 new 838.40 ms/op 846.88 ms/op 0.99
migrate state 1500000 validators, 1700 modified, 1000 new 981.88 ms/op 1.0511 s/op 0.93
migrate state 1500000 validators, 3400 modified, 2000 new 1.2350 s/op 1.4206 s/op 0.87
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.6300 ns/op 4.9900 ns/op 1.13
state getBlockRootAtSlot - 250000 vs - 7PWei 371.81 ns/op 639.51 ns/op 0.58
naive computeProposerIndex 100000 validators 41.722 ms/op 56.982 ms/op 0.73
computeProposerIndex 100000 validators 1.3124 ms/op 1.6585 ms/op 0.79
naiveGetNextSyncCommitteeIndices 1000 validators 6.7130 s/op 7.9219 s/op 0.85
getNextSyncCommitteeIndices 1000 validators 93.578 ms/op 118.65 ms/op 0.79
naiveGetNextSyncCommitteeIndices 10000 validators 7.1869 s/op 7.8954 s/op 0.91
getNextSyncCommitteeIndices 10000 validators 93.569 ms/op 130.01 ms/op 0.72
naiveGetNextSyncCommitteeIndices 100000 validators 6.3354 s/op 9.0227 s/op 0.70
getNextSyncCommitteeIndices 100000 validators 89.595 ms/op 122.34 ms/op 0.73
naive computeShuffledIndex 100000 validators 20.184 s/op 25.490 s/op 0.79
cached computeShuffledIndex 100000 validators 458.23 ms/op 600.19 ms/op 0.76
naive computeShuffledIndex 2000000 validators 381.32 s/op 513.94 s/op 0.74
cached computeShuffledIndex 2000000 validators 17.905 s/op 41.629 s/op 0.43
computeProposers - vc 250000 522.52 us/op 699.85 us/op 0.75
computeEpochShuffling - vc 250000 37.675 ms/op 45.901 ms/op 0.82
getNextSyncCommittee - vc 250000 9.1243 ms/op 11.222 ms/op 0.81
computeSigningRoot for AttestationData 18.381 us/op 20.849 us/op 0.88
hash AttestationData serialized data then Buffer.toString(base64) 1.1959 us/op 1.6813 us/op 0.71
toHexString serialized data 936.40 ns/op 1.3009 us/op 0.72
Buffer.toString(base64) 107.40 ns/op 167.36 ns/op 0.64
nodejs block root to RootHex using toHex 111.44 ns/op 167.47 ns/op 0.67
nodejs block root to RootHex using toRootHex 76.339 ns/op 95.066 ns/op 0.80
browser block root to RootHex using the deprecated toHexString 187.33 ns/op 402.42 ns/op 0.47
browser block root to RootHex using toHex 155.72 ns/op 296.05 ns/op 0.53
browser block root to RootHex using toRootHex 145.65 ns/op 172.31 ns/op 0.85

by benchmarkbot/action

Copy link
Member

@nflaig nflaig left a comment

Choose a reason for hiding this comment

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

LGTM

@ensi321 ensi321 merged commit 6fa9960 into unstable Jun 11, 2025
30 of 33 checks passed
@ensi321 ensi321 deleted the nc/validate-blob-schedule branch June 11, 2025 07:25
KatyaRyazantseva pushed a commit to KatyaRyazantseva/lodestar that referenced this pull request Jun 19, 2025
We should validate the correctness of blob schedule in addition to its
format when parsing it.


Relevant spec ethereum/consensus-specs#4370

---------

Co-authored-by: Nico Flaig <[email protected]>
@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