Skip to content

chore: update 404 block/state error messages to match spec examples #7775

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 30, 2025

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Apr 30, 2025

Motivation

Obol currently uses the message to determine if block was missed for slot and assumes that clients use the same format as per spec example. While I don't think this is a great approach it's simple enough for us to adjust and doesn't hurt to be closer to spec examples.

And the problem with just using the status code (404) right now is that it can either mean "route not implemented" or "block not found", I guess could consider to standardize error codes for this on the beacon-api spec but likely not worth it due to limited use cases, usually status code is good enough.

Description

Update 404 block/state error messages to match spec examples (state 404 message, block 404 message)

@nflaig nflaig requested a review from a team as a code owner April 30, 2025 20:50
Copy link

codecov bot commented Apr 30, 2025

Codecov Report

Attention: Patch coverage is 0% with 4 lines in your changes missing coverage. Please review.

Project coverage is 56.04%. Comparing base (8b76033) to head (a6cee79).
Report is 1 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7775      +/-   ##
============================================
- Coverage     56.04%   56.04%   -0.01%     
============================================
  Files           823      823              
  Lines         57892    57892              
  Branches       4452     4451       -1     
============================================
- Hits          32448    32445       -3     
- Misses        25376    25379       +3     
  Partials         68       68              
🚀 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.

Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 32381aa Previous: 30d888c Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0167 ms/op 993.50 us/op 1.02
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.419 us/op 35.936 us/op 1.04
BLS verify - blst 858.68 us/op 904.78 us/op 0.95
BLS verifyMultipleSignatures 3 - blst 1.4297 ms/op 1.3264 ms/op 1.08
BLS verifyMultipleSignatures 8 - blst 1.8201 ms/op 2.0733 ms/op 0.88
BLS verifyMultipleSignatures 32 - blst 5.2043 ms/op 5.7056 ms/op 0.91
BLS verifyMultipleSignatures 64 - blst 9.6568 ms/op 10.842 ms/op 0.89
BLS verifyMultipleSignatures 128 - blst 18.844 ms/op 17.583 ms/op 1.07
BLS deserializing 10000 signatures 733.90 ms/op 703.70 ms/op 1.04
BLS deserializing 100000 signatures 7.3779 s/op 7.0097 s/op 1.05
BLS verifyMultipleSignatures - same message - 3 - blst 1.0467 ms/op 1.0813 ms/op 0.97
BLS verifyMultipleSignatures - same message - 8 - blst 1.2090 ms/op 1.1129 ms/op 1.09
BLS verifyMultipleSignatures - same message - 32 - blst 2.0070 ms/op 1.7676 ms/op 1.14
BLS verifyMultipleSignatures - same message - 64 - blst 2.8520 ms/op 2.6471 ms/op 1.08
BLS verifyMultipleSignatures - same message - 128 - blst 4.7717 ms/op 4.7582 ms/op 1.00
BLS aggregatePubkeys 32 - blst 20.497 us/op 19.773 us/op 1.04
BLS aggregatePubkeys 128 - blst 74.004 us/op 70.408 us/op 1.05
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 56.607 ms/op 54.582 ms/op 1.04
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 55.947 ms/op 49.439 ms/op 1.13
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 44.858 ms/op 42.528 ms/op 1.05
getSlashingsAndExits - default max 90.292 us/op 77.077 us/op 1.17
getSlashingsAndExits - 2k 378.81 us/op 405.60 us/op 0.93
proposeBlockBody type=full, size=empty 6.7013 ms/op 6.9225 ms/op 0.97
isKnown best case - 1 super set check 218.00 ns/op 205.00 ns/op 1.06
isKnown normal case - 2 super set checks 266.00 ns/op 200.00 ns/op 1.33
isKnown worse case - 16 super set checks 215.00 ns/op 201.00 ns/op 1.07
InMemoryCheckpointStateCache - add get delete 2.4880 us/op 2.3280 us/op 1.07
validate api signedAggregateAndProof - struct 1.3967 ms/op 1.4871 ms/op 0.94
validate gossip signedAggregateAndProof - struct 1.3915 ms/op 1.4392 ms/op 0.97
batch validate gossip attestation - vc 640000 - chunk 32 114.46 us/op 129.78 us/op 0.88
batch validate gossip attestation - vc 640000 - chunk 64 99.750 us/op 104.60 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 128 92.616 us/op 100.11 us/op 0.93
batch validate gossip attestation - vc 640000 - chunk 256 91.606 us/op 106.57 us/op 0.86
pickEth1Vote - no votes 1.0057 ms/op 1.0495 ms/op 0.96
pickEth1Vote - max votes 5.6637 ms/op 8.4955 ms/op 0.67
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.038 ms/op 12.527 ms/op 0.88
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 15.561 ms/op 18.180 ms/op 0.86
pickEth1Vote - Eth1Data fastSerialize value x2048 462.92 us/op 481.22 us/op 0.96
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.8625 ms/op 2.5301 ms/op 1.13
bytes32 toHexString 362.00 ns/op 373.00 ns/op 0.97
bytes32 Buffer.toString(hex) 248.00 ns/op 274.00 ns/op 0.91
bytes32 Buffer.toString(hex) from Uint8Array 333.00 ns/op 369.00 ns/op 0.90
bytes32 Buffer.toString(hex) + 0x 240.00 ns/op 275.00 ns/op 0.87
Object access 1 prop 0.12000 ns/op 0.13600 ns/op 0.88
Map access 1 prop 0.12600 ns/op 0.15600 ns/op 0.81
Object get x1000 5.7100 ns/op 6.2810 ns/op 0.91
Map get x1000 6.2970 ns/op 6.7280 ns/op 0.94
Object set x1000 27.913 ns/op 30.817 ns/op 0.91
Map set x1000 19.279 ns/op 21.212 ns/op 0.91
Return object 10000 times 0.28480 ns/op 0.30620 ns/op 0.93
Throw Error 10000 times 4.2288 us/op 4.4355 us/op 0.95
toHex 139.98 ns/op 140.53 ns/op 1.00
Buffer.from 130.81 ns/op 129.48 ns/op 1.01
shared Buffer 92.201 ns/op 89.982 ns/op 1.02
fastMsgIdFn sha256 / 200 bytes 2.1350 us/op 2.2430 us/op 0.95
fastMsgIdFn h32 xxhash / 200 bytes 204.00 ns/op 227.00 ns/op 0.90
fastMsgIdFn h64 xxhash / 200 bytes 266.00 ns/op 313.00 ns/op 0.85
fastMsgIdFn sha256 / 1000 bytes 8.0280 us/op 7.3220 us/op 1.10
fastMsgIdFn h32 xxhash / 1000 bytes 332.00 ns/op 385.00 ns/op 0.86
fastMsgIdFn h64 xxhash / 1000 bytes 343.00 ns/op 356.00 ns/op 0.96
fastMsgIdFn sha256 / 10000 bytes 63.383 us/op 65.197 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.7610 us/op 1.9000 us/op 0.93
fastMsgIdFn h64 xxhash / 10000 bytes 1.1640 us/op 1.2800 us/op 0.91
send data - 1000 256B messages 11.295 ms/op 12.791 ms/op 0.88
send data - 1000 512B messages 16.287 ms/op 17.159 ms/op 0.95
send data - 1000 1024B messages 25.114 ms/op 27.852 ms/op 0.90
send data - 1000 1200B messages 20.036 ms/op 21.640 ms/op 0.93
send data - 1000 2048B messages 20.448 ms/op 26.347 ms/op 0.78
send data - 1000 4096B messages 25.627 ms/op 30.766 ms/op 0.83
send data - 1000 16384B messages 74.949 ms/op 69.081 ms/op 1.08
send data - 1000 65536B messages 230.38 ms/op 207.36 ms/op 1.11
enrSubnets - fastDeserialize 64 bits 898.00 ns/op 893.00 ns/op 1.01
enrSubnets - ssz BitVector 64 bits 324.00 ns/op 331.00 ns/op 0.98
enrSubnets - fastDeserialize 4 bits 137.00 ns/op 135.00 ns/op 1.01
enrSubnets - ssz BitVector 4 bits 325.00 ns/op 332.00 ns/op 0.98
prioritizePeers score -10:0 att 32-0.1 sync 2-0 118.81 us/op 124.47 us/op 0.95
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 141.27 us/op 149.76 us/op 0.94
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 198.68 us/op 217.37 us/op 0.91
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 376.88 us/op 414.47 us/op 0.91
prioritizePeers score 0:0 att 64-1 sync 4-1 456.55 us/op 531.34 us/op 0.86
array of 16000 items push then shift 1.5708 us/op 1.6951 us/op 0.93
LinkedList of 16000 items push then shift 6.9900 ns/op 8.2260 ns/op 0.85
array of 16000 items push then pop 75.069 ns/op 84.262 ns/op 0.89
LinkedList of 16000 items push then pop 7.0370 ns/op 7.7390 ns/op 0.91
array of 24000 items push then shift 2.3625 us/op 2.5693 us/op 0.92
LinkedList of 24000 items push then shift 7.0570 ns/op 8.7560 ns/op 0.81
array of 24000 items push then pop 100.57 ns/op 110.09 ns/op 0.91
LinkedList of 24000 items push then pop 7.4560 ns/op 7.1520 ns/op 1.04
intersect bitArray bitLen 8 6.4320 ns/op 6.5510 ns/op 0.98
intersect array and set length 8 38.146 ns/op 39.256 ns/op 0.97
intersect bitArray bitLen 128 30.072 ns/op 30.744 ns/op 0.98
intersect array and set length 128 653.08 ns/op 671.83 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 128 1.0390 us/op 1.0770 us/op 0.96
bitArray.getTrueBitIndexes() bitLen 248 1.8350 us/op 1.9950 us/op 0.92
bitArray.getTrueBitIndexes() bitLen 512 3.6800 us/op 3.8280 us/op 0.96
Buffer.concat 32 items 620.00 ns/op 796.00 ns/op 0.78
Uint8Array.set 32 items 1.0600 us/op 1.2410 us/op 0.85
Buffer.copy 2.2160 us/op 2.4640 us/op 0.90
Uint8Array.set - with subarray 2.4020 us/op 1.7450 us/op 1.38
Uint8Array.set - without subarray 1.3360 us/op 1.0620 us/op 1.26
getUint32 - dataview 207.00 ns/op 252.00 ns/op 0.82
getUint32 - manual 133.00 ns/op 141.00 ns/op 0.94
Set add up to 64 items then delete first 2.0298 us/op 2.4257 us/op 0.84
OrderedSet add up to 64 items then delete first 3.8734 us/op 3.3628 us/op 1.15
Set add up to 64 items then delete last 2.5715 us/op 2.6839 us/op 0.96
OrderedSet add up to 64 items then delete last 3.8002 us/op 3.8366 us/op 0.99
Set add up to 64 items then delete middle 2.6320 us/op 2.7999 us/op 0.94
OrderedSet add up to 64 items then delete middle 5.5340 us/op 6.1165 us/op 0.90
Set add up to 128 items then delete first 5.3002 us/op 5.7812 us/op 0.92
OrderedSet add up to 128 items then delete first 9.1126 us/op 8.6011 us/op 1.06
Set add up to 128 items then delete last 5.4456 us/op 5.6763 us/op 0.96
OrderedSet add up to 128 items then delete last 7.4082 us/op 9.2429 us/op 0.80
Set add up to 128 items then delete middle 4.9029 us/op 5.9624 us/op 0.82
OrderedSet add up to 128 items then delete middle 14.570 us/op 16.285 us/op 0.89
Set add up to 256 items then delete first 11.857 us/op 12.362 us/op 0.96
OrderedSet add up to 256 items then delete first 16.439 us/op 20.262 us/op 0.81
Set add up to 256 items then delete last 10.150 us/op 12.402 us/op 0.82
OrderedSet add up to 256 items then delete last 15.672 us/op 19.445 us/op 0.81
Set add up to 256 items then delete middle 10.345 us/op 12.489 us/op 0.83
OrderedSet add up to 256 items then delete middle 44.424 us/op 48.323 us/op 0.92
transfer serialized Status (84 B) 2.3360 us/op 2.5550 us/op 0.91
copy serialized Status (84 B) 1.2600 us/op 1.3370 us/op 0.94
transfer serialized SignedVoluntaryExit (112 B) 2.4150 us/op 2.5160 us/op 0.96
copy serialized SignedVoluntaryExit (112 B) 1.4530 us/op 1.5430 us/op 0.94
transfer serialized ProposerSlashing (416 B) 3.6630 us/op 2.7490 us/op 1.33
copy serialized ProposerSlashing (416 B) 2.1300 us/op 1.9290 us/op 1.10
transfer serialized Attestation (485 B) 2.5240 us/op 2.6030 us/op 0.97
copy serialized Attestation (485 B) 1.3840 us/op 1.4820 us/op 0.93
transfer serialized AttesterSlashing (33232 B) 2.6360 us/op 2.6680 us/op 0.99
copy serialized AttesterSlashing (33232 B) 3.6880 us/op 4.7570 us/op 0.78
transfer serialized Small SignedBeaconBlock (128000 B) 2.8720 us/op 3.1760 us/op 0.90
copy serialized Small SignedBeaconBlock (128000 B) 10.228 us/op 12.949 us/op 0.79
transfer serialized Avg SignedBeaconBlock (200000 B) 3.3690 us/op 3.5960 us/op 0.94
copy serialized Avg SignedBeaconBlock (200000 B) 14.738 us/op 20.418 us/op 0.72
transfer serialized BlobsSidecar (524380 B) 3.6400 us/op 4.2260 us/op 0.86
copy serialized BlobsSidecar (524380 B) 113.98 us/op 74.144 us/op 1.54
transfer serialized Big SignedBeaconBlock (1000000 B) 4.0940 us/op 4.8500 us/op 0.84
copy serialized Big SignedBeaconBlock (1000000 B) 116.90 us/op 130.48 us/op 0.90
pass gossip attestations to forkchoice per slot 2.8660 ms/op 2.8602 ms/op 1.00
forkChoice updateHead vc 100000 bc 64 eq 0 467.46 us/op 459.45 us/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 0 2.9427 ms/op 3.1595 ms/op 0.93
forkChoice updateHead vc 1000000 bc 64 eq 0 5.0213 ms/op 5.3907 ms/op 0.93
forkChoice updateHead vc 600000 bc 320 eq 0 2.9883 ms/op 3.3030 ms/op 0.90
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1002 ms/op 3.2973 ms/op 0.94
forkChoice updateHead vc 600000 bc 7200 eq 0 3.7014 ms/op 3.4266 ms/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 1000 10.959 ms/op 10.981 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 10000 10.934 ms/op 10.943 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 300000 14.487 ms/op 16.051 ms/op 0.90
computeDeltas 500000 validators 300 proto nodes 3.9902 ms/op 4.3261 ms/op 0.92
computeDeltas 500000 validators 1200 proto nodes 4.0378 ms/op 4.4143 ms/op 0.91
computeDeltas 500000 validators 7200 proto nodes 4.1348 ms/op 4.5543 ms/op 0.91
computeDeltas 750000 validators 300 proto nodes 6.0807 ms/op 6.5415 ms/op 0.93
computeDeltas 750000 validators 1200 proto nodes 6.0458 ms/op 6.0690 ms/op 1.00
computeDeltas 750000 validators 7200 proto nodes 6.1102 ms/op 5.9074 ms/op 1.03
computeDeltas 1400000 validators 300 proto nodes 10.866 ms/op 10.879 ms/op 1.00
computeDeltas 1400000 validators 1200 proto nodes 10.947 ms/op 10.838 ms/op 1.01
computeDeltas 1400000 validators 7200 proto nodes 11.016 ms/op 10.800 ms/op 1.02
computeDeltas 2100000 validators 300 proto nodes 17.361 ms/op 16.158 ms/op 1.07
computeDeltas 2100000 validators 1200 proto nodes 16.668 ms/op 16.171 ms/op 1.03
computeDeltas 2100000 validators 7200 proto nodes 16.948 ms/op 16.271 ms/op 1.04
altair processAttestation - 250000 vs - 7PWei normalcase 2.1380 ms/op 1.9473 ms/op 1.10
altair processAttestation - 250000 vs - 7PWei worstcase 3.9349 ms/op 2.8885 ms/op 1.36
altair processAttestation - setStatus - 1/6 committees join 142.55 us/op 121.67 us/op 1.17
altair processAttestation - setStatus - 1/3 committees join 257.91 us/op 233.51 us/op 1.10
altair processAttestation - setStatus - 1/2 committees join 358.83 us/op 329.43 us/op 1.09
altair processAttestation - setStatus - 2/3 committees join 483.25 us/op 419.07 us/op 1.15
altair processAttestation - setStatus - 4/5 committees join 621.80 us/op 581.18 us/op 1.07
altair processAttestation - setStatus - 100% committees join 730.94 us/op 686.04 us/op 1.07
altair processBlock - 250000 vs - 7PWei normalcase 4.4704 ms/op 4.2195 ms/op 1.06
altair processBlock - 250000 vs - 7PWei normalcase hashState 29.829 ms/op 30.168 ms/op 0.99
altair processBlock - 250000 vs - 7PWei worstcase 34.892 ms/op 41.163 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase hashState 77.748 ms/op 93.258 ms/op 0.83
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6198 ms/op 2.3710 ms/op 0.68
phase0 processBlock - 250000 vs - 7PWei worstcase 21.850 ms/op 27.297 ms/op 0.80
altair processEth1Data - 250000 vs - 7PWei normalcase 357.19 us/op 329.37 us/op 1.08
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.6480 us/op 9.0690 us/op 0.62
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 41.072 us/op 57.156 us/op 0.72
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 14.774 us/op 16.045 us/op 0.92
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 10.963 us/op 6.5480 us/op 1.67
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 189.83 us/op 249.96 us/op 0.76
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9444 ms/op 1.9171 ms/op 1.01
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.5329 ms/op 2.4127 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4811 ms/op 2.4127 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 5.3023 ms/op 4.5888 ms/op 1.16
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.8508 ms/op 2.4256 ms/op 1.18
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 6.3903 ms/op 4.6536 ms/op 1.37
Tree 40 250000 create 547.41 ms/op 418.56 ms/op 1.31
Tree 40 250000 get(125000) 144.90 ns/op 138.74 ns/op 1.04
Tree 40 250000 set(125000) 1.8114 us/op 1.4670 us/op 1.23
Tree 40 250000 toArray() 21.116 ms/op 16.521 ms/op 1.28
Tree 40 250000 iterate all - toArray() + loop 21.035 ms/op 15.899 ms/op 1.32
Tree 40 250000 iterate all - get(i) 59.700 ms/op 50.910 ms/op 1.17
Array 250000 create 4.3428 ms/op 2.4356 ms/op 1.78
Array 250000 clone - spread 1.7419 ms/op 810.75 us/op 2.15
Array 250000 get(125000) 0.49400 ns/op 0.44900 ns/op 1.10
Array 250000 set(125000) 0.62200 ns/op 0.43600 ns/op 1.43
Array 250000 iterate all - loop 93.077 us/op 82.239 us/op 1.13
phase0 afterProcessEpoch - 250000 vs - 7PWei 45.879 ms/op 42.393 ms/op 1.08
Array.fill - length 1000000 7.4232 ms/op 3.7714 ms/op 1.97
Array push - length 1000000 23.902 ms/op 13.215 ms/op 1.81
Array.get 0.29537 ns/op 0.27454 ns/op 1.08
Uint8Array.get 0.47457 ns/op 0.43913 ns/op 1.08
phase0 beforeProcessEpoch - 250000 vs - 7PWei 24.672 ms/op 16.565 ms/op 1.49
altair processEpoch - mainnet_e81889 335.18 ms/op 236.87 ms/op 1.42
mainnet_e81889 - altair beforeProcessEpoch 20.472 ms/op 18.736 ms/op 1.09
mainnet_e81889 - altair processJustificationAndFinalization 5.6270 us/op 5.8110 us/op 0.97
mainnet_e81889 - altair processInactivityUpdates 5.2069 ms/op 4.0574 ms/op 1.28
mainnet_e81889 - altair processRewardsAndPenalties 42.734 ms/op 40.196 ms/op 1.06
mainnet_e81889 - altair processRegistryUpdates 756.00 ns/op 716.00 ns/op 1.06
mainnet_e81889 - altair processSlashings 190.00 ns/op 188.00 ns/op 1.01
mainnet_e81889 - altair processEth1DataReset 234.00 ns/op 188.00 ns/op 1.24
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.3677 ms/op 1.2381 ms/op 1.10
mainnet_e81889 - altair processSlashingsReset 913.00 ns/op 1.0430 us/op 0.88
mainnet_e81889 - altair processRandaoMixesReset 1.1700 us/op 1.3590 us/op 0.86
mainnet_e81889 - altair processHistoricalRootsUpdate 190.00 ns/op 185.00 ns/op 1.03
mainnet_e81889 - altair processParticipationFlagUpdates 562.00 ns/op 514.00 ns/op 1.09
mainnet_e81889 - altair processSyncCommitteeUpdates 150.00 ns/op 147.00 ns/op 1.02
mainnet_e81889 - altair afterProcessEpoch 47.332 ms/op 44.622 ms/op 1.06
capella processEpoch - mainnet_e217614 1.3056 s/op 1.0213 s/op 1.28
mainnet_e217614 - capella beforeProcessEpoch 96.106 ms/op 66.284 ms/op 1.45
mainnet_e217614 - capella processJustificationAndFinalization 6.9410 us/op 5.6600 us/op 1.23
mainnet_e217614 - capella processInactivityUpdates 21.066 ms/op 15.267 ms/op 1.38
mainnet_e217614 - capella processRewardsAndPenalties 204.24 ms/op 204.49 ms/op 1.00
mainnet_e217614 - capella processRegistryUpdates 6.8680 us/op 6.2750 us/op 1.09
mainnet_e217614 - capella processSlashings 188.00 ns/op 186.00 ns/op 1.01
mainnet_e217614 - capella processEth1DataReset 203.00 ns/op 198.00 ns/op 1.03
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.7988 ms/op 4.1239 ms/op 1.16
mainnet_e217614 - capella processSlashingsReset 943.00 ns/op 975.00 ns/op 0.97
mainnet_e217614 - capella processRandaoMixesReset 1.2240 us/op 1.2090 us/op 1.01
mainnet_e217614 - capella processHistoricalRootsUpdate 193.00 ns/op 214.00 ns/op 0.90
mainnet_e217614 - capella processParticipationFlagUpdates 577.00 ns/op 553.00 ns/op 1.04
mainnet_e217614 - capella afterProcessEpoch 123.92 ms/op 115.90 ms/op 1.07
phase0 processEpoch - mainnet_e58758 359.51 ms/op 314.98 ms/op 1.14
mainnet_e58758 - phase0 beforeProcessEpoch 104.67 ms/op 78.004 ms/op 1.34
mainnet_e58758 - phase0 processJustificationAndFinalization 7.4210 us/op 5.4020 us/op 1.37
mainnet_e58758 - phase0 processRewardsAndPenalties 37.833 ms/op 42.971 ms/op 0.88
mainnet_e58758 - phase0 processRegistryUpdates 3.2950 us/op 3.0140 us/op 1.09
mainnet_e58758 - phase0 processSlashings 186.00 ns/op 197.00 ns/op 0.94
mainnet_e58758 - phase0 processEth1DataReset 182.00 ns/op 197.00 ns/op 0.92
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.3724 ms/op 1.2163 ms/op 1.13
mainnet_e58758 - phase0 processSlashingsReset 1.0340 us/op 966.00 ns/op 1.07
mainnet_e58758 - phase0 processRandaoMixesReset 1.2340 us/op 1.3510 us/op 0.91
mainnet_e58758 - phase0 processHistoricalRootsUpdate 185.00 ns/op 209.00 ns/op 0.89
mainnet_e58758 - phase0 processParticipationRecordUpdates 935.00 ns/op 914.00 ns/op 1.02
mainnet_e58758 - phase0 afterProcessEpoch 38.975 ms/op 36.266 ms/op 1.07
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.0783 ms/op 1.3170 ms/op 1.58
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.1464 ms/op 3.5699 ms/op 0.88
altair processInactivityUpdates - 250000 normalcase 19.381 ms/op 20.040 ms/op 0.97
altair processInactivityUpdates - 250000 worstcase 18.473 ms/op 21.781 ms/op 0.85
phase0 processRegistryUpdates - 250000 normalcase 9.5100 us/op 7.2260 us/op 1.32
phase0 processRegistryUpdates - 250000 badcase_full_deposits 271.79 us/op 365.76 us/op 0.74
phase0 processRegistryUpdates - 250000 worstcase 0.5 122.35 ms/op 108.48 ms/op 1.13
altair processRewardsAndPenalties - 250000 normalcase 29.994 ms/op 28.631 ms/op 1.05
altair processRewardsAndPenalties - 250000 worstcase 29.299 ms/op 29.472 ms/op 0.99
phase0 getAttestationDeltas - 250000 normalcase 6.6658 ms/op 7.4261 ms/op 0.90
phase0 getAttestationDeltas - 250000 worstcase 6.9187 ms/op 6.1046 ms/op 1.13
phase0 processSlashings - 250000 worstcase 118.83 us/op 95.605 us/op 1.24
altair processSyncCommitteeUpdates - 250000 12.859 ms/op 11.044 ms/op 1.16
BeaconState.hashTreeRoot - No change 287.00 ns/op 247.00 ns/op 1.16
BeaconState.hashTreeRoot - 1 full validator 94.470 us/op 86.334 us/op 1.09
BeaconState.hashTreeRoot - 32 full validator 1.2536 ms/op 841.94 us/op 1.49
BeaconState.hashTreeRoot - 512 full validator 14.128 ms/op 10.775 ms/op 1.31
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 165.35 us/op 107.51 us/op 1.54
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.2347 ms/op 1.5851 ms/op 1.41
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 31.253 ms/op 25.309 ms/op 1.23
BeaconState.hashTreeRoot - 1 balances 102.20 us/op 83.687 us/op 1.22
BeaconState.hashTreeRoot - 32 balances 1.1188 ms/op 722.61 us/op 1.55
BeaconState.hashTreeRoot - 512 balances 11.618 ms/op 8.5235 ms/op 1.36
BeaconState.hashTreeRoot - 250000 balances 185.37 ms/op 224.64 ms/op 0.83
aggregationBits - 2048 els - zipIndexesInBitList 23.605 us/op 23.022 us/op 1.03
byteArrayEquals 32 56.534 ns/op 54.294 ns/op 1.04
Buffer.compare 32 17.901 ns/op 17.647 ns/op 1.01
byteArrayEquals 1024 1.6763 us/op 1.6137 us/op 1.04
Buffer.compare 1024 26.101 ns/op 25.359 ns/op 1.03
byteArrayEquals 16384 29.250 us/op 25.711 us/op 1.14
Buffer.compare 16384 206.02 ns/op 178.36 ns/op 1.16
byteArrayEquals 123687377 201.49 ms/op 192.91 ms/op 1.04
Buffer.compare 123687377 8.1163 ms/op 6.0919 ms/op 1.33
byteArrayEquals 32 - diff last byte 54.654 ns/op 52.810 ns/op 1.03
Buffer.compare 32 - diff last byte 17.878 ns/op 17.148 ns/op 1.04
byteArrayEquals 1024 - diff last byte 1.7126 us/op 1.5986 us/op 1.07
Buffer.compare 1024 - diff last byte 27.735 ns/op 25.019 ns/op 1.11
byteArrayEquals 16384 - diff last byte 27.317 us/op 25.417 us/op 1.07
Buffer.compare 16384 - diff last byte 192.71 ns/op 202.07 ns/op 0.95
byteArrayEquals 123687377 - diff last byte 206.07 ms/op 192.10 ms/op 1.07
Buffer.compare 123687377 - diff last byte 7.7522 ms/op 6.9205 ms/op 1.12
byteArrayEquals 32 - random bytes 5.4500 ns/op 5.1310 ns/op 1.06
Buffer.compare 32 - random bytes 18.654 ns/op 17.055 ns/op 1.09
byteArrayEquals 1024 - random bytes 5.3410 ns/op 5.1610 ns/op 1.03
Buffer.compare 1024 - random bytes 18.248 ns/op 17.038 ns/op 1.07
byteArrayEquals 16384 - random bytes 5.2390 ns/op 5.1320 ns/op 1.02
Buffer.compare 16384 - random bytes 17.486 ns/op 17.018 ns/op 1.03
byteArrayEquals 123687377 - random bytes 6.6300 ns/op 6.5100 ns/op 1.02
Buffer.compare 123687377 - random bytes 19.260 ns/op 18.370 ns/op 1.05
regular array get 100000 times 36.732 us/op 33.011 us/op 1.11
wrappedArray get 100000 times 33.879 us/op 44.224 us/op 0.77
arrayWithProxy get 100000 times 12.521 ms/op 11.705 ms/op 1.07
ssz.Root.equals 47.098 ns/op 46.311 ns/op 1.02
byteArrayEquals 48.602 ns/op 45.434 ns/op 1.07
Buffer.compare 10.891 ns/op 10.310 ns/op 1.06
processSlot - 1 slots 10.729 us/op 10.353 us/op 1.04
processSlot - 32 slots 3.3470 ms/op 2.5744 ms/op 1.30
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.1941 ms/op 2.9252 ms/op 1.09
getCommitteeAssignments - req 1 vs - 250000 vc 2.1746 ms/op 2.1326 ms/op 1.02
getCommitteeAssignments - req 100 vs - 250000 vc 4.2146 ms/op 4.1517 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4997 ms/op 4.4000 ms/op 1.02
findModifiedValidators - 10000 modified validators 767.92 ms/op 753.83 ms/op 1.02
findModifiedValidators - 1000 modified validators 723.07 ms/op 722.96 ms/op 1.00
findModifiedValidators - 100 modified validators 218.21 ms/op 286.40 ms/op 0.76
findModifiedValidators - 10 modified validators 142.14 ms/op 167.95 ms/op 0.85
findModifiedValidators - 1 modified validators 208.34 ms/op 142.29 ms/op 1.46
findModifiedValidators - no difference 156.57 ms/op 149.17 ms/op 1.05
compare ViewDUs 6.4699 s/op 6.3882 s/op 1.01
compare each validator Uint8Array 1.4480 s/op 1.9603 s/op 0.74
compare ViewDU to Uint8Array 1.2522 s/op 1.2709 s/op 0.99
migrate state 1000000 validators, 24 modified, 0 new 934.96 ms/op 949.41 ms/op 0.98
migrate state 1000000 validators, 1700 modified, 1000 new 1.1409 s/op 1.1466 s/op 1.00
migrate state 1000000 validators, 3400 modified, 2000 new 1.2877 s/op 1.2759 s/op 1.01
migrate state 1500000 validators, 24 modified, 0 new 855.22 ms/op 862.38 ms/op 0.99
migrate state 1500000 validators, 1700 modified, 1000 new 1.0463 s/op 1.0560 s/op 0.99
migrate state 1500000 validators, 3400 modified, 2000 new 1.3223 s/op 1.2990 s/op 1.02
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.3000 ns/op 4.4000 ns/op 0.98
state getBlockRootAtSlot - 250000 vs - 7PWei 465.09 ns/op 645.36 ns/op 0.72
naive computeProposerIndex 100000 validators 55.884 ms/op 52.836 ms/op 1.06
computeProposerIndex 100000 validators 1.5077 ms/op 1.5175 ms/op 0.99
naiveGetNextSyncCommitteeIndices 1000 validators 7.7280 s/op 7.2572 s/op 1.06
getNextSyncCommitteeIndices 1000 validators 108.56 ms/op 112.70 ms/op 0.96
naiveGetNextSyncCommitteeIndices 10000 validators 7.8174 s/op 7.6532 s/op 1.02
getNextSyncCommitteeIndices 10000 validators 114.55 ms/op 114.15 ms/op 1.00
naiveGetNextSyncCommitteeIndices 100000 validators 8.7836 s/op 8.2094 s/op 1.07
getNextSyncCommitteeIndices 100000 validators 140.09 ms/op 122.39 ms/op 1.14
naive computeShuffledIndex 100000 validators 29.940 s/op 24.447 s/op 1.22
cached computeShuffledIndex 100000 validators 608.58 ms/op 552.55 ms/op 1.10
naive computeShuffledIndex 2000000 validators 539.61 s/op 493.16 s/op 1.09
cached computeShuffledIndex 2000000 validators 50.258 s/op 32.432 s/op 1.55
computeProposers - vc 250000 662.76 us/op 614.59 us/op 1.08
computeEpochShuffling - vc 250000 45.892 ms/op 42.623 ms/op 1.08
getNextSyncCommittee - vc 250000 12.480 ms/op 10.374 ms/op 1.20
computeSigningRoot for AttestationData 39.619 us/op 20.562 us/op 1.93
hash AttestationData serialized data then Buffer.toString(base64) 1.7526 us/op 1.5796 us/op 1.11
toHexString serialized data 1.3777 us/op 1.1505 us/op 1.20
Buffer.toString(base64) 174.50 ns/op 154.81 ns/op 1.13
nodejs block root to RootHex using toHex 163.11 ns/op 141.32 ns/op 1.15
nodejs block root to RootHex using toRootHex 97.557 ns/op 92.484 ns/op 1.05
browser block root to RootHex using the deprecated toHexString 229.80 ns/op 211.45 ns/op 1.09
browser block root to RootHex using toHex 181.73 ns/op 174.20 ns/op 1.04
browser block root to RootHex using toRootHex 167.76 ns/op 161.39 ns/op 1.04

by benchmarkbot/action

@nflaig nflaig merged commit 408033e into unstable Apr 30, 2025
20 checks passed
@nflaig nflaig deleted the nflaig/404-error-message branch April 30, 2025 21:55
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.

3 participants