Skip to content

feat: support payload reorgs in chain reorg events - #10299

Closed
nflaig wants to merge 2 commits into
unstablefrom
nflaig/chain-reorg-execution-hashes
Closed

nflaig wants to merge 2 commits into
unstablefrom
nflaig/chain-reorg-execution-hashes

Conversation

@nflaig

@nflaig nflaig commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

Motivation

Support Gloas payload reorgs and add execution hashes to chain_reorg events per ethereum/beacon-APIs#585.

Description

  • return old_head_hash and new_head_hash from the fork choice heads
  • emit on payload reorgs even when the beacon head root stays the same, with depth 0 when no beacon blocks are displaced
  • handle reorgs in the shared head-update path, excluding normal payload arrival and chain extension
  • update SSE fixtures and skip the outdated alpha.2 example until the spec release includes the new fields

Validated with regression tests, API spec and SSE tests, lint, and API/beacon-node type checks.

@nflaig nflaig changed the title feat: add execution hashes to chain reorg events feat: support payload reorgs in chain reorg events Oct 7, 2026
@github-actions

github-actions Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Performance Report

馃殌馃殌 Significant benchmark improvement detected

Benchmark suite Current: 878b6c7 Previous: ba0411b Ratio
altair processAttestation - 250000 vs - 7PWei normalcase 4.8491 ms/op 15.133 ms/op 0.32
altair processAttestation - 250000 vs - 7PWei worstcase 6.8506 ms/op 22.223 ms/op 0.31
Full benchmark results
Benchmark suite Current: 878b6c7 Previous: ba0411b Ratio
getPubkeys - native cache - req 1000 vs - 250000 vc 431.11 us/op 456.49 us/op 0.94
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 40.428 us/op 32.930 us/op 1.23
BLS verify - blst 901.84 us/op 740.33 us/op 1.22
BLS verifyMultipleSignatures 3 - blst 1.4068 ms/op 1.1983 ms/op 1.17
BLS verifyMultipleSignatures 8 - blst 2.2759 ms/op 1.8813 ms/op 1.21
BLS verifyMultipleSignatures 32 - blst 7.4839 ms/op 6.0829 ms/op 1.23
BLS verifyMultipleSignatures 64 - blst 14.438 ms/op 11.347 ms/op 1.27
BLS verifyMultipleSignatures 128 - blst 27.485 ms/op 21.815 ms/op 1.26
BLS deserializing 10000 signatures 643.61 ms/op 732.05 ms/op 0.88
BLS deserializing 100000 signatures 6.4397 s/op 5.1381 s/op 1.25
BLS verifyMultipleSignatures - same message - 3 - blst 964.77 us/op 776.62 us/op 1.24
BLS verifyMultipleSignatures - same message - 8 - blst 1.0909 ms/op 875.43 us/op 1.25
BLS verifyMultipleSignatures - same message - 32 - blst 1.6944 ms/op 1.3305 ms/op 1.27
BLS verifyMultipleSignatures - same message - 64 - blst 2.5044 ms/op 1.9428 ms/op 1.29
BLS verifyMultipleSignatures - same message - 128 - blst 4.1642 ms/op 3.3342 ms/op 1.25
BLS aggregatePubkeys 32 - blst 19.580 us/op 14.457 us/op 1.35
BLS aggregatePubkeys 128 - blst 71.064 us/op 52.152 us/op 1.36
getSlashingsAndExits - default max 45.401 us/op 41.423 us/op 1.10
getSlashingsAndExits - 2k 352.00 us/op 430.08 us/op 0.82
proposeBlockBody type=full, size=empty 698.00 us/op 731.87 us/op 0.95
isKnown best case - 1 super set check 196.00 ns/op 124.00 ns/op 1.58
isKnown normal case - 2 super set checks 158.00 ns/op 122.00 ns/op 1.30
isKnown worse case - 16 super set checks 157.00 ns/op 122.00 ns/op 1.29
validate api signedAggregateAndProof - struct 1.5523 ms/op 1.2326 ms/op 1.26
validate gossip signedAggregateAndProof - struct 1.5524 ms/op 1.2369 ms/op 1.26
batch validate gossip attestation - vc 640000 - chunk 32 125.10 us/op 104.89 us/op 1.19
batch validate gossip attestation - vc 640000 - chunk 64 105.81 us/op 91.039 us/op 1.16
batch validate gossip attestation - vc 640000 - chunk 128 95.498 us/op 83.096 us/op 1.15
batch validate gossip attestation - vc 640000 - chunk 256 98.144 us/op 95.223 us/op 1.03
bytes32 toHexString 290.00 ns/op 229.00 ns/op 1.27
bytes32 Buffer.toString(hex) 166.00 ns/op 133.00 ns/op 1.25
bytes32 Buffer.toString(hex) from Uint8Array 230.00 ns/op 199.00 ns/op 1.16
bytes32 Buffer.toString(hex) + 0x 167.00 ns/op 134.00 ns/op 1.25
Return object 10000 times 0.21570 ns/op 0.20080 ns/op 1.07
Throw Error 10000 times 3.3570 us/op 2.8078 us/op 1.20
toHex 99.035 ns/op 70.166 ns/op 1.41
Buffer.from 91.016 ns/op 64.686 ns/op 1.41
shared Buffer 61.910 ns/op 42.672 ns/op 1.45
fastMsgIdFn sha256 / 200 bytes 1.4900 us/op 1.2010 us/op 1.24
fastMsgIdFn h32 xxhash / 200 bytes 153.00 ns/op 120.00 ns/op 1.27
fastMsgIdFn h64 xxhash / 200 bytes 187.00 ns/op 168.00 ns/op 1.11
fastMsgIdFn sha256 / 1000 bytes 4.7850 us/op 3.8100 us/op 1.26
fastMsgIdFn h32 xxhash / 1000 bytes 243.00 ns/op 185.00 ns/op 1.31
fastMsgIdFn h64 xxhash / 1000 bytes 237.00 ns/op 202.00 ns/op 1.17
fastMsgIdFn sha256 / 10000 bytes 42.193 us/op 33.420 us/op 1.26
fastMsgIdFn h32 xxhash / 10000 bytes 1.2830 us/op 941.00 ns/op 1.36
fastMsgIdFn h64 xxhash / 10000 bytes 821.00 ns/op 593.00 ns/op 1.38
send data - 1000 256B messages 4.2133 ms/op 4.7356 ms/op 0.89
send data - 1000 512B messages 5.2177 ms/op 5.7485 ms/op 0.91
send data - 1000 1024B messages 5.3057 ms/op 6.0220 ms/op 0.88
send data - 1000 1200B messages 6.2577 ms/op 7.3131 ms/op 0.86
send data - 1000 2048B messages 13.727 ms/op 10.441 ms/op 1.31
send data - 1000 4096B messages 38.518 ms/op 26.523 ms/op 1.45
send data - 1000 16384B messages 376.94 ms/op 314.87 ms/op 1.20
send data - 1000 65536B messages 2.0715 s/op 1.4810 s/op 1.40
enrSubnets - fastDeserialize 64 bits 759.00 ns/op 699.00 ns/op 1.09
enrSubnets - ssz BitVector 64 bits 261.00 ns/op 224.00 ns/op 1.17
enrSubnets - fastDeserialize 4 bits 100.00 ns/op 73.000 ns/op 1.37
enrSubnets - ssz BitVector 4 bits 268.00 ns/op 216.00 ns/op 1.24
prioritizePeers score -10:0 att 32-0.1 sync 2-0 204.92 us/op 175.15 us/op 1.17
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 230.66 us/op 198.04 us/op 1.16
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 337.39 us/op 281.03 us/op 1.20
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 595.25 us/op 507.57 us/op 1.17
prioritizePeers score 0:0 att 64-1 sync 4-1 695.52 us/op 593.93 us/op 1.17
archive index / 1 slot / archive root index lookup 17.396 us/op 43.800 us/op 0.40
archive index / 1 slot / archive block lookup, decode and hash 2.7737 ms/op 2.5893 ms/op 1.07
archive index / 1 slots / 1 columns / legacy 21.938 us/op 49.076 us/op 0.45
archive index / 1 slots / 1 columns / flat files 144.54 us/op 267.55 us/op 0.54
archive index / 1 slots / 8 columns / legacy 289.38 us/op 163.94 us/op 1.77
archive index / 1 slots / 8 columns / flat files 392.79 us/op 573.20 us/op 0.69
archive index / 1 slots / 128 columns / legacy 6.9139 ms/op 5.7936 ms/op 1.19
archive index / 1 slots / 128 columns / flat files 13.328 ms/op 8.8080 ms/op 1.51
archive index / 8 slots / 1 columns / legacy 173.40 us/op 340.01 us/op 0.51
archive index / 8 slots / 1 columns / flat files 1.2873 ms/op 2.0952 ms/op 0.61
archive index / 8 slots / 8 columns / legacy 6.1089 ms/op 814.19 us/op 7.50
archive index / 8 slots / 8 columns / flat files 3.3067 ms/op 13.766 ms/op 0.24
archive index / 8 slots / 128 columns / legacy 112.14 ms/op 78.278 ms/op 1.43
archive index / 8 slots / 128 columns / flat files 180.06 ms/op 199.60 ms/op 0.90
head state / 1 slot / archive root index lookup 17.053 us/op 42.717 us/op 0.40
head state / 1 slot / archive block lookup, decode and hash 2.7978 ms/op 2.6185 ms/op 1.07
head state / 1 slots / 1 columns / legacy 21.440 us/op 39.865 us/op 0.54
head state / 1 slots / 1 columns / flat files 126.54 us/op 250.39 us/op 0.51
head state / 1 slots / 8 columns / legacy 76.573 us/op 105.61 us/op 0.73
head state / 1 slots / 8 columns / flat files 339.84 us/op 335.96 us/op 1.01
head state / 1 slots / 128 columns / legacy 7.8443 ms/op 10.233 ms/op 0.77
head state / 1 slots / 128 columns / flat files 4.6576 ms/op 5.4469 ms/op 0.86
head state / 8 slots / 1 columns / legacy 182.41 us/op 151.24 us/op 1.21
head state / 8 slots / 1 columns / flat files 1.0226 ms/op 1.8248 ms/op 0.56
head state / 8 slots / 8 columns / legacy 736.85 us/op 731.96 us/op 1.01
head state / 8 slots / 8 columns / flat files 3.0067 ms/op 4.1936 ms/op 0.72
head state / 8 slots / 128 columns / legacy 69.743 ms/op 53.082 ms/op 1.31
head state / 8 slots / 128 columns / flat files 214.25 ms/op 185.22 ms/op 1.16
array of 16000 items push then shift 1.3252 us/op 809.00 ns/op 1.64
LinkedList of 16000 items push then shift 6.8810 ns/op 5.4600 ns/op 1.26
array of 16000 items push then pop 81.077 ns/op 56.370 ns/op 1.44
LinkedList of 16000 items push then pop 6.0730 ns/op 5.1630 ns/op 1.18
array of 24000 items push then shift 1.9526 us/op 1.2107 us/op 1.61
LinkedList of 24000 items push then shift 6.6170 ns/op 6.2700 ns/op 1.06
array of 24000 items push then pop 112.84 ns/op 105.33 ns/op 1.07
LinkedList of 24000 items push then pop 6.0470 ns/op 5.7070 ns/op 1.06
intersect bitArray bitLen 8 3.8740 ns/op 2.5240 ns/op 1.53
intersect array and set length 8 29.992 ns/op 24.152 ns/op 1.24
intersect bitArray bitLen 128 23.391 ns/op 16.806 ns/op 1.39
intersect array and set length 128 503.88 ns/op 513.88 ns/op 0.98
bitArray.getTrueBitIndexes() bitLen 128 922.00 ns/op 903.00 ns/op 1.02
bitArray.getTrueBitIndexes() bitLen 248 1.6790 us/op 1.5800 us/op 1.06
bitArray.getTrueBitIndexes() bitLen 512 3.5050 us/op 3.4340 us/op 1.02
Full columns - reconstruct all 6 blobs 137.59 us/op 173.10 us/op 0.79
Full columns - reconstruct half of the blobs out of 6 70.740 us/op 93.496 us/op 0.76
Full columns - reconstruct single blob out of 6 33.074 us/op 34.887 us/op 0.95
Half columns - reconstruct all 6 blobs 405.73 ms/op 315.37 ms/op 1.29
Half columns - reconstruct half of the blobs out of 6 199.00 ms/op 158.26 ms/op 1.26
Half columns - reconstruct single blob out of 6 71.843 ms/op 59.589 ms/op 1.21
Set add up to 64 items then delete first 1.6898 us/op 1.5022 us/op 1.12
OrderedSet add up to 64 items then delete first 2.5557 us/op 2.0391 us/op 1.25
Set add up to 64 items then delete last 1.8978 us/op 1.6464 us/op 1.15
OrderedSet add up to 64 items then delete last 2.9405 us/op 2.6532 us/op 1.11
Set add up to 64 items then delete middle 1.9413 us/op 1.6811 us/op 1.15
OrderedSet add up to 64 items then delete middle 4.4725 us/op 3.3227 us/op 1.35
Set add up to 128 items then delete first 3.7355 us/op 4.0821 us/op 0.92
OrderedSet add up to 128 items then delete first 5.5514 us/op 6.6362 us/op 0.84
Set add up to 128 items then delete last 3.7052 us/op 3.8127 us/op 0.97
OrderedSet add up to 128 items then delete last 5.6577 us/op 7.0107 us/op 0.81
Set add up to 128 items then delete middle 3.7410 us/op 4.1624 us/op 0.90
OrderedSet add up to 128 items then delete middle 11.722 us/op 9.7267 us/op 1.21
Set add up to 256 items then delete first 7.4189 us/op 7.6557 us/op 0.97
OrderedSet add up to 256 items then delete first 11.347 us/op 12.390 us/op 0.92
Set add up to 256 items then delete last 7.5017 us/op 7.2916 us/op 1.03
OrderedSet add up to 256 items then delete last 11.718 us/op 11.675 us/op 1.00
Set add up to 256 items then delete middle 7.3331 us/op 8.2604 us/op 0.89
OrderedSet add up to 256 items then delete middle 35.563 us/op 29.876 us/op 1.19
runFastConfirmationRules vc:100000 bc:96 eq:0 5.1458 ms/op 3.7109 ms/op 1.39
runFastConfirmationRules vc:600000 bc:96 eq:0 34.977 ms/op 30.776 ms/op 1.14
runFastConfirmationRules vc:1000000 bc:96 eq:0 60.974 ms/op 50.646 ms/op 1.20
runFastConfirmationRules vc:600000 bc:320 eq:0 34.971 ms/op 30.659 ms/op 1.14
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.1446 s/op 1.1010 s/op 1.04
pass gossip attestations to forkchoice per slot 4.6816 ms/op 3.8050 ms/op 1.23
forkChoice updateHead vc 100000 bc 64 eq 0 460.60 us/op 322.13 us/op 1.43
forkChoice updateHead vc 600000 bc 64 eq 0 2.7017 ms/op 1.8939 ms/op 1.43
forkChoice updateHead vc 1000000 bc 64 eq 0 4.5567 ms/op 3.2008 ms/op 1.42
forkChoice updateHead vc 600000 bc 320 eq 0 2.7437 ms/op 2.0465 ms/op 1.34
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8011 ms/op 1.9601 ms/op 1.43
forkChoice updateHead vc 600000 bc 7200 eq 0 3.8750 ms/op 3.7254 ms/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 1000 2.8192 ms/op 1.9508 ms/op 1.45
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9446 ms/op 2.0206 ms/op 1.46
forkChoice updateHead vc 600000 bc 64 eq 300000 7.2480 ms/op 5.4121 ms/op 1.34
forkChoice updateHead vc 600000 bc 64 eq 0 gloas boosted 3.4248 ms/op 2.5064 ms/op 1.37
computeDeltas 1400000 validators 0% inactive 13.993 ms/op 8.9844 ms/op 1.56
computeDeltas 1400000 validators 10% inactive 12.719 ms/op 8.4147 ms/op 1.51
computeDeltas 1400000 validators 20% inactive 12.015 ms/op 7.9616 ms/op 1.51
computeDeltas 1400000 validators 50% inactive 9.7567 ms/op 6.6310 ms/op 1.47
computeDeltas 2100000 validators 0% inactive 20.012 ms/op 13.307 ms/op 1.50
computeDeltas 2100000 validators 10% inactive 19.023 ms/op 10.863 ms/op 1.75
computeDeltas 2100000 validators 20% inactive 17.963 ms/op 10.286 ms/op 1.75
computeDeltas 2100000 validators 50% inactive 14.639 ms/op 9.2972 ms/op 1.57
altair processAttestation - 250000 vs - 7PWei normalcase 4.8491 ms/op 15.133 ms/op 0.32
altair processAttestation - 250000 vs - 7PWei worstcase 6.8506 ms/op 22.223 ms/op 0.31
altair processAttestation - setStatus - 1/6 committees join 95.417 us/op 78.584 us/op 1.21
altair processAttestation - setStatus - 1/3 committees join 188.38 us/op 156.07 us/op 1.21
altair processAttestation - setStatus - 1/2 committees join 256.31 us/op 215.25 us/op 1.19
altair processAttestation - setStatus - 2/3 committees join 342.27 us/op 274.70 us/op 1.25
altair processAttestation - setStatus - 4/5 committees join 486.41 us/op 390.19 us/op 1.25
altair processAttestation - setStatus - 100% committees join 563.86 us/op 464.14 us/op 1.21
altair processBlock - 250000 vs - 7PWei normalcase 8.3532 ms/op 14.613 ms/op 0.57
altair processBlock - 250000 vs - 7PWei normalcase hashState 25.877 ms/op 31.415 ms/op 0.82
altair processBlock - 250000 vs - 7PWei worstcase 31.108 ms/op 33.991 ms/op 0.92
altair processBlock - 250000 vs - 7PWei worstcase hashState 58.928 ms/op 64.213 ms/op 0.92
phase0 processBlock - 250000 vs - 7PWei normalcase 3.2856 ms/op 4.4433 ms/op 0.74
phase0 processBlock - 250000 vs - 7PWei worstcase 37.168 ms/op 39.916 ms/op 0.93
altair processEth1Data - 250000 vs - 7PWei normalcase 308.78 us/op 233.84 us/op 1.32
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.2800 us/op 5.9210 us/op 0.55
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.532 us/op 21.855 us/op 0.99
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.9570 us/op 8.9530 us/op 0.67
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 11.769 us/op 6.9370 us/op 1.70
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 93.413 us/op 88.516 us/op 1.06
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4419 ms/op 1.1454 ms/op 1.26
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8836 ms/op 1.5300 ms/op 1.23
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8881 ms/op 1.4690 ms/op 1.29
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.7314 ms/op 2.8972 ms/op 1.29
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.1786 ms/op 1.7142 ms/op 1.27
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.0579 ms/op 3.4531 ms/op 1.18
Tree 40 250000 create 318.63 ms/op 302.47 ms/op 1.05
Tree 40 250000 get(125000) 104.57 ns/op 70.423 ns/op 1.48
Tree 40 250000 set(125000) 1.0769 us/op 773.93 ns/op 1.39
Tree 40 250000 toArray() 9.9765 ms/op 16.590 ms/op 0.60
Tree 40 250000 iterate all - toArray() + loop 10.225 ms/op 16.708 ms/op 0.61
Tree 40 250000 iterate all - get(i) 36.843 ms/op 39.236 ms/op 0.94
Array 250000 create 2.3734 ms/op 1.4720 ms/op 1.61
Array 250000 clone - spread 760.03 us/op 369.76 us/op 2.06
Array 250000 get(125000) 0.29200 ns/op 0.26300 ns/op 1.11
Array 250000 set(125000) 0.29400 ns/op 0.26500 ns/op 1.11
Array 250000 iterate all - loop 57.399 us/op 48.327 us/op 1.19
phase0 afterProcessEpoch - 250000 vs - 7PWei 21.050 ms/op 17.762 ms/op 1.19
Array.fill - length 1000000 4.3568 ms/op 2.5817 ms/op 1.69
Array push - length 1000000 14.144 ms/op 10.350 ms/op 1.37
Array.get 0.20668 ns/op 0.19532 ns/op 1.06
Uint8Array.get 0.25747 ns/op 0.21240 ns/op 1.21
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.100 ms/op 17.281 ms/op 0.87
altair processEpoch - mainnet_e81889 180.27 ms/op 212.01 ms/op 0.85
mainnet_e81889 - altair beforeProcessEpoch 39.411 ms/op 17.310 ms/op 2.28
mainnet_e81889 - altair processJustificationAndFinalization 4.4200 us/op 4.4950 us/op 0.98
mainnet_e81889 - altair processInactivityUpdates 3.6587 ms/op 2.9749 ms/op 1.23
mainnet_e81889 - altair processRewardsAndPenalties 17.550 ms/op 14.976 ms/op 1.17
mainnet_e81889 - altair processRegistryUpdates 556.00 ns/op 442.00 ns/op 1.26
mainnet_e81889 - altair processSlashings 140.00 ns/op 110.00 ns/op 1.27
mainnet_e81889 - altair processEth1DataReset 138.00 ns/op 106.00 ns/op 1.30
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7214 ms/op 966.32 us/op 1.78
mainnet_e81889 - altair processSlashingsReset 683.00 ns/op 568.00 ns/op 1.20
mainnet_e81889 - altair processRandaoMixesReset 893.00 ns/op 751.00 ns/op 1.19
mainnet_e81889 - altair processHistoricalRootsUpdate 139.00 ns/op 110.00 ns/op 1.26
mainnet_e81889 - altair processParticipationFlagUpdates 449.00 ns/op 346.00 ns/op 1.30
mainnet_e81889 - altair processSyncCommitteeUpdates 110.00 ns/op 85.000 ns/op 1.29
mainnet_e81889 - altair afterProcessEpoch 22.042 ms/op 18.532 ms/op 1.19
capella processEpoch - mainnet_e217614 565.49 ms/op 698.28 ms/op 0.81
mainnet_e217614 - capella beforeProcessEpoch 66.232 ms/op 63.306 ms/op 1.05
mainnet_e217614 - capella processJustificationAndFinalization 4.4380 us/op 4.9000 us/op 0.91
mainnet_e217614 - capella processInactivityUpdates 11.321 ms/op 16.544 ms/op 0.68
mainnet_e217614 - capella processRewardsAndPenalties 90.994 ms/op 90.832 ms/op 1.00
mainnet_e217614 - capella processRegistryUpdates 4.4190 us/op 3.5490 us/op 1.25
mainnet_e217614 - capella processSlashings 139.00 ns/op 110.00 ns/op 1.26
mainnet_e217614 - capella processEth1DataReset 139.00 ns/op 106.00 ns/op 1.31
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.6478 ms/op 10.601 ms/op 0.53
mainnet_e217614 - capella processSlashingsReset 663.00 ns/op 555.00 ns/op 1.19
mainnet_e217614 - capella processRandaoMixesReset 911.00 ns/op 769.00 ns/op 1.18
mainnet_e217614 - capella processHistoricalSummariesUpdate 137.00 ns/op 110.00 ns/op 1.25
mainnet_e217614 - capella processParticipationFlagUpdates 444.00 ns/op 345.00 ns/op 1.29
mainnet_e217614 - capella afterProcessEpoch 58.411 ms/op 48.597 ms/op 1.20
phase0 processEpoch - mainnet_e58758 208.35 ms/op 215.97 ms/op 0.96
mainnet_e58758 - phase0 beforeProcessEpoch 40.416 ms/op 57.125 ms/op 0.71
mainnet_e58758 - phase0 processJustificationAndFinalization 4.6140 us/op 5.0550 us/op 0.91
mainnet_e58758 - phase0 processRewardsAndPenalties 16.051 ms/op 15.437 ms/op 1.04
mainnet_e58758 - phase0 processRegistryUpdates 2.2810 us/op 1.7970 us/op 1.27
mainnet_e58758 - phase0 processSlashings 139.00 ns/op 110.00 ns/op 1.26
mainnet_e58758 - phase0 processEth1DataReset 134.00 ns/op 106.00 ns/op 1.26
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 884.58 us/op 586.37 us/op 1.51
mainnet_e58758 - phase0 processSlashingsReset 837.00 ns/op 701.00 ns/op 1.19
mainnet_e58758 - phase0 processRandaoMixesReset 999.00 ns/op 857.00 ns/op 1.17
mainnet_e58758 - phase0 processHistoricalRootsUpdate 139.00 ns/op 110.00 ns/op 1.26
mainnet_e58758 - phase0 processParticipationRecordUpdates 1000.0 ns/op 970.00 ns/op 1.03
mainnet_e58758 - phase0 afterProcessEpoch 17.641 ms/op 23.472 ms/op 0.75
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0137 ms/op 780.96 us/op 1.30
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6329 ms/op 853.32 us/op 1.91
gloas processInactivityUpdates - 250000 inactivity leak all eligible missed target 9.1680 ms/op 10.605 ms/op 0.86
phase0 processRegistryUpdates - 250000 normalcase 2.3770 us/op 7.0290 us/op 0.34
phase0 processRegistryUpdates - 250000 badcase_full_deposits 145.03 us/op 126.87 us/op 1.14
phase0 processRegistryUpdates - 250000 worstcase 0.5 50.947 ms/op 66.211 ms/op 0.77
altair processRewardsAndPenalties - 250000 normalcase 13.723 ms/op 13.316 ms/op 1.03
altair processRewardsAndPenalties - 250000 worstcase 13.495 ms/op 12.310 ms/op 1.10
phase0 getAttestationDeltas - 250000 normalcase 5.5701 ms/op 4.0060 ms/op 1.39
phase0 getAttestationDeltas - 250000 worstcase 5.6606 ms/op 4.0566 ms/op 1.40
phase0 processSlashings - 250000 worstcase 59.881 us/op 48.649 us/op 1.23
altair processSyncCommitteeUpdates - 250000 13.332 ms/op 12.281 ms/op 1.09
BeaconState.hashTreeRoot - No change 173.00 ns/op 135.00 ns/op 1.28
BeaconState.hashTreeRoot - 1 full validator 60.670 us/op 80.341 us/op 0.76
BeaconState.hashTreeRoot - 32 full validator 655.63 us/op 825.70 us/op 0.79
BeaconState.hashTreeRoot - 512 full validator 6.3047 ms/op 9.3456 ms/op 0.67
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 69.949 us/op 104.28 us/op 0.67
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0683 ms/op 1.5995 ms/op 0.67
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 13.354 ms/op 21.830 ms/op 0.61
BeaconState.hashTreeRoot - 1 balances 56.913 us/op 82.245 us/op 0.69
BeaconState.hashTreeRoot - 32 balances 563.06 us/op 831.00 us/op 0.68
BeaconState.hashTreeRoot - 512 balances 4.9178 ms/op 8.3309 ms/op 0.59
BeaconState.hashTreeRoot - 250000 balances 107.32 ms/op 143.04 ms/op 0.75
aggregationBits - 2048 els - zipIndexesInBitList 19.007 us/op 17.809 us/op 1.07
regular array get 100000 times 22.631 us/op 19.830 us/op 1.14
wrappedArray get 100000 times 22.632 us/op 20.153 us/op 1.12
arrayWithProxy get 100000 times 10.123 ms/op 7.5621 ms/op 1.34
ssz.Root.equals 21.408 ns/op 15.818 ns/op 1.35
byteArrayEquals 21.219 ns/op 15.687 ns/op 1.35
Buffer.compare 9.0950 ns/op 6.4960 ns/op 1.40
processSlot - 1 slots 8.0290 us/op 11.283 us/op 0.71
processSlot - 32 slots 1.6246 ms/op 2.0211 ms/op 0.80
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.1561 ms/op 7.6839 ms/op 0.28
getCommitteeAssignments - req 1 vs - 250000 vc 1.6688 ms/op 1.5663 ms/op 1.07
getCommitteeAssignments - req 100 vs - 250000 vc 3.4302 ms/op 3.6375 ms/op 0.94
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7111 ms/op 4.0033 ms/op 0.93
findModifiedValidators - 10000 modified validators 743.38 ms/op 748.01 ms/op 0.99
findModifiedValidators - 1000 modified validators 507.99 ms/op 546.93 ms/op 0.93
findModifiedValidators - 100 modified validators 381.34 ms/op 431.03 ms/op 0.88
findModifiedValidators - 10 modified validators 306.77 ms/op 432.89 ms/op 0.71
findModifiedValidators - 1 modified validators 215.85 ms/op 328.26 ms/op 0.66
findModifiedValidators - no difference 204.21 ms/op 280.91 ms/op 0.73
migrate state 1500000 validators, 3400 modified, 2000 new 2.7197 s/op 3.6699 s/op 0.74
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.4300 ns/op 2.6300 ns/op 1.30
state getBlockRootAtSlot - 250000 vs - 7PWei 282.91 ns/op 421.47 ns/op 0.67
computeProposerIndex 100000 validators 2.7155 ms/op 2.6162 ms/op 1.04
getNextSyncCommitteeIndices 1000 validators 1.4262 ms/op 1.4117 ms/op 1.01
getNextSyncCommitteeIndices 10000 validators 13.507 ms/op 14.199 ms/op 0.95
getNextSyncCommitteeIndices 100000 validators 52.442 ms/op 58.736 ms/op 0.89
computeProposers - vc 250000 1.2507 ms/op 1.2195 ms/op 1.03
computeEpochShuffling - vc 250000 21.084 ms/op 19.108 ms/op 1.10
getNextSyncCommittee - vc 250000 12.742 ms/op 12.360 ms/op 1.03
nodejs block root to RootHex using toHex 100.62 ns/op 78.081 ns/op 1.29
nodejs block root to RootHex using toRootHex 67.762 ns/op 47.528 ns/op 1.43
nodejs fromHex(blob) 926.87 us/op 1.1670 ms/op 0.79
nodejs fromHexInto(blob) 666.27 us/op 515.19 us/op 1.29
nodejs block root to RootHex using the deprecated toHexString 649.17 ns/op 720.29 ns/op 0.90
nodejs byteArrayEquals 32 bytes (block root) 25.792 ns/op 19.335 ns/op 1.33
nodejs byteArrayEquals 48 bytes (pubkey) 37.319 ns/op 27.441 ns/op 1.36
nodejs byteArrayEquals 96 bytes (signature) 40.181 ns/op 30.169 ns/op 1.33
nodejs byteArrayEquals 1024 bytes 43.060 ns/op 36.541 ns/op 1.18
nodejs byteArrayEquals 131072 bytes (blob) 1.7470 us/op 1.2053 us/op 1.45
browser block root to RootHex using toHex 146.61 ns/op 129.16 ns/op 1.14
browser block root to RootHex using toRootHex 131.60 ns/op 123.67 ns/op 1.06
browser fromHex(blob) 1.8324 ms/op 1.8150 ms/op 1.01
browser fromHexInto(blob) 664.65 us/op 499.38 us/op 1.33
browser block root to RootHex using the deprecated toHexString 424.57 ns/op 437.31 ns/op 0.97
browser byteArrayEquals 32 bytes (block root) 27.742 ns/op 19.880 ns/op 1.40
browser byteArrayEquals 48 bytes (pubkey) 39.109 ns/op 28.311 ns/op 1.38
browser byteArrayEquals 96 bytes (signature) 73.209 ns/op 52.964 ns/op 1.38
browser byteArrayEquals 1024 bytes 750.70 ns/op 551.50 ns/op 1.36
browser byteArrayEquals 131072 bytes (blob) 94.178 us/op 69.027 us/op 1.36

by benchmarkbot/action

@nflaig

nflaig commented Oct 8, 2026

Copy link
Copy Markdown
Member Author

@nflaig nflaig closed this Oct 8, 2026
@nflaig
nflaig deleted the nflaig/chain-reorg-execution-hashes branch October 8, 2026 08:22
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.

1 participant