Skip to content

refactor: use builder boost factor for gloas block production - #9807

Merged
matthewkeil merged 16 commits into
unstablefrom
nflaig/gloas-builder-boost-factor
Aug 13, 2026
Merged

matthewkeil merged 16 commits into
unstablefrom
nflaig/gloas-builder-boost-factor

Conversation

@nflaig

@nflaig nflaig commented Aug 11, 2026 •

Copy link
Copy Markdown
Member

Follow-up to #9595 that removes Lodestar-specific selection modes from Gloas block production and uses builder_boost_factor as the selection input

ethereum/beacon-APIs#630 will move produceBlockV4 to a BuilderConfig request body and add builder-API bid routing. That wire-format change is not implemented here. This keeps builder_boost_factor as the global Gloas selection control so the same preference can apply to p2p and builder-API bids once that flow is implemented.

  • remove the non-standard builder_selection parameter from produceBlockV4
  • keep --builder.selection as validator client aliases for builder_boost_factor
  • treat the legacy executiononly option as executionalways post-Gloas so a viable builder bid can prevent a missed proposal
  • keep builder bids available as fallback unless the circuit breaker is active
  • keep strict fee recipient checks for local payloads while relying on proposer-preferences validation for external bids
  • persist produced Gloas blocks with the selected engine or builder source
  • update the operator docs and focused block production tests

This PR was written primarily by Codex.

@github-actions

github-actions Bot commented Aug 11, 2026 •

Copy link
Copy Markdown
Contributor

Performance Report

鉁旓笍 no performance regression detected

Full benchmark results
Benchmark suite Current: d214ca9 Previous: ca6d994 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 912.25 us/op 884.32 us/op 1.03
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.246 us/op 39.851 us/op 0.96
BLS verify - blst 754.88 us/op 714.63 us/op 1.06
BLS verifyMultipleSignatures 3 - blst 1.3641 ms/op 1.3809 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst 2.1804 ms/op 2.1945 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst 6.8753 ms/op 6.9485 ms/op 0.99
BLS verifyMultipleSignatures 64 - blst 14.196 ms/op 13.904 ms/op 1.02
BLS verifyMultipleSignatures 128 - blst 25.953 ms/op 26.156 ms/op 0.99
BLS deserializing 10000 signatures 642.69 ms/op 652.32 ms/op 0.99
BLS deserializing 100000 signatures 6.4933 s/op 6.5183 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 773.95 us/op 778.32 us/op 0.99
BLS verifyMultipleSignatures - same message - 8 - blst 943.36 us/op 909.30 us/op 1.04
BLS verifyMultipleSignatures - same message - 32 - blst 1.5544 ms/op 1.5906 ms/op 0.98
BLS verifyMultipleSignatures - same message - 64 - blst 2.4123 ms/op 2.4610 ms/op 0.98
BLS verifyMultipleSignatures - same message - 128 - blst 4.1106 ms/op 4.1627 ms/op 0.99
BLS aggregatePubkeys 32 - blst 17.846 us/op 18.032 us/op 0.99
BLS aggregatePubkeys 128 - blst 63.825 us/op 64.419 us/op 0.99
getSlashingsAndExits - default max 51.027 us/op 47.227 us/op 1.08
getSlashingsAndExits - 2k 361.23 us/op 368.30 us/op 0.98
proposeBlockBody type=full, size=empty 704.60 us/op 737.09 us/op 0.96
isKnown best case - 1 super set check 178.00 ns/op 186.00 ns/op 0.96
isKnown normal case - 2 super set checks 175.00 ns/op 166.00 ns/op 1.05
isKnown worse case - 16 super set checks 175.00 ns/op 166.00 ns/op 1.05
validate api signedAggregateAndProof - struct 1.5468 ms/op 1.5711 ms/op 0.98
validate gossip signedAggregateAndProof - struct 1.5499 ms/op 1.5511 ms/op 1.00
batch validate gossip attestation - vc 640000 - chunk 32 107.51 us/op 110.47 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 64 96.123 us/op 99.789 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 128 93.008 us/op 93.249 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 256 87.555 us/op 89.182 us/op 0.98
bytes32 toHexString 292.00 ns/op 302.00 ns/op 0.97
bytes32 Buffer.toString(hex) 178.00 ns/op 178.00 ns/op 1.00
bytes32 Buffer.toString(hex) from Uint8Array 236.00 ns/op 243.00 ns/op 0.97
bytes32 Buffer.toString(hex) + 0x 175.00 ns/op 181.00 ns/op 0.97
Return object 10000 times 0.21710 ns/op 0.22180 ns/op 0.98
Throw Error 10000 times 3.3369 us/op 3.4129 us/op 0.98
toHex 100.58 ns/op 98.995 ns/op 1.02
Buffer.from 92.621 ns/op 92.497 ns/op 1.00
shared Buffer 61.293 ns/op 62.240 ns/op 0.98
fastMsgIdFn sha256 / 200 bytes 1.5190 us/op 1.5390 us/op 0.99
fastMsgIdFn h32 xxhash / 200 bytes 163.00 ns/op 156.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 200 bytes 219.00 ns/op 214.00 ns/op 1.02
fastMsgIdFn sha256 / 1000 bytes 4.8460 us/op 4.9110 us/op 0.99
fastMsgIdFn h32 xxhash / 1000 bytes 250.00 ns/op 255.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 1000 bytes 263.00 ns/op 261.00 ns/op 1.01
fastMsgIdFn sha256 / 10000 bytes 42.631 us/op 43.293 us/op 0.98
fastMsgIdFn h32 xxhash / 10000 bytes 1.2890 us/op 1.3150 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 838.00 ns/op 857.00 ns/op 0.98
send data - 1000 256B messages 3.8223 ms/op 4.5092 ms/op 0.85
send data - 1000 512B messages 5.2079 ms/op 5.4205 ms/op 0.96
send data - 1000 1024B messages 5.4368 ms/op 5.6715 ms/op 0.96
send data - 1000 1200B messages 6.3133 ms/op 6.3144 ms/op 1.00
send data - 1000 2048B messages 17.829 ms/op 14.637 ms/op 1.22
send data - 1000 4096B messages 74.435 ms/op 118.46 ms/op 0.63
send data - 1000 16384B messages 419.08 ms/op 352.11 ms/op 1.19
send data - 1000 65536B messages 1.5857 s/op 1.3849 s/op 1.14
enrSubnets - fastDeserialize 64 bits 770.00 ns/op 805.00 ns/op 0.96
enrSubnets - ssz BitVector 64 bits 272.00 ns/op 282.00 ns/op 0.96
enrSubnets - fastDeserialize 4 bits 104.00 ns/op 105.00 ns/op 0.99
enrSubnets - ssz BitVector 4 bits 268.00 ns/op 277.00 ns/op 0.97
prioritizePeers score -10:0 att 32-0.1 sync 2-0 204.96 us/op 255.59 us/op 0.80
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 232.22 us/op 249.38 us/op 0.93
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 341.80 us/op 362.65 us/op 0.94
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 604.65 us/op 629.61 us/op 0.96
prioritizePeers score 0:0 att 64-1 sync 4-1 704.55 us/op 717.40 us/op 0.98
array of 16000 items push then shift 1.3381 us/op 1.3374 us/op 1.00
LinkedList of 16000 items push then shift 7.4120 ns/op 7.7590 ns/op 0.96
array of 16000 items push then pop 74.560 ns/op 74.450 ns/op 1.00
LinkedList of 16000 items push then pop 6.1880 ns/op 6.2170 ns/op 1.00
array of 24000 items push then shift 1.9821 us/op 1.9705 us/op 1.01
LinkedList of 24000 items push then shift 7.2380 ns/op 6.9130 ns/op 1.05
array of 24000 items push then pop 106.92 ns/op 104.89 ns/op 1.02
LinkedList of 24000 items push then pop 6.2540 ns/op 6.9380 ns/op 0.90
intersect bitArray bitLen 8 4.0890 ns/op 4.0010 ns/op 1.02
intersect array and set length 8 30.305 ns/op 30.663 ns/op 0.99
intersect bitArray bitLen 128 24.192 ns/op 24.285 ns/op 1.00
intersect array and set length 128 511.21 ns/op 507.40 ns/op 1.01
bitArray.getTrueBitIndexes() bitLen 128 960.00 ns/op 931.00 ns/op 1.03
bitArray.getTrueBitIndexes() bitLen 248 1.7350 us/op 1.7000 us/op 1.02
bitArray.getTrueBitIndexes() bitLen 512 3.7230 us/op 3.5660 us/op 1.04
Full columns - reconstruct all 6 blobs 133.77 us/op 179.84 us/op 0.74
Full columns - reconstruct half of the blobs out of 6 95.440 us/op 96.159 us/op 0.99
Full columns - reconstruct single blob out of 6 36.769 us/op 35.819 us/op 1.03
Half columns - reconstruct all 6 blobs 401.56 ms/op 404.82 ms/op 0.99
Half columns - reconstruct half of the blobs out of 6 200.02 ms/op 202.88 ms/op 0.99
Half columns - reconstruct single blob out of 6 71.729 ms/op 75.686 ms/op 0.95
Set add up to 64 items then delete first 1.6764 us/op 1.6996 us/op 0.99
OrderedSet add up to 64 items then delete first 2.5605 us/op 2.5808 us/op 0.99
Set add up to 64 items then delete last 1.8821 us/op 1.8914 us/op 1.00
OrderedSet add up to 64 items then delete last 2.8136 us/op 2.8513 us/op 0.99
Set add up to 64 items then delete middle 1.9010 us/op 1.9067 us/op 1.00
OrderedSet add up to 64 items then delete middle 4.3226 us/op 4.3639 us/op 0.99
Set add up to 128 items then delete first 4.1516 us/op 3.8927 us/op 1.07
OrderedSet add up to 128 items then delete first 5.7858 us/op 5.8651 us/op 0.99
Set add up to 128 items then delete last 3.5991 us/op 3.6487 us/op 0.99
OrderedSet add up to 128 items then delete last 5.4427 us/op 5.5216 us/op 0.99
Set add up to 128 items then delete middle 3.6298 us/op 3.6863 us/op 0.98
OrderedSet add up to 128 items then delete middle 11.273 us/op 11.925 us/op 0.95
Set add up to 256 items then delete first 8.3008 us/op 7.4976 us/op 1.11
OrderedSet add up to 256 items then delete first 11.765 us/op 12.159 us/op 0.97
Set add up to 256 items then delete last 7.1210 us/op 7.3244 us/op 0.97
OrderedSet add up to 256 items then delete last 11.102 us/op 11.522 us/op 0.96
Set add up to 256 items then delete middle 7.4247 us/op 7.2774 us/op 1.02
OrderedSet add up to 256 items then delete middle 34.833 us/op 35.897 us/op 0.97
runFastConfirmationRules vc:100000 bc:96 eq:0 4.5942 ms/op 4.8007 ms/op 0.96
runFastConfirmationRules vc:600000 bc:96 eq:0 35.599 ms/op 36.765 ms/op 0.97
runFastConfirmationRules vc:1000000 bc:96 eq:0 59.078 ms/op 62.758 ms/op 0.94
runFastConfirmationRules vc:600000 bc:320 eq:0 35.763 ms/op 38.058 ms/op 0.94
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.1601 s/op 1.2887 s/op 0.90
pass gossip attestations to forkchoice per slot 2.6861 ms/op 2.7186 ms/op 0.99
forkChoice updateHead vc 100000 bc 64 eq 0 431.37 us/op 432.43 us/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 0 2.5146 ms/op 2.4927 ms/op 1.01
forkChoice updateHead vc 1000000 bc 64 eq 0 4.2081 ms/op 4.1825 ms/op 1.01
forkChoice updateHead vc 600000 bc 320 eq 0 2.5259 ms/op 2.5648 ms/op 0.98
forkChoice updateHead vc 600000 bc 1200 eq 0 2.5759 ms/op 2.6256 ms/op 0.98
forkChoice updateHead vc 600000 bc 7200 eq 0 2.8827 ms/op 2.9571 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 1000 2.5308 ms/op 2.5284 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 10000 2.6116 ms/op 2.6288 ms/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 300000 7.0955 ms/op 7.2019 ms/op 0.99
computeDeltas 1400000 validators 0% inactive 12.505 ms/op 12.516 ms/op 1.00
computeDeltas 1400000 validators 10% inactive 11.777 ms/op 11.949 ms/op 0.99
computeDeltas 1400000 validators 20% inactive 11.154 ms/op 11.319 ms/op 0.99
computeDeltas 1400000 validators 50% inactive 9.2258 ms/op 9.1387 ms/op 1.01
computeDeltas 2100000 validators 0% inactive 18.872 ms/op 18.711 ms/op 1.01
computeDeltas 2100000 validators 10% inactive 17.794 ms/op 17.837 ms/op 1.00
computeDeltas 2100000 validators 20% inactive 16.838 ms/op 16.969 ms/op 0.99
computeDeltas 2100000 validators 50% inactive 11.172 ms/op 13.688 ms/op 0.82
altair processAttestation - 250000 vs - 7PWei normalcase 1.7021 ms/op 1.8313 ms/op 0.93
altair processAttestation - 250000 vs - 7PWei worstcase 2.6115 ms/op 2.5787 ms/op 1.01
altair processAttestation - setStatus - 1/6 committees join 101.92 us/op 101.81 us/op 1.00
altair processAttestation - setStatus - 1/3 committees join 203.44 us/op 205.98 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 295.26 us/op 285.62 us/op 1.03
altair processAttestation - setStatus - 2/3 committees join 380.76 us/op 383.63 us/op 0.99
altair processAttestation - setStatus - 4/5 committees join 521.00 us/op 536.05 us/op 0.97
altair processAttestation - setStatus - 100% committees join 614.07 us/op 635.73 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 3.1764 ms/op 3.4270 ms/op 0.93
altair processBlock - 250000 vs - 7PWei normalcase hashState 12.350 ms/op 15.890 ms/op 0.78
altair processBlock - 250000 vs - 7PWei worstcase 20.006 ms/op 21.855 ms/op 0.92
altair processBlock - 250000 vs - 7PWei worstcase hashState 39.709 ms/op 43.366 ms/op 0.92
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2917 ms/op 1.4281 ms/op 0.90
phase0 processBlock - 250000 vs - 7PWei worstcase 17.149 ms/op 18.172 ms/op 0.94
altair processEth1Data - 250000 vs - 7PWei normalcase 295.96 us/op 303.45 us/op 0.98
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.4080 us/op 3.6190 us/op 0.94
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.671 us/op 21.957 us/op 0.99
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 6.1660 us/op 5.9100 us/op 1.04
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 4.8810 us/op 3.7020 us/op 1.32
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 95.896 us/op 92.977 us/op 1.03
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3834 ms/op 1.4512 ms/op 0.95
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8367 ms/op 1.8656 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7997 ms/op 1.8716 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6165 ms/op 3.7002 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0827 ms/op 2.1076 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9211 ms/op 4.1530 ms/op 0.94
Tree 40 250000 create 307.50 ms/op 323.46 ms/op 0.95
Tree 40 250000 get(125000) 98.409 ns/op 98.411 ns/op 1.00
Tree 40 250000 set(125000) 1.0389 us/op 1.0478 us/op 0.99
Tree 40 250000 toArray() 9.2553 ms/op 12.790 ms/op 0.72
Tree 40 250000 iterate all - toArray() + loop 9.3898 ms/op 11.323 ms/op 0.83
Tree 40 250000 iterate all - get(i) 34.935 ms/op 40.574 ms/op 0.86
Array 250000 create 2.2320 ms/op 2.5129 ms/op 0.89
Array 250000 clone - spread 712.06 us/op 750.56 us/op 0.95
Array 250000 get(125000) 0.29600 ns/op 0.30800 ns/op 0.96
Array 250000 set(125000) 0.29600 ns/op 0.30700 ns/op 0.96
Array 250000 iterate all - loop 57.032 us/op 58.959 us/op 0.97
phase0 afterProcessEpoch - 250000 vs - 7PWei 51.824 ms/op 54.336 ms/op 0.95
Array.fill - length 1000000 3.9149 ms/op 3.9513 ms/op 0.99
Array push - length 1000000 12.581 ms/op 14.709 ms/op 0.86
Array.get 0.21026 ns/op 0.20891 ns/op 1.01
Uint8Array.get 0.24729 ns/op 0.25106 ns/op 0.98
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.149 ms/op 16.977 ms/op 0.95
altair processEpoch - mainnet_e81889 257.23 ms/op 273.46 ms/op 0.94
mainnet_e81889 - altair beforeProcessEpoch 15.366 ms/op 21.461 ms/op 0.72
mainnet_e81889 - altair processJustificationAndFinalization 5.1160 us/op 6.0630 us/op 0.84
mainnet_e81889 - altair processInactivityUpdates 3.7394 ms/op 3.6123 ms/op 1.04
mainnet_e81889 - altair processRewardsAndPenalties 17.261 ms/op 20.989 ms/op 0.82
mainnet_e81889 - altair processRegistryUpdates 587.00 ns/op 597.00 ns/op 0.98
mainnet_e81889 - altair processSlashings 145.00 ns/op 155.00 ns/op 0.94
mainnet_e81889 - altair processEth1DataReset 144.00 ns/op 157.00 ns/op 0.92
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6230 ms/op 1.7213 ms/op 0.94
mainnet_e81889 - altair processSlashingsReset 788.00 ns/op 732.00 ns/op 1.08
mainnet_e81889 - altair processRandaoMixesReset 1.0520 us/op 1.3010 us/op 0.81
mainnet_e81889 - altair processHistoricalRootsUpdate 145.00 ns/op 181.00 ns/op 0.80
mainnet_e81889 - altair processParticipationFlagUpdates 455.00 ns/op 468.00 ns/op 0.97
mainnet_e81889 - altair processSyncCommitteeUpdates 122.00 ns/op 130.00 ns/op 0.94
mainnet_e81889 - altair afterProcessEpoch 41.348 ms/op 43.006 ms/op 0.96
capella processEpoch - mainnet_e217614 734.26 ms/op 801.44 ms/op 0.92
mainnet_e217614 - capella beforeProcessEpoch 67.457 ms/op 58.030 ms/op 1.16
mainnet_e217614 - capella processJustificationAndFinalization 5.6910 us/op 6.5290 us/op 0.87
mainnet_e217614 - capella processInactivityUpdates 10.939 ms/op 13.941 ms/op 0.78
mainnet_e217614 - capella processRewardsAndPenalties 87.037 ms/op 89.663 ms/op 0.97
mainnet_e217614 - capella processRegistryUpdates 4.6300 us/op 4.5100 us/op 1.03
mainnet_e217614 - capella processSlashings 157.00 ns/op 153.00 ns/op 1.03
mainnet_e217614 - capella processEth1DataReset 154.00 ns/op 145.00 ns/op 1.06
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.6864 ms/op 5.8310 ms/op 0.98
mainnet_e217614 - capella processSlashingsReset 709.00 ns/op 715.00 ns/op 0.99
mainnet_e217614 - capella processRandaoMixesReset 1.0710 us/op 1.3300 us/op 0.81
mainnet_e217614 - capella processHistoricalRootsUpdate 157.00 ns/op 151.00 ns/op 1.04
mainnet_e217614 - capella processParticipationFlagUpdates 467.00 ns/op 468.00 ns/op 1.00
mainnet_e217614 - capella afterProcessEpoch 110.00 ms/op 111.94 ms/op 0.98
phase0 processEpoch - mainnet_e58758 274.73 ms/op 294.05 ms/op 0.93
mainnet_e58758 - phase0 beforeProcessEpoch 57.112 ms/op 63.622 ms/op 0.90
mainnet_e58758 - phase0 processJustificationAndFinalization 5.5400 us/op 6.4470 us/op 0.86
mainnet_e58758 - phase0 processRewardsAndPenalties 15.103 ms/op 55.613 ms/op 0.27
mainnet_e58758 - phase0 processRegistryUpdates 2.3200 us/op 2.3230 us/op 1.00
mainnet_e58758 - phase0 processSlashings 150.00 ns/op 155.00 ns/op 0.97
mainnet_e58758 - phase0 processEth1DataReset 148.00 ns/op 147.00 ns/op 1.01
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 839.83 us/op 1.1654 ms/op 0.72
mainnet_e58758 - phase0 processSlashingsReset 845.00 ns/op 891.00 ns/op 0.95
mainnet_e58758 - phase0 processRandaoMixesReset 1.1100 us/op 1.1540 us/op 0.96
mainnet_e58758 - phase0 processHistoricalRootsUpdate 239.00 ns/op 150.00 ns/op 1.59
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.2200 us/op 1.1880 us/op 1.03
mainnet_e58758 - phase0 afterProcessEpoch 33.066 ms/op 34.677 ms/op 0.95
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0324 ms/op 1.0367 ms/op 1.00
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6677 ms/op 1.6672 ms/op 1.00
altair processInactivityUpdates - 250000 normalcase 10.796 ms/op 10.828 ms/op 1.00
altair processInactivityUpdates - 250000 worstcase 10.834 ms/op 11.151 ms/op 0.97
phase0 processRegistryUpdates - 250000 normalcase 2.5070 us/op 2.4610 us/op 1.02
phase0 processRegistryUpdates - 250000 badcase_full_deposits 150.30 us/op 145.58 us/op 1.03
phase0 processRegistryUpdates - 250000 worstcase 0.5 51.491 ms/op 64.594 ms/op 0.80
altair processRewardsAndPenalties - 250000 normalcase 13.181 ms/op 13.136 ms/op 1.00
altair processRewardsAndPenalties - 250000 worstcase 12.638 ms/op 13.015 ms/op 0.97
phase0 getAttestationDeltas - 250000 normalcase 5.6098 ms/op 5.5749 ms/op 1.01
phase0 getAttestationDeltas - 250000 worstcase 5.6987 ms/op 5.6101 ms/op 1.02
phase0 processSlashings - 250000 worstcase 62.061 us/op 61.968 us/op 1.00
altair processSyncCommitteeUpdates - 250000 10.104 ms/op 10.272 ms/op 0.98
BeaconState.hashTreeRoot - No change 181.00 ns/op 180.00 ns/op 1.01
BeaconState.hashTreeRoot - 1 full validator 57.952 us/op 58.363 us/op 0.99
BeaconState.hashTreeRoot - 32 full validator 671.72 us/op 672.79 us/op 1.00
BeaconState.hashTreeRoot - 512 full validator 6.1590 ms/op 6.0500 ms/op 1.02
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 71.696 us/op 71.633 us/op 1.00
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0240 ms/op 1.0583 ms/op 0.97
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.647 ms/op 12.181 ms/op 1.04
BeaconState.hashTreeRoot - 1 balances 57.179 us/op 57.656 us/op 0.99
BeaconState.hashTreeRoot - 32 balances 601.08 us/op 545.02 us/op 1.10
BeaconState.hashTreeRoot - 512 balances 4.5680 ms/op 4.6170 ms/op 0.99
BeaconState.hashTreeRoot - 250000 balances 110.71 ms/op 97.115 ms/op 1.14
aggregationBits - 2048 els - zipIndexesInBitList 20.183 us/op 19.112 us/op 1.06
regular array get 100000 times 23.281 us/op 22.939 us/op 1.01
wrappedArray get 100000 times 23.402 us/op 22.961 us/op 1.02
arrayWithProxy get 100000 times 10.094 ms/op 10.591 ms/op 0.95
ssz.Root.equals 22.010 ns/op 21.707 ns/op 1.01
byteArrayEquals 21.777 ns/op 21.456 ns/op 1.01
Buffer.compare 9.0600 ns/op 8.8990 ns/op 1.02
processSlot - 1 slots 11.151 us/op 8.7490 us/op 1.27
processSlot - 32 slots 2.1636 ms/op 1.8921 ms/op 1.14
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.1352 ms/op 4.0178 ms/op 0.78
getCommitteeAssignments - req 1 vs - 250000 vc 1.6778 ms/op 1.7029 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 3.4704 ms/op 3.4475 ms/op 1.01
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7192 ms/op 3.7066 ms/op 1.00
findModifiedValidators - 10000 modified validators 811.96 ms/op 759.00 ms/op 1.07
findModifiedValidators - 1000 modified validators 569.30 ms/op 821.90 ms/op 0.69
findModifiedValidators - 100 modified validators 383.26 ms/op 391.90 ms/op 0.98
findModifiedValidators - 10 modified validators 348.26 ms/op 268.58 ms/op 1.30
findModifiedValidators - 1 modified validators 225.89 ms/op 206.34 ms/op 1.09
findModifiedValidators - no difference 214.85 ms/op 203.57 ms/op 1.06
migrate state 1500000 validators, 3400 modified, 2000 new 2.9225 s/op 3.1647 s/op 0.92
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.7500 ns/op 3.8000 ns/op 0.99
state getBlockRootAtSlot - 250000 vs - 7PWei 295.17 ns/op 304.57 ns/op 0.97
computeProposerIndex 100000 validators 1.3580 ms/op 1.4168 ms/op 0.96
getNextSyncCommitteeIndices 1000 validators 2.9107 ms/op 2.9926 ms/op 0.97
getNextSyncCommitteeIndices 10000 validators 25.578 ms/op 26.158 ms/op 0.98
getNextSyncCommitteeIndices 100000 validators 88.117 ms/op 89.646 ms/op 0.98
computeProposers - vc 250000 559.49 us/op 567.80 us/op 0.99
computeEpochShuffling - vc 250000 39.943 ms/op 40.375 ms/op 0.99
getNextSyncCommittee - vc 250000 9.5990 ms/op 9.7906 ms/op 0.98
nodejs block root to RootHex using toHex 106.28 ns/op 98.917 ns/op 1.07
nodejs block root to RootHex using toRootHex 64.075 ns/op 64.177 ns/op 1.00
nodejs fromHex(blob) 813.92 us/op 821.35 us/op 0.99
nodejs fromHexInto(blob) 637.22 us/op 657.20 us/op 0.97
nodejs block root to RootHex using the deprecated toHexString 561.67 ns/op 538.69 ns/op 1.04
nodejs byteArrayEquals 32 bytes (block root) 26.281 ns/op 26.791 ns/op 0.98
nodejs byteArrayEquals 48 bytes (pubkey) 38.767 ns/op 38.807 ns/op 1.00
nodejs byteArrayEquals 96 bytes (signature) 35.895 ns/op 36.716 ns/op 0.98
nodejs byteArrayEquals 1024 bytes 44.178 ns/op 44.455 ns/op 0.99
nodejs byteArrayEquals 131072 bytes (blob) 1.8157 us/op 1.8341 us/op 0.99
browser block root to RootHex using toHex 149.61 ns/op 150.08 ns/op 1.00
browser block root to RootHex using toRootHex 132.82 ns/op 134.72 ns/op 0.99
browser fromHex(blob) 1.6219 ms/op 1.6334 ms/op 0.99
browser fromHexInto(blob) 637.17 us/op 680.96 us/op 0.94
browser block root to RootHex using the deprecated toHexString 375.47 ns/op 418.39 ns/op 0.90
browser byteArrayEquals 32 bytes (block root) 28.147 ns/op 28.975 ns/op 0.97
browser byteArrayEquals 48 bytes (pubkey) 39.764 ns/op 45.103 ns/op 0.88
browser byteArrayEquals 96 bytes (signature) 74.880 ns/op 88.995 ns/op 0.84
browser byteArrayEquals 1024 bytes 759.57 ns/op 828.01 ns/op 0.92
browser byteArrayEquals 131072 bytes (blob) 95.301 us/op 103.69 us/op 0.92

by benchmarkbot/action

Comment thread packages/beacon-node/src/api/impl/validator/index.ts
Comment on lines +899 to +901
// Keep a builder bid as fallback unless the circuit breaker is active
const builderBid = circuitBreakerActive
? null

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.

unsure if we should still pick a builder bid even if the circuit breaker is active in case local fails, it's not very likely that local payload production fails but having bid as a fallback could be good still, on the other hand, it could also be that builders are attacking the network with large payloads that are slow to process or equivocations, or other attacks, so not selecting builder bids at all might be a safety feature

@nflaig
nflaig marked this pull request as ready for review August 11, 2026 16:51
@nflaig
nflaig requested a review from a team as a code owner August 11, 2026 16:51

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

馃挕 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bc251e502e

鈩癸笍 About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 馃憤.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/beacon-node/src/chain/produceBlock/produceBlockBody.ts Outdated
Comment thread packages/beacon-node/src/chain/produceBlock/produceBlockBody.ts
@matthewkeil
matthewkeil self-requested a review August 12, 2026 16:35
Comment thread packages/api/src/beacon/routes/validator.ts
Comment thread packages/validator/src/services/validatorStore.ts Outdated
? null
: chain.executionPayloadBidPool.getBestBid(slot, bidParentBlockHash, parentBlockRootHex);
// Keep a builder bid as fallback unless the circuit breaker is active
const builderBid = circuitBreakerActive

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

could easily keep the executiononly and skip the proposal here instead of mucking with the min_bid, right?

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.

yes, if we wanna keep executiononly, but I wanna get rid of that

Comment thread packages/beacon-node/src/chain/produceBlock/produceBlockBody.ts
Co-authored-by: Matthew Keil <github@mail.matthewkeil.com>
Comment thread packages/validator/src/services/validatorStore.ts Outdated
@matthewkeil
matthewkeil enabled auto-merge (squash) August 13, 2026 12:24
@matthewkeil
matthewkeil merged commit 0bcaaae into unstable Aug 13, 2026
19 checks passed
@matthewkeil
matthewkeil deleted the nflaig/gloas-builder-boost-factor branch August 13, 2026 12:40
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Lodestar Team Coordination Aug 13, 2026
nflaig added a commit that referenced this pull request Aug 13, 2026
Adapt the proposer equivocation self-build to the produceBlockV4 API after
builder selection was replaced by the builder boost factor (#9807), and keep
the deathstar fork banner instead of the polar bear banner (#9742).
@wemeetagain

Copy link
Copy Markdown
Member

馃帀 This PR is included in v1.47.0 馃帀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants