Skip to content
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

fix: return 404 error if no aggregated attestation is available #6648

Merged
merged 1 commit into from
Apr 8, 2024

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Apr 7, 2024

Motivation

This API has caused a lot of confusing (#6631, #5553, #6419) due to how we currently handle the case if no aggregated attestation can be served to the client.

  • we throw an internal server error (500) which will be logged as error with a verbose stack trace
  • the log message talks about attestation but the issue is about not being able to serve the aggregated attestation

This error is somewhat expected if a validator client is connected to multiple beacon nodes as it might happen that the attestation for slot was not produced by the beacon node while the validator client could be requesting it later on due to the other (primary) beacon node being unhealthy.

This behavior has also recently been clarified in the spec, see ethereum/beacon-APIs#380.

A 404 error must be returned if no attestation is available for the requested attestation_data_root.

Description

Return 404 error if aggregated attestation is not available for slot / data root

@nflaig nflaig requested a review from a team as a code owner April 7, 2024 14:28
Copy link

codecov bot commented Apr 7, 2024

Codecov Report

Merging #6648 (90c4549) into unstable (f2ec0d4) will not change coverage.
The diff coverage is n/a.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #6648   +/-   ##
=========================================
  Coverage     61.69%   61.69%           
=========================================
  Files           556      556           
  Lines         58820    58820           
  Branches       1887     1887           
=========================================
  Hits          36287    36287           
  Misses        22492    22492           
  Partials         41       41           

Copy link
Contributor

github-actions bot commented Apr 7, 2024

Performance Report

✔️ no performance regression detected

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 6fb5108 Previous: f2ec0d4 Ratio
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 51.535 us/op 157.37 us/op 0.33
Map set x1000 17.000 ns/op 53.710 ns/op 0.32
Set add up to 64 items then delete first 1.7368 us/op 5.3774 us/op 0.32
Full benchmark results
Benchmark suite Current: 6fb5108 Previous: f2ec0d4 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 774.23 us/op 839.47 us/op 0.92
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 51.535 us/op 157.37 us/op 0.33
BLS verify - blst-native 1.1011 ms/op 1.3840 ms/op 0.80
BLS verifyMultipleSignatures 3 - blst-native 2.3488 ms/op 2.8584 ms/op 0.82
BLS verifyMultipleSignatures 8 - blst-native 5.1905 ms/op 6.4171 ms/op 0.81
BLS verifyMultipleSignatures 32 - blst-native 19.063 ms/op 23.014 ms/op 0.83
BLS verifyMultipleSignatures 64 - blst-native 37.541 ms/op 46.244 ms/op 0.81
BLS verifyMultipleSignatures 128 - blst-native 74.533 ms/op 96.080 ms/op 0.78
BLS deserializing 10000 signatures 747.77 ms/op 979.90 ms/op 0.76
BLS deserializing 100000 signatures 7.9057 s/op 9.9667 s/op 0.79
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.0476 ms/op 1.6826 ms/op 0.62
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.1837 ms/op 2.0471 ms/op 0.58
BLS verifyMultipleSignatures - same message - 32 - blst-native 2.4274 ms/op 3.4702 ms/op 0.70
BLS verifyMultipleSignatures - same message - 64 - blst-native 3.6436 ms/op 4.2924 ms/op 0.85
BLS verifyMultipleSignatures - same message - 128 - blst-native 4.6187 ms/op 9.5265 ms/op 0.48
BLS aggregatePubkeys 32 - blst-native 21.013 us/op 28.338 us/op 0.74
BLS aggregatePubkeys 128 - blst-native 80.932 us/op 108.53 us/op 0.75
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 46.396 ms/op 70.089 ms/op 0.66
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 43.129 ms/op 66.507 ms/op 0.65
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 26.499 ms/op 36.750 ms/op 0.72
getSlashingsAndExits - default max 153.50 us/op 189.62 us/op 0.81
getSlashingsAndExits - 2k 283.70 us/op 439.38 us/op 0.65
proposeBlockBody type=full, size=empty 4.2752 ms/op 5.9458 ms/op 0.72
isKnown best case - 1 super set check 327.00 ns/op 359.00 ns/op 0.91
isKnown normal case - 2 super set checks 308.00 ns/op 360.00 ns/op 0.86
isKnown worse case - 16 super set checks 290.00 ns/op 335.00 ns/op 0.87
InMemoryCheckpointStateCache - add get delete 4.1370 us/op 6.2180 us/op 0.67
validate api signedAggregateAndProof - struct 2.3794 ms/op 2.9645 ms/op 0.80
validate gossip signedAggregateAndProof - struct 2.3685 ms/op 2.9202 ms/op 0.81
validate gossip attestation - vc 640000 1.1296 ms/op 1.3979 ms/op 0.81
batch validate gossip attestation - vc 640000 - chunk 32 133.49 us/op 169.99 us/op 0.79
batch validate gossip attestation - vc 640000 - chunk 64 119.28 us/op 150.53 us/op 0.79
batch validate gossip attestation - vc 640000 - chunk 128 115.46 us/op 145.15 us/op 0.80
batch validate gossip attestation - vc 640000 - chunk 256 106.57 us/op 132.49 us/op 0.80
pickEth1Vote - no votes 924.24 us/op 1.3921 ms/op 0.66
pickEth1Vote - max votes 7.0600 ms/op 11.553 ms/op 0.61
pickEth1Vote - Eth1Data hashTreeRoot value x2048 17.752 ms/op 21.563 ms/op 0.82
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 25.432 ms/op 32.754 ms/op 0.78
pickEth1Vote - Eth1Data fastSerialize value x2048 435.87 us/op 710.54 us/op 0.61
pickEth1Vote - Eth1Data fastSerialize tree x2048 5.5071 ms/op 5.7697 ms/op 0.95
bytes32 toHexString 450.00 ns/op 742.00 ns/op 0.61
bytes32 Buffer.toString(hex) 298.00 ns/op 329.00 ns/op 0.91
bytes32 Buffer.toString(hex) from Uint8Array 409.00 ns/op 585.00 ns/op 0.70
bytes32 Buffer.toString(hex) + 0x 307.00 ns/op 359.00 ns/op 0.86
Object access 1 prop 0.19300 ns/op 0.23300 ns/op 0.83
Map access 1 prop 0.18800 ns/op 0.17100 ns/op 1.10
Object get x1000 5.4130 ns/op 8.9650 ns/op 0.60
Map get x1000 0.71000 ns/op 0.88700 ns/op 0.80
Object set x1000 24.961 ns/op 68.735 ns/op 0.36
Map set x1000 17.000 ns/op 53.710 ns/op 0.32
Return object 10000 times 0.22310 ns/op 0.27020 ns/op 0.83
Throw Error 10000 times 2.7536 us/op 3.9638 us/op 0.69
fastMsgIdFn sha256 / 200 bytes 1.9790 us/op 3.4640 us/op 0.57
fastMsgIdFn h32 xxhash / 200 bytes 288.00 ns/op 366.00 ns/op 0.79
fastMsgIdFn h64 xxhash / 200 bytes 350.00 ns/op 403.00 ns/op 0.87
fastMsgIdFn sha256 / 1000 bytes 6.0720 us/op 12.123 us/op 0.50
fastMsgIdFn h32 xxhash / 1000 bytes 407.00 ns/op 484.00 ns/op 0.84
fastMsgIdFn h64 xxhash / 1000 bytes 412.00 ns/op 471.00 ns/op 0.87
fastMsgIdFn sha256 / 10000 bytes 53.237 us/op 109.86 us/op 0.48
fastMsgIdFn h32 xxhash / 10000 bytes 1.7700 us/op 2.0550 us/op 0.86
fastMsgIdFn h64 xxhash / 10000 bytes 1.2270 us/op 1.4050 us/op 0.87
send data - 1000 256B messages 11.324 ms/op 20.178 ms/op 0.56
send data - 1000 512B messages 16.568 ms/op 29.876 ms/op 0.55
send data - 1000 1024B messages 23.822 ms/op 39.869 ms/op 0.60
send data - 1000 1200B messages 29.704 ms/op 43.239 ms/op 0.69
send data - 1000 2048B messages 39.451 ms/op 52.761 ms/op 0.75
send data - 1000 4096B messages 33.694 ms/op 30.843 ms/op 1.09
send data - 1000 16384B messages 84.812 ms/op 126.27 ms/op 0.67
send data - 1000 65536B messages 359.38 ms/op 505.27 ms/op 0.71
enrSubnets - fastDeserialize 64 bits 936.00 ns/op 1.5480 us/op 0.60
enrSubnets - ssz BitVector 64 bits 405.00 ns/op 564.00 ns/op 0.72
enrSubnets - fastDeserialize 4 bits 191.00 ns/op 232.00 ns/op 0.82
enrSubnets - ssz BitVector 4 bits 402.00 ns/op 514.00 ns/op 0.78
prioritizePeers score -10:0 att 32-0.1 sync 2-0 65.195 us/op 113.59 us/op 0.57
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 76.714 us/op 145.14 us/op 0.53
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 104.70 us/op 216.78 us/op 0.48
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 171.79 us/op 339.50 us/op 0.51
prioritizePeers score 0:0 att 64-1 sync 4-1 192.55 us/op 412.02 us/op 0.47
array of 16000 items push then shift 1.1586 us/op 1.7803 us/op 0.65
LinkedList of 16000 items push then shift 6.1810 ns/op 9.6350 ns/op 0.64
array of 16000 items push then pop 50.487 ns/op 105.03 ns/op 0.48
LinkedList of 16000 items push then pop 5.6430 ns/op 8.7720 ns/op 0.64
array of 24000 items push then shift 1.8806 us/op 2.5638 us/op 0.73
LinkedList of 24000 items push then shift 5.8460 ns/op 9.3580 ns/op 0.62
array of 24000 items push then pop 78.194 ns/op 140.64 ns/op 0.56
LinkedList of 24000 items push then pop 5.6390 ns/op 8.8100 ns/op 0.64
intersect bitArray bitLen 8 4.3310 ns/op 5.9340 ns/op 0.73
intersect array and set length 8 44.450 ns/op 72.278 ns/op 0.61
intersect bitArray bitLen 128 26.518 ns/op 37.705 ns/op 0.70
intersect array and set length 128 623.37 ns/op 976.02 ns/op 0.64
bitArray.getTrueBitIndexes() bitLen 128 1.1970 us/op 2.1380 us/op 0.56
bitArray.getTrueBitIndexes() bitLen 248 1.9620 us/op 3.2750 us/op 0.60
bitArray.getTrueBitIndexes() bitLen 512 3.6350 us/op 6.5310 us/op 0.56
Buffer.concat 32 items 876.00 ns/op 1.2290 us/op 0.71
Uint8Array.set 32 items 1.7940 us/op 2.2350 us/op 0.80
Set add up to 64 items then delete first 1.7368 us/op 5.3774 us/op 0.32
OrderedSet add up to 64 items then delete first 2.6716 us/op 7.0148 us/op 0.38
Set add up to 64 items then delete last 2.0195 us/op 5.7952 us/op 0.35
OrderedSet add up to 64 items then delete last 3.0198 us/op 6.9846 us/op 0.43
Set add up to 64 items then delete middle 2.0183 us/op 5.4493 us/op 0.37
OrderedSet add up to 64 items then delete middle 4.2258 us/op 8.6302 us/op 0.49
Set add up to 128 items then delete first 3.9535 us/op 11.739 us/op 0.34
OrderedSet add up to 128 items then delete first 6.1749 us/op 14.892 us/op 0.41
Set add up to 128 items then delete last 3.8738 us/op 11.001 us/op 0.35
OrderedSet add up to 128 items then delete last 5.8134 us/op 14.816 us/op 0.39
Set add up to 128 items then delete middle 3.8581 us/op 10.885 us/op 0.35
OrderedSet add up to 128 items then delete middle 10.660 us/op 21.124 us/op 0.50
Set add up to 256 items then delete first 7.7272 us/op 22.407 us/op 0.34
OrderedSet add up to 256 items then delete first 12.212 us/op 31.602 us/op 0.39
Set add up to 256 items then delete last 7.6089 us/op 21.545 us/op 0.35
OrderedSet add up to 256 items then delete last 11.528 us/op 27.147 us/op 0.42
Set add up to 256 items then delete middle 7.5389 us/op 21.785 us/op 0.35
OrderedSet add up to 256 items then delete middle 31.026 us/op 51.986 us/op 0.60
transfer serialized Status (84 B) 1.4190 us/op 2.0750 us/op 0.68
copy serialized Status (84 B) 1.1700 us/op 1.4980 us/op 0.78
transfer serialized SignedVoluntaryExit (112 B) 1.5700 us/op 2.2420 us/op 0.70
copy serialized SignedVoluntaryExit (112 B) 1.1100 us/op 1.5950 us/op 0.70
transfer serialized ProposerSlashing (416 B) 1.5170 us/op 3.3890 us/op 0.45
copy serialized ProposerSlashing (416 B) 1.2790 us/op 3.2010 us/op 0.40
transfer serialized Attestation (485 B) 2.0190 us/op 3.8750 us/op 0.52
copy serialized Attestation (485 B) 2.1270 us/op 3.2300 us/op 0.66
transfer serialized AttesterSlashing (33232 B) 2.3520 us/op 2.9380 us/op 0.80
copy serialized AttesterSlashing (33232 B) 4.5820 us/op 6.8700 us/op 0.67
transfer serialized Small SignedBeaconBlock (128000 B) 2.6440 us/op 3.5820 us/op 0.74
copy serialized Small SignedBeaconBlock (128000 B) 9.7990 us/op 22.009 us/op 0.45
transfer serialized Avg SignedBeaconBlock (200000 B) 2.6350 us/op 3.7790 us/op 0.70
copy serialized Avg SignedBeaconBlock (200000 B) 13.371 us/op 25.832 us/op 0.52
transfer serialized BlobsSidecar (524380 B) 2.6100 us/op 4.1310 us/op 0.63
copy serialized BlobsSidecar (524380 B) 74.009 us/op 151.12 us/op 0.49
transfer serialized Big SignedBeaconBlock (1000000 B) 2.8380 us/op 3.7370 us/op 0.76
copy serialized Big SignedBeaconBlock (1000000 B) 124.91 us/op 171.88 us/op 0.73
pass gossip attestations to forkchoice per slot 2.6212 ms/op 4.9037 ms/op 0.53
forkChoice updateHead vc 100000 bc 64 eq 0 450.98 us/op 727.56 us/op 0.62
forkChoice updateHead vc 600000 bc 64 eq 0 2.7414 ms/op 5.3574 ms/op 0.51
forkChoice updateHead vc 1000000 bc 64 eq 0 4.3022 ms/op 7.0819 ms/op 0.61
forkChoice updateHead vc 600000 bc 320 eq 0 2.5854 ms/op 4.2588 ms/op 0.61
forkChoice updateHead vc 600000 bc 1200 eq 0 2.6792 ms/op 4.3877 ms/op 0.61
forkChoice updateHead vc 600000 bc 7200 eq 0 3.2420 ms/op 5.9320 ms/op 0.55
forkChoice updateHead vc 600000 bc 64 eq 1000 9.8642 ms/op 11.347 ms/op 0.87
forkChoice updateHead vc 600000 bc 64 eq 10000 12.287 ms/op 12.079 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 300000 12.067 ms/op 16.338 ms/op 0.74
computeDeltas 500000 validators 300 proto nodes 3.1191 ms/op 6.9595 ms/op 0.45
computeDeltas 500000 validators 1200 proto nodes 2.8847 ms/op 7.0278 ms/op 0.41
computeDeltas 500000 validators 7200 proto nodes 2.9799 ms/op 6.9576 ms/op 0.43
computeDeltas 750000 validators 300 proto nodes 4.4802 ms/op 10.723 ms/op 0.42
computeDeltas 750000 validators 1200 proto nodes 4.5979 ms/op 10.753 ms/op 0.43
computeDeltas 750000 validators 7200 proto nodes 4.5915 ms/op 10.465 ms/op 0.44
computeDeltas 1400000 validators 300 proto nodes 8.6928 ms/op 20.136 ms/op 0.43
computeDeltas 1400000 validators 1200 proto nodes 8.6743 ms/op 20.061 ms/op 0.43
computeDeltas 1400000 validators 7200 proto nodes 8.6392 ms/op 22.112 ms/op 0.39
computeDeltas 2100000 validators 300 proto nodes 13.119 ms/op 33.238 ms/op 0.39
computeDeltas 2100000 validators 1200 proto nodes 13.149 ms/op 31.109 ms/op 0.42
computeDeltas 2100000 validators 7200 proto nodes 13.168 ms/op 30.151 ms/op 0.44
altair processAttestation - 250000 vs - 7PWei normalcase 1.5458 ms/op 3.4027 ms/op 0.45
altair processAttestation - 250000 vs - 7PWei worstcase 2.2770 ms/op 5.5082 ms/op 0.41
altair processAttestation - setStatus - 1/6 committees join 101.20 us/op 266.78 us/op 0.38
altair processAttestation - setStatus - 1/3 committees join 194.62 us/op 441.46 us/op 0.44
altair processAttestation - setStatus - 1/2 committees join 280.92 us/op 579.97 us/op 0.48
altair processAttestation - setStatus - 2/3 committees join 380.65 us/op 711.79 us/op 0.53
altair processAttestation - setStatus - 4/5 committees join 505.03 us/op 991.91 us/op 0.51
altair processAttestation - setStatus - 100% committees join 606.61 us/op 1.0112 ms/op 0.60
altair processBlock - 250000 vs - 7PWei normalcase 5.9576 ms/op 8.8556 ms/op 0.67
altair processBlock - 250000 vs - 7PWei normalcase hashState 22.868 ms/op 38.524 ms/op 0.59
altair processBlock - 250000 vs - 7PWei worstcase 32.141 ms/op 43.424 ms/op 0.74
altair processBlock - 250000 vs - 7PWei worstcase hashState 65.501 ms/op 102.35 ms/op 0.64
phase0 processBlock - 250000 vs - 7PWei normalcase 2.2979 ms/op 3.2085 ms/op 0.72
phase0 processBlock - 250000 vs - 7PWei worstcase 25.396 ms/op 32.847 ms/op 0.77
altair processEth1Data - 250000 vs - 7PWei normalcase 272.79 us/op 458.88 us/op 0.59
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 7.8820 us/op 11.160 us/op 0.71
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 50.461 us/op 65.961 us/op 0.77
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 19.100 us/op 16.483 us/op 1.16
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.2690 us/op 19.243 us/op 0.38
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 161.25 us/op 158.68 us/op 1.02
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.0852 ms/op 1.5788 ms/op 0.69
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 958.43 us/op 1.7160 ms/op 0.56
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.4370 ms/op 1.8112 ms/op 0.79
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.6881 ms/op 4.0120 ms/op 0.67
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.4796 ms/op 2.7177 ms/op 0.54
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.5886 ms/op 5.9066 ms/op 0.61
Tree 40 250000 create 282.88 ms/op 402.08 ms/op 0.70
Tree 40 250000 get(125000) 115.74 ns/op 211.60 ns/op 0.55
Tree 40 250000 set(125000) 703.17 ns/op 1.2628 us/op 0.56
Tree 40 250000 toArray() 9.6003 ms/op 23.904 ms/op 0.40
Tree 40 250000 iterate all - toArray() + loop 9.8147 ms/op 24.795 ms/op 0.40
Tree 40 250000 iterate all - get(i) 38.418 ms/op 78.390 ms/op 0.49
MutableVector 250000 create 12.257 ms/op 14.414 ms/op 0.85
MutableVector 250000 get(125000) 5.6010 ns/op 7.5000 ns/op 0.75
MutableVector 250000 set(125000) 198.31 ns/op 302.08 ns/op 0.66
MutableVector 250000 toArray() 2.0654 ms/op 3.6971 ms/op 0.56
MutableVector 250000 iterate all - toArray() + loop 2.8201 ms/op 3.7769 ms/op 0.75
MutableVector 250000 iterate all - get(i) 1.2312 ms/op 1.5994 ms/op 0.77
Array 250000 create 2.7426 ms/op 3.4846 ms/op 0.79
Array 250000 clone - spread 1.1122 ms/op 1.4255 ms/op 0.78
Array 250000 get(125000) 0.98100 ns/op 1.2040 ns/op 0.81
Array 250000 set(125000) 1.1770 ns/op 4.5710 ns/op 0.26
Array 250000 iterate all - loop 146.96 us/op 181.21 us/op 0.81
effectiveBalanceIncrements clone Uint8Array 300000 18.960 us/op 43.226 us/op 0.44
effectiveBalanceIncrements clone MutableVector 300000 383.00 ns/op 451.00 ns/op 0.85
effectiveBalanceIncrements rw all Uint8Array 300000 177.07 us/op 217.07 us/op 0.82
effectiveBalanceIncrements rw all MutableVector 300000 69.059 ms/op 103.42 ms/op 0.67
phase0 afterProcessEpoch - 250000 vs - 7PWei 77.120 ms/op 122.12 ms/op 0.63
phase0 beforeProcessEpoch - 250000 vs - 7PWei 44.771 ms/op 54.827 ms/op 0.82
altair processEpoch - mainnet_e81889 364.14 ms/op 481.28 ms/op 0.76
mainnet_e81889 - altair beforeProcessEpoch 67.330 ms/op 83.478 ms/op 0.81
mainnet_e81889 - altair processJustificationAndFinalization 11.291 us/op 14.740 us/op 0.77
mainnet_e81889 - altair processInactivityUpdates 4.4794 ms/op 6.7491 ms/op 0.66
mainnet_e81889 - altair processRewardsAndPenalties 63.719 ms/op 59.639 ms/op 1.07
mainnet_e81889 - altair processRegistryUpdates 1.8030 us/op 2.0800 us/op 0.87
mainnet_e81889 - altair processSlashings 636.00 ns/op 411.00 ns/op 1.55
mainnet_e81889 - altair processEth1DataReset 645.00 ns/op 815.00 ns/op 0.79
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6342 ms/op 1.4288 ms/op 1.14
mainnet_e81889 - altair processSlashingsReset 2.6180 us/op 3.6040 us/op 0.73
mainnet_e81889 - altair processRandaoMixesReset 2.7830 us/op 6.6300 us/op 0.42
mainnet_e81889 - altair processHistoricalRootsUpdate 704.00 ns/op 563.00 ns/op 1.25
mainnet_e81889 - altair processParticipationFlagUpdates 1.4310 us/op 2.5900 us/op 0.55
mainnet_e81889 - altair processSyncCommitteeUpdates 586.00 ns/op 734.00 ns/op 0.80
mainnet_e81889 - altair afterProcessEpoch 76.952 ms/op 138.14 ms/op 0.56
capella processEpoch - mainnet_e217614 1.6780 s/op 2.2131 s/op 0.76
mainnet_e217614 - capella beforeProcessEpoch 416.18 ms/op 526.32 ms/op 0.79
mainnet_e217614 - capella processJustificationAndFinalization 10.553 us/op 23.090 us/op 0.46
mainnet_e217614 - capella processInactivityUpdates 14.309 ms/op 27.008 ms/op 0.53
mainnet_e217614 - capella processRewardsAndPenalties 505.82 ms/op 633.66 ms/op 0.80
mainnet_e217614 - capella processRegistryUpdates 7.8160 us/op 27.980 us/op 0.28
mainnet_e217614 - capella processSlashings 341.00 ns/op 488.00 ns/op 0.70
mainnet_e217614 - capella processEth1DataReset 441.00 ns/op 737.00 ns/op 0.60
mainnet_e217614 - capella processEffectiveBalanceUpdates 3.0584 ms/op 5.2362 ms/op 0.58
mainnet_e217614 - capella processSlashingsReset 1.8120 us/op 7.1330 us/op 0.25
mainnet_e217614 - capella processRandaoMixesReset 2.8610 us/op 14.076 us/op 0.20
mainnet_e217614 - capella processHistoricalRootsUpdate 606.00 ns/op 3.6630 us/op 0.17
mainnet_e217614 - capella processParticipationFlagUpdates 1.2350 us/op 6.0290 us/op 0.20
mainnet_e217614 - capella afterProcessEpoch 203.34 ms/op 453.90 ms/op 0.45
phase0 processEpoch - mainnet_e58758 395.40 ms/op 551.19 ms/op 0.72
mainnet_e58758 - phase0 beforeProcessEpoch 100.96 ms/op 190.68 ms/op 0.53
mainnet_e58758 - phase0 processJustificationAndFinalization 12.420 us/op 24.571 us/op 0.51
mainnet_e58758 - phase0 processRewardsAndPenalties 52.661 ms/op 75.055 ms/op 0.70
mainnet_e58758 - phase0 processRegistryUpdates 8.4820 us/op 20.643 us/op 0.41
mainnet_e58758 - phase0 processSlashings 606.00 ns/op 1.3540 us/op 0.45
mainnet_e58758 - phase0 processEth1DataReset 556.00 ns/op 1.1220 us/op 0.50
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.3511 ms/op 1.6185 ms/op 0.83
mainnet_e58758 - phase0 processSlashingsReset 2.1600 us/op 7.4970 us/op 0.29
mainnet_e58758 - phase0 processRandaoMixesReset 3.0410 us/op 10.650 us/op 0.29
mainnet_e58758 - phase0 processHistoricalRootsUpdate 662.00 ns/op 1.2200 us/op 0.54
mainnet_e58758 - phase0 processParticipationRecordUpdates 2.7880 us/op 7.9620 us/op 0.35
mainnet_e58758 - phase0 afterProcessEpoch 67.906 ms/op 125.14 ms/op 0.54
phase0 processEffectiveBalanceUpdates - 250000 normalcase 949.07 us/op 1.7601 ms/op 0.54
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 980.05 us/op 1.9572 ms/op 0.50
altair processInactivityUpdates - 250000 normalcase 26.787 ms/op 36.797 ms/op 0.73
altair processInactivityUpdates - 250000 worstcase 23.127 ms/op 45.567 ms/op 0.51
phase0 processRegistryUpdates - 250000 normalcase 7.3730 us/op 12.931 us/op 0.57
phase0 processRegistryUpdates - 250000 badcase_full_deposits 399.63 us/op 519.40 us/op 0.77
phase0 processRegistryUpdates - 250000 worstcase 0.5 131.88 ms/op 190.24 ms/op 0.69
altair processRewardsAndPenalties - 250000 normalcase 73.941 ms/op 76.465 ms/op 0.97
altair processRewardsAndPenalties - 250000 worstcase 69.693 ms/op 74.612 ms/op 0.93
phase0 getAttestationDeltas - 250000 normalcase 5.1457 ms/op 11.393 ms/op 0.45
phase0 getAttestationDeltas - 250000 worstcase 5.1449 ms/op 10.102 ms/op 0.51
phase0 processSlashings - 250000 worstcase 77.599 us/op 96.048 us/op 0.81
altair processSyncCommitteeUpdates - 250000 107.47 ms/op 184.10 ms/op 0.58
BeaconState.hashTreeRoot - No change 373.00 ns/op 721.00 ns/op 0.52
BeaconState.hashTreeRoot - 1 full validator 154.58 us/op 146.23 us/op 1.06
BeaconState.hashTreeRoot - 32 full validator 1.6667 ms/op 1.4735 ms/op 1.13
BeaconState.hashTreeRoot - 512 full validator 14.520 ms/op 18.027 ms/op 0.81
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 153.81 us/op 184.00 us/op 0.84
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8243 ms/op 2.4053 ms/op 0.76
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 24.272 ms/op 31.049 ms/op 0.78
BeaconState.hashTreeRoot - 1 balances 104.31 us/op 131.38 us/op 0.79
BeaconState.hashTreeRoot - 32 balances 773.07 us/op 1.2344 ms/op 0.63
BeaconState.hashTreeRoot - 512 balances 7.3733 ms/op 13.823 ms/op 0.53
BeaconState.hashTreeRoot - 250000 balances 128.59 ms/op 210.06 ms/op 0.61
aggregationBits - 2048 els - zipIndexesInBitList 19.919 us/op 39.948 us/op 0.50
byteArrayEquals 32 65.679 ns/op 84.662 ns/op 0.78
Buffer.compare 32 40.121 ns/op 61.470 ns/op 0.65
byteArrayEquals 1024 1.7793 us/op 2.3873 us/op 0.75
Buffer.compare 1024 48.538 ns/op 81.432 ns/op 0.60
byteArrayEquals 16384 28.168 us/op 37.217 us/op 0.76
Buffer.compare 16384 235.84 ns/op 289.57 ns/op 0.81
byteArrayEquals 123687377 211.26 ms/op 269.44 ms/op 0.78
Buffer.compare 123687377 5.4638 ms/op 8.3763 ms/op 0.65
byteArrayEquals 32 - diff last byte 58.415 ns/op 77.513 ns/op 0.75
Buffer.compare 32 - diff last byte 35.848 ns/op 60.995 ns/op 0.59
byteArrayEquals 1024 - diff last byte 1.5939 us/op 2.1493 us/op 0.74
Buffer.compare 1024 - diff last byte 41.022 ns/op 74.296 ns/op 0.55
byteArrayEquals 16384 - diff last byte 25.825 us/op 33.576 us/op 0.77
Buffer.compare 16384 - diff last byte 210.49 ns/op 278.58 ns/op 0.76
byteArrayEquals 123687377 - diff last byte 188.30 ms/op 261.10 ms/op 0.72
Buffer.compare 123687377 - diff last byte 3.7707 ms/op 7.8111 ms/op 0.48
byteArrayEquals 32 - random bytes 4.6160 ns/op 5.5490 ns/op 0.83
Buffer.compare 32 - random bytes 40.741 ns/op 70.033 ns/op 0.58
byteArrayEquals 1024 - random bytes 4.5500 ns/op 5.7890 ns/op 0.79
Buffer.compare 1024 - random bytes 39.582 ns/op 63.902 ns/op 0.62
byteArrayEquals 16384 - random bytes 4.5440 ns/op 5.7400 ns/op 0.79
Buffer.compare 16384 - random bytes 39.615 ns/op 63.938 ns/op 0.62
byteArrayEquals 123687377 - random bytes 8.2200 ns/op 9.6200 ns/op 0.85
Buffer.compare 123687377 - random bytes 42.260 ns/op 74.010 ns/op 0.57
regular array get 100000 times 41.609 us/op 49.637 us/op 0.84
wrappedArray get 100000 times 41.612 us/op 50.982 us/op 0.82
arrayWithProxy get 100000 times 11.046 ms/op 16.404 ms/op 0.67
ssz.Root.equals 57.350 ns/op 62.031 ns/op 0.92
byteArrayEquals 54.585 ns/op 57.267 ns/op 0.95
Buffer.compare 9.5260 ns/op 12.651 ns/op 0.75
shuffle list - 16384 els 5.8264 ms/op 8.9699 ms/op 0.65
shuffle list - 250000 els 86.265 ms/op 133.06 ms/op 0.65
processSlot - 1 slots 14.356 us/op 16.678 us/op 0.86
processSlot - 32 slots 3.2779 ms/op 3.1542 ms/op 1.04
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 58.368 ms/op 62.660 ms/op 0.93
getCommitteeAssignments - req 1 vs - 250000 vc 2.4063 ms/op 2.7073 ms/op 0.89
getCommitteeAssignments - req 100 vs - 250000 vc 3.5469 ms/op 3.9165 ms/op 0.91
getCommitteeAssignments - req 1000 vs - 250000 vc 3.8348 ms/op 4.2026 ms/op 0.91
findModifiedValidators - 10000 modified validators 280.13 ms/op 417.15 ms/op 0.67
findModifiedValidators - 1000 modified validators 166.28 ms/op 235.66 ms/op 0.71
findModifiedValidators - 100 modified validators 150.55 ms/op 199.46 ms/op 0.75
findModifiedValidators - 10 modified validators 151.54 ms/op 205.08 ms/op 0.74
findModifiedValidators - 1 modified validators 136.80 ms/op 200.91 ms/op 0.68
findModifiedValidators - no difference 164.02 ms/op 224.08 ms/op 0.73
compare ViewDUs 3.9134 s/op 5.0112 s/op 0.78
compare each validator Uint8Array 1.7052 s/op 1.6131 s/op 1.06
compare ViewDU to Uint8Array 773.49 ms/op 1.5750 s/op 0.49
migrate state 1000000 validators, 24 modified, 0 new 724.74 ms/op 867.69 ms/op 0.84
migrate state 1000000 validators, 1700 modified, 1000 new 1.0197 s/op 1.1242 s/op 0.91
migrate state 1000000 validators, 3400 modified, 2000 new 1.1990 s/op 1.3942 s/op 0.86
migrate state 1500000 validators, 24 modified, 0 new 724.47 ms/op 912.38 ms/op 0.79
migrate state 1500000 validators, 1700 modified, 1000 new 970.34 ms/op 1.3541 s/op 0.72
migrate state 1500000 validators, 3400 modified, 2000 new 1.1938 s/op 1.4647 s/op 0.82
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.7100 ns/op 5.2500 ns/op 0.90
state getBlockRootAtSlot - 250000 vs - 7PWei 611.37 ns/op 744.36 ns/op 0.82
computeProposers - vc 250000 6.4593 ms/op 11.006 ms/op 0.59
computeEpochShuffling - vc 250000 89.198 ms/op 150.48 ms/op 0.59
getNextSyncCommittee - vc 250000 109.00 ms/op 165.32 ms/op 0.66
computeSigningRoot for AttestationData 27.604 us/op 23.829 us/op 1.16
hash AttestationData serialized data then Buffer.toString(base64) 1.2523 us/op 2.4996 us/op 0.50
toHexString serialized data 862.77 ns/op 1.1611 us/op 0.74
Buffer.toString(base64) 165.78 ns/op 220.67 ns/op 0.75

by benchmarkbot/action

@wemeetagain
Copy link
Member

🎉 This PR is included in v1.18.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.

None yet

3 participants