Skip to content

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented Jan 21, 2026

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @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 enhances the API by adding a new endpoint that provides detailed, structured version information for both the beacon node and its associated execution client. This standardization aligns with the Ethereum Engine API, making it easier to identify the specific client implementations and their versions, which is crucial for network diagnostics and compatibility checks.

Highlights

  • New API Endpoint: Introduced a new endpoint /eth/v2/node/version (getNodeVersionV2) to retrieve structured version information for both the beacon node and its connected execution client.
  • Client Identification Types: Added ClientCode enum, ClientVersion type, and NodeVersionV2 type to standardize client identification, mirroring the Ethereum Engine API specification.
  • Centralized Type Definitions: Refactored ClientCode and ClientVersion definitions to be centralized within packages/api/src/beacon/routes/node.ts and re-exported where needed, removing duplication from packages/beacon-node/src/execution/engine/interface.ts.

🧠 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 Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

The pull request introduces a new getNodeVersionV2 endpoint, providing structured version information for both the beacon node and its execution client. This change centralizes the ClientCode enum and ClientVersion type definitions in packages/api/src/beacon/routes/node.ts, which are then re-exported and used across the codebase. The implementation correctly retrieves client versions and includes a robust fallback for unknown execution clients. Test data for the new endpoint has also been added, ensuring proper functionality. The changes are well-structured and improve consistency by consolidating type definitions.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 21, 2026

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 514463f Previous: dd21e36 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.1839 ms/op 1.4102 ms/op 0.84
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 36.777 us/op 44.209 us/op 0.83
BLS verify - blst 835.44 us/op 997.77 us/op 0.84
BLS verifyMultipleSignatures 3 - blst 1.1821 ms/op 1.3757 ms/op 0.86
BLS verifyMultipleSignatures 8 - blst 1.6288 ms/op 2.0905 ms/op 0.78
BLS verifyMultipleSignatures 32 - blst 4.9620 ms/op 6.5186 ms/op 0.76
BLS verifyMultipleSignatures 64 - blst 9.2263 ms/op 12.464 ms/op 0.74
BLS verifyMultipleSignatures 128 - blst 18.290 ms/op 20.748 ms/op 0.88
BLS deserializing 10000 signatures 681.36 ms/op 784.80 ms/op 0.87
BLS deserializing 100000 signatures 6.9513 s/op 7.2044 s/op 0.96
BLS verifyMultipleSignatures - same message - 3 - blst 936.78 us/op 886.77 us/op 1.06
BLS verifyMultipleSignatures - same message - 8 - blst 1.0687 ms/op 1.0375 ms/op 1.03
BLS verifyMultipleSignatures - same message - 32 - blst 1.7251 ms/op 1.7456 ms/op 0.99
BLS verifyMultipleSignatures - same message - 64 - blst 2.6114 ms/op 2.7243 ms/op 0.96
BLS verifyMultipleSignatures - same message - 128 - blst 4.4249 ms/op 4.5145 ms/op 0.98
BLS aggregatePubkeys 32 - blst 19.304 us/op 20.853 us/op 0.93
BLS aggregatePubkeys 128 - blst 69.397 us/op 73.028 us/op 0.95
getSlashingsAndExits - default max 70.732 us/op 72.821 us/op 0.97
getSlashingsAndExits - 2k 313.05 us/op 324.57 us/op 0.96
isKnown best case - 1 super set check 195.00 ns/op 216.00 ns/op 0.90
isKnown normal case - 2 super set checks 196.00 ns/op 215.00 ns/op 0.91
isKnown worse case - 16 super set checks 195.00 ns/op 214.00 ns/op 0.91
InMemoryCheckpointStateCache - add get delete 2.3210 us/op 2.4280 us/op 0.96
validate api signedAggregateAndProof - struct 1.3362 ms/op 1.7388 ms/op 0.77
validate gossip signedAggregateAndProof - struct 1.3913 ms/op 2.5807 ms/op 0.54
batch validate gossip attestation - vc 640000 - chunk 32 115.48 us/op 119.53 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 64 100.52 us/op 102.31 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 128 94.541 us/op 97.317 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 256 91.515 us/op 88.616 us/op 1.03
bytes32 toHexString 356.00 ns/op 365.00 ns/op 0.98
bytes32 Buffer.toString(hex) 226.00 ns/op 359.00 ns/op 0.63
bytes32 Buffer.toString(hex) from Uint8Array 325.00 ns/op 324.00 ns/op 1.00
bytes32 Buffer.toString(hex) + 0x 229.00 ns/op 247.00 ns/op 0.93
Object access 1 prop 0.11600 ns/op 0.11900 ns/op 0.97
Map access 1 prop 0.12100 ns/op 0.12400 ns/op 0.98
Object get x1000 5.4610 ns/op 5.1150 ns/op 1.07
Map get x1000 0.36900 ns/op 0.36400 ns/op 1.01
Object set x1000 29.130 ns/op 28.098 ns/op 1.04
Map set x1000 20.470 ns/op 19.602 ns/op 1.04
Return object 10000 times 0.23140 ns/op 0.22370 ns/op 1.03
Throw Error 10000 times 4.0868 us/op 3.9319 us/op 1.04
toHex 154.21 ns/op 134.09 ns/op 1.15
Buffer.from 130.72 ns/op 119.94 ns/op 1.09
shared Buffer 79.335 ns/op 78.629 ns/op 1.01
fastMsgIdFn sha256 / 200 bytes 1.8450 us/op 1.8200 us/op 1.01
fastMsgIdFn h32 xxhash / 200 bytes 198.00 ns/op 224.00 ns/op 0.88
fastMsgIdFn h64 xxhash / 200 bytes 264.00 ns/op 257.00 ns/op 1.03
fastMsgIdFn sha256 / 1000 bytes 5.9850 us/op 5.9800 us/op 1.00
fastMsgIdFn h32 xxhash / 1000 bytes 288.00 ns/op 291.00 ns/op 0.99
fastMsgIdFn h64 xxhash / 1000 bytes 308.00 ns/op 410.00 ns/op 0.75
fastMsgIdFn sha256 / 10000 bytes 52.460 us/op 50.899 us/op 1.03
fastMsgIdFn h32 xxhash / 10000 bytes 1.3980 us/op 1.3700 us/op 1.02
fastMsgIdFn h64 xxhash / 10000 bytes 930.00 ns/op 912.00 ns/op 1.02
100 bytes - compress - snappyjs 1.3064 us/op 1.5524 us/op 0.84
100 bytes - compress - snappy 1.1730 us/op 1.1631 us/op 1.01
100 bytes - compress - snappy-wasm 667.82 ns/op 735.59 ns/op 0.91
100 bytes - compress - snappy-wasm - prealloc 1.0394 us/op 1.2967 us/op 0.80
200 bytes - compress - snappyjs 1.5717 us/op 1.4646 us/op 1.07
200 bytes - compress - snappy 1.7399 us/op 1.4849 us/op 1.17
200 bytes - compress - snappy-wasm 882.38 ns/op 737.37 ns/op 1.20
200 bytes - compress - snappy-wasm - prealloc 1.5919 us/op 1.8127 us/op 0.88
300 bytes - compress - snappyjs 1.9216 us/op 2.4600 us/op 0.78
300 bytes - compress - snappy 1.3934 us/op 1.4889 us/op 0.94
300 bytes - compress - snappy-wasm 925.99 ns/op 827.23 ns/op 1.12
300 bytes - compress - snappy-wasm - prealloc 2.0429 us/op 1.6535 us/op 1.24
400 bytes - compress - snappyjs 2.2250 us/op 2.1502 us/op 1.03
400 bytes - compress - snappy 1.6153 us/op 1.4742 us/op 1.10
400 bytes - compress - snappy-wasm 917.61 ns/op 928.73 ns/op 0.99
400 bytes - compress - snappy-wasm - prealloc 1.9631 us/op 1.2496 us/op 1.57
500 bytes - compress - snappyjs 2.4100 us/op 3.2525 us/op 0.74
500 bytes - compress - snappy 1.4275 us/op 1.5748 us/op 0.91
500 bytes - compress - snappy-wasm 1.2191 us/op 971.76 ns/op 1.25
500 bytes - compress - snappy-wasm - prealloc 1.5307 us/op 1.4178 us/op 1.08
1000 bytes - compress - snappyjs 5.2954 us/op 5.4717 us/op 0.97
1000 bytes - compress - snappy 1.5698 us/op 1.5846 us/op 0.99
1000 bytes - compress - snappy-wasm 1.6309 us/op 2.0888 us/op 0.78
1000 bytes - compress - snappy-wasm - prealloc 1.9506 us/op 2.1656 us/op 0.90
10000 bytes - compress - snappyjs 28.585 us/op 32.817 us/op 0.87
10000 bytes - compress - snappy 26.158 us/op 21.475 us/op 1.22
10000 bytes - compress - snappy-wasm 22.924 us/op 27.055 us/op 0.85
10000 bytes - compress - snappy-wasm - prealloc 37.241 us/op 25.707 us/op 1.45
100 bytes - uncompress - snappyjs 875.85 ns/op 735.12 ns/op 1.19
100 bytes - uncompress - snappy 1.1414 us/op 1.1617 us/op 0.98
100 bytes - uncompress - snappy-wasm 656.49 ns/op 914.87 ns/op 0.72
100 bytes - uncompress - snappy-wasm - prealloc 808.90 ns/op 1.1215 us/op 0.72
200 bytes - uncompress - snappyjs 901.01 ns/op 942.80 ns/op 0.96
200 bytes - uncompress - snappy 1.5737 us/op 1.3417 us/op 1.17
200 bytes - uncompress - snappy-wasm 1.3475 us/op 1.0363 us/op 1.30
200 bytes - uncompress - snappy-wasm - prealloc 1.7460 us/op 1.4770 us/op 1.18
300 bytes - uncompress - snappyjs 1.5064 us/op 1.8711 us/op 0.81
300 bytes - uncompress - snappy 1.3593 us/op 2.6032 us/op 0.52
300 bytes - uncompress - snappy-wasm 902.39 ns/op 1.1272 us/op 0.80
300 bytes - uncompress - snappy-wasm - prealloc 1.2393 us/op 1.4024 us/op 0.88
400 bytes - uncompress - snappyjs 1.2271 us/op 1.4377 us/op 0.85
400 bytes - uncompress - snappy 1.3072 us/op 1.9304 us/op 0.68
400 bytes - uncompress - snappy-wasm 972.80 ns/op 855.25 ns/op 1.14
400 bytes - uncompress - snappy-wasm - prealloc 1.6483 us/op 1.4466 us/op 1.14
500 bytes - uncompress - snappyjs 1.3041 us/op 1.7568 us/op 0.74
500 bytes - uncompress - snappy 1.3286 us/op 1.4456 us/op 0.92
500 bytes - uncompress - snappy-wasm 1.1304 us/op 1.1094 us/op 1.02
500 bytes - uncompress - snappy-wasm - prealloc 1.4030 us/op 1.2285 us/op 1.14
1000 bytes - uncompress - snappyjs 2.7866 us/op 1.8648 us/op 1.49
1000 bytes - uncompress - snappy 1.5560 us/op 1.6495 us/op 0.94
1000 bytes - uncompress - snappy-wasm 1.1866 us/op 1.5063 us/op 0.79
1000 bytes - uncompress - snappy-wasm - prealloc 1.3718 us/op 1.2252 us/op 1.12
10000 bytes - uncompress - snappyjs 21.173 us/op 21.802 us/op 0.97
10000 bytes - uncompress - snappy 26.728 us/op 33.003 us/op 0.81
10000 bytes - uncompress - snappy-wasm 16.846 us/op 30.005 us/op 0.56
10000 bytes - uncompress - snappy-wasm - prealloc 19.867 us/op 27.615 us/op 0.72
send data - 1000 256B messages 15.567 ms/op 13.949 ms/op 1.12
send data - 1000 512B messages 16.951 ms/op 18.743 ms/op 0.90
send data - 1000 1024B messages 30.463 ms/op 33.225 ms/op 0.92
send data - 1000 1200B messages 27.483 ms/op 28.429 ms/op 0.97
send data - 1000 2048B messages 27.823 ms/op 32.169 ms/op 0.86
send data - 1000 4096B messages 37.392 ms/op 35.520 ms/op 1.05
send data - 1000 16384B messages 98.092 ms/op 97.065 ms/op 1.01
send data - 1000 65536B messages 297.53 ms/op 237.40 ms/op 1.25
enrSubnets - fastDeserialize 64 bits 873.00 ns/op 871.00 ns/op 1.00
enrSubnets - ssz BitVector 64 bits 335.00 ns/op 331.00 ns/op 1.01
enrSubnets - fastDeserialize 4 bits 137.00 ns/op 152.00 ns/op 0.90
enrSubnets - ssz BitVector 4 bits 341.00 ns/op 330.00 ns/op 1.03
prioritizePeers score -10:0 att 32-0.1 sync 2-0 227.36 us/op 229.59 us/op 0.99
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 254.23 us/op 256.50 us/op 0.99
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 363.26 us/op 365.32 us/op 0.99
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 670.66 us/op 681.30 us/op 0.98
prioritizePeers score 0:0 att 64-1 sync 4-1 844.22 us/op 816.86 us/op 1.03
array of 16000 items push then shift 1.6036 us/op 1.5989 us/op 1.00
LinkedList of 16000 items push then shift 7.4180 ns/op 7.2400 ns/op 1.02
array of 16000 items push then pop 76.258 ns/op 76.279 ns/op 1.00
LinkedList of 16000 items push then pop 7.1650 ns/op 7.0270 ns/op 1.02
array of 24000 items push then shift 2.3825 us/op 2.3278 us/op 1.02
LinkedList of 24000 items push then shift 7.4630 ns/op 7.3560 ns/op 1.01
array of 24000 items push then pop 105.22 ns/op 104.18 ns/op 1.01
LinkedList of 24000 items push then pop 7.0830 ns/op 7.0350 ns/op 1.01
intersect bitArray bitLen 8 5.7260 ns/op 5.6610 ns/op 1.01
intersect array and set length 8 33.482 ns/op 32.768 ns/op 1.02
intersect bitArray bitLen 128 28.337 ns/op 27.992 ns/op 1.01
intersect array and set length 128 535.56 ns/op 536.85 ns/op 1.00
bitArray.getTrueBitIndexes() bitLen 128 978.00 ns/op 955.00 ns/op 1.02
bitArray.getTrueBitIndexes() bitLen 248 1.7200 us/op 1.7180 us/op 1.00
bitArray.getTrueBitIndexes() bitLen 512 3.5990 us/op 3.5790 us/op 1.01
Full columns - reconstruct all 6 blobs 303.51 us/op 364.17 us/op 0.83
Full columns - reconstruct half of the blobs out of 6 119.05 us/op 99.855 us/op 1.19
Full columns - reconstruct single blob out of 6 41.053 us/op 44.157 us/op 0.93
Half columns - reconstruct all 6 blobs 266.10 ms/op 264.32 ms/op 1.01
Half columns - reconstruct half of the blobs out of 6 132.02 ms/op 136.09 ms/op 0.97
Half columns - reconstruct single blob out of 6 48.568 ms/op 49.286 ms/op 0.99
Full columns - reconstruct all 10 blobs 431.92 us/op 575.16 us/op 0.75
Full columns - reconstruct half of the blobs out of 10 176.01 us/op 178.61 us/op 0.99
Full columns - reconstruct single blob out of 10 36.740 us/op 29.796 us/op 1.23
Half columns - reconstruct all 10 blobs 435.67 ms/op 439.78 ms/op 0.99
Half columns - reconstruct half of the blobs out of 10 218.57 ms/op 223.99 ms/op 0.98
Half columns - reconstruct single blob out of 10 48.218 ms/op 48.527 ms/op 0.99
Full columns - reconstruct all 20 blobs 763.68 us/op 857.36 us/op 0.89
Full columns - reconstruct half of the blobs out of 20 289.49 us/op 379.90 us/op 0.76
Full columns - reconstruct single blob out of 20 30.155 us/op 31.553 us/op 0.96
Half columns - reconstruct all 20 blobs 863.92 ms/op 874.99 ms/op 0.99
Half columns - reconstruct half of the blobs out of 20 432.64 ms/op 443.43 ms/op 0.98
Half columns - reconstruct single blob out of 20 47.843 ms/op 48.685 ms/op 0.98
Set add up to 64 items then delete first 2.0188 us/op 2.0758 us/op 0.97
OrderedSet add up to 64 items then delete first 3.0007 us/op 3.0346 us/op 0.99
Set add up to 64 items then delete last 2.2979 us/op 2.3008 us/op 1.00
OrderedSet add up to 64 items then delete last 3.2538 us/op 3.3169 us/op 0.98
Set add up to 64 items then delete middle 2.2561 us/op 2.3035 us/op 0.98
OrderedSet add up to 64 items then delete middle 4.7748 us/op 4.8517 us/op 0.98
Set add up to 128 items then delete first 4.7583 us/op 4.7619 us/op 1.00
OrderedSet add up to 128 items then delete first 7.1619 us/op 7.1560 us/op 1.00
Set add up to 128 items then delete last 4.5609 us/op 4.5557 us/op 1.00
OrderedSet add up to 128 items then delete last 6.5934 us/op 6.7259 us/op 0.98
Set add up to 128 items then delete middle 4.4088 us/op 4.6269 us/op 0.95
OrderedSet add up to 128 items then delete middle 12.832 us/op 13.583 us/op 0.94
Set add up to 256 items then delete first 9.9187 us/op 9.9572 us/op 1.00
OrderedSet add up to 256 items then delete first 14.744 us/op 15.007 us/op 0.98
Set add up to 256 items then delete last 9.1678 us/op 9.1225 us/op 1.00
OrderedSet add up to 256 items then delete last 13.499 us/op 13.654 us/op 0.99
Set add up to 256 items then delete middle 9.3954 us/op 9.0332 us/op 1.04
OrderedSet add up to 256 items then delete middle 53.708 us/op 39.704 us/op 1.35
pass gossip attestations to forkchoice per slot 2.4784 ms/op 2.4901 ms/op 1.00
forkChoice updateHead vc 100000 bc 64 eq 0 492.80 us/op 501.02 us/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 0 2.9418 ms/op 2.9789 ms/op 0.99
forkChoice updateHead vc 1000000 bc 64 eq 0 4.8956 ms/op 4.7890 ms/op 1.02
forkChoice updateHead vc 600000 bc 320 eq 0 2.9517 ms/op 2.8889 ms/op 1.02
forkChoice updateHead vc 600000 bc 1200 eq 0 2.9754 ms/op 2.9234 ms/op 1.02
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0713 ms/op 3.2352 ms/op 0.95
forkChoice updateHead vc 600000 bc 64 eq 1000 3.2134 ms/op 3.3144 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 10000 3.3959 ms/op 3.4138 ms/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 300000 9.2607 ms/op 8.7082 ms/op 1.06
computeDeltas 1400000 validators 0% inactive 14.614 ms/op 14.058 ms/op 1.04
computeDeltas 1400000 validators 10% inactive 13.665 ms/op 13.187 ms/op 1.04
computeDeltas 1400000 validators 20% inactive 12.550 ms/op 12.261 ms/op 1.02
computeDeltas 1400000 validators 50% inactive 10.036 ms/op 9.5890 ms/op 1.05
computeDeltas 2100000 validators 0% inactive 21.911 ms/op 21.332 ms/op 1.03
computeDeltas 2100000 validators 10% inactive 20.563 ms/op 19.775 ms/op 1.04
computeDeltas 2100000 validators 20% inactive 18.722 ms/op 18.420 ms/op 1.02
computeDeltas 2100000 validators 50% inactive 14.680 ms/op 14.455 ms/op 1.02
altair processAttestation - 250000 vs - 7PWei normalcase 1.9582 ms/op 1.8673 ms/op 1.05
altair processAttestation - 250000 vs - 7PWei worstcase 2.7371 ms/op 2.8099 ms/op 0.97
altair processAttestation - setStatus - 1/6 committees join 115.09 us/op 113.04 us/op 1.02
altair processAttestation - setStatus - 1/3 committees join 222.65 us/op 220.36 us/op 1.01
altair processAttestation - setStatus - 1/2 committees join 315.65 us/op 324.38 us/op 0.97
altair processAttestation - setStatus - 2/3 committees join 407.52 us/op 403.59 us/op 1.01
altair processAttestation - setStatus - 4/5 committees join 561.39 us/op 559.69 us/op 1.00
altair processAttestation - setStatus - 100% committees join 679.76 us/op 662.09 us/op 1.03
altair processBlock - 250000 vs - 7PWei normalcase 4.5538 ms/op 3.4523 ms/op 1.32
altair processBlock - 250000 vs - 7PWei normalcase hashState 18.126 ms/op 17.391 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase 23.744 ms/op 25.002 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase hashState 58.591 ms/op 61.871 ms/op 0.95
phase0 processBlock - 250000 vs - 7PWei normalcase 1.4994 ms/op 2.1105 ms/op 0.71
phase0 processBlock - 250000 vs - 7PWei worstcase 20.824 ms/op 22.031 ms/op 0.95
altair processEth1Data - 250000 vs - 7PWei normalcase 372.31 us/op 384.79 us/op 0.97
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 7.7400 us/op 8.9250 us/op 0.87
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 48.083 us/op 59.800 us/op 0.80
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 11.257 us/op 16.043 us/op 0.70
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 7.8570 us/op 9.9140 us/op 0.79
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 171.32 us/op 233.91 us/op 0.73
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.9008 ms/op 1.8646 ms/op 1.02
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.3832 ms/op 2.8165 ms/op 0.85
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.3760 ms/op 2.4169 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.7214 ms/op 4.9220 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4760 ms/op 2.4446 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.9226 ms/op 4.7988 ms/op 1.03
Tree 40 250000 create 370.04 ms/op 389.11 ms/op 0.95
Tree 40 250000 get(125000) 123.05 ns/op 136.05 ns/op 0.90
Tree 40 250000 set(125000) 1.2065 us/op 1.2736 us/op 0.95
Tree 40 250000 toArray() 17.250 ms/op 14.728 ms/op 1.17
Tree 40 250000 iterate all - toArray() + loop 14.131 ms/op 15.473 ms/op 0.91
Tree 40 250000 iterate all - get(i) 46.185 ms/op 43.279 ms/op 1.07
Array 250000 create 2.5087 ms/op 2.4715 ms/op 1.02
Array 250000 clone - spread 815.73 us/op 805.51 us/op 1.01
Array 250000 get(125000) 0.34800 ns/op 0.35000 ns/op 0.99
Array 250000 set(125000) 0.35400 ns/op 0.62700 ns/op 0.56
Array 250000 iterate all - loop 61.240 us/op 61.765 us/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.636 ms/op 42.015 ms/op 0.99
Array.fill - length 1000000 2.8301 ms/op 3.0713 ms/op 0.92
Array push - length 1000000 11.398 ms/op 10.533 ms/op 1.08
Array.get 0.21961 ns/op 0.21746 ns/op 1.01
Uint8Array.get 0.22053 ns/op 0.22079 ns/op 1.00
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.296 ms/op 16.678 ms/op 0.86
altair processEpoch - mainnet_e81889 247.43 ms/op 254.94 ms/op 0.97
mainnet_e81889 - altair beforeProcessEpoch 21.522 ms/op 16.093 ms/op 1.34
mainnet_e81889 - altair processJustificationAndFinalization 5.4050 us/op 6.4490 us/op 0.84
mainnet_e81889 - altair processInactivityUpdates 3.8113 ms/op 3.7672 ms/op 1.01
mainnet_e81889 - altair processRewardsAndPenalties 18.009 ms/op 26.238 ms/op 0.69
mainnet_e81889 - altair processRegistryUpdates 631.00 ns/op 763.00 ns/op 0.83
mainnet_e81889 - altair processSlashings 166.00 ns/op 169.00 ns/op 0.98
mainnet_e81889 - altair processEth1DataReset 162.00 ns/op 207.00 ns/op 0.78
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.4805 ms/op 1.6075 ms/op 1.54
mainnet_e81889 - altair processSlashingsReset 792.00 ns/op 1.0310 us/op 0.77
mainnet_e81889 - altair processRandaoMixesReset 1.0290 us/op 1.2140 us/op 0.85
mainnet_e81889 - altair processHistoricalRootsUpdate 164.00 ns/op 167.00 ns/op 0.98
mainnet_e81889 - altair processParticipationFlagUpdates 495.00 ns/op 496.00 ns/op 1.00
mainnet_e81889 - altair processSyncCommitteeUpdates 131.00 ns/op 158.00 ns/op 0.83
mainnet_e81889 - altair afterProcessEpoch 43.918 ms/op 45.439 ms/op 0.97
capella processEpoch - mainnet_e217614 865.29 ms/op 816.86 ms/op 1.06
mainnet_e217614 - capella beforeProcessEpoch 79.341 ms/op 68.563 ms/op 1.16
mainnet_e217614 - capella processJustificationAndFinalization 5.5200 us/op 5.3980 us/op 1.02
mainnet_e217614 - capella processInactivityUpdates 16.371 ms/op 14.521 ms/op 1.13
mainnet_e217614 - capella processRewardsAndPenalties 98.676 ms/op 101.36 ms/op 0.97
mainnet_e217614 - capella processRegistryUpdates 5.6930 us/op 5.8530 us/op 0.97
mainnet_e217614 - capella processSlashings 164.00 ns/op 223.00 ns/op 0.74
mainnet_e217614 - capella processEth1DataReset 162.00 ns/op 173.00 ns/op 0.94
mainnet_e217614 - capella processEffectiveBalanceUpdates 19.839 ms/op 17.376 ms/op 1.14
mainnet_e217614 - capella processSlashingsReset 774.00 ns/op 1.1180 us/op 0.69
mainnet_e217614 - capella processRandaoMixesReset 1.0600 us/op 1.0760 us/op 0.99
mainnet_e217614 - capella processHistoricalRootsUpdate 166.00 ns/op 177.00 ns/op 0.94
mainnet_e217614 - capella processParticipationFlagUpdates 495.00 ns/op 500.00 ns/op 0.99
mainnet_e217614 - capella afterProcessEpoch 111.28 ms/op 110.77 ms/op 1.00
phase0 processEpoch - mainnet_e58758 232.32 ms/op 272.50 ms/op 0.85
mainnet_e58758 - phase0 beforeProcessEpoch 44.126 ms/op 51.669 ms/op 0.85
mainnet_e58758 - phase0 processJustificationAndFinalization 5.3720 us/op 6.7440 us/op 0.80
mainnet_e58758 - phase0 processRewardsAndPenalties 17.972 ms/op 17.963 ms/op 1.00
mainnet_e58758 - phase0 processRegistryUpdates 2.7130 us/op 2.8890 us/op 0.94
mainnet_e58758 - phase0 processSlashings 203.00 ns/op 225.00 ns/op 0.90
mainnet_e58758 - phase0 processEth1DataReset 170.00 ns/op 166.00 ns/op 1.02
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0724 ms/op 1.0746 ms/op 1.00
mainnet_e58758 - phase0 processSlashingsReset 857.00 ns/op 876.00 ns/op 0.98
mainnet_e58758 - phase0 processRandaoMixesReset 1.0730 us/op 1.3380 us/op 0.80
mainnet_e58758 - phase0 processHistoricalRootsUpdate 168.00 ns/op 272.00 ns/op 0.62
mainnet_e58758 - phase0 processParticipationRecordUpdates 824.00 ns/op 825.00 ns/op 1.00
mainnet_e58758 - phase0 afterProcessEpoch 35.121 ms/op 34.332 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.2873 ms/op 1.6370 ms/op 0.79
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.2935 ms/op 2.2176 ms/op 1.03
altair processInactivityUpdates - 250000 normalcase 15.418 ms/op 13.196 ms/op 1.17
altair processInactivityUpdates - 250000 worstcase 15.467 ms/op 12.727 ms/op 1.22
phase0 processRegistryUpdates - 250000 normalcase 4.7480 us/op 4.6860 us/op 1.01
phase0 processRegistryUpdates - 250000 badcase_full_deposits 234.69 us/op 373.34 us/op 0.63
phase0 processRegistryUpdates - 250000 worstcase 0.5 65.406 ms/op 67.769 ms/op 0.97
altair processRewardsAndPenalties - 250000 normalcase 17.593 ms/op 15.447 ms/op 1.14
altair processRewardsAndPenalties - 250000 worstcase 16.912 ms/op 19.158 ms/op 0.88
phase0 getAttestationDeltas - 250000 normalcase 6.7124 ms/op 5.7659 ms/op 1.16
phase0 getAttestationDeltas - 250000 worstcase 5.8005 ms/op 5.7617 ms/op 1.01
phase0 processSlashings - 250000 worstcase 76.535 us/op 121.12 us/op 0.63
altair processSyncCommitteeUpdates - 250000 10.948 ms/op 10.764 ms/op 1.02
BeaconState.hashTreeRoot - No change 200.00 ns/op 198.00 ns/op 1.01
BeaconState.hashTreeRoot - 1 full validator 82.180 us/op 84.168 us/op 0.98
BeaconState.hashTreeRoot - 32 full validator 909.04 us/op 1.0364 ms/op 0.88
BeaconState.hashTreeRoot - 512 full validator 7.9788 ms/op 8.2652 ms/op 0.97
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 113.42 us/op 104.42 us/op 1.09
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.7473 ms/op 2.1067 ms/op 0.83
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 23.131 ms/op 18.138 ms/op 1.28
BeaconState.hashTreeRoot - 1 balances 82.860 us/op 89.018 us/op 0.93
BeaconState.hashTreeRoot - 32 balances 1.0565 ms/op 970.27 us/op 1.09
BeaconState.hashTreeRoot - 512 balances 6.3912 ms/op 7.1748 ms/op 0.89
BeaconState.hashTreeRoot - 250000 balances 131.04 ms/op 195.51 ms/op 0.67
aggregationBits - 2048 els - zipIndexesInBitList 21.311 us/op 20.481 us/op 1.04
regular array get 100000 times 24.654 us/op 23.907 us/op 1.03
wrappedArray get 100000 times 24.616 us/op 23.916 us/op 1.03
arrayWithProxy get 100000 times 15.268 ms/op 14.832 ms/op 1.03
ssz.Root.equals 23.824 ns/op 23.236 ns/op 1.03
byteArrayEquals 23.151 ns/op 22.683 ns/op 1.02
Buffer.compare 9.9660 ns/op 9.8050 ns/op 1.02
processSlot - 1 slots 10.930 us/op 11.662 us/op 0.94
processSlot - 32 slots 2.2870 ms/op 2.9329 ms/op 0.78
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 4.3751 ms/op 4.7166 ms/op 0.93
getCommitteeAssignments - req 1 vs - 250000 vc 1.8831 ms/op 1.8613 ms/op 1.01
getCommitteeAssignments - req 100 vs - 250000 vc 3.6727 ms/op 3.5895 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 3.9186 ms/op 3.8266 ms/op 1.02
findModifiedValidators - 10000 modified validators 641.19 ms/op 536.72 ms/op 1.19
findModifiedValidators - 1000 modified validators 533.09 ms/op 390.00 ms/op 1.37
findModifiedValidators - 100 modified validators 278.06 ms/op 252.95 ms/op 1.10
findModifiedValidators - 10 modified validators 217.63 ms/op 196.49 ms/op 1.11
findModifiedValidators - 1 modified validators 158.42 ms/op 185.32 ms/op 0.85
findModifiedValidators - no difference 174.82 ms/op 156.49 ms/op 1.12
migrate state 1500000 validators, 3400 modified, 2000 new 1.0545 s/op 1.2206 s/op 0.86
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.1400 ns/op 4.1200 ns/op 1.00
state getBlockRootAtSlot - 250000 vs - 7PWei 541.56 ns/op 557.97 ns/op 0.97
computeProposerIndex 100000 validators 1.5191 ms/op 1.4645 ms/op 1.04
getNextSyncCommitteeIndices 1000 validators 117.55 ms/op 113.75 ms/op 1.03
getNextSyncCommitteeIndices 10000 validators 118.63 ms/op 113.81 ms/op 1.04
getNextSyncCommitteeIndices 100000 validators 120.22 ms/op 113.48 ms/op 1.06
computeProposers - vc 250000 702.25 us/op 642.82 us/op 1.09
computeEpochShuffling - vc 250000 42.415 ms/op 40.366 ms/op 1.05
getNextSyncCommittee - vc 250000 11.063 ms/op 10.105 ms/op 1.09
nodejs block root to RootHex using toHex 157.10 ns/op 136.94 ns/op 1.15
nodejs block root to RootHex using toRootHex 86.905 ns/op 81.890 ns/op 1.06
nodejs fromHex(blob) 383.11 us/op 388.16 us/op 0.99
nodejs fromHexInto(blob) 735.59 us/op 701.36 us/op 1.05
nodejs block root to RootHex using the deprecated toHexString 567.74 ns/op 555.61 ns/op 1.02
browser block root to RootHex using toHex 271.07 ns/op 271.27 ns/op 1.00
browser block root to RootHex using toRootHex 154.40 ns/op 154.50 ns/op 1.00
browser fromHex(blob) 1.1407 ms/op 1.1740 ms/op 0.97
browser fromHexInto(blob) 705.85 us/op 701.48 us/op 1.01
browser block root to RootHex using the deprecated toHexString 388.11 ns/op 382.02 ns/op 1.02

by benchmarkbot/action

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.

2 participants