Skip to content

feat: implement gloas builder api#9594

Draft
nflaig wants to merge 4 commits into
unstablefrom
nflaig/builder-api
Draft

feat: implement gloas builder api#9594
nflaig wants to merge 4 commits into
unstablefrom
nflaig/builder-api

Conversation

@nflaig

@nflaig nflaig commented Jul 5, 2026

Copy link
Copy Markdown
Member

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

Copy link
Copy Markdown
Contributor

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 implements external builder integration post-gloas (ePBS) in Lodestar, introducing a new GloasExecutionBuilder service, API endpoints for submitting builder preferences and fetching execution payload bids, and a BuilderPreferencesService in the validator client. Feedback on the changes highlights two critical improvements: parallelizing the validation of builder API bids using Promise.all to prevent blocking the block production hot path with sequential BLS signature verifications, and adding a concurrency guard to runBuilderPreferencesTask alongside transactional duty processing to prevent overlapping executions and duplicate submissions.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread packages/beacon-node/src/api/impl/validator/index.ts Outdated
Comment thread packages/validator/src/services/builderPreferences.ts
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 7960784 Previous: 4d9beac Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 881.25 us/op 880.29 us/op 1.00
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.549 us/op 39.014 us/op 0.96
BLS verify - blst 718.81 us/op 736.34 us/op 0.98
BLS verifyMultipleSignatures 3 - blst 1.2777 ms/op 1.3563 ms/op 0.94
BLS verifyMultipleSignatures 8 - blst 2.0488 ms/op 2.1562 ms/op 0.95
BLS verifyMultipleSignatures 32 - blst 6.3213 ms/op 6.7624 ms/op 0.93
BLS verifyMultipleSignatures 64 - blst 12.351 ms/op 13.408 ms/op 0.92
BLS verifyMultipleSignatures 128 - blst 24.726 ms/op 25.439 ms/op 0.97
BLS deserializing 10000 signatures 611.08 ms/op 631.09 ms/op 0.97
BLS deserializing 100000 signatures 6.1936 s/op 6.2942 s/op 0.98
BLS verifyMultipleSignatures - same message - 3 - blst 743.98 us/op 758.58 us/op 0.98
BLS verifyMultipleSignatures - same message - 8 - blst 802.11 us/op 907.96 us/op 0.88
BLS verifyMultipleSignatures - same message - 32 - blst 1.3946 ms/op 1.5569 ms/op 0.90
BLS verifyMultipleSignatures - same message - 64 - blst 2.3276 ms/op 2.3799 ms/op 0.98
BLS verifyMultipleSignatures - same message - 128 - blst 3.8800 ms/op 4.0393 ms/op 0.96
BLS aggregatePubkeys 32 - blst 16.886 us/op 17.508 us/op 0.96
BLS aggregatePubkeys 128 - blst 60.042 us/op 63.055 us/op 0.95
getSlashingsAndExits - default max 41.432 us/op 45.666 us/op 0.91
getSlashingsAndExits - 2k 327.00 us/op 325.60 us/op 1.00
proposeBlockBody type=full, size=empty 675.68 us/op 761.25 us/op 0.89
isKnown best case - 1 super set check 160.00 ns/op 167.00 ns/op 0.96
isKnown normal case - 2 super set checks 165.00 ns/op 169.00 ns/op 0.98
isKnown worse case - 16 super set checks 167.00 ns/op 164.00 ns/op 1.02
validate api signedAggregateAndProof - struct 1.4685 ms/op 1.5103 ms/op 0.97
validate gossip signedAggregateAndProof - struct 1.4265 ms/op 1.5071 ms/op 0.95
batch validate gossip attestation - vc 640000 - chunk 32 101.81 us/op 105.11 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 64 89.284 us/op 91.741 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 128 83.698 us/op 84.767 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 256 79.706 us/op 81.214 us/op 0.98
bytes32 toHexString 269.00 ns/op 293.00 ns/op 0.92
bytes32 Buffer.toString(hex) 165.00 ns/op 169.00 ns/op 0.98
bytes32 Buffer.toString(hex) from Uint8Array 231.00 ns/op 239.00 ns/op 0.97
bytes32 Buffer.toString(hex) + 0x 169.00 ns/op 170.00 ns/op 0.99
Return object 10000 times 0.20260 ns/op 0.21100 ns/op 0.96
Throw Error 10000 times 3.1667 us/op 3.3198 us/op 0.95
toHex 95.424 ns/op 107.13 ns/op 0.89
Buffer.from 83.598 ns/op 90.862 ns/op 0.92
shared Buffer 55.072 ns/op 63.706 ns/op 0.86
fastMsgIdFn sha256 / 200 bytes 1.4000 us/op 1.4880 us/op 0.94
fastMsgIdFn h32 xxhash / 200 bytes 148.00 ns/op 154.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 200 bytes 202.00 ns/op 207.00 ns/op 0.98
fastMsgIdFn sha256 / 1000 bytes 4.4890 us/op 4.7270 us/op 0.95
fastMsgIdFn h32 xxhash / 1000 bytes 235.00 ns/op 246.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 1000 bytes 246.00 ns/op 258.00 ns/op 0.95
fastMsgIdFn sha256 / 10000 bytes 39.399 us/op 41.731 us/op 0.94
fastMsgIdFn h32 xxhash / 10000 bytes 1.1940 us/op 1.2620 us/op 0.95
fastMsgIdFn h64 xxhash / 10000 bytes 766.00 ns/op 815.00 ns/op 0.94
send data - 1000 256B messages 3.9518 ms/op 3.8578 ms/op 1.02
send data - 1000 512B messages 4.7682 ms/op 4.7652 ms/op 1.00
send data - 1000 1024B messages 5.3824 ms/op 5.0522 ms/op 1.07
send data - 1000 1200B messages 6.1802 ms/op 6.1498 ms/op 1.00
send data - 1000 2048B messages 23.771 ms/op 8.1922 ms/op 2.90
send data - 1000 4096B messages 45.021 ms/op 61.330 ms/op 0.73
send data - 1000 16384B messages 75.541 ms/op 197.94 ms/op 0.38
send data - 1000 65536B messages 602.60 ms/op 1.0268 s/op 0.59
enrSubnets - fastDeserialize 64 bits 712.00 ns/op 760.00 ns/op 0.94
enrSubnets - ssz BitVector 64 bits 251.00 ns/op 275.00 ns/op 0.91
enrSubnets - fastDeserialize 4 bits 94.000 ns/op 106.00 ns/op 0.89
enrSubnets - ssz BitVector 4 bits 254.00 ns/op 276.00 ns/op 0.92
prioritizePeers score -10:0 att 32-0.1 sync 2-0 193.96 us/op 203.74 us/op 0.95
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 219.36 us/op 230.81 us/op 0.95
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 322.39 us/op 332.88 us/op 0.97
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 570.62 us/op 588.51 us/op 0.97
prioritizePeers score 0:0 att 64-1 sync 4-1 659.74 us/op 689.62 us/op 0.96
array of 16000 items push then shift 1.1970 us/op 1.3026 us/op 0.92
LinkedList of 16000 items push then shift 7.0530 ns/op 6.7060 ns/op 1.05
array of 16000 items push then pop 72.259 ns/op 72.763 ns/op 0.99
LinkedList of 16000 items push then pop 5.6810 ns/op 5.9350 ns/op 0.96
array of 24000 items push then shift 1.7675 us/op 1.9195 us/op 0.92
LinkedList of 24000 items push then shift 6.7290 ns/op 6.3070 ns/op 1.07
array of 24000 items push then pop 102.43 ns/op 99.643 ns/op 1.03
LinkedList of 24000 items push then pop 5.7230 ns/op 5.9120 ns/op 0.97
intersect bitArray bitLen 8 4.5160 ns/op 4.8330 ns/op 0.93
intersect array and set length 8 27.791 ns/op 29.819 ns/op 0.93
intersect bitArray bitLen 128 22.790 ns/op 23.992 ns/op 0.95
intersect array and set length 128 469.94 ns/op 495.79 ns/op 0.95
bitArray.getTrueBitIndexes() bitLen 128 1.0150 us/op 964.00 ns/op 1.05
bitArray.getTrueBitIndexes() bitLen 248 1.6970 us/op 1.7130 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 512 3.4100 us/op 3.4880 us/op 0.98
Full columns - reconstruct all 6 blobs 147.08 us/op 157.63 us/op 0.93
Full columns - reconstruct half of the blobs out of 6 162.22 us/op 94.553 us/op 1.72
Full columns - reconstruct single blob out of 6 51.644 us/op 33.999 us/op 1.52
Half columns - reconstruct all 6 blobs 361.98 ms/op 377.17 ms/op 0.96
Half columns - reconstruct half of the blobs out of 6 181.56 ms/op 188.56 ms/op 0.96
Half columns - reconstruct single blob out of 6 64.614 ms/op 66.334 ms/op 0.97
Set add up to 64 items then delete first 1.5362 us/op 1.6607 us/op 0.93
OrderedSet add up to 64 items then delete first 2.3688 us/op 2.6321 us/op 0.90
Set add up to 64 items then delete last 1.7550 us/op 1.9092 us/op 0.92
OrderedSet add up to 64 items then delete last 2.6232 us/op 2.7966 us/op 0.94
Set add up to 64 items then delete middle 1.7436 us/op 1.9156 us/op 0.91
OrderedSet add up to 64 items then delete middle 4.0560 us/op 4.2531 us/op 0.95
Set add up to 128 items then delete first 3.4915 us/op 3.8247 us/op 0.91
OrderedSet add up to 128 items then delete first 5.4485 us/op 5.8589 us/op 0.93
Set add up to 128 items then delete last 3.3653 us/op 3.6715 us/op 0.92
OrderedSet add up to 128 items then delete last 5.1384 us/op 5.3840 us/op 0.95
Set add up to 128 items then delete middle 3.3698 us/op 3.6824 us/op 0.92
OrderedSet add up to 128 items then delete middle 10.635 us/op 11.244 us/op 0.95
Set add up to 256 items then delete first 7.0756 us/op 7.4707 us/op 0.95
OrderedSet add up to 256 items then delete first 11.120 us/op 11.670 us/op 0.95
Set add up to 256 items then delete last 6.8466 us/op 7.4106 us/op 0.92
OrderedSet add up to 256 items then delete last 11.128 us/op 10.990 us/op 1.01
Set add up to 256 items then delete middle 6.8070 us/op 7.2150 us/op 0.94
OrderedSet add up to 256 items then delete middle 32.719 us/op 34.095 us/op 0.96
runFastConfirmationRules vc:100000 bc:96 eq:0 3.5680 us/op 3.5300 us/op 1.01
runFastConfirmationRules vc:600000 bc:96 eq:0 3.2800 us/op 3.4840 us/op 0.94
runFastConfirmationRules vc:1000000 bc:96 eq:0 3.4450 us/op 3.5080 us/op 0.98
runFastConfirmationRules vc:600000 bc:320 eq:0 8.6240 us/op 10.482 us/op 0.82
runFastConfirmationRules vc:600000 bc:1200 eq:0 36.384 us/op 33.465 us/op 1.09
runFastConfirmationRules vc:600000 bc:96 eq:1000 3.4890 us/op 3.7790 us/op 0.92
runFastConfirmationRules vc:600000 bc:96 eq:10000 3.6030 us/op 3.8070 us/op 0.95
runFastConfirmationRules vc:600000 bc:96 eq:300000 3.5680 us/op 3.5240 us/op 1.01
pass gossip attestations to forkchoice per slot 2.4661 ms/op 2.5555 ms/op 0.97
forkChoice updateHead vc 100000 bc 64 eq 0 389.70 us/op 453.68 us/op 0.86
forkChoice updateHead vc 600000 bc 64 eq 0 2.3192 ms/op 2.7096 ms/op 0.86
forkChoice updateHead vc 1000000 bc 64 eq 0 3.8700 ms/op 4.5053 ms/op 0.86
forkChoice updateHead vc 600000 bc 320 eq 0 2.3242 ms/op 2.7178 ms/op 0.86
forkChoice updateHead vc 600000 bc 1200 eq 0 2.4249 ms/op 2.7535 ms/op 0.88
forkChoice updateHead vc 600000 bc 7200 eq 0 2.6243 ms/op 3.0267 ms/op 0.87
forkChoice updateHead vc 600000 bc 64 eq 1000 2.3329 ms/op 2.8129 ms/op 0.83
forkChoice updateHead vc 600000 bc 64 eq 10000 2.4203 ms/op 2.9078 ms/op 0.83
forkChoice updateHead vc 600000 bc 64 eq 300000 6.6998 ms/op 7.1363 ms/op 0.94
computeDeltas 1400000 validators 0% inactive 11.964 ms/op 13.317 ms/op 0.90
computeDeltas 1400000 validators 10% inactive 11.207 ms/op 12.712 ms/op 0.88
computeDeltas 1400000 validators 20% inactive 10.200 ms/op 11.557 ms/op 0.88
computeDeltas 1400000 validators 50% inactive 7.8838 ms/op 8.9071 ms/op 0.89
computeDeltas 2100000 validators 0% inactive 18.017 ms/op 20.329 ms/op 0.89
computeDeltas 2100000 validators 10% inactive 16.837 ms/op 19.194 ms/op 0.88
computeDeltas 2100000 validators 20% inactive 15.380 ms/op 17.740 ms/op 0.87
computeDeltas 2100000 validators 50% inactive 8.9499 ms/op 11.410 ms/op 0.78
altair processAttestation - 250000 vs - 7PWei normalcase 1.8497 ms/op 1.6796 ms/op 1.10
altair processAttestation - 250000 vs - 7PWei worstcase 2.5231 ms/op 2.3774 ms/op 1.06
altair processAttestation - setStatus - 1/6 committees join 97.851 us/op 102.54 us/op 0.95
altair processAttestation - setStatus - 1/3 committees join 194.06 us/op 195.26 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 274.75 us/op 281.89 us/op 0.97
altair processAttestation - setStatus - 2/3 committees join 353.28 us/op 368.41 us/op 0.96
altair processAttestation - setStatus - 4/5 committees join 502.91 us/op 515.41 us/op 0.98
altair processAttestation - setStatus - 100% committees join 581.29 us/op 601.10 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 4.0248 ms/op 2.8302 ms/op 1.42
altair processBlock - 250000 vs - 7PWei normalcase hashState 17.528 ms/op 11.635 ms/op 1.51
altair processBlock - 250000 vs - 7PWei worstcase 22.815 ms/op 19.118 ms/op 1.19
altair processBlock - 250000 vs - 7PWei worstcase hashState 48.270 ms/op 39.120 ms/op 1.23
phase0 processBlock - 250000 vs - 7PWei normalcase 1.3074 ms/op 1.2572 ms/op 1.04
phase0 processBlock - 250000 vs - 7PWei worstcase 15.627 ms/op 17.187 ms/op 0.91
altair processEth1Data - 250000 vs - 7PWei normalcase 287.06 us/op 303.19 us/op 0.95
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 2.8540 us/op 3.2000 us/op 0.89
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 20.050 us/op 21.458 us/op 0.93
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.8680 us/op 5.7700 us/op 1.02
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.3100 us/op 3.5150 us/op 0.94
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 88.543 us/op 91.838 us/op 0.96
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3259 ms/op 1.3613 ms/op 0.97
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7382 ms/op 1.7933 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7290 ms/op 1.7799 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.2138 ms/op 3.7800 ms/op 0.85
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.9766 ms/op 2.0375 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.5138 ms/op 3.9158 ms/op 0.90
Tree 40 250000 create 299.49 ms/op 309.14 ms/op 0.97
Tree 40 250000 get(125000) 88.641 ns/op 100.62 ns/op 0.88
Tree 40 250000 set(125000) 955.60 ns/op 1.0483 us/op 0.91
Tree 40 250000 toArray() 12.341 ms/op 9.5993 ms/op 1.29
Tree 40 250000 iterate all - toArray() + loop 12.626 ms/op 9.6444 ms/op 1.31
Tree 40 250000 iterate all - get(i) 36.573 ms/op 34.999 ms/op 1.04
Array 250000 create 2.3684 ms/op 2.2823 ms/op 1.04
Array 250000 clone - spread 722.82 us/op 732.28 us/op 0.99
Array 250000 get(125000) 0.28300 ns/op 0.29500 ns/op 0.96
Array 250000 set(125000) 0.28400 ns/op 0.30300 ns/op 0.94
Array 250000 iterate all - loop 55.684 us/op 56.550 us/op 0.98
phase0 afterProcessEpoch - 250000 vs - 7PWei 38.800 ms/op 37.995 ms/op 1.02
Array.fill - length 1000000 2.1612 ms/op 2.4862 ms/op 0.87
Array push - length 1000000 9.0341 ms/op 8.1706 ms/op 1.11
Array.get 0.19686 ns/op 0.20154 ns/op 0.98
Uint8Array.get 0.22486 ns/op 0.24017 ns/op 0.94
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.279 ms/op 12.471 ms/op 1.31
altair processEpoch - mainnet_e81889 254.86 ms/op 226.80 ms/op 1.12
mainnet_e81889 - altair beforeProcessEpoch 18.498 ms/op 19.531 ms/op 0.95
mainnet_e81889 - altair processJustificationAndFinalization 5.3770 us/op 4.6090 us/op 1.17
mainnet_e81889 - altair processInactivityUpdates 3.3129 ms/op 3.5712 ms/op 0.93
mainnet_e81889 - altair processRewardsAndPenalties 18.814 ms/op 16.815 ms/op 1.12
mainnet_e81889 - altair processRegistryUpdates 513.00 ns/op 551.00 ns/op 0.93
mainnet_e81889 - altair processSlashings 128.00 ns/op 158.00 ns/op 0.81
mainnet_e81889 - altair processEth1DataReset 119.00 ns/op 136.00 ns/op 0.88
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.5870 ms/op 1.3164 ms/op 1.21
mainnet_e81889 - altair processSlashingsReset 646.00 ns/op 705.00 ns/op 0.92
mainnet_e81889 - altair processRandaoMixesReset 1.1280 us/op 973.00 ns/op 1.16
mainnet_e81889 - altair processHistoricalRootsUpdate 133.00 ns/op 146.00 ns/op 0.91
mainnet_e81889 - altair processParticipationFlagUpdates 403.00 ns/op 441.00 ns/op 0.91
mainnet_e81889 - altair processSyncCommitteeUpdates 98.000 ns/op 119.00 ns/op 0.82
mainnet_e81889 - altair afterProcessEpoch 40.476 ms/op 42.481 ms/op 0.95
capella processEpoch - mainnet_e217614 737.87 ms/op 676.18 ms/op 1.09
mainnet_e217614 - capella beforeProcessEpoch 53.075 ms/op 54.068 ms/op 0.98
mainnet_e217614 - capella processJustificationAndFinalization 5.4450 us/op 4.6690 us/op 1.17
mainnet_e217614 - capella processInactivityUpdates 14.746 ms/op 11.501 ms/op 1.28
mainnet_e217614 - capella processRewardsAndPenalties 83.842 ms/op 85.450 ms/op 0.98
mainnet_e217614 - capella processRegistryUpdates 4.2860 us/op 4.4720 us/op 0.96
mainnet_e217614 - capella processSlashings 140.00 ns/op 147.00 ns/op 0.95
mainnet_e217614 - capella processEth1DataReset 129.00 ns/op 136.00 ns/op 0.95
mainnet_e217614 - capella processEffectiveBalanceUpdates 11.404 ms/op 5.1491 ms/op 2.21
mainnet_e217614 - capella processSlashingsReset 656.00 ns/op 686.00 ns/op 0.96
mainnet_e217614 - capella processRandaoMixesReset 1.1340 us/op 996.00 ns/op 1.14
mainnet_e217614 - capella processHistoricalRootsUpdate 126.00 ns/op 141.00 ns/op 0.89
mainnet_e217614 - capella processParticipationFlagUpdates 415.00 ns/op 427.00 ns/op 0.97
mainnet_e217614 - capella afterProcessEpoch 106.45 ms/op 106.07 ms/op 1.00
phase0 processEpoch - mainnet_e58758 276.76 ms/op 225.64 ms/op 1.23
mainnet_e58758 - phase0 beforeProcessEpoch 57.840 ms/op 41.594 ms/op 1.39
mainnet_e58758 - phase0 processJustificationAndFinalization 5.8310 us/op 4.5700 us/op 1.28
mainnet_e58758 - phase0 processRewardsAndPenalties 15.738 ms/op 14.818 ms/op 1.06
mainnet_e58758 - phase0 processRegistryUpdates 2.1450 us/op 2.2530 us/op 0.95
mainnet_e58758 - phase0 processSlashings 124.00 ns/op 137.00 ns/op 0.91
mainnet_e58758 - phase0 processEth1DataReset 121.00 ns/op 149.00 ns/op 0.81
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 778.01 us/op 840.56 us/op 0.93
mainnet_e58758 - phase0 processSlashingsReset 845.00 ns/op 813.00 ns/op 1.04
mainnet_e58758 - phase0 processRandaoMixesReset 990.00 ns/op 1.0200 us/op 0.97
mainnet_e58758 - phase0 processHistoricalRootsUpdate 128.00 ns/op 155.00 ns/op 0.83
mainnet_e58758 - phase0 processParticipationRecordUpdates 954.00 ns/op 975.00 ns/op 0.98
mainnet_e58758 - phase0 afterProcessEpoch 31.396 ms/op 32.708 ms/op 0.96
phase0 processEffectiveBalanceUpdates - 250000 normalcase 948.59 us/op 1.0923 ms/op 0.87
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5373 ms/op 1.6330 ms/op 0.94
altair processInactivityUpdates - 250000 normalcase 10.543 ms/op 10.573 ms/op 1.00
altair processInactivityUpdates - 250000 worstcase 10.406 ms/op 10.565 ms/op 0.99
phase0 processRegistryUpdates - 250000 normalcase 2.0560 us/op 2.1520 us/op 0.96
phase0 processRegistryUpdates - 250000 badcase_full_deposits 138.01 us/op 143.14 us/op 0.96
phase0 processRegistryUpdates - 250000 worstcase 0.5 58.978 ms/op 52.715 ms/op 1.12
altair processRewardsAndPenalties - 250000 normalcase 15.057 ms/op 12.862 ms/op 1.17
altair processRewardsAndPenalties - 250000 worstcase 14.812 ms/op 12.430 ms/op 1.19
phase0 getAttestationDeltas - 250000 normalcase 5.3041 ms/op 5.4967 ms/op 0.96
phase0 getAttestationDeltas - 250000 worstcase 7.5251 ms/op 5.5195 ms/op 1.36
phase0 processSlashings - 250000 worstcase 56.485 us/op 59.784 us/op 0.94
altair processSyncCommitteeUpdates - 250000 9.6335 ms/op 9.9851 ms/op 0.96
BeaconState.hashTreeRoot - No change 164.00 ns/op 176.00 ns/op 0.93
BeaconState.hashTreeRoot - 1 full validator 78.326 us/op 57.052 us/op 1.37
BeaconState.hashTreeRoot - 32 full validator 830.00 us/op 626.05 us/op 1.33
BeaconState.hashTreeRoot - 512 full validator 7.9352 ms/op 6.0435 ms/op 1.31
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 91.611 us/op 69.053 us/op 1.33
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4011 ms/op 1.0449 ms/op 1.34
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.212 ms/op 12.834 ms/op 1.34
BeaconState.hashTreeRoot - 1 balances 72.472 us/op 54.983 us/op 1.32
BeaconState.hashTreeRoot - 32 balances 719.69 us/op 550.45 us/op 1.31
BeaconState.hashTreeRoot - 512 balances 6.2271 ms/op 4.4638 ms/op 1.40
BeaconState.hashTreeRoot - 250000 balances 129.90 ms/op 100.66 ms/op 1.29
aggregationBits - 2048 els - zipIndexesInBitList 19.172 us/op 18.739 us/op 1.02
regular array get 100000 times 22.649 us/op 22.688 us/op 1.00
wrappedArray get 100000 times 22.628 us/op 22.748 us/op 0.99
arrayWithProxy get 100000 times 9.8667 ms/op 10.705 ms/op 0.92
ssz.Root.equals 21.009 ns/op 21.462 ns/op 0.98
byteArrayEquals 20.825 ns/op 21.291 ns/op 0.98
Buffer.compare 8.6100 ns/op 8.8850 ns/op 0.97
processSlot - 1 slots 9.2500 us/op 7.8960 us/op 1.17
processSlot - 32 slots 1.7636 ms/op 1.5299 ms/op 1.15
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 5.3076 ms/op 2.3506 ms/op 2.26
getCommitteeAssignments - req 1 vs - 250000 vc 1.6084 ms/op 1.6438 ms/op 0.98
getCommitteeAssignments - req 100 vs - 250000 vc 3.3375 ms/op 3.3984 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 3.5885 ms/op 3.6478 ms/op 0.98
findModifiedValidators - 10000 modified validators 697.52 ms/op 725.28 ms/op 0.96
findModifiedValidators - 1000 modified validators 452.52 ms/op 441.64 ms/op 1.02
findModifiedValidators - 100 modified validators 294.16 ms/op 271.42 ms/op 1.08
findModifiedValidators - 10 modified validators 222.31 ms/op 238.95 ms/op 0.93
findModifiedValidators - 1 modified validators 135.40 ms/op 184.37 ms/op 0.73
findModifiedValidators - no difference 131.43 ms/op 136.95 ms/op 0.96
migrate state 1500000 validators, 3400 modified, 2000 new 2.6653 s/op 2.5711 s/op 1.04
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6300 ns/op 3.8900 ns/op 0.93
state getBlockRootAtSlot - 250000 vs - 7PWei 262.39 ns/op 272.92 ns/op 0.96
computeProposerIndex 100000 validators 1.2949 ms/op 1.3167 ms/op 0.98
getNextSyncCommitteeIndices 1000 validators 2.8119 ms/op 2.8479 ms/op 0.99
getNextSyncCommitteeIndices 10000 validators 24.257 ms/op 24.986 ms/op 0.97
getNextSyncCommitteeIndices 100000 validators 83.234 ms/op 86.738 ms/op 0.96
computeProposers - vc 250000 534.49 us/op 522.69 us/op 1.02
computeEpochShuffling - vc 250000 38.766 ms/op 39.149 ms/op 0.99
getNextSyncCommittee - vc 250000 9.1739 ms/op 9.4036 ms/op 0.98
nodejs block root to RootHex using toHex 93.778 ns/op 103.91 ns/op 0.90
nodejs block root to RootHex using toRootHex 60.185 ns/op 67.070 ns/op 0.90
nodejs fromHex(blob) 729.38 us/op 717.75 us/op 1.02
nodejs fromHexInto(blob) 608.78 us/op 651.65 us/op 0.93
nodejs block root to RootHex using the deprecated toHexString 423.40 ns/op 496.62 ns/op 0.85
nodejs byteArrayEquals 32 bytes (block root) 24.608 ns/op 25.790 ns/op 0.95
nodejs byteArrayEquals 48 bytes (pubkey) 35.416 ns/op 37.350 ns/op 0.95
nodejs byteArrayEquals 96 bytes (signature) 32.250 ns/op 39.930 ns/op 0.81
nodejs byteArrayEquals 1024 bytes 37.971 ns/op 43.039 ns/op 0.88
nodejs byteArrayEquals 131072 bytes (blob) 1.6726 us/op 1.7418 us/op 0.96
browser block root to RootHex using toHex 137.06 ns/op 145.21 ns/op 0.94
browser block root to RootHex using toRootHex 123.03 ns/op 130.71 ns/op 0.94
browser fromHex(blob) 1.4444 ms/op 1.5377 ms/op 0.94
browser fromHexInto(blob) 608.27 us/op 662.01 us/op 0.92
browser block root to RootHex using the deprecated toHexString 448.31 ns/op 349.25 ns/op 1.28
browser byteArrayEquals 32 bytes (block root) 27.311 ns/op 27.792 ns/op 0.98
browser byteArrayEquals 48 bytes (pubkey) 38.138 ns/op 39.222 ns/op 0.97
browser byteArrayEquals 96 bytes (signature) 70.382 ns/op 73.723 ns/op 0.95
browser byteArrayEquals 1024 bytes 730.75 ns/op 750.21 ns/op 0.97
browser byteArrayEquals 131072 bytes (blob) 92.208 us/op 94.534 us/op 0.98

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