Skip to content

fix: use progressive payload attestation pool response - #9838

Merged
nflaig merged 4 commits into
unstablefrom
nflaig/progressive-payload-attestation-pool-response
Aug 17, 2026
Merged

fix: use progressive payload attestation pool response#9838
nflaig merged 4 commits into
unstablefrom
nflaig/progressive-payload-attestation-pool-response

Conversation

@nflaig

@nflaig nflaig commented Aug 17, 2026

Copy link
Copy Markdown
Member

getPoolPayloadAttestations may return aggregates for multiple block roots or slots and exceed the 4 payload attestations allowed in one block. Its SSZ codec reused MAX_PAYLOAD_ATTESTATIONS, so larger pool responses could not be decoded.

Use the Gloas progressive PayloadAttestations type and cover JSON and SSZ responses with 5 entries

see ethereum/beacon-APIs#635

@nflaig
nflaig marked this pull request as ready for review August 17, 2026 09:47
@nflaig
nflaig requested a review from a team as a code owner August 17, 2026 09:47
@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Performance Report

鉁旓笍 no performance regression detected

Full benchmark results
Benchmark suite Current: c568b24 Previous: 89b25ba Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.5594 ms/op 885.76 us/op 1.76
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.755 us/op 40.826 us/op 0.95
BLS verify - blst 721.05 us/op 745.19 us/op 0.97
BLS verifyMultipleSignatures 3 - blst 1.3684 ms/op 1.3882 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst 2.1975 ms/op 2.1776 ms/op 1.01
BLS verifyMultipleSignatures 32 - blst 6.8592 ms/op 6.8509 ms/op 1.00
BLS verifyMultipleSignatures 64 - blst 13.439 ms/op 13.736 ms/op 0.98
BLS verifyMultipleSignatures 128 - blst 26.400 ms/op 25.953 ms/op 1.02
BLS deserializing 10000 signatures 619.29 ms/op 642.55 ms/op 0.96
BLS deserializing 100000 signatures 6.1793 s/op 6.5052 s/op 0.95
BLS verifyMultipleSignatures - same message - 3 - blst 818.50 us/op 725.66 us/op 1.13
BLS verifyMultipleSignatures - same message - 8 - blst 829.72 us/op 914.05 us/op 0.91
BLS verifyMultipleSignatures - same message - 32 - blst 1.4265 ms/op 1.5412 ms/op 0.93
BLS verifyMultipleSignatures - same message - 64 - blst 2.3882 ms/op 2.4049 ms/op 0.99
BLS verifyMultipleSignatures - same message - 128 - blst 4.1573 ms/op 4.0423 ms/op 1.03
BLS aggregatePubkeys 32 - blst 17.896 us/op 17.851 us/op 1.00
BLS aggregatePubkeys 128 - blst 63.897 us/op 63.410 us/op 1.01
getSlashingsAndExits - default max 54.213 us/op 48.900 us/op 1.11
getSlashingsAndExits - 2k 453.16 us/op 327.41 us/op 1.38
proposeBlockBody type=full, size=empty 3.7281 ms/op 3.8341 ms/op 0.97
isKnown best case - 1 super set check 168.00 ns/op 172.00 ns/op 0.98
isKnown normal case - 2 super set checks 167.00 ns/op 168.00 ns/op 0.99
isKnown worse case - 16 super set checks 161.00 ns/op 166.00 ns/op 0.97
validate api signedAggregateAndProof - struct 1.5456 ms/op 1.5056 ms/op 1.03
validate gossip signedAggregateAndProof - struct 1.5355 ms/op 1.5035 ms/op 1.02
batch validate gossip attestation - vc 640000 - chunk 32 113.54 us/op 110.39 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 64 100.75 us/op 95.546 us/op 1.05
batch validate gossip attestation - vc 640000 - chunk 128 92.679 us/op 88.950 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 256 84.771 us/op 84.120 us/op 1.01
bytes32 toHexString 274.00 ns/op 292.00 ns/op 0.94
bytes32 Buffer.toString(hex) 168.00 ns/op 167.00 ns/op 1.01
bytes32 Buffer.toString(hex) from Uint8Array 244.00 ns/op 234.00 ns/op 1.04
bytes32 Buffer.toString(hex) + 0x 183.00 ns/op 167.00 ns/op 1.10
Return object 10000 times 0.21850 ns/op 0.20900 ns/op 1.05
Throw Error 10000 times 3.6034 us/op 3.2926 us/op 1.09
toHex 99.668 ns/op 90.289 ns/op 1.10
Buffer.from 90.078 ns/op 81.601 ns/op 1.10
shared Buffer 60.419 ns/op 55.694 ns/op 1.08
fastMsgIdFn sha256 / 200 bytes 1.4990 us/op 1.4560 us/op 1.03
fastMsgIdFn h32 xxhash / 200 bytes 162.00 ns/op 158.00 ns/op 1.03
fastMsgIdFn h64 xxhash / 200 bytes 204.00 ns/op 205.00 ns/op 1.00
fastMsgIdFn sha256 / 1000 bytes 4.8290 us/op 4.6010 us/op 1.05
fastMsgIdFn h32 xxhash / 1000 bytes 253.00 ns/op 244.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 1000 bytes 259.00 ns/op 244.00 ns/op 1.06
fastMsgIdFn sha256 / 10000 bytes 42.717 us/op 39.701 us/op 1.08
fastMsgIdFn h32 xxhash / 10000 bytes 1.3230 us/op 1.2220 us/op 1.08
fastMsgIdFn h64 xxhash / 10000 bytes 864.00 ns/op 794.00 ns/op 1.09
send data - 1000 256B messages 4.6598 ms/op 4.2258 ms/op 1.10
send data - 1000 512B messages 5.1474 ms/op 5.8107 ms/op 0.89
send data - 1000 1024B messages 5.9228 ms/op 5.4320 ms/op 1.09
send data - 1000 1200B messages 6.9648 ms/op 6.2250 ms/op 1.12
send data - 1000 2048B messages 9.3400 ms/op 10.475 ms/op 0.89
send data - 1000 4096B messages 61.617 ms/op 45.485 ms/op 1.35
send data - 1000 16384B messages 268.90 ms/op 308.43 ms/op 0.87
send data - 1000 65536B messages 1.5557 s/op 1.4237 s/op 1.09
enrSubnets - fastDeserialize 64 bits 745.00 ns/op 745.00 ns/op 1.00
enrSubnets - ssz BitVector 64 bits 257.00 ns/op 275.00 ns/op 0.93
enrSubnets - fastDeserialize 4 bits 105.00 ns/op 105.00 ns/op 1.00
enrSubnets - ssz BitVector 4 bits 262.00 ns/op 275.00 ns/op 0.95
prioritizePeers score -10:0 att 32-0.1 sync 2-0 205.74 us/op 203.91 us/op 1.01
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 238.22 us/op 226.77 us/op 1.05
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 339.66 us/op 328.27 us/op 1.03
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 600.86 us/op 603.92 us/op 0.99
prioritizePeers score 0:0 att 64-1 sync 4-1 708.67 us/op 706.97 us/op 1.00
array of 16000 items push then shift 1.3587 us/op 1.3081 us/op 1.04
LinkedList of 16000 items push then shift 7.2970 ns/op 7.4770 ns/op 0.98
array of 16000 items push then pop 110.89 ns/op 73.650 ns/op 1.51
LinkedList of 16000 items push then pop 6.0710 ns/op 6.1090 ns/op 0.99
array of 24000 items push then shift 2.0143 us/op 1.9308 us/op 1.04
LinkedList of 24000 items push then shift 7.0530 ns/op 6.9110 ns/op 1.02
array of 24000 items push then pop 156.94 ns/op 102.30 ns/op 1.53
LinkedList of 24000 items push then pop 6.0680 ns/op 6.1360 ns/op 0.99
intersect bitArray bitLen 8 4.2810 ns/op 3.9240 ns/op 1.09
intersect array and set length 8 29.807 ns/op 29.713 ns/op 1.00
intersect bitArray bitLen 128 23.921 ns/op 23.587 ns/op 1.01
intersect array and set length 128 501.79 ns/op 500.51 ns/op 1.00
bitArray.getTrueBitIndexes() bitLen 128 956.00 ns/op 947.00 ns/op 1.01
bitArray.getTrueBitIndexes() bitLen 248 1.6970 us/op 1.6760 us/op 1.01
bitArray.getTrueBitIndexes() bitLen 512 3.5460 us/op 3.4920 us/op 1.02
Full columns - reconstruct all 6 blobs 119.11 us/op 108.79 us/op 1.09
Full columns - reconstruct half of the blobs out of 6 64.714 us/op 91.068 us/op 0.71
Full columns - reconstruct single blob out of 6 31.578 us/op 74.898 us/op 0.42
Half columns - reconstruct all 6 blobs 390.98 ms/op 392.39 ms/op 1.00
Half columns - reconstruct half of the blobs out of 6 195.68 ms/op 198.02 ms/op 0.99
Half columns - reconstruct single blob out of 6 71.562 ms/op 72.074 ms/op 0.99
Set add up to 64 items then delete first 1.6727 us/op 1.5875 us/op 1.05
OrderedSet add up to 64 items then delete first 2.5285 us/op 2.4646 us/op 1.03
Set add up to 64 items then delete last 1.8715 us/op 1.8210 us/op 1.03
OrderedSet add up to 64 items then delete last 2.7950 us/op 2.7932 us/op 1.00
Set add up to 64 items then delete middle 1.8693 us/op 1.8690 us/op 1.00
OrderedSet add up to 64 items then delete middle 3.9685 us/op 4.3021 us/op 0.92
Set add up to 128 items then delete first 3.4536 us/op 3.7481 us/op 0.92
OrderedSet add up to 128 items then delete first 5.3601 us/op 5.8939 us/op 0.91
Set add up to 128 items then delete last 3.2885 us/op 3.6590 us/op 0.90
OrderedSet add up to 128 items then delete last 4.9755 us/op 5.6939 us/op 0.87
Set add up to 128 items then delete middle 3.3038 us/op 3.7218 us/op 0.89
OrderedSet add up to 128 items then delete middle 11.241 us/op 11.490 us/op 0.98
Set add up to 256 items then delete first 6.7008 us/op 7.2645 us/op 0.92
OrderedSet add up to 256 items then delete first 11.161 us/op 12.497 us/op 0.89
Set add up to 256 items then delete last 6.5615 us/op 7.0892 us/op 0.93
OrderedSet add up to 256 items then delete last 10.779 us/op 11.629 us/op 0.93
Set add up to 256 items then delete middle 6.5895 us/op 6.7244 us/op 0.98
OrderedSet add up to 256 items then delete middle 33.179 us/op 33.416 us/op 0.99
runFastConfirmationRules vc:100000 bc:96 eq:0 4.2054 ms/op 4.3023 ms/op 0.98
runFastConfirmationRules vc:600000 bc:96 eq:0 34.199 ms/op 36.062 ms/op 0.95
runFastConfirmationRules vc:1000000 bc:96 eq:0 54.768 ms/op 58.567 ms/op 0.94
runFastConfirmationRules vc:600000 bc:320 eq:0 33.580 ms/op 34.349 ms/op 0.98
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.3205 s/op 1.1778 s/op 1.12
pass gossip attestations to forkchoice per slot 2.4931 ms/op 2.9485 ms/op 0.85
forkChoice updateHead vc 100000 bc 64 eq 0 392.12 us/op 420.30 us/op 0.93
forkChoice updateHead vc 600000 bc 64 eq 0 2.3656 ms/op 2.5859 ms/op 0.91
forkChoice updateHead vc 1000000 bc 64 eq 0 3.9074 ms/op 4.2030 ms/op 0.93
forkChoice updateHead vc 600000 bc 320 eq 0 2.3566 ms/op 2.4773 ms/op 0.95
forkChoice updateHead vc 600000 bc 1200 eq 0 2.3637 ms/op 2.5860 ms/op 0.91
forkChoice updateHead vc 600000 bc 7200 eq 0 3.3219 ms/op 2.9002 ms/op 1.15
forkChoice updateHead vc 600000 bc 64 eq 1000 2.3091 ms/op 2.4991 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 10000 2.4461 ms/op 2.5786 ms/op 0.95
forkChoice updateHead vc 600000 bc 64 eq 300000 7.4643 ms/op 6.8901 ms/op 1.08
computeDeltas 1400000 validators 0% inactive 11.587 ms/op 12.350 ms/op 0.94
computeDeltas 1400000 validators 10% inactive 11.042 ms/op 11.657 ms/op 0.95
computeDeltas 1400000 validators 20% inactive 10.409 ms/op 10.983 ms/op 0.95
computeDeltas 1400000 validators 50% inactive 8.4003 ms/op 9.0674 ms/op 0.93
computeDeltas 2100000 validators 0% inactive 17.539 ms/op 18.465 ms/op 0.95
computeDeltas 2100000 validators 10% inactive 16.601 ms/op 17.622 ms/op 0.94
computeDeltas 2100000 validators 20% inactive 15.768 ms/op 16.812 ms/op 0.94
computeDeltas 2100000 validators 50% inactive 12.863 ms/op 10.992 ms/op 1.17
altair processAttestation - 250000 vs - 7PWei normalcase 2.1828 ms/op 2.0920 ms/op 1.04
altair processAttestation - 250000 vs - 7PWei worstcase 3.0437 ms/op 3.1614 ms/op 0.96
altair processAttestation - setStatus - 1/6 committees join 99.470 us/op 101.60 us/op 0.98
altair processAttestation - setStatus - 1/3 committees join 187.43 us/op 202.00 us/op 0.93
altair processAttestation - setStatus - 1/2 committees join 270.94 us/op 294.18 us/op 0.92
altair processAttestation - setStatus - 2/3 committees join 358.32 us/op 395.28 us/op 0.91
altair processAttestation - setStatus - 4/5 committees join 535.26 us/op 527.30 us/op 1.02
altair processAttestation - setStatus - 100% committees join 614.40 us/op 606.77 us/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase 4.0693 ms/op 3.3943 ms/op 1.20
altair processBlock - 250000 vs - 7PWei normalcase hashState 15.042 ms/op 18.213 ms/op 0.83
altair processBlock - 250000 vs - 7PWei worstcase 21.610 ms/op 23.111 ms/op 0.94
altair processBlock - 250000 vs - 7PWei worstcase hashState 42.713 ms/op 50.299 ms/op 0.85
phase0 processBlock - 250000 vs - 7PWei normalcase 1.4364 ms/op 1.4497 ms/op 0.99
phase0 processBlock - 250000 vs - 7PWei worstcase 17.849 ms/op 18.630 ms/op 0.96
altair processEth1Data - 250000 vs - 7PWei normalcase 300.41 us/op 284.48 us/op 1.06
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 6.0500 us/op 8.9060 us/op 0.68
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.351 us/op 22.402 us/op 0.95
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.8150 us/op 7.6780 us/op 0.76
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.7090 us/op 5.5350 us/op 0.67
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 90.994 us/op 97.189 us/op 0.94
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4992 ms/op 1.4144 ms/op 1.06
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.0537 ms/op 1.8697 ms/op 1.10
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.9260 ms/op 1.8591 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.5764 ms/op 3.7769 ms/op 0.95
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.2001 ms/op 2.2878 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.4083 ms/op 8.0992 ms/op 0.54
Tree 40 250000 create 364.61 ms/op 378.33 ms/op 0.96
Tree 40 250000 get(125000) 97.001 ns/op 93.833 ns/op 1.03
Tree 40 250000 set(125000) 1.0412 us/op 1.0464 us/op 1.00
Tree 40 250000 toArray() 13.310 ms/op 13.330 ms/op 1.00
Tree 40 250000 iterate all - toArray() + loop 11.832 ms/op 14.603 ms/op 0.81
Tree 40 250000 iterate all - get(i) 40.007 ms/op 40.546 ms/op 0.99
Array 250000 create 3.2131 ms/op 2.6130 ms/op 1.23
Array 250000 clone - spread 853.32 us/op 749.98 us/op 1.14
Array 250000 get(125000) 0.30300 ns/op 0.30200 ns/op 1.00
Array 250000 set(125000) 0.30400 ns/op 0.30300 ns/op 1.00
Array 250000 iterate all - loop 58.030 us/op 58.170 us/op 1.00
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.962 ms/op 57.384 ms/op 0.73
Array.fill - length 1000000 5.2627 ms/op 3.9956 ms/op 1.32
Array push - length 1000000 18.099 ms/op 16.089 ms/op 1.12
Array.get 0.20899 ns/op 0.21919 ns/op 0.95
Uint8Array.get 0.22853 ns/op 0.22557 ns/op 1.01
phase0 beforeProcessEpoch - 250000 vs - 7PWei 17.240 ms/op 39.260 ms/op 0.44
altair processEpoch - mainnet_e81889 384.04 ms/op 336.34 ms/op 1.14
mainnet_e81889 - altair beforeProcessEpoch 23.007 ms/op 37.132 ms/op 0.62
mainnet_e81889 - altair processJustificationAndFinalization 8.2960 us/op 7.5330 us/op 1.10
mainnet_e81889 - altair processInactivityUpdates 3.7749 ms/op 7.3601 ms/op 0.51
mainnet_e81889 - altair processRewardsAndPenalties 20.866 ms/op 18.910 ms/op 1.10
mainnet_e81889 - altair processRegistryUpdates 591.00 ns/op 580.00 ns/op 1.02
mainnet_e81889 - altair processSlashings 150.00 ns/op 143.00 ns/op 1.05
mainnet_e81889 - altair processEth1DataReset 143.00 ns/op 139.00 ns/op 1.03
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.8003 ms/op 1.1934 ms/op 1.51
mainnet_e81889 - altair processSlashingsReset 704.00 ns/op 716.00 ns/op 0.98
mainnet_e81889 - altair processRandaoMixesReset 1.6070 us/op 1.2850 us/op 1.25
mainnet_e81889 - altair processHistoricalRootsUpdate 143.00 ns/op 142.00 ns/op 1.01
mainnet_e81889 - altair processParticipationFlagUpdates 471.00 ns/op 459.00 ns/op 1.03
mainnet_e81889 - altair processSyncCommitteeUpdates 112.00 ns/op 110.00 ns/op 1.02
mainnet_e81889 - altair afterProcessEpoch 40.946 ms/op 43.006 ms/op 0.95
capella processEpoch - mainnet_e217614 1.0449 s/op 991.16 ms/op 1.05
mainnet_e217614 - capella beforeProcessEpoch 60.399 ms/op 74.403 ms/op 0.81
mainnet_e217614 - capella processJustificationAndFinalization 8.0470 us/op 8.0060 us/op 1.01
mainnet_e217614 - capella processInactivityUpdates 15.702 ms/op 13.889 ms/op 1.13
mainnet_e217614 - capella processRewardsAndPenalties 100.03 ms/op 105.94 ms/op 0.94
mainnet_e217614 - capella processRegistryUpdates 4.5570 us/op 4.5270 us/op 1.01
mainnet_e217614 - capella processSlashings 142.00 ns/op 138.00 ns/op 1.03
mainnet_e217614 - capella processEth1DataReset 138.00 ns/op 135.00 ns/op 1.02
mainnet_e217614 - capella processEffectiveBalanceUpdates 18.047 ms/op 18.578 ms/op 0.97
mainnet_e217614 - capella processSlashingsReset 686.00 ns/op 680.00 ns/op 1.01
mainnet_e217614 - capella processRandaoMixesReset 1.6360 us/op 1.5230 us/op 1.07
mainnet_e217614 - capella processHistoricalRootsUpdate 137.00 ns/op 135.00 ns/op 1.01
mainnet_e217614 - capella processParticipationFlagUpdates 459.00 ns/op 446.00 ns/op 1.03
mainnet_e217614 - capella afterProcessEpoch 110.01 ms/op 107.16 ms/op 1.03
phase0 processEpoch - mainnet_e58758 375.58 ms/op 369.41 ms/op 1.02
mainnet_e58758 - phase0 beforeProcessEpoch 76.127 ms/op 78.857 ms/op 0.97
mainnet_e58758 - phase0 processJustificationAndFinalization 8.6170 us/op 9.6800 us/op 0.89
mainnet_e58758 - phase0 processRewardsAndPenalties 18.569 ms/op 18.111 ms/op 1.03
mainnet_e58758 - phase0 processRegistryUpdates 2.3370 us/op 2.3080 us/op 1.01
mainnet_e58758 - phase0 processSlashings 141.00 ns/op 142.00 ns/op 0.99
mainnet_e58758 - phase0 processEth1DataReset 137.00 ns/op 138.00 ns/op 0.99
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 816.19 us/op 965.60 us/op 0.85
mainnet_e58758 - phase0 processSlashingsReset 1.0040 us/op 911.00 ns/op 1.10
mainnet_e58758 - phase0 processRandaoMixesReset 1.6670 us/op 1.4650 us/op 1.14
mainnet_e58758 - phase0 processHistoricalRootsUpdate 283.00 ns/op 142.00 ns/op 1.99
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.4850 us/op 1.2500 us/op 1.19
mainnet_e58758 - phase0 afterProcessEpoch 36.590 ms/op 34.598 ms/op 1.06
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.5924 ms/op 1.0288 ms/op 1.55
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.1330 ms/op 1.6631 ms/op 1.28
altair processInactivityUpdates - 250000 normalcase 12.352 ms/op 10.867 ms/op 1.14
altair processInactivityUpdates - 250000 worstcase 12.851 ms/op 10.848 ms/op 1.18
phase0 processRegistryUpdates - 250000 normalcase 2.5070 us/op 2.3210 us/op 1.08
phase0 processRegistryUpdates - 250000 badcase_full_deposits 150.84 us/op 143.86 us/op 1.05
phase0 processRegistryUpdates - 250000 worstcase 0.5 70.815 ms/op 61.312 ms/op 1.16
altair processRewardsAndPenalties - 250000 normalcase 16.612 ms/op 13.300 ms/op 1.25
altair processRewardsAndPenalties - 250000 worstcase 17.005 ms/op 13.136 ms/op 1.29
phase0 getAttestationDeltas - 250000 normalcase 6.2118 ms/op 5.4658 ms/op 1.14
phase0 getAttestationDeltas - 250000 worstcase 6.2973 ms/op 5.6533 ms/op 1.11
phase0 processSlashings - 250000 worstcase 62.974 us/op 64.001 us/op 0.98
altair processSyncCommitteeUpdates - 250000 11.909 ms/op 12.318 ms/op 0.97
BeaconState.hashTreeRoot - No change 180.00 ns/op 171.00 ns/op 1.05
BeaconState.hashTreeRoot - 1 full validator 90.026 us/op 99.855 us/op 0.90
BeaconState.hashTreeRoot - 32 full validator 1.3589 ms/op 1.7305 ms/op 0.79
BeaconState.hashTreeRoot - 512 full validator 10.876 ms/op 8.7821 ms/op 1.24
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 118.49 us/op 111.23 us/op 1.07
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8524 ms/op 2.4656 ms/op 0.75
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 27.769 ms/op 18.581 ms/op 1.49
BeaconState.hashTreeRoot - 1 balances 96.254 us/op 81.937 us/op 1.17
BeaconState.hashTreeRoot - 32 balances 1.5225 ms/op 691.77 us/op 2.20
BeaconState.hashTreeRoot - 512 balances 10.207 ms/op 8.8641 ms/op 1.15
BeaconState.hashTreeRoot - 250000 balances 214.21 ms/op 214.18 ms/op 1.00
aggregationBits - 2048 els - zipIndexesInBitList 21.094 us/op 20.448 us/op 1.03
regular array get 100000 times 23.849 us/op 22.664 us/op 1.05
wrappedArray get 100000 times 23.745 us/op 22.577 us/op 1.05
arrayWithProxy get 100000 times 10.198 ms/op 9.5708 ms/op 1.07
ssz.Root.equals 22.154 ns/op 21.477 ns/op 1.03
byteArrayEquals 21.937 ns/op 21.410 ns/op 1.02
Buffer.compare 9.1560 ns/op 8.7830 ns/op 1.04
processSlot - 1 slots 10.334 us/op 10.543 us/op 0.98
processSlot - 32 slots 4.2791 ms/op 2.3473 ms/op 1.82
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 4.3290 ms/op 3.3399 ms/op 1.30
getCommitteeAssignments - req 1 vs - 250000 vc 1.7472 ms/op 1.6795 ms/op 1.04
getCommitteeAssignments - req 100 vs - 250000 vc 3.5365 ms/op 3.4286 ms/op 1.03
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7920 ms/op 3.6843 ms/op 1.03
findModifiedValidators - 10000 modified validators 976.24 ms/op 851.95 ms/op 1.15
findModifiedValidators - 1000 modified validators 623.32 ms/op 584.74 ms/op 1.07
findModifiedValidators - 100 modified validators 440.90 ms/op 430.43 ms/op 1.02
findModifiedValidators - 10 modified validators 367.21 ms/op 370.46 ms/op 0.99
findModifiedValidators - 1 modified validators 341.07 ms/op 216.31 ms/op 1.58
findModifiedValidators - no difference 294.55 ms/op 213.79 ms/op 1.38
migrate state 1500000 validators, 3400 modified, 2000 new 4.4027 s/op 3.9571 s/op 1.11
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.8600 ns/op 3.8400 ns/op 1.01
state getBlockRootAtSlot - 250000 vs - 7PWei 444.42 ns/op 386.28 ns/op 1.15
computeProposerIndex 100000 validators 1.3986 ms/op 1.3965 ms/op 1.00
getNextSyncCommitteeIndices 1000 validators 3.0073 ms/op 2.9322 ms/op 1.03
getNextSyncCommitteeIndices 10000 validators 26.602 ms/op 26.782 ms/op 0.99
getNextSyncCommitteeIndices 100000 validators 91.560 ms/op 91.078 ms/op 1.01
computeProposers - vc 250000 584.52 us/op 569.55 us/op 1.03
computeEpochShuffling - vc 250000 41.777 ms/op 40.492 ms/op 1.03
getNextSyncCommittee - vc 250000 10.225 ms/op 9.7185 ms/op 1.05
nodejs block root to RootHex using toHex 96.791 ns/op 98.864 ns/op 0.98
nodejs block root to RootHex using toRootHex 63.152 ns/op 63.975 ns/op 0.99
nodejs fromHex(blob) 970.62 us/op 982.07 us/op 0.99
nodejs fromHexInto(blob) 622.37 us/op 644.10 us/op 0.97
nodejs block root to RootHex using the deprecated toHexString 614.22 ns/op 507.80 ns/op 1.21
nodejs byteArrayEquals 32 bytes (block root) 27.015 ns/op 26.518 ns/op 1.02
nodejs byteArrayEquals 48 bytes (pubkey) 38.907 ns/op 38.331 ns/op 1.02
nodejs byteArrayEquals 96 bytes (signature) 36.158 ns/op 36.034 ns/op 1.00
nodejs byteArrayEquals 1024 bytes 42.859 ns/op 43.782 ns/op 0.98
nodejs byteArrayEquals 131072 bytes (blob) 1.8004 us/op 1.7862 us/op 1.01
browser block root to RootHex using toHex 149.27 ns/op 147.78 ns/op 1.01
browser block root to RootHex using toRootHex 135.16 ns/op 133.24 ns/op 1.01
browser fromHex(blob) 1.7562 ms/op 1.8444 ms/op 0.95
browser fromHexInto(blob) 649.10 us/op 640.80 us/op 1.01
browser block root to RootHex using the deprecated toHexString 410.80 ns/op 349.81 ns/op 1.17
browser byteArrayEquals 32 bytes (block root) 28.948 ns/op 28.576 ns/op 1.01
browser byteArrayEquals 48 bytes (pubkey) 40.688 ns/op 40.395 ns/op 1.01
browser byteArrayEquals 96 bytes (signature) 75.875 ns/op 75.378 ns/op 1.01
browser byteArrayEquals 1024 bytes 774.06 ns/op 767.95 ns/op 1.01
browser byteArrayEquals 131072 bytes (blob) 98.035 us/op 96.630 us/op 1.01

by benchmarkbot/action

@nflaig

nflaig commented Aug 17, 2026

Copy link
Copy Markdown
Member Author

upstream spec change has been merged 馃槃

@nflaig
nflaig merged commit 5e3aa1b into unstable Aug 17, 2026
20 of 23 checks passed
@nflaig
nflaig deleted the nflaig/progressive-payload-attestation-pool-response branch August 17, 2026 19:05
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Lodestar Team Coordination Aug 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants