Skip to content

feat: align proposer preferences api with latest spec#9570

Open
nflaig wants to merge 1 commit into
unstablefrom
nflaig/proposer-preferences-validator-namespace
Open

feat: align proposer preferences api with latest spec#9570
nflaig wants to merge 1 commit into
unstablefrom
nflaig/proposer-preferences-validator-namespace

Conversation

@nflaig

@nflaig nflaig commented Jun 30, 2026

Copy link
Copy Markdown
Member

Aligns our implementation with ethereum/beacon-APIs#608

  • endpoint moved /eth/v1/beacon/pool/proposer_preferences --> /eth/v1/validator/proposer_preferences
  • drop the GET /eth/v1/beacon/pool/proposer_preferences endpoint, we can reconsider adding a /lodestar endpoint for this if it would be useful for debugging or propose it to the spec, but for now I don't think it's that useful to have
  • list capped at (MIN_SEED_LOOKAHEAD + 1) * SLOTS_PER_EPOCH per spec
  • derive Eth-Consensus-Version header and event version from proposal slot

@nflaig nflaig requested a review from a team as a code owner June 30, 2026 11:20

@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 moves the proposer preferences submission and retrieval endpoints from the beacon pool API to the validator API. Specifically, the submitSignedProposerPreferences and getPoolProposerPreferences endpoints have been removed from the beacon pool routes, and a new submitProposerPreferences endpoint has been introduced under the validator routes. The list type size for signed proposer preferences has also been updated to use (MIN_SEED_LOOKAHEAD + 1) * SLOTS_PER_EPOCH, and the event emitter version resolution for proposer preferences now dynamically resolves the fork name based on the proposal slot. There are no review comments, so I have no feedback to provide.

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.


/**
* Get signed proposer preferences from operations pool
* Retrieves proposer preferences known by the node but not necessarily incorporated into any block.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

incorporated into any block

what? since when are proposer preferences incorporated into a block? 😂

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@nflaig nflaig changed the title feat: align proposer preferences apis with latest spec feat: align proposer preferences api with latest spec Jun 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 116112c Previous: 171f602 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 860.80 us/op 1.0786 ms/op 0.80
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.936 us/op 39.823 us/op 0.98
BLS verify - blst 721.96 us/op 766.29 us/op 0.94
BLS verifyMultipleSignatures 3 - blst 1.3475 ms/op 1.3692 ms/op 0.98
BLS verifyMultipleSignatures 8 - blst 2.1336 ms/op 2.1691 ms/op 0.98
BLS verifyMultipleSignatures 32 - blst 6.7017 ms/op 6.7801 ms/op 0.99
BLS verifyMultipleSignatures 64 - blst 13.188 ms/op 13.128 ms/op 1.00
BLS verifyMultipleSignatures 128 - blst 25.432 ms/op 25.614 ms/op 0.99
BLS deserializing 10000 signatures 633.24 ms/op 635.37 ms/op 1.00
BLS deserializing 100000 signatures 6.2191 s/op 6.3895 s/op 0.97
BLS verifyMultipleSignatures - same message - 3 - blst 748.24 us/op 828.68 us/op 0.90
BLS verifyMultipleSignatures - same message - 8 - blst 873.42 us/op 898.42 us/op 0.97
BLS verifyMultipleSignatures - same message - 32 - blst 1.5189 ms/op 1.5799 ms/op 0.96
BLS verifyMultipleSignatures - same message - 64 - blst 2.3414 ms/op 2.4534 ms/op 0.95
BLS verifyMultipleSignatures - same message - 128 - blst 3.9568 ms/op 4.0641 ms/op 0.97
BLS aggregatePubkeys 32 - blst 17.180 us/op 17.715 us/op 0.97
BLS aggregatePubkeys 128 - blst 61.961 us/op 63.464 us/op 0.98
getSlashingsAndExits - default max 48.705 us/op 52.724 us/op 0.92
getSlashingsAndExits - 2k 340.74 us/op 338.71 us/op 1.01
proposeBlockBody type=full, size=empty 637.75 us/op 738.20 us/op 0.86
isKnown best case - 1 super set check 162.00 ns/op 181.00 ns/op 0.90
isKnown normal case - 2 super set checks 158.00 ns/op 170.00 ns/op 0.93
isKnown worse case - 16 super set checks 159.00 ns/op 172.00 ns/op 0.92
validate api signedAggregateAndProof - struct 1.5041 ms/op 1.5296 ms/op 0.98
validate gossip signedAggregateAndProof - struct 1.4968 ms/op 1.5252 ms/op 0.98
batch validate gossip attestation - vc 640000 - chunk 32 106.37 us/op 106.97 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 64 92.992 us/op 96.390 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 128 84.801 us/op 88.638 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 256 81.642 us/op 84.643 us/op 0.96
bytes32 toHexString 283.00 ns/op 289.00 ns/op 0.98
bytes32 Buffer.toString(hex) 162.00 ns/op 167.00 ns/op 0.97
bytes32 Buffer.toString(hex) from Uint8Array 236.00 ns/op 240.00 ns/op 0.98
bytes32 Buffer.toString(hex) + 0x 162.00 ns/op 169.00 ns/op 0.96
Return object 10000 times 0.21040 ns/op 0.21350 ns/op 0.99
Throw Error 10000 times 3.3226 us/op 3.5591 us/op 0.93
toHex 101.52 ns/op 101.57 ns/op 1.00
Buffer.from 92.284 ns/op 91.185 ns/op 1.01
shared Buffer 63.288 ns/op 64.074 ns/op 0.99
fastMsgIdFn sha256 / 200 bytes 1.4690 us/op 1.4870 us/op 0.99
fastMsgIdFn h32 xxhash / 200 bytes 150.00 ns/op 157.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 200 bytes 202.00 ns/op 204.00 ns/op 0.99
fastMsgIdFn sha256 / 1000 bytes 4.7020 us/op 4.7570 us/op 0.99
fastMsgIdFn h32 xxhash / 1000 bytes 236.00 ns/op 245.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 1000 bytes 248.00 ns/op 249.00 ns/op 1.00
fastMsgIdFn sha256 / 10000 bytes 41.376 us/op 42.000 us/op 0.99
fastMsgIdFn h32 xxhash / 10000 bytes 1.2600 us/op 1.2900 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 828.00 ns/op 833.00 ns/op 0.99
send data - 1000 256B messages 4.0927 ms/op 4.4161 ms/op 0.93
send data - 1000 512B messages 5.1056 ms/op 5.2045 ms/op 0.98
send data - 1000 1024B messages 5.3621 ms/op 5.3687 ms/op 1.00
send data - 1000 1200B messages 6.1936 ms/op 6.1498 ms/op 1.01
send data - 1000 2048B messages 16.375 ms/op 9.0268 ms/op 1.81
send data - 1000 4096B messages 35.879 ms/op 29.443 ms/op 1.22
send data - 1000 16384B messages 234.76 ms/op 227.87 ms/op 1.03
send data - 1000 65536B messages 743.86 ms/op 1.1219 s/op 0.66
enrSubnets - fastDeserialize 64 bits 721.00 ns/op 758.00 ns/op 0.95
enrSubnets - ssz BitVector 64 bits 258.00 ns/op 261.00 ns/op 0.99
enrSubnets - fastDeserialize 4 bits 103.00 ns/op 107.00 ns/op 0.96
enrSubnets - ssz BitVector 4 bits 261.00 ns/op 262.00 ns/op 1.00
prioritizePeers score -10:0 att 32-0.1 sync 2-0 201.81 us/op 206.79 us/op 0.98
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 227.41 us/op 246.68 us/op 0.92
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 331.37 us/op 342.27 us/op 0.97
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 579.20 us/op 595.36 us/op 0.97
prioritizePeers score 0:0 att 64-1 sync 4-1 681.69 us/op 695.53 us/op 0.98
array of 16000 items push then shift 1.2753 us/op 1.2961 us/op 0.98
LinkedList of 16000 items push then shift 6.7370 ns/op 6.8370 ns/op 0.99
array of 16000 items push then pop 64.405 ns/op 66.475 ns/op 0.97
LinkedList of 16000 items push then pop 5.8760 ns/op 6.0250 ns/op 0.98
array of 24000 items push then shift 1.8947 us/op 1.9117 us/op 0.99
LinkedList of 24000 items push then shift 6.2630 ns/op 6.3120 ns/op 0.99
array of 24000 items push then pop 89.965 ns/op 93.889 ns/op 0.96
LinkedList of 24000 items push then pop 5.8730 ns/op 5.9980 ns/op 0.98
intersect bitArray bitLen 8 4.7010 ns/op 4.7390 ns/op 0.99
intersect array and set length 8 29.356 ns/op 30.054 ns/op 0.98
intersect bitArray bitLen 128 23.816 ns/op 24.022 ns/op 0.99
intersect array and set length 128 493.80 ns/op 503.02 ns/op 0.98
bitArray.getTrueBitIndexes() bitLen 128 945.00 ns/op 1.0060 us/op 0.94
bitArray.getTrueBitIndexes() bitLen 248 1.6780 us/op 1.7440 us/op 0.96
bitArray.getTrueBitIndexes() bitLen 512 3.4580 us/op 3.5620 us/op 0.97
Full columns - reconstruct all 6 blobs 184.43 us/op 182.87 us/op 1.01
Full columns - reconstruct half of the blobs out of 6 194.83 us/op 68.143 us/op 2.86
Full columns - reconstruct single blob out of 6 34.414 us/op 35.210 us/op 0.98
Half columns - reconstruct all 6 blobs 373.44 ms/op 380.02 ms/op 0.98
Half columns - reconstruct half of the blobs out of 6 188.37 ms/op 193.11 ms/op 0.98
Half columns - reconstruct single blob out of 6 66.641 ms/op 69.374 ms/op 0.96
Set add up to 64 items then delete first 1.6356 us/op 1.6918 us/op 0.97
OrderedSet add up to 64 items then delete first 2.5174 us/op 2.5612 us/op 0.98
Set add up to 64 items then delete last 1.8983 us/op 1.9545 us/op 0.97
OrderedSet add up to 64 items then delete last 2.7907 us/op 2.8440 us/op 0.98
Set add up to 64 items then delete middle 1.8856 us/op 1.9388 us/op 0.97
OrderedSet add up to 64 items then delete middle 4.2382 us/op 4.3127 us/op 0.98
Set add up to 128 items then delete first 3.7606 us/op 3.9439 us/op 0.95
OrderedSet add up to 128 items then delete first 5.7122 us/op 5.8370 us/op 0.98
Set add up to 128 items then delete last 3.6369 us/op 3.7517 us/op 0.97
OrderedSet add up to 128 items then delete last 5.4492 us/op 5.4641 us/op 1.00
Set add up to 128 items then delete middle 3.6225 us/op 3.7511 us/op 0.97
OrderedSet add up to 128 items then delete middle 11.145 us/op 11.409 us/op 0.98
Set add up to 256 items then delete first 7.5053 us/op 7.6860 us/op 0.98
OrderedSet add up to 256 items then delete first 11.605 us/op 11.899 us/op 0.98
Set add up to 256 items then delete last 7.1446 us/op 7.5252 us/op 0.95
OrderedSet add up to 256 items then delete last 11.288 us/op 11.118 us/op 1.02
Set add up to 256 items then delete middle 7.1320 us/op 7.3772 us/op 0.97
OrderedSet add up to 256 items then delete middle 34.085 us/op 34.465 us/op 0.99
runFastConfirmationRules vc:100000 bc:96 eq:0 3.6730 us/op 4.0630 us/op 0.90
runFastConfirmationRules vc:600000 bc:96 eq:0 3.6660 us/op 3.8610 us/op 0.95
runFastConfirmationRules vc:1000000 bc:96 eq:0 3.8320 us/op 3.5420 us/op 1.08
runFastConfirmationRules vc:600000 bc:320 eq:0 9.0690 us/op 10.905 us/op 0.83
runFastConfirmationRules vc:600000 bc:1200 eq:0 35.864 us/op 35.030 us/op 1.02
runFastConfirmationRules vc:600000 bc:96 eq:1000 3.4060 us/op 3.4210 us/op 1.00
runFastConfirmationRules vc:600000 bc:96 eq:10000 3.4700 us/op 3.7120 us/op 0.93
runFastConfirmationRules vc:600000 bc:96 eq:300000 3.4830 us/op 3.8360 us/op 0.91
pass gossip attestations to forkchoice per slot 2.5184 ms/op 2.5391 ms/op 0.99
forkChoice updateHead vc 100000 bc 64 eq 0 436.85 us/op 487.42 us/op 0.90
forkChoice updateHead vc 600000 bc 64 eq 0 2.6024 ms/op 2.9132 ms/op 0.89
forkChoice updateHead vc 1000000 bc 64 eq 0 4.3948 ms/op 4.7725 ms/op 0.92
forkChoice updateHead vc 600000 bc 320 eq 0 2.6338 ms/op 2.9108 ms/op 0.90
forkChoice updateHead vc 600000 bc 1200 eq 0 2.6641 ms/op 2.9074 ms/op 0.92
forkChoice updateHead vc 600000 bc 7200 eq 0 2.9684 ms/op 3.2480 ms/op 0.91
forkChoice updateHead vc 600000 bc 64 eq 1000 2.8184 ms/op 3.0121 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 10000 2.8429 ms/op 3.1024 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 300000 6.9998 ms/op 7.4545 ms/op 0.94
computeDeltas 1400000 validators 0% inactive 12.699 ms/op 14.075 ms/op 0.90
computeDeltas 1400000 validators 10% inactive 12.268 ms/op 12.879 ms/op 0.95
computeDeltas 1400000 validators 20% inactive 11.653 ms/op 11.959 ms/op 0.97
computeDeltas 1400000 validators 50% inactive 8.3623 ms/op 9.3386 ms/op 0.90
computeDeltas 2100000 validators 0% inactive 19.193 ms/op 20.481 ms/op 0.94
computeDeltas 2100000 validators 10% inactive 18.451 ms/op 19.307 ms/op 0.96
computeDeltas 2100000 validators 20% inactive 17.226 ms/op 17.965 ms/op 0.96
computeDeltas 2100000 validators 50% inactive 10.222 ms/op 14.050 ms/op 0.73
altair processAttestation - 250000 vs - 7PWei normalcase 1.5765 ms/op 1.6945 ms/op 0.93
altair processAttestation - 250000 vs - 7PWei worstcase 2.3668 ms/op 2.4819 ms/op 0.95
altair processAttestation - setStatus - 1/6 committees join 100.02 us/op 108.78 us/op 0.92
altair processAttestation - setStatus - 1/3 committees join 196.37 us/op 201.77 us/op 0.97
altair processAttestation - setStatus - 1/2 committees join 278.54 us/op 292.05 us/op 0.95
altair processAttestation - setStatus - 2/3 committees join 360.06 us/op 382.40 us/op 0.94
altair processAttestation - setStatus - 4/5 committees join 495.29 us/op 517.82 us/op 0.96
altair processAttestation - setStatus - 100% committees join 585.66 us/op 603.90 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 2.8867 ms/op 2.9269 ms/op 0.99
altair processBlock - 250000 vs - 7PWei normalcase hashState 13.876 ms/op 11.663 ms/op 1.19
altair processBlock - 250000 vs - 7PWei worstcase 18.702 ms/op 19.070 ms/op 0.98
altair processBlock - 250000 vs - 7PWei worstcase hashState 38.662 ms/op 39.162 ms/op 0.99
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2754 ms/op 1.2940 ms/op 0.99
phase0 processBlock - 250000 vs - 7PWei worstcase 16.220 ms/op 16.764 ms/op 0.97
altair processEth1Data - 250000 vs - 7PWei normalcase 291.69 us/op 316.96 us/op 0.92
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.8260 us/op 3.3790 us/op 1.13
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.613 us/op 22.090 us/op 0.98
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.9500 us/op 6.6530 us/op 0.89
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 4.7850 us/op 4.5750 us/op 1.05
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 104.06 us/op 100.05 us/op 1.04
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3504 ms/op 1.3762 ms/op 0.98
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7946 ms/op 1.8302 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7819 ms/op 1.8236 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6334 ms/op 3.5969 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0191 ms/op 2.0500 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9295 ms/op 3.9557 ms/op 0.99
Tree 40 250000 create 299.48 ms/op 318.91 ms/op 0.94
Tree 40 250000 get(125000) 100.41 ns/op 109.20 ns/op 0.92
Tree 40 250000 set(125000) 1.0383 us/op 1.0922 us/op 0.95
Tree 40 250000 toArray() 9.0533 ms/op 9.6024 ms/op 0.94
Tree 40 250000 iterate all - toArray() + loop 9.1586 ms/op 9.7012 ms/op 0.94
Tree 40 250000 iterate all - get(i) 33.921 ms/op 34.353 ms/op 0.99
Array 250000 create 1.9803 ms/op 2.0771 ms/op 0.95
Array 250000 clone - spread 637.44 us/op 655.26 us/op 0.97
Array 250000 get(125000) 0.29200 ns/op 0.29600 ns/op 0.99
Array 250000 set(125000) 0.29400 ns/op 0.30200 ns/op 0.97
Array 250000 iterate all - loop 55.888 us/op 56.621 us/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 37.642 ms/op 39.247 ms/op 0.96
Array.fill - length 1000000 2.2544 ms/op 2.2222 ms/op 1.01
Array push - length 1000000 7.7663 ms/op 7.3663 ms/op 1.05
Array.get 0.20140 ns/op 0.20440 ns/op 0.99
Uint8Array.get 0.25184 ns/op 0.26171 ns/op 0.96
phase0 beforeProcessEpoch - 250000 vs - 7PWei 11.308 ms/op 11.822 ms/op 0.96
altair processEpoch - mainnet_e81889 211.31 ms/op 239.62 ms/op 0.88
mainnet_e81889 - altair beforeProcessEpoch 18.785 ms/op 14.171 ms/op 1.33
mainnet_e81889 - altair processJustificationAndFinalization 4.6160 us/op 4.6360 us/op 1.00
mainnet_e81889 - altair processInactivityUpdates 3.4722 ms/op 3.6174 ms/op 0.96
mainnet_e81889 - altair processRewardsAndPenalties 15.901 ms/op 17.253 ms/op 0.92
mainnet_e81889 - altair processRegistryUpdates 511.00 ns/op 533.00 ns/op 0.96
mainnet_e81889 - altair processSlashings 131.00 ns/op 143.00 ns/op 0.92
mainnet_e81889 - altair processEth1DataReset 129.00 ns/op 137.00 ns/op 0.94
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.1733 ms/op 1.5262 ms/op 0.77
mainnet_e81889 - altair processSlashingsReset 683.00 ns/op 689.00 ns/op 0.99
mainnet_e81889 - altair processRandaoMixesReset 951.00 ns/op 970.00 ns/op 0.98
mainnet_e81889 - altair processHistoricalRootsUpdate 136.00 ns/op 136.00 ns/op 1.00
mainnet_e81889 - altair processParticipationFlagUpdates 402.00 ns/op 422.00 ns/op 0.95
mainnet_e81889 - altair processSyncCommitteeUpdates 103.00 ns/op 113.00 ns/op 0.91
mainnet_e81889 - altair afterProcessEpoch 40.871 ms/op 41.093 ms/op 0.99
capella processEpoch - mainnet_e217614 713.91 ms/op 724.23 ms/op 0.99
mainnet_e217614 - capella beforeProcessEpoch 63.019 ms/op 60.214 ms/op 1.05
mainnet_e217614 - capella processJustificationAndFinalization 4.7720 us/op 5.1180 us/op 0.93
mainnet_e217614 - capella processInactivityUpdates 11.053 ms/op 11.866 ms/op 0.93
mainnet_e217614 - capella processRewardsAndPenalties 88.844 ms/op 92.862 ms/op 0.96
mainnet_e217614 - capella processRegistryUpdates 4.3810 us/op 4.4280 us/op 0.99
mainnet_e217614 - capella processSlashings 135.00 ns/op 150.00 ns/op 0.90
mainnet_e217614 - capella processEth1DataReset 126.00 ns/op 139.00 ns/op 0.91
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.1345 ms/op 5.3985 ms/op 0.95
mainnet_e217614 - capella processSlashingsReset 659.00 ns/op 667.00 ns/op 0.99
mainnet_e217614 - capella processRandaoMixesReset 981.00 ns/op 1.0470 us/op 0.94
mainnet_e217614 - capella processHistoricalRootsUpdate 126.00 ns/op 140.00 ns/op 0.90
mainnet_e217614 - capella processParticipationFlagUpdates 409.00 ns/op 434.00 ns/op 0.94
mainnet_e217614 - capella afterProcessEpoch 105.10 ms/op 105.68 ms/op 0.99
phase0 processEpoch - mainnet_e58758 226.01 ms/op 264.49 ms/op 0.85
mainnet_e58758 - phase0 beforeProcessEpoch 44.876 ms/op 50.519 ms/op 0.89
mainnet_e58758 - phase0 processJustificationAndFinalization 4.6060 us/op 5.1460 us/op 0.90
mainnet_e58758 - phase0 processRewardsAndPenalties 13.996 ms/op 14.888 ms/op 0.94
mainnet_e58758 - phase0 processRegistryUpdates 2.2000 us/op 2.2520 us/op 0.98
mainnet_e58758 - phase0 processSlashings 133.00 ns/op 142.00 ns/op 0.94
mainnet_e58758 - phase0 processEth1DataReset 136.00 ns/op 135.00 ns/op 1.01
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0899 ms/op 918.66 us/op 1.19
mainnet_e58758 - phase0 processSlashingsReset 784.00 ns/op 1.4500 us/op 0.54
mainnet_e58758 - phase0 processRandaoMixesReset 986.00 ns/op 998.00 ns/op 0.99
mainnet_e58758 - phase0 processHistoricalRootsUpdate 138.00 ns/op 147.00 ns/op 0.94
mainnet_e58758 - phase0 processParticipationRecordUpdates 947.00 ns/op 1.0140 us/op 0.93
mainnet_e58758 - phase0 afterProcessEpoch 32.485 ms/op 32.811 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 normalcase 987.33 us/op 1.0084 ms/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6031 ms/op 1.6338 ms/op 0.98
altair processInactivityUpdates - 250000 normalcase 10.451 ms/op 10.523 ms/op 0.99
altair processInactivityUpdates - 250000 worstcase 10.361 ms/op 10.694 ms/op 0.97
phase0 processRegistryUpdates - 250000 normalcase 2.1400 us/op 2.1630 us/op 0.99
phase0 processRegistryUpdates - 250000 badcase_full_deposits 136.94 us/op 140.52 us/op 0.97
phase0 processRegistryUpdates - 250000 worstcase 0.5 56.864 ms/op 64.034 ms/op 0.89
altair processRewardsAndPenalties - 250000 normalcase 12.954 ms/op 13.156 ms/op 0.98
altair processRewardsAndPenalties - 250000 worstcase 12.622 ms/op 13.069 ms/op 0.97
phase0 getAttestationDeltas - 250000 normalcase 5.2209 ms/op 5.4714 ms/op 0.95
phase0 getAttestationDeltas - 250000 worstcase 5.2437 ms/op 5.4796 ms/op 0.96
phase0 processSlashings - 250000 worstcase 61.306 us/op 61.274 us/op 1.00
altair processSyncCommitteeUpdates - 250000 9.8999 ms/op 10.056 ms/op 0.98
BeaconState.hashTreeRoot - No change 162.00 ns/op 179.00 ns/op 0.91
BeaconState.hashTreeRoot - 1 full validator 55.563 us/op 59.593 us/op 0.93
BeaconState.hashTreeRoot - 32 full validator 615.36 us/op 667.03 us/op 0.92
BeaconState.hashTreeRoot - 512 full validator 5.7527 ms/op 6.3604 ms/op 0.90
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 67.988 us/op 72.012 us/op 0.94
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 993.83 us/op 1.5054 ms/op 0.66
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 11.669 ms/op 18.732 ms/op 0.62
BeaconState.hashTreeRoot - 1 balances 52.288 us/op 79.534 us/op 0.66
BeaconState.hashTreeRoot - 32 balances 523.45 us/op 740.72 us/op 0.71
BeaconState.hashTreeRoot - 512 balances 4.4244 ms/op 5.5332 ms/op 0.80
BeaconState.hashTreeRoot - 250000 balances 86.366 ms/op 123.81 ms/op 0.70
aggregationBits - 2048 els - zipIndexesInBitList 18.705 us/op 21.433 us/op 0.87
regular array get 100000 times 22.597 us/op 23.436 us/op 0.96
wrappedArray get 100000 times 22.518 us/op 23.379 us/op 0.96
arrayWithProxy get 100000 times 11.127 ms/op 12.999 ms/op 0.86
ssz.Root.equals 21.283 ns/op 21.881 ns/op 0.97
byteArrayEquals 21.080 ns/op 21.641 ns/op 0.97
Buffer.compare 8.7830 ns/op 9.0050 ns/op 0.98
processSlot - 1 slots 7.7110 us/op 10.161 us/op 0.76
processSlot - 32 slots 1.5235 ms/op 2.1868 ms/op 0.70
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.2729 ms/op 2.5608 ms/op 0.89
getCommitteeAssignments - req 1 vs - 250000 vc 1.6649 ms/op 1.6941 ms/op 0.98
getCommitteeAssignments - req 100 vs - 250000 vc 3.3750 ms/op 3.4729 ms/op 0.97
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6250 ms/op 3.7385 ms/op 0.97
findModifiedValidators - 10000 modified validators 698.08 ms/op 827.19 ms/op 0.84
findModifiedValidators - 1000 modified validators 675.18 ms/op 603.32 ms/op 1.12
findModifiedValidators - 100 modified validators 327.43 ms/op 356.02 ms/op 0.92
findModifiedValidators - 10 modified validators 230.76 ms/op 300.57 ms/op 0.77
findModifiedValidators - 1 modified validators 199.19 ms/op 168.85 ms/op 1.18
findModifiedValidators - no difference 158.89 ms/op 185.11 ms/op 0.86
migrate state 1500000 validators, 3400 modified, 2000 new 2.5563 s/op 3.1717 s/op 0.81
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.7400 ns/op 3.8100 ns/op 0.98
state getBlockRootAtSlot - 250000 vs - 7PWei 264.79 ns/op 271.96 ns/op 0.97
computeProposerIndex 100000 validators 1.3036 ms/op 1.3654 ms/op 0.95
getNextSyncCommitteeIndices 1000 validators 2.8107 ms/op 2.9089 ms/op 0.97
getNextSyncCommitteeIndices 10000 validators 25.260 ms/op 25.663 ms/op 0.98
getNextSyncCommitteeIndices 100000 validators 85.779 ms/op 89.292 ms/op 0.96
computeProposers - vc 250000 530.38 us/op 581.08 us/op 0.91
computeEpochShuffling - vc 250000 38.963 ms/op 41.454 ms/op 0.94
getNextSyncCommittee - vc 250000 9.1422 ms/op 9.6061 ms/op 0.95
nodejs block root to RootHex using toHex 101.93 ns/op 102.04 ns/op 1.00
nodejs block root to RootHex using toRootHex 65.594 ns/op 66.874 ns/op 0.98
nodejs fromHex(blob) 704.04 us/op 853.01 us/op 0.83
nodejs fromHexInto(blob) 645.24 us/op 649.89 us/op 0.99
nodejs block root to RootHex using the deprecated toHexString 482.16 ns/op 484.48 ns/op 1.00
nodejs byteArrayEquals 32 bytes (block root) 25.403 ns/op 26.438 ns/op 0.96
nodejs byteArrayEquals 48 bytes (pubkey) 36.746 ns/op 38.212 ns/op 0.96
nodejs byteArrayEquals 96 bytes (signature) 38.443 ns/op 38.061 ns/op 1.01
nodejs byteArrayEquals 1024 bytes 45.057 ns/op 45.206 ns/op 1.00
nodejs byteArrayEquals 131072 bytes (blob) 1.7149 us/op 1.7797 us/op 0.96
browser block root to RootHex using toHex 142.72 ns/op 148.14 ns/op 0.96
browser block root to RootHex using toRootHex 128.53 ns/op 131.54 ns/op 0.98
browser fromHex(blob) 1.5227 ms/op 1.7388 ms/op 0.88
browser fromHexInto(blob) 648.87 us/op 665.57 us/op 0.97
browser block root to RootHex using the deprecated toHexString 335.87 ns/op 338.51 ns/op 0.99
browser byteArrayEquals 32 bytes (block root) 27.398 ns/op 28.260 ns/op 0.97
browser byteArrayEquals 48 bytes (pubkey) 38.636 ns/op 39.885 ns/op 0.97
browser byteArrayEquals 96 bytes (signature) 72.673 ns/op 74.583 ns/op 0.97
browser byteArrayEquals 1024 bytes 735.69 ns/op 755.39 ns/op 0.97
browser byteArrayEquals 131072 bytes (blob) 93.076 us/op 95.488 us/op 0.97

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.

1 participant