-
-
Notifications
You must be signed in to change notification settings - Fork 433
fix: return reward delta instead of validator balance as sync committee rewards #8774
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?
Conversation
Summary of ChangesHello @nflaig, 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 refines the 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 addresses a critical bug in computeSyncCommitteeRewards. The changes correctly modify the function to return reward deltas instead of the full validator balance, aligning it with its intended purpose. Additionally, it fixes a significant issue in how sync committee participants were being iterated, preventing potential out-of-bounds errors by using the correct position index. The updated logic is much clearer and more correct. I've added one minor suggestion to further improve code conciseness.
|
| Benchmark suite | Current: 97d886d | Previous: 171bfe3 | Ratio |
|---|---|---|---|
| 200 bytes - compress - snappy | 21.245 us/op | 1.8991 us/op | 11.19 |
Full benchmark results
| Benchmark suite | Current: 97d886d | Previous: 171bfe3 | Ratio |
|---|---|---|---|
| getPubkeys - index2pubkey - req 1000 vs - 250000 vc | 1.2382 ms/op | 1.6130 ms/op | 0.77 |
| getPubkeys - validatorsArr - req 1000 vs - 250000 vc | 38.194 us/op | 48.183 us/op | 0.79 |
| BLS verify - blst | 738.80 us/op | 1.0584 ms/op | 0.70 |
| BLS verifyMultipleSignatures 3 - blst | 1.2716 ms/op | 1.5479 ms/op | 0.82 |
| BLS verifyMultipleSignatures 8 - blst | 1.8623 ms/op | 2.5021 ms/op | 0.74 |
| BLS verifyMultipleSignatures 32 - blst | 4.9892 ms/op | 7.7793 ms/op | 0.64 |
| BLS verifyMultipleSignatures 64 - blst | 9.3778 ms/op | 13.389 ms/op | 0.70 |
| BLS verifyMultipleSignatures 128 - blst | 17.781 ms/op | 19.755 ms/op | 0.90 |
| BLS deserializing 10000 signatures | 699.86 ms/op | 723.00 ms/op | 0.97 |
| BLS deserializing 100000 signatures | 7.1430 s/op | 7.6900 s/op | 0.93 |
| BLS verifyMultipleSignatures - same message - 3 - blst | 931.63 us/op | 1.2185 ms/op | 0.76 |
| BLS verifyMultipleSignatures - same message - 8 - blst | 1.0086 ms/op | 1.2511 ms/op | 0.81 |
| BLS verifyMultipleSignatures - same message - 32 - blst | 1.8652 ms/op | 1.9604 ms/op | 0.95 |
| BLS verifyMultipleSignatures - same message - 64 - blst | 2.6788 ms/op | 2.8717 ms/op | 0.93 |
| BLS verifyMultipleSignatures - same message - 128 - blst | 4.5199 ms/op | 5.3733 ms/op | 0.84 |
| BLS aggregatePubkeys 32 - blst | 19.886 us/op | 20.651 us/op | 0.96 |
| BLS aggregatePubkeys 128 - blst | 74.431 us/op | 73.703 us/op | 1.01 |
| getSlashingsAndExits - default max | 70.536 us/op | 91.087 us/op | 0.77 |
| getSlashingsAndExits - 2k | 346.21 us/op | 548.76 us/op | 0.63 |
| isKnown best case - 1 super set check | 217.00 ns/op | 262.00 ns/op | 0.83 |
| isKnown normal case - 2 super set checks | 218.00 ns/op | 209.00 ns/op | 1.04 |
| isKnown worse case - 16 super set checks | 215.00 ns/op | 207.00 ns/op | 1.04 |
| InMemoryCheckpointStateCache - add get delete | 2.5050 us/op | 2.5550 us/op | 0.98 |
| validate api signedAggregateAndProof - struct | 1.5133 ms/op | 1.8746 ms/op | 0.81 |
| validate gossip signedAggregateAndProof - struct | 1.5605 ms/op | 1.8112 ms/op | 0.86 |
| batch validate gossip attestation - vc 640000 - chunk 32 | 161.46 us/op | 144.20 us/op | 1.12 |
| batch validate gossip attestation - vc 640000 - chunk 64 | 114.25 us/op | 118.53 us/op | 0.96 |
| batch validate gossip attestation - vc 640000 - chunk 128 | 102.13 us/op | 110.90 us/op | 0.92 |
| batch validate gossip attestation - vc 640000 - chunk 256 | 108.95 us/op | 115.76 us/op | 0.94 |
| bytes32 toHexString | 365.00 ns/op | 566.00 ns/op | 0.64 |
| bytes32 Buffer.toString(hex) | 241.00 ns/op | 329.00 ns/op | 0.73 |
| bytes32 Buffer.toString(hex) from Uint8Array | 337.00 ns/op | 337.00 ns/op | 1.00 |
| bytes32 Buffer.toString(hex) + 0x | 245.00 ns/op | 243.00 ns/op | 1.01 |
| Object access 1 prop | 0.12200 ns/op | 0.11700 ns/op | 1.04 |
| Map access 1 prop | 0.12200 ns/op | 0.17700 ns/op | 0.69 |
| Object get x1000 | 5.6450 ns/op | 6.1980 ns/op | 0.91 |
| Map get x1000 | 0.38700 ns/op | 0.65500 ns/op | 0.59 |
| Object set x1000 | 31.744 ns/op | 38.530 ns/op | 0.82 |
| Map set x1000 | 22.180 ns/op | 32.575 ns/op | 0.68 |
| Return object 10000 times | 0.23960 ns/op | 0.23890 ns/op | 1.00 |
| Throw Error 10000 times | 4.2587 us/op | 5.2181 us/op | 0.82 |
| toHex | 153.50 ns/op | 140.85 ns/op | 1.09 |
| Buffer.from | 138.25 ns/op | 129.22 ns/op | 1.07 |
| shared Buffer | 84.195 ns/op | 128.57 ns/op | 0.65 |
| fastMsgIdFn sha256 / 200 bytes | 1.9720 us/op | 1.9770 us/op | 1.00 |
| fastMsgIdFn h32 xxhash / 200 bytes | 196.00 ns/op | 198.00 ns/op | 0.99 |
| fastMsgIdFn h64 xxhash / 200 bytes | 278.00 ns/op | 313.00 ns/op | 0.89 |
| fastMsgIdFn sha256 / 1000 bytes | 6.7110 us/op | 7.6470 us/op | 0.88 |
| fastMsgIdFn h32 xxhash / 1000 bytes | 297.00 ns/op | 387.00 ns/op | 0.77 |
| fastMsgIdFn h64 xxhash / 1000 bytes | 329.00 ns/op | 452.00 ns/op | 0.73 |
| fastMsgIdFn sha256 / 10000 bytes | 57.800 us/op | 58.690 us/op | 0.98 |
| fastMsgIdFn h32 xxhash / 10000 bytes | 1.6150 us/op | 1.4520 us/op | 1.11 |
| fastMsgIdFn h64 xxhash / 10000 bytes | 974.00 ns/op | 1.0960 us/op | 0.89 |
| 100 bytes - compress - snappyjs | 1.8084 us/op | 1.7543 us/op | 1.03 |
| 100 bytes - compress - snappy | 1.2453 us/op | 1.7744 us/op | 0.70 |
| 100 bytes - compress - snappy-wasm | 1.0722 us/op | 1.4333 us/op | 0.75 |
| 100 bytes - compress - snappy-wasm - prealloc | 1.1897 us/op | 1.6493 us/op | 0.72 |
| 200 bytes - compress - snappyjs | 1.8835 us/op | 2.4300 us/op | 0.78 |
| 200 bytes - compress - snappy | 21.245 us/op | 1.8991 us/op | 11.19 |
| 200 bytes - compress - snappy-wasm | 933.94 ns/op | 1.4950 us/op | 0.62 |
| 200 bytes - compress - snappy-wasm - prealloc | 1.1842 us/op | 1.5233 us/op | 0.78 |
| 300 bytes - compress - snappyjs | 2.2189 us/op | 2.6210 us/op | 0.85 |
| 300 bytes - compress - snappy | 1.4897 us/op | 2.0638 us/op | 0.72 |
| 300 bytes - compress - snappy-wasm | 863.24 ns/op | 1.3042 us/op | 0.66 |
| 300 bytes - compress - snappy-wasm - prealloc | 2.1224 us/op | 2.2685 us/op | 0.94 |
| 400 bytes - compress - snappyjs | 2.8189 us/op | 3.2738 us/op | 0.86 |
| 400 bytes - compress - snappy | 2.1582 us/op | 1.7283 us/op | 1.25 |
| 400 bytes - compress - snappy-wasm | 1.1013 us/op | 1.2343 us/op | 0.89 |
| 400 bytes - compress - snappy-wasm - prealloc | 1.5081 us/op | 1.8040 us/op | 0.84 |
| 500 bytes - compress - snappyjs | 2.7271 us/op | 3.4429 us/op | 0.79 |
| 500 bytes - compress - snappy | 2.5070 us/op | 2.8319 us/op | 0.89 |
| 500 bytes - compress - snappy-wasm | 1.7597 us/op | 2.4631 us/op | 0.71 |
| 500 bytes - compress - snappy-wasm - prealloc | 1.5725 us/op | 2.1855 us/op | 0.72 |
| 1000 bytes - compress - snappyjs | 5.6647 us/op | 7.8835 us/op | 0.72 |
| 1000 bytes - compress - snappy | 3.8471 us/op | 3.0137 us/op | 1.28 |
| 1000 bytes - compress - snappy-wasm | 2.6342 us/op | 2.6449 us/op | 1.00 |
| 1000 bytes - compress - snappy-wasm - prealloc | 2.1999 us/op | 2.9739 us/op | 0.74 |
| 10000 bytes - compress - snappyjs | 41.243 us/op | 30.114 us/op | 1.37 |
| 10000 bytes - compress - snappy | 48.729 us/op | 67.188 us/op | 0.73 |
| 10000 bytes - compress - snappy-wasm | 26.121 us/op | 22.700 us/op | 1.15 |
| 10000 bytes - compress - snappy-wasm - prealloc | 24.047 us/op | 18.090 us/op | 1.33 |
| 100 bytes - uncompress - snappyjs | 907.40 ns/op | 868.93 ns/op | 1.04 |
| 100 bytes - uncompress - snappy | 1.3471 us/op | 1.6605 us/op | 0.81 |
| 100 bytes - uncompress - snappy-wasm | 614.12 ns/op | 750.98 ns/op | 0.82 |
| 100 bytes - uncompress - snappy-wasm - prealloc | 887.97 ns/op | 759.96 ns/op | 1.17 |
| 200 bytes - uncompress - snappyjs | 1.5822 us/op | 1.0300 us/op | 1.54 |
| 200 bytes - uncompress - snappy | 1.5848 us/op | 1.5371 us/op | 1.03 |
| 200 bytes - uncompress - snappy-wasm | 1.2596 us/op | 957.84 ns/op | 1.31 |
| 200 bytes - uncompress - snappy-wasm - prealloc | 1.2317 us/op | 1.0719 us/op | 1.15 |
| 300 bytes - uncompress - snappyjs | 1.7920 us/op | 1.3405 us/op | 1.34 |
| 300 bytes - uncompress - snappy | 1.7204 us/op | 1.8793 us/op | 0.92 |
| 300 bytes - uncompress - snappy-wasm | 26.198 us/op | 25.579 us/op | 1.02 |
| 300 bytes - uncompress - snappy-wasm - prealloc | 1.8755 us/op | 1.8933 us/op | 0.99 |
| 400 bytes - uncompress - snappyjs | 1.7401 us/op | 2.1453 us/op | 0.81 |
| 400 bytes - uncompress - snappy | 1.9287 us/op | 2.1077 us/op | 0.92 |
| 400 bytes - uncompress - snappy-wasm | 1.1831 us/op | 1.6324 us/op | 0.72 |
| 400 bytes - uncompress - snappy-wasm - prealloc | 1.5699 us/op | 1.4650 us/op | 1.07 |
| 500 bytes - uncompress - snappyjs | 2.9446 us/op | 2.4604 us/op | 1.20 |
| 500 bytes - uncompress - snappy | 2.2073 us/op | 2.5539 us/op | 0.86 |
| 500 bytes - uncompress - snappy-wasm | 1.3083 us/op | 1.6417 us/op | 0.80 |
| 500 bytes - uncompress - snappy-wasm - prealloc | 1.6248 us/op | 1.3700 us/op | 1.19 |
| 1000 bytes - uncompress - snappyjs | 5.9740 us/op | 4.2215 us/op | 1.42 |
| 1000 bytes - uncompress - snappy | 3.5273 us/op | 2.6720 us/op | 1.32 |
| 1000 bytes - uncompress - snappy-wasm | 3.5007 us/op | 1.7956 us/op | 1.95 |
| 1000 bytes - uncompress - snappy-wasm - prealloc | 2.5616 us/op | 1.6761 us/op | 1.53 |
| 10000 bytes - uncompress - snappyjs | 19.234 us/op | 22.388 us/op | 0.86 |
| 10000 bytes - uncompress - snappy | 58.342 us/op | 36.263 us/op | 1.61 |
| 10000 bytes - uncompress - snappy-wasm | 11.601 us/op | 44.912 us/op | 0.26 |
| 10000 bytes - uncompress - snappy-wasm - prealloc | 11.960 us/op | 32.134 us/op | 0.37 |
| send data - 1000 256B messages | 18.394 ms/op | 15.759 ms/op | 1.17 |
| send data - 1000 512B messages | 22.224 ms/op | 20.438 ms/op | 1.09 |
| send data - 1000 1024B messages | 30.563 ms/op | 31.832 ms/op | 0.96 |
| send data - 1000 1200B messages | 30.147 ms/op | 32.661 ms/op | 0.92 |
| send data - 1000 2048B messages | 42.520 ms/op | 39.341 ms/op | 1.08 |
| send data - 1000 4096B messages | 37.135 ms/op | 42.291 ms/op | 0.88 |
| send data - 1000 16384B messages | 242.36 ms/op | 134.29 ms/op | 1.80 |
| send data - 1000 65536B messages | 623.17 ms/op | 395.96 ms/op | 1.57 |
| enrSubnets - fastDeserialize 64 bits | 1.0130 us/op | 1.1290 us/op | 0.90 |
| enrSubnets - ssz BitVector 64 bits | 375.00 ns/op | 340.00 ns/op | 1.10 |
| enrSubnets - fastDeserialize 4 bits | 136.00 ns/op | 124.00 ns/op | 1.10 |
| enrSubnets - ssz BitVector 4 bits | 387.00 ns/op | 338.00 ns/op | 1.14 |
| prioritizePeers score -10:0 att 32-0.1 sync 2-0 | 270.26 us/op | 242.80 us/op | 1.11 |
| prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 | 340.25 us/op | 292.83 us/op | 1.16 |
| prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 | 450.14 us/op | 402.19 us/op | 1.12 |
| prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 | 812.70 us/op | 726.75 us/op | 1.12 |
| prioritizePeers score 0:0 att 64-1 sync 4-1 | 1.2829 ms/op | 900.54 us/op | 1.42 |
| array of 16000 items push then shift | 1.9122 us/op | 1.6789 us/op | 1.14 |
| LinkedList of 16000 items push then shift | 9.9070 ns/op | 9.2440 ns/op | 1.07 |
| array of 16000 items push then pop | 106.83 ns/op | 94.753 ns/op | 1.13 |
| LinkedList of 16000 items push then pop | 8.7020 ns/op | 9.0160 ns/op | 0.97 |
| array of 24000 items push then shift | 2.7277 us/op | 2.4299 us/op | 1.12 |
| LinkedList of 24000 items push then shift | 11.778 ns/op | 9.2530 ns/op | 1.27 |
| array of 24000 items push then pop | 129.74 ns/op | 124.39 ns/op | 1.04 |
| LinkedList of 24000 items push then pop | 9.4280 ns/op | 8.2770 ns/op | 1.14 |
| intersect bitArray bitLen 8 | 6.5780 ns/op | 5.7130 ns/op | 1.15 |
| intersect array and set length 8 | 38.521 ns/op | 43.156 ns/op | 0.89 |
| intersect bitArray bitLen 128 | 32.317 ns/op | 29.044 ns/op | 1.11 |
| intersect array and set length 128 | 624.68 ns/op | 559.64 ns/op | 1.12 |
| bitArray.getTrueBitIndexes() bitLen 128 | 1.2390 us/op | 1.1810 us/op | 1.05 |
| bitArray.getTrueBitIndexes() bitLen 248 | 2.3100 us/op | 1.9780 us/op | 1.17 |
| bitArray.getTrueBitIndexes() bitLen 512 | 4.5970 us/op | 4.2170 us/op | 1.09 |
| Full columns - reconstruct all 6 blobs | 342.92 us/op | 311.69 us/op | 1.10 |
| Full columns - reconstruct half of the blobs out of 6 | 165.98 us/op | 147.01 us/op | 1.13 |
| Full columns - reconstruct single blob out of 6 | 43.925 us/op | 50.156 us/op | 0.88 |
| Half columns - reconstruct all 6 blobs | 330.14 ms/op | 296.46 ms/op | 1.11 |
| Half columns - reconstruct half of the blobs out of 6 | 198.88 ms/op | 151.80 ms/op | 1.31 |
| Half columns - reconstruct single blob out of 6 | 69.386 ms/op | 61.430 ms/op | 1.13 |
| Full columns - reconstruct all 10 blobs | 399.63 us/op | 525.73 us/op | 0.76 |
| Full columns - reconstruct half of the blobs out of 10 | 251.16 us/op | 271.81 us/op | 0.92 |
| Full columns - reconstruct single blob out of 10 | 53.919 us/op | 53.417 us/op | 1.01 |
| Half columns - reconstruct all 10 blobs | 547.93 ms/op | 497.16 ms/op | 1.10 |
| Half columns - reconstruct half of the blobs out of 10 | 275.27 ms/op | 247.71 ms/op | 1.11 |
| Half columns - reconstruct single blob out of 10 | 67.067 ms/op | 58.191 ms/op | 1.15 |
| Full columns - reconstruct all 20 blobs | 1.0190 ms/op | 1.0287 ms/op | 0.99 |
| Full columns - reconstruct half of the blobs out of 20 | 397.90 us/op | 424.88 us/op | 0.94 |
| Full columns - reconstruct single blob out of 20 | 55.851 us/op | 49.492 us/op | 1.13 |
| Half columns - reconstruct all 20 blobs | 1.0738 s/op | 980.69 ms/op | 1.09 |
| Half columns - reconstruct half of the blobs out of 20 | 582.61 ms/op | 510.68 ms/op | 1.14 |
| Half columns - reconstruct single blob out of 20 | 62.422 ms/op | 58.550 ms/op | 1.07 |
| Set add up to 64 items then delete first | 3.1323 us/op | 2.6258 us/op | 1.19 |
| OrderedSet add up to 64 items then delete first | 4.4133 us/op | 4.0867 us/op | 1.08 |
| Set add up to 64 items then delete last | 3.9902 us/op | 4.0596 us/op | 0.98 |
| OrderedSet add up to 64 items then delete last | 4.3094 us/op | 4.4104 us/op | 0.98 |
| Set add up to 64 items then delete middle | 2.8351 us/op | 2.9594 us/op | 0.96 |
| OrderedSet add up to 64 items then delete middle | 6.1348 us/op | 6.2568 us/op | 0.98 |
| Set add up to 128 items then delete first | 6.0537 us/op | 5.5239 us/op | 1.10 |
| OrderedSet add up to 128 items then delete first | 9.7104 us/op | 7.8542 us/op | 1.24 |
| Set add up to 128 items then delete last | 5.7068 us/op | 5.6601 us/op | 1.01 |
| OrderedSet add up to 128 items then delete last | 8.8237 us/op | 8.7059 us/op | 1.01 |
| Set add up to 128 items then delete middle | 6.0377 us/op | 4.9991 us/op | 1.21 |
| OrderedSet add up to 128 items then delete middle | 16.805 us/op | 14.454 us/op | 1.16 |
| Set add up to 256 items then delete first | 12.856 us/op | 11.372 us/op | 1.13 |
| OrderedSet add up to 256 items then delete first | 18.549 us/op | 16.064 us/op | 1.15 |
| Set add up to 256 items then delete last | 11.710 us/op | 11.955 us/op | 0.98 |
| OrderedSet add up to 256 items then delete last | 17.558 us/op | 18.106 us/op | 0.97 |
| Set add up to 256 items then delete middle | 11.703 us/op | 12.340 us/op | 0.95 |
| OrderedSet add up to 256 items then delete middle | 48.805 us/op | 49.827 us/op | 0.98 |
| pass gossip attestations to forkchoice per slot | 2.8272 ms/op | 3.0949 ms/op | 0.91 |
| forkChoice updateHead vc 100000 bc 64 eq 0 | 573.29 us/op | 614.77 us/op | 0.93 |
| forkChoice updateHead vc 600000 bc 64 eq 0 | 3.4966 ms/op | 3.9202 ms/op | 0.89 |
| forkChoice updateHead vc 1000000 bc 64 eq 0 | 5.5181 ms/op | 5.6025 ms/op | 0.98 |
| forkChoice updateHead vc 600000 bc 320 eq 0 | 3.6623 ms/op | 3.2516 ms/op | 1.13 |
| forkChoice updateHead vc 600000 bc 1200 eq 0 | 3.4680 ms/op | 3.0691 ms/op | 1.13 |
| forkChoice updateHead vc 600000 bc 7200 eq 0 | 4.3029 ms/op | 3.9892 ms/op | 1.08 |
| forkChoice updateHead vc 600000 bc 64 eq 1000 | 3.8664 ms/op | 3.5525 ms/op | 1.09 |
| forkChoice updateHead vc 600000 bc 64 eq 10000 | 4.0852 ms/op | 3.6977 ms/op | 1.10 |
| forkChoice updateHead vc 600000 bc 64 eq 300000 | 11.096 ms/op | 10.549 ms/op | 1.05 |
| computeDeltas 1400000 validators 0% inactive | 16.100 ms/op | 16.696 ms/op | 0.96 |
| computeDeltas 1400000 validators 10% inactive | 15.354 ms/op | 16.866 ms/op | 0.91 |
| computeDeltas 1400000 validators 20% inactive | 14.264 ms/op | 12.909 ms/op | 1.10 |
| computeDeltas 1400000 validators 50% inactive | 12.670 ms/op | 12.306 ms/op | 1.03 |
| computeDeltas 2100000 validators 0% inactive | 23.938 ms/op | 22.644 ms/op | 1.06 |
| computeDeltas 2100000 validators 10% inactive | 22.416 ms/op | 21.457 ms/op | 1.04 |
| computeDeltas 2100000 validators 20% inactive | 20.709 ms/op | 19.756 ms/op | 1.05 |
| computeDeltas 2100000 validators 50% inactive | 16.837 ms/op | 15.745 ms/op | 1.07 |
| altair processAttestation - 250000 vs - 7PWei normalcase | 3.0080 ms/op | 3.7653 ms/op | 0.80 |
| altair processAttestation - 250000 vs - 7PWei worstcase | 4.1990 ms/op | 4.0762 ms/op | 1.03 |
| altair processAttestation - setStatus - 1/6 committees join | 145.80 us/op | 134.03 us/op | 1.09 |
| altair processAttestation - setStatus - 1/3 committees join | 264.83 us/op | 246.55 us/op | 1.07 |
| altair processAttestation - setStatus - 1/2 committees join | 361.26 us/op | 341.46 us/op | 1.06 |
| altair processAttestation - setStatus - 2/3 committees join | 466.22 us/op | 434.83 us/op | 1.07 |
| altair processAttestation - setStatus - 4/5 committees join | 646.68 us/op | 696.35 us/op | 0.93 |
| altair processAttestation - setStatus - 100% committees join | 768.58 us/op | 760.45 us/op | 1.01 |
| altair processBlock - 250000 vs - 7PWei normalcase | 5.1091 ms/op | 5.1378 ms/op | 0.99 |
| altair processBlock - 250000 vs - 7PWei normalcase hashState | 22.397 ms/op | 23.639 ms/op | 0.95 |
| altair processBlock - 250000 vs - 7PWei worstcase | 30.161 ms/op | 31.568 ms/op | 0.96 |
| altair processBlock - 250000 vs - 7PWei worstcase hashState | 72.687 ms/op | 65.579 ms/op | 1.11 |
| phase0 processBlock - 250000 vs - 7PWei normalcase | 1.8199 ms/op | 1.7341 ms/op | 1.05 |
| phase0 processBlock - 250000 vs - 7PWei worstcase | 26.281 ms/op | 24.886 ms/op | 1.06 |
| altair processEth1Data - 250000 vs - 7PWei normalcase | 436.76 us/op | 389.07 us/op | 1.12 |
| getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 | 10.471 us/op | 8.9730 us/op | 1.17 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 | 67.323 us/op | 48.256 us/op | 1.40 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 | 16.862 us/op | 15.256 us/op | 1.11 |
| getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 | 14.627 us/op | 7.3940 us/op | 1.98 |
| getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 | 231.16 us/op | 179.95 us/op | 1.28 |
| getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 | 2.0645 ms/op | 1.9349 ms/op | 1.07 |
| getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 | 2.8356 ms/op | 3.2176 ms/op | 0.88 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 | 2.8394 ms/op | 2.5612 ms/op | 1.11 |
| getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 | 6.8016 ms/op | 5.3841 ms/op | 1.26 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 | 2.9114 ms/op | 2.7999 ms/op | 1.04 |
| getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 | 6.3233 ms/op | 4.9594 ms/op | 1.28 |
| Tree 40 250000 create | 470.39 ms/op | 396.98 ms/op | 1.18 |
| Tree 40 250000 get(125000) | 141.02 ns/op | 127.43 ns/op | 1.11 |
| Tree 40 250000 set(125000) | 1.4477 us/op | 1.2657 us/op | 1.14 |
| Tree 40 250000 toArray() | 19.862 ms/op | 19.600 ms/op | 1.01 |
| Tree 40 250000 iterate all - toArray() + loop | 20.816 ms/op | 19.626 ms/op | 1.06 |
| Tree 40 250000 iterate all - get(i) | 51.967 ms/op | 49.950 ms/op | 1.04 |
| Array 250000 create | 3.2534 ms/op | 2.8079 ms/op | 1.16 |
| Array 250000 clone - spread | 949.11 us/op | 929.02 us/op | 1.02 |
| Array 250000 get(125000) | 0.37800 ns/op | 0.35500 ns/op | 1.06 |
| Array 250000 set(125000) | 0.38500 ns/op | 0.36300 ns/op | 1.06 |
| Array 250000 iterate all - loop | 67.498 us/op | 62.911 us/op | 1.07 |
| phase0 afterProcessEpoch - 250000 vs - 7PWei | 46.055 ms/op | 43.324 ms/op | 1.06 |
| Array.fill - length 1000000 | 4.0768 ms/op | 4.2529 ms/op | 0.96 |
| Array push - length 1000000 | 13.815 ms/op | 13.969 ms/op | 0.99 |
| Array.get | 0.26155 ns/op | 0.22440 ns/op | 1.17 |
| Uint8Array.get | 0.25189 ns/op | 0.24516 ns/op | 1.03 |
| phase0 beforeProcessEpoch - 250000 vs - 7PWei | 19.505 ms/op | 19.009 ms/op | 1.03 |
| altair processEpoch - mainnet_e81889 | 270.79 ms/op | 285.51 ms/op | 0.95 |
| mainnet_e81889 - altair beforeProcessEpoch | 19.585 ms/op | 18.384 ms/op | 1.07 |
| mainnet_e81889 - altair processJustificationAndFinalization | 6.0310 us/op | 6.0640 us/op | 0.99 |
| mainnet_e81889 - altair processInactivityUpdates | 4.1894 ms/op | 4.2966 ms/op | 0.98 |
| mainnet_e81889 - altair processRewardsAndPenalties | 20.916 ms/op | 23.700 ms/op | 0.88 |
| mainnet_e81889 - altair processRegistryUpdates | 687.00 ns/op | 656.00 ns/op | 1.05 |
| mainnet_e81889 - altair processSlashings | 184.00 ns/op | 167.00 ns/op | 1.10 |
| mainnet_e81889 - altair processEth1DataReset | 176.00 ns/op | 167.00 ns/op | 1.05 |
| mainnet_e81889 - altair processEffectiveBalanceUpdates | 6.9510 ms/op | 8.4082 ms/op | 0.83 |
| mainnet_e81889 - altair processSlashingsReset | 917.00 ns/op | 839.00 ns/op | 1.09 |
| mainnet_e81889 - altair processRandaoMixesReset | 1.3390 us/op | 1.2310 us/op | 1.09 |
| mainnet_e81889 - altair processHistoricalRootsUpdate | 182.00 ns/op | 213.00 ns/op | 0.85 |
| mainnet_e81889 - altair processParticipationFlagUpdates | 684.00 ns/op | 529.00 ns/op | 1.29 |
| mainnet_e81889 - altair processSyncCommitteeUpdates | 144.00 ns/op | 164.00 ns/op | 0.88 |
| mainnet_e81889 - altair afterProcessEpoch | 48.500 ms/op | 45.810 ms/op | 1.06 |
| capella processEpoch - mainnet_e217614 | 791.41 ms/op | 843.41 ms/op | 0.94 |
| mainnet_e217614 - capella beforeProcessEpoch | 59.789 ms/op | 60.203 ms/op | 0.99 |
| mainnet_e217614 - capella processJustificationAndFinalization | 5.9570 us/op | 5.5360 us/op | 1.08 |
| mainnet_e217614 - capella processInactivityUpdates | 14.300 ms/op | 17.280 ms/op | 0.83 |
| mainnet_e217614 - capella processRewardsAndPenalties | 101.31 ms/op | 103.51 ms/op | 0.98 |
| mainnet_e217614 - capella processRegistryUpdates | 5.7540 us/op | 5.9550 us/op | 0.97 |
| mainnet_e217614 - capella processSlashings | 162.00 ns/op | 161.00 ns/op | 1.01 |
| mainnet_e217614 - capella processEth1DataReset | 156.00 ns/op | 156.00 ns/op | 1.00 |
| mainnet_e217614 - capella processEffectiveBalanceUpdates | 11.960 ms/op | 16.040 ms/op | 0.75 |
| mainnet_e217614 - capella processSlashingsReset | 801.00 ns/op | 804.00 ns/op | 1.00 |
| mainnet_e217614 - capella processRandaoMixesReset | 1.0380 us/op | 1.1130 us/op | 0.93 |
| mainnet_e217614 - capella processHistoricalRootsUpdate | 167.00 ns/op | 157.00 ns/op | 1.06 |
| mainnet_e217614 - capella processParticipationFlagUpdates | 501.00 ns/op | 505.00 ns/op | 0.99 |
| mainnet_e217614 - capella afterProcessEpoch | 112.61 ms/op | 118.04 ms/op | 0.95 |
| phase0 processEpoch - mainnet_e58758 | 222.51 ms/op | 250.37 ms/op | 0.89 |
| mainnet_e58758 - phase0 beforeProcessEpoch | 45.784 ms/op | 70.944 ms/op | 0.65 |
| mainnet_e58758 - phase0 processJustificationAndFinalization | 5.3280 us/op | 7.3280 us/op | 0.73 |
| mainnet_e58758 - phase0 processRewardsAndPenalties | 18.898 ms/op | 21.447 ms/op | 0.88 |
| mainnet_e58758 - phase0 processRegistryUpdates | 2.8840 us/op | 2.8600 us/op | 1.01 |
| mainnet_e58758 - phase0 processSlashings | 161.00 ns/op | 215.00 ns/op | 0.75 |
| mainnet_e58758 - phase0 processEth1DataReset | 162.00 ns/op | 157.00 ns/op | 1.03 |
| mainnet_e58758 - phase0 processEffectiveBalanceUpdates | 955.09 us/op | 1.6059 ms/op | 0.59 |
| mainnet_e58758 - phase0 processSlashingsReset | 898.00 ns/op | 934.00 ns/op | 0.96 |
| mainnet_e58758 - phase0 processRandaoMixesReset | 1.0660 us/op | 1.6700 us/op | 0.64 |
| mainnet_e58758 - phase0 processHistoricalRootsUpdate | 166.00 ns/op | 158.00 ns/op | 1.05 |
| mainnet_e58758 - phase0 processParticipationRecordUpdates | 838.00 ns/op | 1.0020 us/op | 0.84 |
| mainnet_e58758 - phase0 afterProcessEpoch | 35.291 ms/op | 36.004 ms/op | 0.98 |
| phase0 processEffectiveBalanceUpdates - 250000 normalcase | 1.8320 ms/op | 1.9159 ms/op | 0.96 |
| phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 | 2.0463 ms/op | 1.6337 ms/op | 1.25 |
| altair processInactivityUpdates - 250000 normalcase | 14.829 ms/op | 22.411 ms/op | 0.66 |
| altair processInactivityUpdates - 250000 worstcase | 13.577 ms/op | 14.336 ms/op | 0.95 |
| phase0 processRegistryUpdates - 250000 normalcase | 4.8830 us/op | 4.7580 us/op | 1.03 |
| phase0 processRegistryUpdates - 250000 badcase_full_deposits | 241.07 us/op | 253.24 us/op | 0.95 |
| phase0 processRegistryUpdates - 250000 worstcase 0.5 | 70.841 ms/op | 73.599 ms/op | 0.96 |
| altair processRewardsAndPenalties - 250000 normalcase | 17.360 ms/op | 19.637 ms/op | 0.88 |
| altair processRewardsAndPenalties - 250000 worstcase | 17.215 ms/op | 18.801 ms/op | 0.92 |
| phase0 getAttestationDeltas - 250000 normalcase | 6.9719 ms/op | 7.1490 ms/op | 0.98 |
| phase0 getAttestationDeltas - 250000 worstcase | 6.8975 ms/op | 7.2114 ms/op | 0.96 |
| phase0 processSlashings - 250000 worstcase | 101.23 us/op | 107.83 us/op | 0.94 |
| altair processSyncCommitteeUpdates - 250000 | 11.052 ms/op | 12.344 ms/op | 0.90 |
| BeaconState.hashTreeRoot - No change | 200.00 ns/op | 196.00 ns/op | 1.02 |
| BeaconState.hashTreeRoot - 1 full validator | 92.656 us/op | 91.847 us/op | 1.01 |
| BeaconState.hashTreeRoot - 32 full validator | 949.21 us/op | 1.5021 ms/op | 0.63 |
| BeaconState.hashTreeRoot - 512 full validator | 7.8364 ms/op | 8.5827 ms/op | 0.91 |
| BeaconState.hashTreeRoot - 1 validator.effectiveBalance | 120.59 us/op | 117.08 us/op | 1.03 |
| BeaconState.hashTreeRoot - 32 validator.effectiveBalance | 2.4524 ms/op | 2.1233 ms/op | 1.15 |
| BeaconState.hashTreeRoot - 512 validator.effectiveBalance | 24.410 ms/op | 21.339 ms/op | 1.14 |
| BeaconState.hashTreeRoot - 1 balances | 103.68 us/op | 80.965 us/op | 1.28 |
| BeaconState.hashTreeRoot - 32 balances | 870.64 us/op | 1.2525 ms/op | 0.70 |
| BeaconState.hashTreeRoot - 512 balances | 6.3830 ms/op | 7.1544 ms/op | 0.89 |
| BeaconState.hashTreeRoot - 250000 balances | 128.06 ms/op | 165.69 ms/op | 0.77 |
| aggregationBits - 2048 els - zipIndexesInBitList | 21.300 us/op | 21.787 us/op | 0.98 |
| regular array get 100000 times | 24.571 us/op | 24.991 us/op | 0.98 |
| wrappedArray get 100000 times | 24.687 us/op | 24.932 us/op | 0.99 |
| arrayWithProxy get 100000 times | 16.560 ms/op | 15.927 ms/op | 1.04 |
| ssz.Root.equals | 23.716 ns/op | 23.557 ns/op | 1.01 |
| byteArrayEquals | 23.028 ns/op | 22.886 ns/op | 1.01 |
| Buffer.compare | 9.9030 ns/op | 9.7630 ns/op | 1.01 |
| processSlot - 1 slots | 13.381 us/op | 12.384 us/op | 1.08 |
| processSlot - 32 slots | 2.2706 ms/op | 2.8097 ms/op | 0.81 |
| getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei | 5.3722 ms/op | 4.1013 ms/op | 1.31 |
| getCommitteeAssignments - req 1 vs - 250000 vc | 1.9411 ms/op | 1.8878 ms/op | 1.03 |
| getCommitteeAssignments - req 100 vs - 250000 vc | 3.7762 ms/op | 3.7748 ms/op | 1.00 |
| getCommitteeAssignments - req 1000 vs - 250000 vc | 4.0980 ms/op | 3.9779 ms/op | 1.03 |
| findModifiedValidators - 10000 modified validators | 543.27 ms/op | 667.13 ms/op | 0.81 |
| findModifiedValidators - 1000 modified validators | 468.26 ms/op | 454.97 ms/op | 1.03 |
| findModifiedValidators - 100 modified validators | 309.28 ms/op | 329.46 ms/op | 0.94 |
| findModifiedValidators - 10 modified validators | 169.45 ms/op | 171.54 ms/op | 0.99 |
| findModifiedValidators - 1 modified validators | 157.97 ms/op | 205.59 ms/op | 0.77 |
| findModifiedValidators - no difference | 192.94 ms/op | 233.80 ms/op | 0.83 |
| migrate state 1500000 validators, 3400 modified, 2000 new | 1.2441 s/op | 1.2251 s/op | 1.02 |
| RootCache.getBlockRootAtSlot - 250000 vs - 7PWei | 4.3300 ns/op | 4.3100 ns/op | 1.00 |
| state getBlockRootAtSlot - 250000 vs - 7PWei | 583.10 ns/op | 538.15 ns/op | 1.08 |
| computeProposerIndex 100000 validators | 1.6639 ms/op | 1.6178 ms/op | 1.03 |
| getNextSyncCommitteeIndices 1000 validators | 132.80 ms/op | 132.73 ms/op | 1.00 |
| getNextSyncCommitteeIndices 10000 validators | 134.14 ms/op | 131.99 ms/op | 1.02 |
| getNextSyncCommitteeIndices 100000 validators | 132.60 ms/op | 129.54 ms/op | 1.02 |
| computeProposers - vc 250000 | 681.15 us/op | 698.10 us/op | 0.98 |
| computeEpochShuffling - vc 250000 | 45.403 ms/op | 43.623 ms/op | 1.04 |
| getNextSyncCommittee - vc 250000 | 11.607 ms/op | 12.631 ms/op | 0.92 |
| nodejs block root to RootHex using toHex | 158.83 ns/op | 170.09 ns/op | 0.93 |
| nodejs block root to RootHex using toRootHex | 90.612 ns/op | 112.76 ns/op | 0.80 |
| nodejs fromHex(blob) | 395.00 us/op | 234.43 us/op | 1.68 |
| nodejs fromHexInto(blob) | 732.68 us/op | 740.96 us/op | 0.99 |
| nodejs block root to RootHex using the deprecated toHexString | 563.40 ns/op | 645.37 ns/op | 0.87 |
| browser block root to RootHex using toHex | 281.19 ns/op | 435.62 ns/op | 0.65 |
| browser block root to RootHex using toRootHex | 158.83 ns/op | 158.46 ns/op | 1.00 |
| browser fromHex(blob) | 1.1465 ms/op | 1.3348 ms/op | 0.86 |
| browser fromHexInto(blob) | 729.65 us/op | 732.03 us/op | 1.00 |
| browser block root to RootHex using the deprecated toHexString | 399.52 ns/op | 647.59 ns/op | 0.62 |
by benchmarkbot/action
Closes #8718