-
-
Notifications
You must be signed in to change notification settings - Fork 427
fix: unsupport bundling attestations for pre-electra blocks #8721
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
base: unstable
Are you sure you want to change the base?
fix: unsupport bundling attestations for pre-electra blocks #8721
Conversation
Summary of ChangesHello @twoeths, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request streamlines the beacon node's codebase by eliminating legacy support for pre-Electra block production, which was identified as a complex component hindering migration efforts. Concurrently, it modernizes the end-to-end testing suite to align with the Electra and Fulu forks, ensuring forward compatibility and preparing the system for upcoming protocol upgrades. The changes simplify core logic and enhance test reliability for future development. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request effectively removes support for pre-electra block production, which simplifies the codebase by removing complex legacy logic. The accompanying updates to the end-to-end tests to use newer forks are a logical and necessary step. The changes are clean and well-aligned with the PR's objectives. My review includes a couple of suggestions to improve error handling by using more specific custom errors, which would enhance maintainability and consistency with the project's existing error handling patterns.
|
| Benchmark suite | Current: 35b0e1f | Previous: b255111 | Ratio |
|---|---|---|---|
| 400 bytes - uncompress - snappyjs | 19.934 us/op | 1.5489 us/op | 12.87 |
Full benchmark results
| Benchmark suite | Current: 35b0e1f | Previous: b255111 | Ratio |
|---|---|---|---|
| getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 1.1745 ms/op | 1.1953 ms/op | 0.98 |
| getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 41.878 us/op | 39.675 us/op | 1.06 |
| BLS verify - blst | 855.65 us/op | 988.67 us/op | 0.87 |
| BLS verifyMultipleSignatures 3 - blst | 1.2770 ms/op | 1.3100 ms/op | 0.97 |
| BLS verifyMultipleSignatures 8 - blst | 1.8949 ms/op | 1.9223 ms/op | 0.99 |
| BLS verifyMultipleSignatures 32 - blst | 5.7332 ms/op | 5.8637 ms/op | 0.98 |
| BLS verifyMultipleSignatures 64 - blst | 10.809 ms/op | 11.040 ms/op | 0.98 |
| BLS verifyMultipleSignatures 128 - blst | 17.373 ms/op | 18.263 ms/op | 0.95 |
| BLS deserializing 10000 signatures | 704.11 ms/op | 701.93 ms/op | 1.00 |
| BLS deserializing 100000 signatures | 6.9511 s/op | 7.0895 s/op | 0.98 |
| BLS verifyMultipleSignatures - same message - 3 - blst | 998.18 us/op | 1.0116 ms/op | 0.99 |
| BLS verifyMultipleSignatures - same message - 8 - blst | 1.1948 ms/op | 1.1463 ms/op | 1.04 |
| BLS verifyMultipleSignatures - same message - 32 - blst | 1.8819 ms/op | 1.7717 ms/op | 1.06 |
| BLS verifyMultipleSignatures - same message - 64 - blst | 2.6811 ms/op | 2.6999 ms/op | 0.99 |
| BLS verifyMultipleSignatures - same message - 128 - blst | 4.4698 ms/op | 4.7673 ms/op | 0.94 |
| BLS aggregatePubkeys 32 - blst | 19.609 us/op | 19.926 us/op | 0.98 |
| BLS aggregatePubkeys 128 - blst | 70.097 us/op | 71.401 us/op | 0.98 |
| getSlashingsAndExits - default max | 75.834 us/op | 71.738 us/op | 1.06 |
| getSlashingsAndExits - 2k | 338.51 us/op | 331.96 us/op | 1.02 |
| isKnown best case - 1 super set check | 203.00 ns/op | 209.00 ns/op | 0.97 |
| isKnown normal case - 2 super set checks | 201.00 ns/op | 215.00 ns/op | 0.93 |
| isKnown worse case - 16 super set checks | 202.00 ns/op | 203.00 ns/op | 1.00 |
| InMemoryCheckpointStateCache - add get delete | 2.7360 us/op | 2.4740 us/op | 1.11 |
| validate api signedAggregateAndProof - struct | 2.5898 ms/op | 1.4506 ms/op | 1.79 |
| validate gossip signedAggregateAndProof - struct | 2.5922 ms/op | 1.4720 ms/op | 1.76 |
| batch validate gossip attestation - vc 640000 - chunk 32 | 123.74 us/op | 131.45 us/op | 0.94 |
| batch validate gossip attestation - vc 640000 - chunk 64 | 134.67 us/op | 107.03 us/op | 1.26 |
| batch validate gossip attestation - vc 640000 - chunk 128 | 94.652 us/op | 108.66 us/op | 0.87 |
| batch validate gossip attestation - vc 640000 - chunk 256 | 90.217 us/op | 94.555 us/op | 0.95 |
| bytes32 toHexString | 345.00 ns/op | 420.00 ns/op | 0.82 |
| bytes32 Buffer.toString(hex) | 239.00 ns/op | 257.00 ns/op | 0.93 |
| bytes32 Buffer.toString(hex) from Uint8Array | 352.00 ns/op | 344.00 ns/op | 1.02 |
| bytes32 Buffer.toString(hex) + 0x | 497.00 ns/op | 264.00 ns/op | 1.88 |
| Object access 1 prop | 0.10800 ns/op | 0.13500 ns/op | 0.80 |
| Map access 1 prop | 0.11600 ns/op | 0.13300 ns/op | 0.87 |
| Object get x1000 | 5.1670 ns/op | 5.4850 ns/op | 0.94 |
| Map get x1000 | 0.36000 ns/op | 0.38000 ns/op | 0.95 |
| Object set x1000 | 28.733 ns/op | 30.119 ns/op | 0.95 |
| Map set x1000 | 20.037 ns/op | 21.062 ns/op | 0.95 |
| Return object 10000 times | 0.22840 ns/op | 0.23540 ns/op | 0.97 |
| Throw Error 10000 times | 4.0193 us/op | 4.1240 us/op | 0.97 |
| toHex | 152.03 ns/op | 144.21 ns/op | 1.05 |
| Buffer.from | 132.00 ns/op | 128.35 ns/op | 1.03 |
| shared Buffer | 74.944 ns/op | 82.871 ns/op | 0.90 |
| fastMsgIdFn sha256 / 200 bytes | 1.8270 us/op | 1.8670 us/op | 0.98 |
| fastMsgIdFn h32 xxhash / 200 bytes | 282.00 ns/op | 190.00 ns/op | 1.48 |
| fastMsgIdFn h64 xxhash / 200 bytes | 400.00 ns/op | 261.00 ns/op | 1.53 |
| fastMsgIdFn sha256 / 1000 bytes | 5.5850 us/op | 6.0170 us/op | 0.93 |
| fastMsgIdFn h32 xxhash / 1000 bytes | 463.00 ns/op | 285.00 ns/op | 1.62 |
| fastMsgIdFn h64 xxhash / 1000 bytes | 566.00 ns/op | 355.00 ns/op | 1.59 |
| fastMsgIdFn sha256 / 10000 bytes | 50.939 us/op | 52.977 us/op | 0.96 |
| fastMsgIdFn h32 xxhash / 10000 bytes | 1.3700 us/op | 1.3930 us/op | 0.98 |
| fastMsgIdFn h64 xxhash / 10000 bytes | 1.1310 us/op | 1.0480 us/op | 1.08 |
| 100 bytes - compress - snappyjs | 1.5497 us/op | 1.3321 us/op | 1.16 |
| 100 bytes - compress - snappy | 1.0785 us/op | 1.1157 us/op | 0.97 |
| 100 bytes - compress - snappy-wasm | 645.18 ns/op | 635.00 ns/op | 1.02 |
| 100 bytes - compress - snappy-wasm - prealloc | 1.1546 us/op | 1.1270 us/op | 1.02 |
| 200 bytes - compress - snappyjs | 1.4774 us/op | 1.7517 us/op | 0.84 |
| 200 bytes - compress - snappy | 1.3645 us/op | 1.3654 us/op | 1.00 |
| 200 bytes - compress - snappy-wasm | 1.1040 us/op | 726.22 ns/op | 1.52 |
| 200 bytes - compress - snappy-wasm - prealloc | 1.7820 us/op | 1.8413 us/op | 0.97 |
| 300 bytes - compress - snappyjs | 2.2451 us/op | 2.3622 us/op | 0.95 |
| 300 bytes - compress - snappy | 1.4316 us/op | 2.4523 us/op | 0.58 |
| 300 bytes - compress - snappy-wasm | 836.45 ns/op | 1.0585 us/op | 0.79 |
| 300 bytes - compress - snappy-wasm - prealloc | 1.4694 us/op | 2.0140 us/op | 0.73 |
| 400 bytes - compress - snappyjs | 2.4887 us/op | 2.1820 us/op | 1.14 |
| 400 bytes - compress - snappy | 1.3371 us/op | 1.9656 us/op | 0.68 |
| 400 bytes - compress - snappy-wasm | 1.0801 us/op | 1.1756 us/op | 0.92 |
| 400 bytes - compress - snappy-wasm - prealloc | 1.1119 us/op | 1.9096 us/op | 0.58 |
| 500 bytes - compress - snappyjs | 3.2246 us/op | 2.4346 us/op | 1.32 |
| 500 bytes - compress - snappy | 1.5384 us/op | 1.4805 us/op | 1.04 |
| 500 bytes - compress - snappy-wasm | 964.15 ns/op | 1.0033 us/op | 0.96 |
| 500 bytes - compress - snappy-wasm - prealloc | 3.0313 us/op | 1.3324 us/op | 2.28 |
| 1000 bytes - compress - snappyjs | 6.8631 us/op | 4.4733 us/op | 1.53 |
| 1000 bytes - compress - snappy | 1.8287 us/op | 1.5751 us/op | 1.16 |
| 1000 bytes - compress - snappy-wasm | 1.8231 us/op | 1.9342 us/op | 0.94 |
| 1000 bytes - compress - snappy-wasm - prealloc | 1.5871 us/op | 1.7710 us/op | 0.90 |
| 10000 bytes - compress - snappyjs | 25.277 us/op | 24.701 us/op | 1.02 |
| 10000 bytes - compress - snappy | 28.165 us/op | 24.558 us/op | 1.15 |
| 10000 bytes - compress - snappy-wasm | 17.736 us/op | 30.597 us/op | 0.58 |
| 10000 bytes - compress - snappy-wasm - prealloc | 18.605 us/op | 26.325 us/op | 0.71 |
| 100 bytes - uncompress - snappyjs | 679.71 ns/op | 749.52 ns/op | 0.91 |
| 100 bytes - uncompress - snappy | 1.0753 us/op | 1.1171 us/op | 0.96 |
| 100 bytes - uncompress - snappy-wasm | 673.20 ns/op | 654.07 ns/op | 1.03 |
| 100 bytes - uncompress - snappy-wasm - prealloc | 805.96 ns/op | 1.0964 us/op | 0.74 |
| 200 bytes - uncompress - snappyjs | 866.26 ns/op | 945.87 ns/op | 0.92 |
| 200 bytes - uncompress - snappy | 1.7214 us/op | 1.2842 us/op | 1.34 |
| 200 bytes - uncompress - snappy-wasm | 1.2891 us/op | 876.15 ns/op | 1.47 |
| 200 bytes - uncompress - snappy-wasm - prealloc | 974.67 ns/op | 995.79 ns/op | 0.98 |
| 300 bytes - uncompress - snappyjs | 1.2572 us/op | 1.0431 us/op | 1.21 |
| 300 bytes - uncompress - snappy | 2.7010 us/op | 1.5321 us/op | 1.76 |
| 300 bytes - uncompress - snappy-wasm | 1.1085 us/op | 1.0311 us/op | 1.08 |
| 300 bytes - uncompress - snappy-wasm - prealloc | 1.4368 us/op | 1.3159 us/op | 1.09 |
| 400 bytes - uncompress - snappyjs | 19.934 us/op | 1.5489 us/op | 12.87 |
| 400 bytes - uncompress - snappy | 1.4259 us/op | 3.0416 us/op | 0.47 |
| 400 bytes - uncompress - snappy-wasm | 843.94 ns/op | 858.05 ns/op | 0.98 |
| 400 bytes - uncompress - snappy-wasm - prealloc | 1.5302 us/op | 1.0731 us/op | 1.43 |
| 500 bytes - uncompress - snappyjs | 1.1774 us/op | 1.8794 us/op | 0.63 |
| 500 bytes - uncompress - snappy | 1.3437 us/op | 1.3211 us/op | 1.02 |
| 500 bytes - uncompress - snappy-wasm | 961.00 ns/op | 977.64 ns/op | 0.98 |
| 500 bytes - uncompress - snappy-wasm - prealloc | 1.0291 us/op | 1.4029 us/op | 0.73 |
| 1000 bytes - uncompress - snappyjs | 1.8875 us/op | 2.4616 us/op | 0.77 |
| 1000 bytes - uncompress - snappy | 1.7635 us/op | 1.5818 us/op | 1.11 |
| 1000 bytes - uncompress - snappy-wasm | 1.2129 us/op | 1.3217 us/op | 0.92 |
| 1000 bytes - uncompress - snappy-wasm - prealloc | 1.1873 us/op | 1.2055 us/op | 0.98 |
| 10000 bytes - uncompress - snappyjs | 19.486 us/op | 35.218 us/op | 0.55 |
| 10000 bytes - uncompress - snappy | 31.765 us/op | 31.715 us/op | 1.00 |
| 10000 bytes - uncompress - snappy-wasm | 16.379 us/op | 16.747 us/op | 0.98 |
| 10000 bytes - uncompress - snappy-wasm - prealloc | 15.077 us/op | 17.191 us/op | 0.88 |
| send data - 1000 256B messages | 15.731 ms/op | 15.037 ms/op | 1.05 |
| send data - 1000 512B messages | 18.381 ms/op | 19.321 ms/op | 0.95 |
| send data - 1000 1024B messages | 27.637 ms/op | 23.642 ms/op | 1.17 |
| send data - 1000 1200B messages | 27.328 ms/op | 29.635 ms/op | 0.92 |
| send data - 1000 2048B messages | 23.997 ms/op | 34.772 ms/op | 0.69 |
| send data - 1000 4096B messages | 51.596 ms/op | 63.751 ms/op | 0.81 |
| send data - 1000 16384B messages | 129.33 ms/op | 144.54 ms/op | 0.89 |
| send data - 1000 65536B messages | 280.08 ms/op | 305.07 ms/op | 0.92 |
| enrSubnets - fastDeserialize 64 bits | 890.00 ns/op | 923.00 ns/op | 0.96 |
| enrSubnets - ssz BitVector 64 bits | 436.00 ns/op | 349.00 ns/op | 1.25 |
| enrSubnets - fastDeserialize 4 bits | 124.00 ns/op | 137.00 ns/op | 0.91 |
| enrSubnets - ssz BitVector 4 bits | 421.00 ns/op | 383.00 ns/op | 1.10 |
| prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 308.12 us/op | 235.39 us/op | 1.31 |
| prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 268.18 us/op | 263.41 us/op | 1.02 |
| prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 385.36 us/op | 407.93 us/op | 0.94 |
| prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 695.92 us/op | 765.87 us/op | 0.91 |
| prioritizePeers score 0:0 att 64-1 sync 4-1 | 1.1231 ms/op | 949.09 us/op | 1.18 |
| array of 16000 items push then shift | 1.5171 us/op | 1.6514 us/op | 0.92 |
| LinkedList of 16000 items push then shift | 7.1610 ns/op | 7.7390 ns/op | 0.93 |
| array of 16000 items push then pop | 75.400 ns/op | 79.314 ns/op | 0.95 |
| LinkedList of 16000 items push then pop | 7.0480 ns/op | 7.4030 ns/op | 0.95 |
| array of 24000 items push then shift | 2.3454 us/op | 2.4584 us/op | 0.95 |
| LinkedList of 24000 items push then shift | 7.3060 ns/op | 7.9500 ns/op | 0.92 |
| array of 24000 items push then pop | 106.10 ns/op | 107.68 ns/op | 0.99 |
| LinkedList of 24000 items push then pop | 7.1040 ns/op | 7.4350 ns/op | 0.96 |
| intersect bitArray bitLen 8 | 5.6410 ns/op | 5.7880 ns/op | 0.97 |
| intersect array and set length 8 | 32.901 ns/op | 34.079 ns/op | 0.97 |
| intersect bitArray bitLen 128 | 28.408 ns/op | 29.100 ns/op | 0.98 |
| intersect array and set length 128 | 541.57 ns/op | 563.87 ns/op | 0.96 |
| bitArray.getTrueBitIndexes() bitLen 128 | 1.0410 us/op | 1.0950 us/op | 0.95 |
| bitArray.getTrueBitIndexes() bitLen 248 | 1.7560 us/op | 2.0800 us/op | 0.84 |
| bitArray.getTrueBitIndexes() bitLen 512 | 5.6100 us/op | 4.3320 us/op | 1.30 |
| Full columns - reconstruct all 6 blobs | 349.84 us/op | 320.97 us/op | 1.09 |
| Full columns - reconstruct half of the blobs out of 6 | 95.362 us/op | 103.75 us/op | 0.92 |
| Full columns - reconstruct single blob out of 6 | 31.575 us/op | 31.952 us/op | 0.99 |
| Half columns - reconstruct all 6 blobs | 262.69 ms/op | 268.12 ms/op | 0.98 |
| Half columns - reconstruct half of the blobs out of 6 | 132.74 ms/op | 133.52 ms/op | 0.99 |
| Half columns - reconstruct single blob out of 6 | 49.355 ms/op | 50.049 ms/op | 0.99 |
| Full columns - reconstruct all 10 blobs | 260.86 us/op | 405.82 us/op | 0.64 |
| Full columns - reconstruct half of the blobs out of 10 | 133.23 us/op | 153.72 us/op | 0.87 |
| Full columns - reconstruct single blob out of 10 | 30.452 us/op | 44.695 us/op | 0.68 |
| Half columns - reconstruct all 10 blobs | 439.09 ms/op | 435.73 ms/op | 1.01 |
| Half columns - reconstruct half of the blobs out of 10 | 221.65 ms/op | 222.71 ms/op | 1.00 |
| Half columns - reconstruct single blob out of 10 | 48.985 ms/op | 48.148 ms/op | 1.02 |
| Full columns - reconstruct all 20 blobs | 722.28 us/op | 785.12 us/op | 0.92 |
| Full columns - reconstruct half of the blobs out of 20 | 361.73 us/op | 420.26 us/op | 0.86 |
| Full columns - reconstruct single blob out of 20 | 30.352 us/op | 40.368 us/op | 0.75 |
| Half columns - reconstruct all 20 blobs | 877.64 ms/op | 862.40 ms/op | 1.02 |
| Half columns - reconstruct half of the blobs out of 20 | 443.11 ms/op | 435.08 ms/op | 1.02 |
| Half columns - reconstruct single blob out of 20 | 49.414 ms/op | 53.114 ms/op | 0.93 |
| Set add up to 64 items then delete first | 2.0081 us/op | 2.0700 us/op | 0.97 |
| OrderedSet add up to 64 items then delete first | 2.9991 us/op | 3.0994 us/op | 0.97 |
| Set add up to 64 items then delete last | 2.2863 us/op | 2.3646 us/op | 0.97 |
| OrderedSet add up to 64 items then delete last | 3.3897 us/op | 3.3977 us/op | 1.00 |
| Set add up to 64 items then delete middle | 2.3206 us/op | 2.3461 us/op | 0.99 |
| OrderedSet add up to 64 items then delete middle | 4.9515 us/op | 4.9110 us/op | 1.01 |
| Set add up to 128 items then delete first | 4.5133 us/op | 4.8253 us/op | 0.94 |
| OrderedSet add up to 128 items then delete first | 6.7177 us/op | 7.2404 us/op | 0.93 |
| Set add up to 128 items then delete last | 4.7441 us/op | 4.5460 us/op | 1.04 |
| OrderedSet add up to 128 items then delete last | 6.8155 us/op | 7.0090 us/op | 0.97 |
| Set add up to 128 items then delete middle | 4.4695 us/op | 4.5795 us/op | 0.98 |
| OrderedSet add up to 128 items then delete middle | 13.276 us/op | 12.946 us/op | 1.03 |
| Set add up to 256 items then delete first | 9.4439 us/op | 10.411 us/op | 0.91 |
| OrderedSet add up to 256 items then delete first | 13.939 us/op | 14.881 us/op | 0.94 |
| Set add up to 256 items then delete last | 9.4084 us/op | 9.2470 us/op | 1.02 |
| OrderedSet add up to 256 items then delete last | 13.997 us/op | 13.862 us/op | 1.01 |
| Set add up to 256 items then delete middle | 9.1456 us/op | 9.3006 us/op | 0.98 |
| OrderedSet add up to 256 items then delete middle | 40.732 us/op | 40.584 us/op | 1.00 |
| pass gossip attestations to forkchoice per slot | 2.4386 ms/op | 3.0347 ms/op | 0.80 |
| forkChoice updateHead vc 100000 bc 64 eq 0 | 479.68 us/op | 485.79 us/op | 0.99 |
| forkChoice updateHead vc 600000 bc 64 eq 0 | 2.8829 ms/op | 2.9468 ms/op | 0.98 |
| forkChoice updateHead vc 1000000 bc 64 eq 0 | 4.7856 ms/op | 5.0174 ms/op | 0.95 |
| forkChoice updateHead vc 600000 bc 320 eq 0 | 2.8777 ms/op | 3.0945 ms/op | 0.93 |
| forkChoice updateHead vc 600000 bc 1200 eq 0 | 2.9108 ms/op | 2.9440 ms/op | 0.99 |
| forkChoice updateHead vc 600000 bc 7200 eq 0 | 3.2072 ms/op | 3.2419 ms/op | 0.99 |
| forkChoice updateHead vc 600000 bc 64 eq 1000 | 3.2729 ms/op | 3.3187 ms/op | 0.99 |
| forkChoice updateHead vc 600000 bc 64 eq 10000 | 3.4636 ms/op | 3.4273 ms/op | 1.01 |
| forkChoice updateHead vc 600000 bc 64 eq 300000 | 8.8062 ms/op | 9.1789 ms/op | 0.96 |
| computeDeltas 1400000 validators 0% inactive | 14.019 ms/op | 14.640 ms/op | 0.96 |
| computeDeltas 1400000 validators 10% inactive | 13.122 ms/op | 13.707 ms/op | 0.96 |
| computeDeltas 1400000 validators 20% inactive | 12.228 ms/op | 12.772 ms/op | 0.96 |
| computeDeltas 1400000 validators 50% inactive | 9.5862 ms/op | 10.017 ms/op | 0.96 |
| computeDeltas 2100000 validators 0% inactive | 20.981 ms/op | 22.032 ms/op | 0.95 |
| computeDeltas 2100000 validators 10% inactive | 19.668 ms/op | 20.487 ms/op | 0.96 |
| computeDeltas 2100000 validators 20% inactive | 18.340 ms/op | 19.169 ms/op | 0.96 |
| computeDeltas 2100000 validators 50% inactive | 14.374 ms/op | 14.784 ms/op | 0.97 |
| altair processAttestation - 250000 vs - 7PWei normalcase | 1.8635 ms/op | 1.9810 ms/op | 0.94 |
| altair processAttestation - 250000 vs - 7PWei worstcase | 2.7125 ms/op | 2.9092 ms/op | 0.93 |
| altair processAttestation - setStatus - 1/6 committees join | 112.97 us/op | 116.90 us/op | 0.97 |
| altair processAttestation - setStatus - 1/3 committees join | 221.28 us/op | 224.61 us/op | 0.99 |
| altair processAttestation - setStatus - 1/2 committees join | 308.95 us/op | 320.71 us/op | 0.96 |
| altair processAttestation - setStatus - 2/3 committees join | 403.67 us/op | 414.65 us/op | 0.97 |
| altair processAttestation - setStatus - 4/5 committees join | 560.50 us/op | 605.10 us/op | 0.93 |
| altair processAttestation - setStatus - 100% committees join | 659.37 us/op | 696.91 us/op | 0.95 |
| altair processBlock - 250000 vs - 7PWei normalcase | 3.5920 ms/op | 4.5936 ms/op | 0.78 |
| altair processBlock - 250000 vs - 7PWei normalcase hashState | 19.822 ms/op | 17.907 ms/op | 1.11 |
| altair processBlock - 250000 vs - 7PWei worstcase | 24.124 ms/op | 29.107 ms/op | 0.83 |
| altair processBlock - 250000 vs - 7PWei worstcase hashState | 60.966 ms/op | 57.874 ms/op | 1.05 |
| phase0 processBlock - 250000 vs - 7PWei normalcase | 1.7306 ms/op | 1.5579 ms/op | 1.11 |
| phase0 processBlock - 250000 vs - 7PWei worstcase | 28.936 ms/op | 22.445 ms/op | 1.29 |
| altair processEth1Data - 250000 vs - 7PWei normalcase | 361.80 us/op | 363.63 us/op | 0.99 |
| getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 | 10.879 us/op | 9.7880 us/op | 1.11 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 | 61.585 us/op | 58.014 us/op | 1.06 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 | 16.196 us/op | 16.652 us/op | 0.97 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 | 7.3480 us/op | 10.289 us/op | 0.71 |
| getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 | 250.70 us/op | 154.87 us/op | 1.62 |
| getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 | 1.8149 ms/op | 1.9600 ms/op | 0.93 |
| getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 2.2586 ms/op | 2.4983 ms/op | 0.90 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 2.3582 ms/op | 2.4529 ms/op | 0.96 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 4.5901 ms/op | 5.2601 ms/op | 0.87 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 2.4109 ms/op | 2.5451 ms/op | 0.95 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 4.7329 ms/op | 4.9358 ms/op | 0.96 |
| Tree 40 250000 create | 377.13 ms/op | 377.24 ms/op | 1.00 |
| Tree 40 250000 get(125000) | 122.76 ns/op | 122.26 ns/op | 1.00 |
| Tree 40 250000 set(125000) | 1.1924 us/op | 1.2070 us/op | 0.99 |
| Tree 40 250000 toArray() | 13.754 ms/op | 15.277 ms/op | 0.90 |
| Tree 40 250000 iterate all - toArray() + loop | 14.790 ms/op | 16.711 ms/op | 0.89 |
| Tree 40 250000 iterate all - get(i) | 41.901 ms/op | 47.078 ms/op | 0.89 |
| Array 250000 create | 2.3872 ms/op | 2.5413 ms/op | 0.94 |
| Array 250000 clone - spread | 796.65 us/op | 859.14 us/op | 0.93 |
| Array 250000 get(125000) | 0.37200 ns/op | 0.34900 ns/op | 1.07 |
| Array 250000 set(125000) | 0.44900 ns/op | 0.35400 ns/op | 1.27 |
| Array 250000 iterate all - loop | 59.097 us/op | 62.457 us/op | 0.95 |
| phase0 afterProcessEpoch - 250000 vs - 7PWei | 39.994 ms/op | 42.699 ms/op | 0.94 |
| Array.fill - length 1000000 | 2.9781 ms/op | 2.9051 ms/op | 1.03 |
| Array push - length 1000000 | 10.859 ms/op | 9.9115 ms/op | 1.10 |
| Array.get | 0.21596 ns/op | 0.21971 ns/op | 0.98 |
| Uint8Array.get | 0.22004 ns/op | 0.22077 ns/op | 1.00 |
| phase0 beforeProcessEpoch - 250000 vs - 7PWei | 13.665 ms/op | 13.849 ms/op | 0.99 |
| altair processEpoch - mainnet_e81889 | 243.78 ms/op | 224.49 ms/op | 1.09 |
| mainnet_e81889 - altair beforeProcessEpoch | 16.176 ms/op | 17.453 ms/op | 0.93 |
| mainnet_e81889 - altair processJustificationAndFinalization | 5.2470 us/op | 5.1830 us/op | 1.01 |
| mainnet_e81889 - altair processInactivityUpdates | 3.7639 ms/op | 3.9274 ms/op | 0.96 |
| mainnet_e81889 - altair processRewardsAndPenalties | 17.448 ms/op | 18.368 ms/op | 0.95 |
| mainnet_e81889 - altair processRegistryUpdates | 617.00 ns/op | 633.00 ns/op | 0.97 |
| mainnet_e81889 - altair processSlashings | 213.00 ns/op | 209.00 ns/op | 1.02 |
| mainnet_e81889 - altair processEth1DataReset | 151.00 ns/op | 166.00 ns/op | 0.91 |
| mainnet_e81889 - altair processEffectiveBalanceUpdates | 1.8869 ms/op | 2.3233 ms/op | 0.81 |
| mainnet_e81889 - altair processSlashingsReset | 757.00 ns/op | 910.00 ns/op | 0.83 |
| mainnet_e81889 - altair processRandaoMixesReset | 1000.0 ns/op | 1.4670 us/op | 0.68 |
| mainnet_e81889 - altair processHistoricalRootsUpdate | 165.00 ns/op | 198.00 ns/op | 0.83 |
| mainnet_e81889 - altair processParticipationFlagUpdates | 594.00 ns/op | 685.00 ns/op | 0.87 |
| mainnet_e81889 - altair processSyncCommitteeUpdates | 131.00 ns/op | 134.00 ns/op | 0.98 |
| mainnet_e81889 - altair afterProcessEpoch | 42.751 ms/op | 44.485 ms/op | 0.96 |
| capella processEpoch - mainnet_e217614 | 789.19 ms/op | 909.48 ms/op | 0.87 |
| mainnet_e217614 - capella beforeProcessEpoch | 62.373 ms/op | 107.92 ms/op | 0.58 |
| mainnet_e217614 - capella processJustificationAndFinalization | 5.4530 us/op | 6.4620 us/op | 0.84 |
| mainnet_e217614 - capella processInactivityUpdates | 14.368 ms/op | 18.938 ms/op | 0.76 |
| mainnet_e217614 - capella processRewardsAndPenalties | 100.79 ms/op | 130.53 ms/op | 0.77 |
| mainnet_e217614 - capella processRegistryUpdates | 5.7940 us/op | 5.8380 us/op | 0.99 |
| mainnet_e217614 - capella processSlashings | 159.00 ns/op | 183.00 ns/op | 0.87 |
| mainnet_e217614 - capella processEth1DataReset | 155.00 ns/op | 193.00 ns/op | 0.80 |
| mainnet_e217614 - capella processEffectiveBalanceUpdates | 11.017 ms/op | 36.358 ms/op | 0.30 |
| mainnet_e217614 - capella processSlashingsReset | 772.00 ns/op | 929.00 ns/op | 0.83 |
| mainnet_e217614 - capella processRandaoMixesReset | 1.0930 us/op | 1.3670 us/op | 0.80 |
| mainnet_e217614 - capella processHistoricalRootsUpdate | 206.00 ns/op | 192.00 ns/op | 1.07 |
| mainnet_e217614 - capella processParticipationFlagUpdates | 521.00 ns/op | 577.00 ns/op | 0.90 |
| mainnet_e217614 - capella afterProcessEpoch | 111.84 ms/op | 119.91 ms/op | 0.93 |
| phase0 processEpoch - mainnet_e58758 | 236.29 ms/op | 285.49 ms/op | 0.83 |
| mainnet_e58758 - phase0 beforeProcessEpoch | 46.635 ms/op | 69.280 ms/op | 0.67 |
| mainnet_e58758 - phase0 processJustificationAndFinalization | 5.0020 us/op | 7.2090 us/op | 0.69 |
| mainnet_e58758 - phase0 processRewardsAndPenalties | 18.151 ms/op | 22.271 ms/op | 0.82 |
| mainnet_e58758 - phase0 processRegistryUpdates | 2.7090 us/op | 3.1890 us/op | 0.85 |
| mainnet_e58758 - phase0 processSlashings | 225.00 ns/op | 189.00 ns/op | 1.19 |
| mainnet_e58758 - phase0 processEth1DataReset | 162.00 ns/op | 184.00 ns/op | 0.88 |
| mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 905.48 us/op | 4.6918 ms/op | 0.19 |
| mainnet_e58758 - phase0 processSlashingsReset | 853.00 ns/op | 1.2210 us/op | 0.70 |
| mainnet_e58758 - phase0 processRandaoMixesReset | 1.0270 us/op | 1.1610 us/op | 0.88 |
| mainnet_e58758 - phase0 processHistoricalRootsUpdate | 208.00 ns/op | 195.00 ns/op | 1.07 |
| mainnet_e58758 - phase0 processParticipationRecordUpdates | 2.2060 us/op | 958.00 ns/op | 2.30 |
| mainnet_e58758 - phase0 afterProcessEpoch | 34.108 ms/op | 36.756 ms/op | 0.93 |
| phase0 processEffectiveBalanceUpdates - 250000 normalcase | 2.4762 ms/op | 2.2112 ms/op | 1.12 |
| phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 1.9397 ms/op | 2.2057 ms/op | 0.88 |
| altair processInactivityUpdates - 250000 normalcase | 12.682 ms/op | 17.230 ms/op | 0.74 |
| altair processInactivityUpdates - 250000 worstcase | 12.205 ms/op | 19.347 ms/op | 0.63 |
| phase0 processRegistryUpdates - 250000 normalcase | 7.3440 us/op | 5.4590 us/op | 1.35 |
| phase0 processRegistryUpdates - 250000 badcase_full_deposits | 324.67 us/op | 310.16 us/op | 1.05 |
| phase0 processRegistryUpdates - 250000 worstcase 0.5 | 64.249 ms/op | 81.520 ms/op | 0.79 |
| altair processRewardsAndPenalties - 250000 normalcase | 21.785 ms/op | 22.649 ms/op | 0.96 |
| altair processRewardsAndPenalties - 250000 worstcase | 20.709 ms/op | 21.267 ms/op | 0.97 |
| phase0 getAttestationDeltas - 250000 normalcase | 6.9676 ms/op | 7.4156 ms/op | 0.94 |
| phase0 getAttestationDeltas - 250000 worstcase | 6.6393 ms/op | 7.5116 ms/op | 0.88 |
| phase0 processSlashings - 250000 worstcase | 119.66 us/op | 132.84 us/op | 0.90 |
| altair processSyncCommitteeUpdates - 250000 | 10.898 ms/op | 11.529 ms/op | 0.95 |
| BeaconState.hashTreeRoot - No change | 185.00 ns/op | 223.00 ns/op | 0.83 |
| BeaconState.hashTreeRoot - 1 full validator | 87.239 us/op | 95.057 us/op | 0.92 |
| BeaconState.hashTreeRoot - 32 full validator | 1.0414 ms/op | 1.5862 ms/op | 0.66 |
| BeaconState.hashTreeRoot - 512 full validator | 7.6032 ms/op | 12.424 ms/op | 0.61 |
| BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 112.82 us/op | 125.71 us/op | 0.90 |
| BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 1.5998 ms/op | 2.6130 ms/op | 0.61 |
| BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 15.757 ms/op | 19.721 ms/op | 0.80 |
| BeaconState.hashTreeRoot - 1 balances | 73.897 us/op | 97.525 us/op | 0.76 |
| BeaconState.hashTreeRoot - 32 balances | 832.75 us/op | 946.84 us/op | 0.88 |
| BeaconState.hashTreeRoot - 512 balances | 6.4332 ms/op | 6.4740 ms/op | 0.99 |
| BeaconState.hashTreeRoot - 250000 balances | 192.74 ms/op | 187.60 ms/op | 1.03 |
| aggregationBits - 2048 els - zipIndexesInBitList | 20.572 us/op | 24.715 us/op | 0.83 |
| regular array get 100000 times | 24.475 us/op | 25.485 us/op | 0.96 |
| wrappedArray get 100000 times | 24.450 us/op | 25.700 us/op | 0.95 |
| arrayWithProxy get 100000 times | 14.726 ms/op | 15.380 ms/op | 0.96 |
| ssz.Root.equals | 23.375 ns/op | 24.159 ns/op | 0.97 |
| byteArrayEquals | 22.709 ns/op | 23.599 ns/op | 0.96 |
| Buffer.compare | 9.7760 ns/op | 10.020 ns/op | 0.98 |
| processSlot - 1 slots | 11.792 us/op | 13.079 us/op | 0.90 |
| processSlot - 32 slots | 2.5948 ms/op | 2.6185 ms/op | 0.99 |
| getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 3.1268 ms/op | 6.6992 ms/op | 0.47 |
| getCommitteeAssignments - req 1 vs - 250000 vc | 1.8833 ms/op | 1.9110 ms/op | 0.99 |
| getCommitteeAssignments - req 100 vs - 250000 vc | 3.6773 ms/op | 3.7814 ms/op | 0.97 |
| getCommitteeAssignments - req 1000 vs - 250000 vc | 4.1560 ms/op | 4.0340 ms/op | 1.03 |
| findModifiedValidators - 10000 modified validators | 555.22 ms/op | 855.10 ms/op | 0.65 |
| findModifiedValidators - 1000 modified validators | 289.69 ms/op | 483.29 ms/op | 0.60 |
| findModifiedValidators - 100 modified validators | 150.50 ms/op | 403.46 ms/op | 0.37 |
| findModifiedValidators - 10 modified validators | 239.37 ms/op | 250.17 ms/op | 0.96 |
| findModifiedValidators - 1 modified validators | 170.90 ms/op | 218.61 ms/op | 0.78 |
| findModifiedValidators - no difference | 177.28 ms/op | 191.93 ms/op | 0.92 |
| migrate state 1500000 validators, 3400 modified, 2000 new | 1.1640 s/op | 1.2261 s/op | 0.95 |
| RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 4.0700 ns/op | 4.3200 ns/op | 0.94 |
| state getBlockRootAtSlot - 250000 vs - 7PWei | 591.95 ns/op | 550.13 ns/op | 1.08 |
| computeProposerIndex 100000 validators | 1.5055 ms/op | 1.6801 ms/op | 0.90 |
| getNextSyncCommitteeIndices 1000 validators | 113.08 ms/op | 147.88 ms/op | 0.76 |
| getNextSyncCommitteeIndices 10000 validators | 113.43 ms/op | 148.33 ms/op | 0.76 |
| getNextSyncCommitteeIndices 100000 validators | 115.79 ms/op | 143.44 ms/op | 0.81 |
| computeProposers - vc 250000 | 646.87 us/op | 696.84 us/op | 0.93 |
| computeEpochShuffling - vc 250000 | 64.249 ms/op | 44.294 ms/op | 1.45 |
| getNextSyncCommittee - vc 250000 | 10.216 ms/op | 13.145 ms/op | 0.78 |
| nodejs block root to RootHex using toHex | 127.28 ns/op | 152.54 ns/op | 0.83 |
| nodejs block root to RootHex using toRootHex | 85.728 ns/op | 99.033 ns/op | 0.87 |
| nodejs fromHex(blob) | 167.57 us/op | 558.04 us/op | 0.30 |
| nodejs fromHexInto(blob) | 677.95 us/op | 702.89 us/op | 0.96 |
| nodejs block root to RootHex using the deprecated toHexString | 532.03 ns/op | 578.00 ns/op | 0.92 |
| browser block root to RootHex using toHex | 276.66 ns/op | 282.10 ns/op | 0.98 |
| browser block root to RootHex using toRootHex | 152.71 ns/op | 158.01 ns/op | 0.97 |
| browser fromHex(blob) | 902.35 us/op | 1.3124 ms/op | 0.69 |
| browser fromHexInto(blob) | 677.16 us/op | 743.53 us/op | 0.91 |
| browser block root to RootHex using the deprecated toHexString | 356.14 ns/op | 394.32 ns/op | 0.90 |
by benchmarkbot/action
7416246 to
15ccf94
Compare
b924335 to
a690cfa
Compare
Motivation
IBeaconStateView, we need to remove itelectratofuluwhich is a good preparation forgloasDescription
getAttestationsForBlockPreElectra()inAggregatedAttestationPoolpart of #8658