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

chore: add unit test for getAttestationsForBlockElectra #7464

Merged
merged 9 commits into from
Feb 18, 2025

Conversation

ensi321
Copy link
Contributor

@ensi321 ensi321 commented Feb 14, 2025

Follow up on #7455 (comment) to add unit test of the changes introduced in #7455.

@ensi321 ensi321 requested a review from a team as a code owner February 14, 2025 00:56
@ensi321 ensi321 force-pushed the nc/deduplicate-block-attestations2 branch from 43a9d66 to 89474c3 Compare February 14, 2025 00:59

const blockAttestations = pool.getAttestationsForBlock(fork, forkchoiceStub, electraState);

expect(blockAttestations.length).toBe(1); // Expect attestations from committee 0, 1, 2 and 3 to be aggregated into one
Copy link
Contributor Author

Choose a reason for hiding this comment

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

blockAttestations.length returns 4 before #7455 which is not correct. @twoeths

Copy link

codecov bot commented Feb 14, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 50.46%. Comparing base (a25ea77) to head (9cce522).
Report is 2 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7464      +/-   ##
============================================
- Coverage     50.48%   50.46%   -0.02%     
============================================
  Files           602      602              
  Lines         40606    40606              
  Branches       2230     2225       -5     
============================================
- Hits          20499    20493       -6     
- Misses        20067    20073       +6     
  Partials         40       40              

Copy link
Contributor

github-actions bot commented Feb 14, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 331c657 Previous: a25ea77 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0248 ms/op 933.03 us/op 1.10
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.072 us/op 34.747 us/op 1.10
BLS verify - blst 920.72 us/op 835.49 us/op 1.10
BLS verifyMultipleSignatures 3 - blst 1.3247 ms/op 1.1567 ms/op 1.15
BLS verifyMultipleSignatures 8 - blst 2.5838 ms/op 1.6187 ms/op 1.60
BLS verifyMultipleSignatures 32 - blst 6.9388 ms/op 4.7793 ms/op 1.45
BLS verifyMultipleSignatures 64 - blst 11.481 ms/op 8.8093 ms/op 1.30
BLS verifyMultipleSignatures 128 - blst 19.760 ms/op 17.335 ms/op 1.14
BLS deserializing 10000 signatures 751.04 ms/op 690.46 ms/op 1.09
BLS deserializing 100000 signatures 7.5113 s/op 6.7867 s/op 1.11
BLS verifyMultipleSignatures - same message - 3 - blst 1.0654 ms/op 892.13 us/op 1.19
BLS verifyMultipleSignatures - same message - 8 - blst 1.1706 ms/op 1.0113 ms/op 1.16
BLS verifyMultipleSignatures - same message - 32 - blst 2.2102 ms/op 1.6716 ms/op 1.32
BLS verifyMultipleSignatures - same message - 64 - blst 2.8336 ms/op 2.5566 ms/op 1.11
BLS verifyMultipleSignatures - same message - 128 - blst 4.8411 ms/op 4.2973 ms/op 1.13
BLS aggregatePubkeys 32 - blst 21.579 us/op 19.308 us/op 1.12
BLS aggregatePubkeys 128 - blst 78.834 us/op 69.038 us/op 1.14
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 58.738 ms/op 45.287 ms/op 1.30
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 58.748 ms/op 43.546 ms/op 1.35
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 43.907 ms/op 34.312 ms/op 1.28
getSlashingsAndExits - default max 91.110 us/op 74.971 us/op 1.22
getSlashingsAndExits - 2k 405.85 us/op 281.01 us/op 1.44
proposeBlockBody type=full, size=empty 5.1236 ms/op 4.5967 ms/op 1.11
isKnown best case - 1 super set check 227.00 ns/op 200.00 ns/op 1.14
isKnown normal case - 2 super set checks 223.00 ns/op 196.00 ns/op 1.14
isKnown worse case - 16 super set checks 221.00 ns/op 200.00 ns/op 1.10
InMemoryCheckpointStateCache - add get delete 2.9780 us/op 2.1860 us/op 1.36
validate api signedAggregateAndProof - struct 1.8665 ms/op 1.3180 ms/op 1.42
validate gossip signedAggregateAndProof - struct 1.8615 ms/op 1.3189 ms/op 1.41
batch validate gossip attestation - vc 640000 - chunk 32 149.53 us/op 116.91 us/op 1.28
batch validate gossip attestation - vc 640000 - chunk 64 115.62 us/op 101.94 us/op 1.13
batch validate gossip attestation - vc 640000 - chunk 128 112.66 us/op 92.293 us/op 1.22
batch validate gossip attestation - vc 640000 - chunk 256 110.60 us/op 95.599 us/op 1.16
pickEth1Vote - no votes 1.0170 ms/op 919.80 us/op 1.11
pickEth1Vote - max votes 5.4238 ms/op 5.6717 ms/op 0.96
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.471 ms/op 18.106 ms/op 0.69
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.679 ms/op 22.152 ms/op 0.93
pickEth1Vote - Eth1Data fastSerialize value x2048 453.23 us/op 400.99 us/op 1.13
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.4227 ms/op 4.0191 ms/op 0.60
bytes32 toHexString 396.00 ns/op 344.00 ns/op 1.15
bytes32 Buffer.toString(hex) 253.00 ns/op 218.00 ns/op 1.16
bytes32 Buffer.toString(hex) from Uint8Array 353.00 ns/op 315.00 ns/op 1.12
bytes32 Buffer.toString(hex) + 0x 303.00 ns/op 227.00 ns/op 1.33
Object access 1 prop 0.12000 ns/op 0.11300 ns/op 1.06
Map access 1 prop 0.12500 ns/op 0.11200 ns/op 1.12
Object get x1000 5.9550 ns/op 5.4360 ns/op 1.10
Map get x1000 6.6140 ns/op 6.0930 ns/op 1.09
Object set x1000 30.680 ns/op 26.164 ns/op 1.17
Map set x1000 20.906 ns/op 18.255 ns/op 1.15
Return object 10000 times 0.29930 ns/op 0.26730 ns/op 1.12
Throw Error 10000 times 4.4896 us/op 4.0226 us/op 1.12
toHex 137.94 ns/op 124.10 ns/op 1.11
Buffer.from 133.71 ns/op 115.24 ns/op 1.16
shared Buffer 78.221 ns/op 71.837 ns/op 1.09
fastMsgIdFn sha256 / 200 bytes 2.2250 us/op 2.0640 us/op 1.08
fastMsgIdFn h32 xxhash / 200 bytes 215.00 ns/op 197.00 ns/op 1.09
fastMsgIdFn h64 xxhash / 200 bytes 274.00 ns/op 262.00 ns/op 1.05
fastMsgIdFn sha256 / 1000 bytes 7.6390 us/op 6.8940 us/op 1.11
fastMsgIdFn h32 xxhash / 1000 bytes 343.00 ns/op 317.00 ns/op 1.08
fastMsgIdFn h64 xxhash / 1000 bytes 351.00 ns/op 321.00 ns/op 1.09
fastMsgIdFn sha256 / 10000 bytes 66.721 us/op 61.031 us/op 1.09
fastMsgIdFn h32 xxhash / 10000 bytes 1.8580 us/op 1.8000 us/op 1.03
fastMsgIdFn h64 xxhash / 10000 bytes 1.2340 us/op 1.2350 us/op 1.00
send data - 1000 256B messages 10.906 ms/op 12.803 ms/op 0.85
send data - 1000 512B messages 16.279 ms/op 15.261 ms/op 1.07
send data - 1000 1024B messages 26.971 ms/op 21.994 ms/op 1.23
send data - 1000 1200B messages 22.074 ms/op 19.952 ms/op 1.11
send data - 1000 2048B messages 23.942 ms/op 21.143 ms/op 1.13
send data - 1000 4096B messages 27.077 ms/op 24.735 ms/op 1.09
send data - 1000 16384B messages 62.453 ms/op 74.224 ms/op 0.84
send data - 1000 65536B messages 219.41 ms/op 205.50 ms/op 1.07
enrSubnets - fastDeserialize 64 bits 948.00 ns/op 1.6730 us/op 0.57
enrSubnets - ssz BitVector 64 bits 333.00 ns/op 303.00 ns/op 1.10
enrSubnets - fastDeserialize 4 bits 130.00 ns/op 118.00 ns/op 1.10
enrSubnets - ssz BitVector 4 bits 337.00 ns/op 302.00 ns/op 1.12
prioritizePeers score -10:0 att 32-0.1 sync 2-0 120.34 us/op 113.66 us/op 1.06
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 143.46 us/op 130.46 us/op 1.10
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 205.53 us/op 191.02 us/op 1.08
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 387.40 us/op 361.77 us/op 1.07
prioritizePeers score 0:0 att 64-1 sync 4-1 470.22 us/op 440.79 us/op 1.07
array of 16000 items push then shift 1.6758 us/op 1.5342 us/op 1.09
LinkedList of 16000 items push then shift 7.2710 ns/op 6.7330 ns/op 1.08
array of 16000 items push then pop 77.828 ns/op 71.326 ns/op 1.09
LinkedList of 16000 items push then pop 7.1580 ns/op 6.5300 ns/op 1.10
array of 24000 items push then shift 2.5210 us/op 2.2609 us/op 1.12
LinkedList of 24000 items push then shift 7.2830 ns/op 6.6000 ns/op 1.10
array of 24000 items push then pop 103.31 ns/op 96.225 ns/op 1.07
LinkedList of 24000 items push then pop 7.0880 ns/op 6.4830 ns/op 1.09
intersect bitArray bitLen 8 6.5640 ns/op 6.1290 ns/op 1.07
intersect array and set length 8 39.244 ns/op 36.398 ns/op 1.08
intersect bitArray bitLen 128 30.441 ns/op 28.176 ns/op 1.08
intersect array and set length 128 639.37 ns/op 586.23 ns/op 1.09
bitArray.getTrueBitIndexes() bitLen 128 1.0500 us/op 958.00 ns/op 1.10
bitArray.getTrueBitIndexes() bitLen 248 2.0950 us/op 1.6890 us/op 1.24
bitArray.getTrueBitIndexes() bitLen 512 3.7790 us/op 3.4970 us/op 1.08
Buffer.concat 32 items 723.00 ns/op 564.00 ns/op 1.28
Uint8Array.set 32 items 956.00 ns/op 1.7430 us/op 0.55
Buffer.copy 2.4160 us/op 1.9570 us/op 1.23
Uint8Array.set - with subarray 1.7040 us/op 1.6110 us/op 1.06
Uint8Array.set - without subarray 970.00 ns/op 994.00 ns/op 0.98
getUint32 - dataview 201.00 ns/op 184.00 ns/op 1.09
getUint32 - manual 143.00 ns/op 110.00 ns/op 1.30
Set add up to 64 items then delete first 2.0974 us/op 2.1152 us/op 0.99
OrderedSet add up to 64 items then delete first 3.3410 us/op 3.1288 us/op 1.07
Set add up to 64 items then delete last 2.5668 us/op 2.3885 us/op 1.07
OrderedSet add up to 64 items then delete last 3.9859 us/op 3.5115 us/op 1.14
Set add up to 64 items then delete middle 2.6352 us/op 2.3505 us/op 1.12
OrderedSet add up to 64 items then delete middle 5.5111 us/op 4.9953 us/op 1.10
Set add up to 128 items then delete first 5.1269 us/op 4.7941 us/op 1.07
OrderedSet add up to 128 items then delete first 7.7301 us/op 7.6348 us/op 1.01
Set add up to 128 items then delete last 5.2997 us/op 4.8067 us/op 1.10
OrderedSet add up to 128 items then delete last 8.0060 us/op 7.0201 us/op 1.14
Set add up to 128 items then delete middle 5.0612 us/op 4.7284 us/op 1.07
OrderedSet add up to 128 items then delete middle 14.199 us/op 13.414 us/op 1.06
Set add up to 256 items then delete first 10.711 us/op 9.5220 us/op 1.12
OrderedSet add up to 256 items then delete first 15.666 us/op 14.981 us/op 1.05
Set add up to 256 items then delete last 10.360 us/op 9.8720 us/op 1.05
OrderedSet add up to 256 items then delete last 16.034 us/op 13.700 us/op 1.17
Set add up to 256 items then delete middle 10.244 us/op 9.0776 us/op 1.13
OrderedSet add up to 256 items then delete middle 41.699 us/op 39.940 us/op 1.04
transfer serialized Status (84 B) 2.2930 us/op 2.1570 us/op 1.06
copy serialized Status (84 B) 1.2060 us/op 1.2660 us/op 0.95
transfer serialized SignedVoluntaryExit (112 B) 2.2990 us/op 2.1860 us/op 1.05
copy serialized SignedVoluntaryExit (112 B) 1.2220 us/op 1.3290 us/op 0.92
transfer serialized ProposerSlashing (416 B) 2.3270 us/op 3.4810 us/op 0.67
copy serialized ProposerSlashing (416 B) 1.2640 us/op 2.0210 us/op 0.63
transfer serialized Attestation (485 B) 2.7320 us/op 2.3320 us/op 1.17
copy serialized Attestation (485 B) 1.2650 us/op 1.4210 us/op 0.89
transfer serialized AttesterSlashing (33232 B) 2.5160 us/op 2.6870 us/op 0.94
copy serialized AttesterSlashing (33232 B) 3.5740 us/op 3.7410 us/op 0.96
transfer serialized Small SignedBeaconBlock (128000 B) 3.2350 us/op 3.0600 us/op 1.06
copy serialized Small SignedBeaconBlock (128000 B) 9.5210 us/op 9.4900 us/op 1.00
transfer serialized Avg SignedBeaconBlock (200000 B) 3.7090 us/op 3.5770 us/op 1.04
copy serialized Avg SignedBeaconBlock (200000 B) 13.646 us/op 12.498 us/op 1.09
transfer serialized BlobsSidecar (524380 B) 3.8050 us/op 3.9300 us/op 0.97
copy serialized BlobsSidecar (524380 B) 60.061 us/op 69.816 us/op 0.86
transfer serialized Big SignedBeaconBlock (1000000 B) 4.0960 us/op 4.3400 us/op 0.94
copy serialized Big SignedBeaconBlock (1000000 B) 342.86 us/op 109.54 us/op 3.13
pass gossip attestations to forkchoice per slot 2.8370 ms/op 2.6257 ms/op 1.08
forkChoice updateHead vc 100000 bc 64 eq 0 465.11 us/op 429.28 us/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 0 2.8707 ms/op 2.7654 ms/op 1.04
forkChoice updateHead vc 1000000 bc 64 eq 0 4.9092 ms/op 4.5420 ms/op 1.08
forkChoice updateHead vc 600000 bc 320 eq 0 2.8858 ms/op 2.6517 ms/op 1.09
forkChoice updateHead vc 600000 bc 1200 eq 0 2.9050 ms/op 2.6898 ms/op 1.08
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1602 ms/op 2.9975 ms/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 1000 10.727 ms/op 10.114 ms/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 10000 10.625 ms/op 10.058 ms/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 300000 14.180 ms/op 13.322 ms/op 1.06
computeDeltas 500000 validators 300 proto nodes 4.0396 ms/op 3.7647 ms/op 1.07
computeDeltas 500000 validators 1200 proto nodes 4.0844 ms/op 3.7847 ms/op 1.08
computeDeltas 500000 validators 7200 proto nodes 4.1207 ms/op 3.7794 ms/op 1.09
computeDeltas 750000 validators 300 proto nodes 5.9761 ms/op 5.5783 ms/op 1.07
computeDeltas 750000 validators 1200 proto nodes 6.0142 ms/op 5.6610 ms/op 1.06
computeDeltas 750000 validators 7200 proto nodes 6.1734 ms/op 5.6830 ms/op 1.09
computeDeltas 1400000 validators 300 proto nodes 11.604 ms/op 10.501 ms/op 1.11
computeDeltas 1400000 validators 1200 proto nodes 11.463 ms/op 10.472 ms/op 1.09
computeDeltas 1400000 validators 7200 proto nodes 11.240 ms/op 10.474 ms/op 1.07
computeDeltas 2100000 validators 300 proto nodes 17.997 ms/op 15.713 ms/op 1.15
computeDeltas 2100000 validators 1200 proto nodes 17.534 ms/op 15.921 ms/op 1.10
computeDeltas 2100000 validators 7200 proto nodes 17.825 ms/op 15.801 ms/op 1.13
altair processAttestation - 250000 vs - 7PWei normalcase 2.5977 ms/op 2.0502 ms/op 1.27
altair processAttestation - 250000 vs - 7PWei worstcase 3.2258 ms/op 2.9770 ms/op 1.08
altair processAttestation - setStatus - 1/6 committees join 138.68 us/op 122.69 us/op 1.13
altair processAttestation - setStatus - 1/3 committees join 288.01 us/op 234.09 us/op 1.23
altair processAttestation - setStatus - 1/2 committees join 368.69 us/op 329.87 us/op 1.12
altair processAttestation - setStatus - 2/3 committees join 489.12 us/op 419.48 us/op 1.17
altair processAttestation - setStatus - 4/5 committees join 659.80 us/op 583.81 us/op 1.13
altair processAttestation - setStatus - 100% committees join 799.30 us/op 682.51 us/op 1.17
altair processBlock - 250000 vs - 7PWei normalcase 5.1474 ms/op 4.2563 ms/op 1.21
altair processBlock - 250000 vs - 7PWei normalcase hashState 31.370 ms/op 36.920 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase 43.216 ms/op 35.212 ms/op 1.23
altair processBlock - 250000 vs - 7PWei worstcase hashState 95.307 ms/op 90.525 ms/op 1.05
phase0 processBlock - 250000 vs - 7PWei normalcase 1.9842 ms/op 1.6322 ms/op 1.22
phase0 processBlock - 250000 vs - 7PWei worstcase 27.610 ms/op 21.018 ms/op 1.31
altair processEth1Data - 250000 vs - 7PWei normalcase 372.75 us/op 318.88 us/op 1.17
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.2110 us/op 4.4830 us/op 1.16
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 37.487 us/op 26.795 us/op 1.40
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 9.2160 us/op 7.0800 us/op 1.30
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 5.1440 us/op 4.5230 us/op 1.14
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 160.82 us/op 98.738 us/op 1.63
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.2226 ms/op 941.54 us/op 1.30
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.6514 ms/op 1.3417 ms/op 1.23
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7759 ms/op 1.2845 ms/op 1.38
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.5037 ms/op 3.1711 ms/op 1.10
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0281 ms/op 1.3353 ms/op 1.52
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.4700 ms/op 3.1892 ms/op 1.09
Tree 40 250000 create 453.53 ms/op 419.83 ms/op 1.08
Tree 40 250000 get(125000) 156.65 ns/op 142.75 ns/op 1.10
Tree 40 250000 set(125000) 1.6080 us/op 1.3691 us/op 1.17
Tree 40 250000 toArray() 15.721 ms/op 15.283 ms/op 1.03
Tree 40 250000 iterate all - toArray() + loop 15.660 ms/op 16.466 ms/op 0.95
Tree 40 250000 iterate all - get(i) 54.890 ms/op 51.046 ms/op 1.08
Array 250000 create 2.4632 ms/op 2.3576 ms/op 1.04
Array 250000 clone - spread 1.6062 ms/op 790.44 us/op 2.03
Array 250000 get(125000) 0.43400 ns/op 0.39600 ns/op 1.10
Array 250000 set(125000) 0.44200 ns/op 0.40600 ns/op 1.09
Array 250000 iterate all - loop 84.689 us/op 77.175 us/op 1.10
phase0 afterProcessEpoch - 250000 vs - 7PWei 50.591 ms/op 45.106 ms/op 1.12
Array.fill - length 1000000 3.4916 ms/op 3.2494 ms/op 1.07
Array push - length 1000000 13.086 ms/op 12.401 ms/op 1.06
Array.get 0.29285 ns/op 0.26809 ns/op 1.09
Uint8Array.get 0.46982 ns/op 0.43030 ns/op 1.09
phase0 beforeProcessEpoch - 250000 vs - 7PWei 18.015 ms/op 15.487 ms/op 1.16
altair processEpoch - mainnet_e81889 310.72 ms/op 274.36 ms/op 1.13
mainnet_e81889 - altair beforeProcessEpoch 18.657 ms/op 17.177 ms/op 1.09
mainnet_e81889 - altair processJustificationAndFinalization 6.2700 us/op 5.2970 us/op 1.18
mainnet_e81889 - altair processInactivityUpdates 4.3051 ms/op 3.9610 ms/op 1.09
mainnet_e81889 - altair processRewardsAndPenalties 55.631 ms/op 38.353 ms/op 1.45
mainnet_e81889 - altair processRegistryUpdates 728.00 ns/op 697.00 ns/op 1.04
mainnet_e81889 - altair processSlashings 192.00 ns/op 171.00 ns/op 1.12
mainnet_e81889 - altair processEth1DataReset 188.00 ns/op 168.00 ns/op 1.12
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2924 ms/op 1.2214 ms/op 1.06
mainnet_e81889 - altair processSlashingsReset 1.2490 us/op 858.00 ns/op 1.46
mainnet_e81889 - altair processRandaoMixesReset 1.3670 us/op 1.1410 us/op 1.20
mainnet_e81889 - altair processHistoricalRootsUpdate 202.00 ns/op 173.00 ns/op 1.17
mainnet_e81889 - altair processParticipationFlagUpdates 538.00 ns/op 495.00 ns/op 1.09
mainnet_e81889 - altair processSyncCommitteeUpdates 144.00 ns/op 132.00 ns/op 1.09
mainnet_e81889 - altair afterProcessEpoch 53.764 ms/op 47.095 ms/op 1.14
capella processEpoch - mainnet_e217614 875.66 ms/op 903.25 ms/op 0.97
mainnet_e217614 - capella beforeProcessEpoch 63.157 ms/op 59.125 ms/op 1.07
mainnet_e217614 - capella processJustificationAndFinalization 5.2520 us/op 5.3070 us/op 0.99
mainnet_e217614 - capella processInactivityUpdates 16.466 ms/op 15.454 ms/op 1.07
mainnet_e217614 - capella processRewardsAndPenalties 199.97 ms/op 173.09 ms/op 1.16
mainnet_e217614 - capella processRegistryUpdates 6.4820 us/op 6.1750 us/op 1.05
mainnet_e217614 - capella processSlashings 178.00 ns/op 170.00 ns/op 1.05
mainnet_e217614 - capella processEth1DataReset 174.00 ns/op 168.00 ns/op 1.04
mainnet_e217614 - capella processEffectiveBalanceUpdates 10.093 ms/op 13.965 ms/op 0.72
mainnet_e217614 - capella processSlashingsReset 1.1910 us/op 835.00 ns/op 1.43
mainnet_e217614 - capella processRandaoMixesReset 1.2360 us/op 1.1460 us/op 1.08
mainnet_e217614 - capella processHistoricalRootsUpdate 177.00 ns/op 172.00 ns/op 1.03
mainnet_e217614 - capella processParticipationFlagUpdates 598.00 ns/op 504.00 ns/op 1.19
mainnet_e217614 - capella afterProcessEpoch 126.79 ms/op 117.79 ms/op 1.08
phase0 processEpoch - mainnet_e58758 344.49 ms/op 285.33 ms/op 1.21
mainnet_e58758 - phase0 beforeProcessEpoch 71.257 ms/op 74.140 ms/op 0.96
mainnet_e58758 - phase0 processJustificationAndFinalization 7.5220 us/op 5.4720 us/op 1.37
mainnet_e58758 - phase0 processRewardsAndPenalties 40.922 ms/op 35.972 ms/op 1.14
mainnet_e58758 - phase0 processRegistryUpdates 4.0200 us/op 2.9950 us/op 1.34
mainnet_e58758 - phase0 processSlashings 178.00 ns/op 168.00 ns/op 1.06
mainnet_e58758 - phase0 processEth1DataReset 171.00 ns/op 170.00 ns/op 1.01
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0647 ms/op 980.43 us/op 1.09
mainnet_e58758 - phase0 processSlashingsReset 911.00 ns/op 854.00 ns/op 1.07
mainnet_e58758 - phase0 processRandaoMixesReset 1.2950 us/op 1.1530 us/op 1.12
mainnet_e58758 - phase0 processHistoricalRootsUpdate 201.00 ns/op 171.00 ns/op 1.18
mainnet_e58758 - phase0 processParticipationRecordUpdates 980.00 ns/op 852.00 ns/op 1.15
mainnet_e58758 - phase0 afterProcessEpoch 45.449 ms/op 40.040 ms/op 1.14
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.9325 ms/op 1.3118 ms/op 1.47
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9712 ms/op 1.9836 ms/op 0.99
altair processInactivityUpdates - 250000 normalcase 19.906 ms/op 16.168 ms/op 1.23
altair processInactivityUpdates - 250000 worstcase 19.554 ms/op 16.120 ms/op 1.21
phase0 processRegistryUpdates - 250000 normalcase 10.552 us/op 6.5290 us/op 1.62
phase0 processRegistryUpdates - 250000 badcase_full_deposits 280.55 us/op 229.19 us/op 1.22
phase0 processRegistryUpdates - 250000 worstcase 0.5 107.78 ms/op 109.31 ms/op 0.99
altair processRewardsAndPenalties - 250000 normalcase 50.498 ms/op 42.434 ms/op 1.19
altair processRewardsAndPenalties - 250000 worstcase 43.366 ms/op 34.066 ms/op 1.27
phase0 getAttestationDeltas - 250000 normalcase 7.0185 ms/op 5.8578 ms/op 1.20
phase0 getAttestationDeltas - 250000 worstcase 6.1738 ms/op 6.6448 ms/op 0.93
phase0 processSlashings - 250000 worstcase 124.45 us/op 83.265 us/op 1.49
altair processSyncCommitteeUpdates - 250000 120.93 ms/op 120.27 ms/op 1.01
BeaconState.hashTreeRoot - No change 232.00 ns/op 204.00 ns/op 1.14
BeaconState.hashTreeRoot - 1 full validator 82.468 us/op 81.680 us/op 1.01
BeaconState.hashTreeRoot - 32 full validator 1.2478 ms/op 976.72 us/op 1.28
BeaconState.hashTreeRoot - 512 full validator 11.504 ms/op 11.021 ms/op 1.04
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 115.59 us/op 98.870 us/op 1.17
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.5142 ms/op 2.2343 ms/op 0.68
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 19.898 ms/op 21.447 ms/op 0.93
BeaconState.hashTreeRoot - 1 balances 88.823 us/op 72.732 us/op 1.22
BeaconState.hashTreeRoot - 32 balances 717.99 us/op 827.62 us/op 0.87
BeaconState.hashTreeRoot - 512 balances 7.2797 ms/op 8.2272 ms/op 0.88
BeaconState.hashTreeRoot - 250000 balances 146.22 ms/op 185.16 ms/op 0.79
aggregationBits - 2048 els - zipIndexesInBitList 22.069 us/op 20.477 us/op 1.08
byteArrayEquals 32 55.608 ns/op 61.083 ns/op 0.91
Buffer.compare 32 18.523 ns/op 16.511 ns/op 1.12
byteArrayEquals 1024 1.6413 us/op 1.5153 us/op 1.08
Buffer.compare 1024 27.559 ns/op 23.686 ns/op 1.16
byteArrayEquals 16384 26.199 us/op 24.220 us/op 1.08
Buffer.compare 16384 213.23 ns/op 193.58 ns/op 1.10
byteArrayEquals 123687377 197.74 ms/op 183.24 ms/op 1.08
Buffer.compare 123687377 6.6045 ms/op 6.4495 ms/op 1.02
byteArrayEquals 32 - diff last byte 54.385 ns/op 52.440 ns/op 1.04
Buffer.compare 32 - diff last byte 18.131 ns/op 17.007 ns/op 1.07
byteArrayEquals 1024 - diff last byte 1.6436 us/op 1.5996 us/op 1.03
Buffer.compare 1024 - diff last byte 27.589 ns/op 24.976 ns/op 1.10
byteArrayEquals 16384 - diff last byte 26.136 us/op 25.293 us/op 1.03
Buffer.compare 16384 - diff last byte 195.78 ns/op 187.46 ns/op 1.04
byteArrayEquals 123687377 - diff last byte 198.69 ms/op 189.07 ms/op 1.05
Buffer.compare 123687377 - diff last byte 8.1010 ms/op 6.7773 ms/op 1.20
byteArrayEquals 32 - random bytes 5.6070 ns/op 5.0250 ns/op 1.12
Buffer.compare 32 - random bytes 18.754 ns/op 16.812 ns/op 1.12
byteArrayEquals 1024 - random bytes 5.6660 ns/op 5.0100 ns/op 1.13
Buffer.compare 1024 - random bytes 19.048 ns/op 16.713 ns/op 1.14
byteArrayEquals 16384 - random bytes 6.3130 ns/op 5.0560 ns/op 1.25
Buffer.compare 16384 - random bytes 19.733 ns/op 16.737 ns/op 1.18
byteArrayEquals 123687377 - random bytes 7.7300 ns/op 6.2900 ns/op 1.23
Buffer.compare 123687377 - random bytes 22.990 ns/op 18.200 ns/op 1.26
regular array get 100000 times 48.105 us/op 43.431 us/op 1.11
wrappedArray get 100000 times 42.046 us/op 32.528 us/op 1.29
arrayWithProxy get 100000 times 14.490 ms/op 14.008 ms/op 1.03
ssz.Root.equals 48.035 ns/op 45.652 ns/op 1.05
byteArrayEquals 48.455 ns/op 44.781 ns/op 1.08
Buffer.compare 11.156 ns/op 10.236 ns/op 1.09
processSlot - 1 slots 13.013 us/op 10.246 us/op 1.27
processSlot - 32 slots 2.5286 ms/op 2.2142 ms/op 1.14
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 59.744 ms/op 51.062 ms/op 1.17
getCommitteeAssignments - req 1 vs - 250000 vc 2.5974 ms/op 2.0328 ms/op 1.28
getCommitteeAssignments - req 100 vs - 250000 vc 4.9731 ms/op 3.9307 ms/op 1.27
getCommitteeAssignments - req 1000 vs - 250000 vc 5.0156 ms/op 4.2010 ms/op 1.19
findModifiedValidators - 10000 modified validators 839.40 ms/op 746.89 ms/op 1.12
findModifiedValidators - 1000 modified validators 815.33 ms/op 686.47 ms/op 1.19
findModifiedValidators - 100 modified validators 245.41 ms/op 283.88 ms/op 0.86
findModifiedValidators - 10 modified validators 313.67 ms/op 215.46 ms/op 1.46
findModifiedValidators - 1 modified validators 206.20 ms/op 142.91 ms/op 1.44
findModifiedValidators - no difference 200.72 ms/op 143.37 ms/op 1.40
compare ViewDUs 7.5413 s/op 5.8657 s/op 1.29
compare each validator Uint8Array 1.4873 s/op 1.6456 s/op 0.90
compare ViewDU to Uint8Array 1.4480 s/op 976.28 ms/op 1.48
migrate state 1000000 validators, 24 modified, 0 new 1.1037 s/op 846.08 ms/op 1.30
migrate state 1000000 validators, 1700 modified, 1000 new 1.4126 s/op 1.1242 s/op 1.26
migrate state 1000000 validators, 3400 modified, 2000 new 1.5599 s/op 1.1703 s/op 1.33
migrate state 1500000 validators, 24 modified, 0 new 1.0457 s/op 870.53 ms/op 1.20
migrate state 1500000 validators, 1700 modified, 1000 new 1.1599 s/op 999.79 ms/op 1.16
migrate state 1500000 validators, 3400 modified, 2000 new 1.2341 s/op 1.3190 s/op 0.94
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.3900 ns/op 4.1900 ns/op 1.05
state getBlockRootAtSlot - 250000 vs - 7PWei 526.67 ns/op 471.58 ns/op 1.12
naive computeProposerIndex 100000 validators 49.850 ms/op 50.887 ms/op 0.98
computeProposerIndex 100000 validators 10.066 ms/op 7.9855 ms/op 1.26
naiveGetNextSyncCommitteeIndices 1000 validators 8.8478 s/op 7.3477 s/op 1.20
getNextSyncCommitteeIndices 1000 validators 278.33 ms/op 232.21 ms/op 1.20
naiveGetNextSyncCommitteeIndices 10000 validators 8.7239 s/op 7.2344 s/op 1.21
getNextSyncCommitteeIndices 10000 validators 265.29 ms/op 230.94 ms/op 1.15
naiveGetNextSyncCommitteeIndices 100000 validators 7.6293 s/op 6.7864 s/op 1.12
getNextSyncCommitteeIndices 100000 validators 254.33 ms/op 222.39 ms/op 1.14
naive computeShuffledIndex 100000 validators 21.169 s/op 24.039 s/op 0.88
cached computeShuffledIndex 100000 validators 568.07 ms/op 522.05 ms/op 1.09
naive computeShuffledIndex 2000000 validators 445.46 s/op 486.99 s/op 0.91
cached computeShuffledIndex 2000000 validators 60.050 s/op 33.512 s/op 1.79
computeProposers - vc 250000 10.201 ms/op 9.3335 ms/op 1.09
computeEpochShuffling - vc 250000 45.299 ms/op 40.504 ms/op 1.12
getNextSyncCommittee - vc 250000 266.82 ms/op 143.51 ms/op 1.86
computeSigningRoot for AttestationData 26.418 us/op 24.808 us/op 1.06
hash AttestationData serialized data then Buffer.toString(base64) 1.7243 us/op 1.5066 us/op 1.14
toHexString serialized data 1.3162 us/op 1.0118 us/op 1.30
Buffer.toString(base64) 178.42 ns/op 165.54 ns/op 1.08
nodejs block root to RootHex using toHex 155.01 ns/op 126.32 ns/op 1.23
nodejs block root to RootHex using toRootHex 85.731 ns/op 77.581 ns/op 1.11
browser block root to RootHex using the deprecated toHexString 231.57 ns/op 199.73 ns/op 1.16
browser block root to RootHex using toHex 186.56 ns/op 162.91 ns/op 1.15
browser block root to RootHex using toRootHex 177.48 ns/op 156.18 ns/op 1.14

by benchmarkbot/action

@nflaig nflaig changed the title feat: add unit test for getAttestationsForBlockElectra chore: add unit test for getAttestationsForBlockElectra Feb 14, 2025
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

@wemeetagain wemeetagain merged commit b785bbd into unstable Feb 18, 2025
20 checks passed
@wemeetagain wemeetagain deleted the nc/deduplicate-block-attestations2 branch February 18, 2025 19:19
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