Skip to content

test: enable is_one_confirmed deposit vectors - #9917

Open
nazarhussain wants to merge 2 commits into
unstablefrom
check-spec-tests
Open

test: enable is_one_confirmed deposit vectors#9917
nazarhussain wants to merge 2 commits into
unstablefrom
check-spec-tests

Conversation

@nazarhussain

@nazarhussain nazarhussain commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Motivation

Two is_one_confirmed fast_confirmation vectors were skipped. They carry placeholder deposit signatures (bls_setting=2), which pyspec treats as valid; Lodestar verified them for real, skipped addValidatorToRegistry, and the block at the epoch boundary failed with INVALID_STATE_ROOT.

Description

  • Add dangerouslyAssumeValidDepositSignatures to EpochTransitionCacheOpts, carried on EpochTransitionCache and read in processPendingDeposits
  • Thread it from BlockProcessOpts through regen.getPreState and stateTransition; defaults to false, only fast_confirmation.test.ts sets it
  • Drop the two shouldSkip entries

fast_confirmation spec tests: 1436 passed, 0 skipped (was 1428 + 8 skipped); pnpm check-types and pnpm lint clean.

AI disclosure: written with Claude Code.

馃 Generated with Claude Code

The two is_one_confirmed vectors that activate a new validator carry
placeholder deposit signatures (bls_setting=2). pyspec stubs bls.Verify
to true for those so the deposit is applied; Lodestar verified it for
real, skipped addValidatorToRegistry, and the block at the epoch
boundary failed with INVALID_STATE_ROOT.

Thread dangerouslyAssumeValidDepositSignatures from chain options
through the regen and state transition opts down to
processPendingDeposits. Defaults to false, only the spec test sets it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@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: 74e6c3b941

鈩癸笍 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".

block0.message,
{
dontTransferCache: false,
dangerouslyAssumeValidDepositSignatures: opts.dangerouslyAssumeValidDepositSignatures,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Propagate the deposit option through block replay

When the parent is in the same epoch and its state has been evicted, StateRegenerator.getPreState() calls getState() without these options; getState() may then replay the epoch-boundary block using stateTransition() without dangerouslyAssumeValidDepositSignatures. For bls_setting=2 vectors whose pending deposit is processed at that boundary, replay rejects the placeholder signature and fails its state-root check, so this option only works while the relevant parent or checkpoint state remains cached. Carry the option into the replay path as well.

Useful? React with 馃憤聽/ 馃憥.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Addressed

@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

鈿狅笍 Performance Alert 鈿狅笍

Possible performance regression was detected for some benchmarks.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold.

Benchmark suite Current: 3ab4301 Previous: aa8303e Ratio
enrSubnets - fastDeserialize 64 bits 2.8430 us/op 757.00 ns/op 3.76
Full benchmark results
Benchmark suite Current: 3ab4301 Previous: aa8303e Ratio
getPubkeys - native cache - req 1000 vs - 250000 vc 442.33 us/op 572.80 us/op 0.77
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 41.056 us/op 39.188 us/op 1.05
BLS verify - blst 891.93 us/op 887.74 us/op 1.00
BLS verifyMultipleSignatures 3 - blst 1.4158 ms/op 1.3494 ms/op 1.05
BLS verifyMultipleSignatures 8 - blst 2.2721 ms/op 2.2600 ms/op 1.01
BLS verifyMultipleSignatures 32 - blst 7.5033 ms/op 7.4684 ms/op 1.00
BLS verifyMultipleSignatures 64 - blst 14.394 ms/op 14.426 ms/op 1.00
BLS verifyMultipleSignatures 128 - blst 27.366 ms/op 26.866 ms/op 1.02
BLS deserializing 10000 signatures 637.00 ms/op 652.05 ms/op 0.98
BLS deserializing 100000 signatures 6.5693 s/op 6.4914 s/op 1.01
BLS verifyMultipleSignatures - same message - 3 - blst 991.07 us/op 965.65 us/op 1.03
BLS verifyMultipleSignatures - same message - 8 - blst 1.1316 ms/op 1.0975 ms/op 1.03
BLS verifyMultipleSignatures - same message - 32 - blst 1.7679 ms/op 1.7308 ms/op 1.02
BLS verifyMultipleSignatures - same message - 64 - blst 2.6313 ms/op 2.5491 ms/op 1.03
BLS verifyMultipleSignatures - same message - 128 - blst 4.3481 ms/op 4.2478 ms/op 1.02
BLS aggregatePubkeys 32 - blst 21.015 us/op 19.570 us/op 1.07
BLS aggregatePubkeys 128 - blst 73.651 us/op 71.143 us/op 1.04
getSlashingsAndExits - default max 47.095 us/op 42.694 us/op 1.10
getSlashingsAndExits - 2k 446.78 us/op 349.90 us/op 1.28
proposeBlockBody type=full, size=empty 1.0355 ms/op 723.28 us/op 1.43
isKnown best case - 1 super set check 183.00 ns/op 172.00 ns/op 1.06
isKnown normal case - 2 super set checks 168.00 ns/op 165.00 ns/op 1.02
isKnown worse case - 16 super set checks 169.00 ns/op 164.00 ns/op 1.03
validate api signedAggregateAndProof - struct 1.5869 ms/op 1.5122 ms/op 1.05
validate gossip signedAggregateAndProof - struct 1.5835 ms/op 1.5039 ms/op 1.05
batch validate gossip attestation - vc 640000 - chunk 32 135.16 us/op 128.27 us/op 1.05
batch validate gossip attestation - vc 640000 - chunk 64 114.35 us/op 107.55 us/op 1.06
batch validate gossip attestation - vc 640000 - chunk 128 102.39 us/op 98.262 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 256 100.03 us/op 99.107 us/op 1.01
bytes32 toHexString 295.00 ns/op 293.00 ns/op 1.01
bytes32 Buffer.toString(hex) 171.00 ns/op 175.00 ns/op 0.98
bytes32 Buffer.toString(hex) from Uint8Array 239.00 ns/op 237.00 ns/op 1.01
bytes32 Buffer.toString(hex) + 0x 168.00 ns/op 182.00 ns/op 0.92
Return object 10000 times 0.21560 ns/op 0.22010 ns/op 0.98
Throw Error 10000 times 3.4459 us/op 3.4364 us/op 1.00
toHex 106.33 ns/op 100.58 ns/op 1.06
Buffer.from 101.18 ns/op 87.352 ns/op 1.16
shared Buffer 68.855 ns/op 57.418 ns/op 1.20
fastMsgIdFn sha256 / 200 bytes 1.5070 us/op 1.4940 us/op 1.01
fastMsgIdFn h32 xxhash / 200 bytes 155.00 ns/op 153.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 200 bytes 204.00 ns/op 207.00 ns/op 0.99
fastMsgIdFn sha256 / 1000 bytes 4.8280 us/op 4.7410 us/op 1.02
fastMsgIdFn h32 xxhash / 1000 bytes 252.00 ns/op 243.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 1000 bytes 255.00 ns/op 257.00 ns/op 0.99
fastMsgIdFn sha256 / 10000 bytes 44.009 us/op 42.242 us/op 1.04
fastMsgIdFn h32 xxhash / 10000 bytes 1.2990 us/op 1.2850 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 850.00 ns/op 837.00 ns/op 1.02
send data - 1000 256B messages 4.2617 ms/op 4.5835 ms/op 0.93
send data - 1000 512B messages 5.0877 ms/op 5.6716 ms/op 0.90
send data - 1000 1024B messages 5.2834 ms/op 6.0179 ms/op 0.88
send data - 1000 1200B messages 6.1675 ms/op 7.3609 ms/op 0.84
send data - 1000 2048B messages 11.841 ms/op 10.980 ms/op 1.08
send data - 1000 4096B messages 139.89 ms/op 93.731 ms/op 1.49
send data - 1000 16384B messages 494.16 ms/op 432.22 ms/op 1.14
send data - 1000 65536B messages 2.0674 s/op 2.4683 s/op 0.84
enrSubnets - fastDeserialize 64 bits 2.8430 us/op 757.00 ns/op 3.76
enrSubnets - ssz BitVector 64 bits 263.00 ns/op 269.00 ns/op 0.98
enrSubnets - fastDeserialize 4 bits 100.00 ns/op 102.00 ns/op 0.98
enrSubnets - ssz BitVector 4 bits 265.00 ns/op 277.00 ns/op 0.96
prioritizePeers score -10:0 att 32-0.1 sync 2-0 209.49 us/op 212.27 us/op 0.99
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 234.85 us/op 242.89 us/op 0.97
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 350.78 us/op 354.20 us/op 0.99
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 601.13 us/op 627.30 us/op 0.96
prioritizePeers score 0:0 att 64-1 sync 4-1 713.82 us/op 736.80 us/op 0.97
array of 16000 items push then shift 1.3304 us/op 1.2984 us/op 1.02
LinkedList of 16000 items push then shift 6.9270 ns/op 9.2390 ns/op 0.75
array of 16000 items push then pop 78.311 ns/op 86.625 ns/op 0.90
LinkedList of 16000 items push then pop 6.1440 ns/op 6.8360 ns/op 0.90
array of 24000 items push then shift 1.9641 us/op 1.9283 us/op 1.02
LinkedList of 24000 items push then shift 6.4820 ns/op 8.0870 ns/op 0.80
array of 24000 items push then pop 114.58 ns/op 126.40 ns/op 0.91
LinkedList of 24000 items push then pop 6.0330 ns/op 7.1970 ns/op 0.84
intersect bitArray bitLen 8 3.8950 ns/op 3.9440 ns/op 0.99
intersect array and set length 8 30.209 ns/op 30.380 ns/op 0.99
intersect bitArray bitLen 128 23.468 ns/op 23.633 ns/op 0.99
intersect array and set length 128 511.43 ns/op 497.19 ns/op 1.03
bitArray.getTrueBitIndexes() bitLen 128 911.00 ns/op 949.00 ns/op 0.96
bitArray.getTrueBitIndexes() bitLen 248 1.6750 us/op 1.7210 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 512 3.4530 us/op 3.6580 us/op 0.94
Full columns - reconstruct all 6 blobs 146.85 us/op 168.97 us/op 0.87
Full columns - reconstruct half of the blobs out of 6 83.960 us/op 109.15 us/op 0.77
Full columns - reconstruct single blob out of 6 100.27 us/op 38.839 us/op 2.58
Half columns - reconstruct all 6 blobs 418.62 ms/op 424.52 ms/op 0.99
Half columns - reconstruct half of the blobs out of 6 209.69 ms/op 215.68 ms/op 0.97
Half columns - reconstruct single blob out of 6 72.726 ms/op 76.819 ms/op 0.95
Set add up to 64 items then delete first 1.7161 us/op 2.3294 us/op 0.74
OrderedSet add up to 64 items then delete first 2.6369 us/op 3.7056 us/op 0.71
Set add up to 64 items then delete last 1.9405 us/op 2.5518 us/op 0.76
OrderedSet add up to 64 items then delete last 2.8523 us/op 3.5132 us/op 0.81
Set add up to 64 items then delete middle 1.9295 us/op 2.2222 us/op 0.87
OrderedSet add up to 64 items then delete middle 4.3341 us/op 5.0141 us/op 0.86
Set add up to 128 items then delete first 4.1415 us/op 4.5090 us/op 0.92
OrderedSet add up to 128 items then delete first 6.2488 us/op 6.9981 us/op 0.89
Set add up to 128 items then delete last 3.8287 us/op 4.3887 us/op 0.87
OrderedSet add up to 128 items then delete last 6.5626 us/op 6.3261 us/op 1.04
Set add up to 128 items then delete middle 3.6920 us/op 4.4196 us/op 0.84
OrderedSet add up to 128 items then delete middle 11.547 us/op 14.361 us/op 0.80
Set add up to 256 items then delete first 8.1066 us/op 9.9164 us/op 0.82
OrderedSet add up to 256 items then delete first 13.059 us/op 14.075 us/op 0.93
Set add up to 256 items then delete last 7.2646 us/op 7.9337 us/op 0.92
OrderedSet add up to 256 items then delete last 11.944 us/op 11.729 us/op 1.02
Set add up to 256 items then delete middle 7.3026 us/op 9.5845 us/op 0.76
OrderedSet add up to 256 items then delete middle 35.890 us/op 41.405 us/op 0.87
runFastConfirmationRules vc:100000 bc:96 eq:0 4.8008 ms/op 7.4583 ms/op 0.64
runFastConfirmationRules vc:600000 bc:96 eq:0 37.661 ms/op 39.985 ms/op 0.94
runFastConfirmationRules vc:1000000 bc:96 eq:0 62.985 ms/op 74.992 ms/op 0.84
runFastConfirmationRules vc:600000 bc:320 eq:0 38.036 ms/op 37.939 ms/op 1.00
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.1884 s/op 1.2242 s/op 0.97
pass gossip attestations to forkchoice per slot 2.5621 ms/op 3.2598 ms/op 0.79
forkChoice updateHead vc 100000 bc 64 eq 0 474.52 us/op 413.14 us/op 1.15
forkChoice updateHead vc 600000 bc 64 eq 0 2.8317 ms/op 2.4780 ms/op 1.14
forkChoice updateHead vc 1000000 bc 64 eq 0 4.9579 ms/op 4.1273 ms/op 1.20
forkChoice updateHead vc 600000 bc 320 eq 0 2.7589 ms/op 2.4846 ms/op 1.11
forkChoice updateHead vc 600000 bc 1200 eq 0 2.7342 ms/op 2.5287 ms/op 1.08
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1965 ms/op 3.6817 ms/op 0.87
forkChoice updateHead vc 600000 bc 64 eq 1000 2.8209 ms/op 2.4842 ms/op 1.14
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9900 ms/op 2.5265 ms/op 1.18
forkChoice updateHead vc 600000 bc 64 eq 300000 7.3158 ms/op 7.1171 ms/op 1.03
computeDeltas 1400000 validators 0% inactive 13.957 ms/op 12.411 ms/op 1.12
computeDeltas 1400000 validators 10% inactive 12.762 ms/op 11.576 ms/op 1.10
computeDeltas 1400000 validators 20% inactive 12.007 ms/op 11.054 ms/op 1.09
computeDeltas 1400000 validators 50% inactive 9.6045 ms/op 8.8712 ms/op 1.08
computeDeltas 2100000 validators 0% inactive 19.688 ms/op 18.568 ms/op 1.06
computeDeltas 2100000 validators 10% inactive 18.539 ms/op 17.890 ms/op 1.04
computeDeltas 2100000 validators 20% inactive 17.596 ms/op 16.443 ms/op 1.07
computeDeltas 2100000 validators 50% inactive 14.043 ms/op 10.780 ms/op 1.30
altair processAttestation - 250000 vs - 7PWei normalcase 2.0078 ms/op 2.6693 ms/op 0.75
altair processAttestation - 250000 vs - 7PWei worstcase 2.7470 ms/op 3.4333 ms/op 0.80
altair processAttestation - setStatus - 1/6 committees join 109.60 us/op 105.55 us/op 1.04
altair processAttestation - setStatus - 1/3 committees join 221.32 us/op 203.47 us/op 1.09
altair processAttestation - setStatus - 1/2 committees join 303.76 us/op 292.85 us/op 1.04
altair processAttestation - setStatus - 2/3 committees join 394.42 us/op 371.06 us/op 1.06
altair processAttestation - setStatus - 4/5 committees join 545.67 us/op 572.44 us/op 0.95
altair processAttestation - setStatus - 100% committees join 634.45 us/op 663.07 us/op 0.96
altair processBlock - 250000 vs - 7PWei normalcase 4.3893 ms/op 5.6285 ms/op 0.78
altair processBlock - 250000 vs - 7PWei normalcase hashState 19.614 ms/op 28.847 ms/op 0.68
altair processBlock - 250000 vs - 7PWei worstcase 23.307 ms/op 27.833 ms/op 0.84
altair processBlock - 250000 vs - 7PWei worstcase hashState 51.270 ms/op 65.196 ms/op 0.79
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2868 ms/op 1.5033 ms/op 0.86
phase0 processBlock - 250000 vs - 7PWei worstcase 19.835 ms/op 21.949 ms/op 0.90
altair processEth1Data - 250000 vs - 7PWei normalcase 314.42 us/op 301.93 us/op 1.04
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.3940 us/op 3.3340 us/op 1.02
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 20.726 us/op 20.660 us/op 1.00
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 6.0820 us/op 6.0830 us/op 1.00
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.7560 us/op 4.7190 us/op 0.80
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 96.342 us/op 93.808 us/op 1.03
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4583 ms/op 1.4677 ms/op 0.99
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.9327 ms/op 2.0721 ms/op 0.93
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.9329 ms/op 1.8836 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.7628 ms/op 3.7169 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.1596 ms/op 2.0954 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.0326 ms/op 3.9089 ms/op 1.03
Tree 40 250000 create 328.67 ms/op 354.70 ms/op 0.93
Tree 40 250000 get(125000) 107.20 ns/op 99.926 ns/op 1.07
Tree 40 250000 set(125000) 1.1013 us/op 1.0556 us/op 1.04
Tree 40 250000 toArray() 10.286 ms/op 11.074 ms/op 0.93
Tree 40 250000 iterate all - toArray() + loop 10.141 ms/op 10.133 ms/op 1.00
Tree 40 250000 iterate all - get(i) 34.523 ms/op 40.852 ms/op 0.85
Array 250000 create 2.4516 ms/op 2.6936 ms/op 0.91
Array 250000 clone - spread 781.64 us/op 827.19 us/op 0.94
Array 250000 get(125000) 0.29500 ns/op 0.30500 ns/op 0.97
Array 250000 set(125000) 0.29700 ns/op 0.30500 ns/op 0.97
Array 250000 iterate all - loop 56.984 us/op 59.482 us/op 0.96
phase0 afterProcessEpoch - 250000 vs - 7PWei 72.717 ms/op 40.817 ms/op 1.78
Array.fill - length 1000000 4.2507 ms/op 4.2355 ms/op 1.00
Array push - length 1000000 14.201 ms/op 51.354 ms/op 0.28
Array.get 0.20814 ns/op 0.21112 ns/op 0.99
Uint8Array.get 0.27365 ns/op 0.24329 ns/op 1.12
phase0 beforeProcessEpoch - 250000 vs - 7PWei 19.035 ms/op 19.215 ms/op 0.99
altair processEpoch - mainnet_e81889 203.27 ms/op 296.23 ms/op 0.69
mainnet_e81889 - altair beforeProcessEpoch 62.651 ms/op 42.553 ms/op 1.47
mainnet_e81889 - altair processJustificationAndFinalization 4.4290 us/op 6.2510 us/op 0.71
mainnet_e81889 - altair processInactivityUpdates 3.7155 ms/op 7.4968 ms/op 0.50
mainnet_e81889 - altair processRewardsAndPenalties 17.963 ms/op 19.961 ms/op 0.90
mainnet_e81889 - altair processRegistryUpdates 581.00 ns/op 598.00 ns/op 0.97
mainnet_e81889 - altair processSlashings 148.00 ns/op 156.00 ns/op 0.95
mainnet_e81889 - altair processEth1DataReset 148.00 ns/op 149.00 ns/op 0.99
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7476 ms/op 8.2046 ms/op 0.21
mainnet_e81889 - altair processSlashingsReset 731.00 ns/op 739.00 ns/op 0.99
mainnet_e81889 - altair processRandaoMixesReset 932.00 ns/op 1.1400 us/op 0.82
mainnet_e81889 - altair processHistoricalRootsUpdate 147.00 ns/op 157.00 ns/op 0.94
mainnet_e81889 - altair processParticipationFlagUpdates 454.00 ns/op 485.00 ns/op 0.94
mainnet_e81889 - altair processSyncCommitteeUpdates 117.00 ns/op 131.00 ns/op 0.89
mainnet_e81889 - altair afterProcessEpoch 42.340 ms/op 42.490 ms/op 1.00
capella processEpoch - mainnet_e217614 636.53 ms/op 863.27 ms/op 0.74
mainnet_e217614 - capella beforeProcessEpoch 70.284 ms/op 58.641 ms/op 1.20
mainnet_e217614 - capella processJustificationAndFinalization 4.5570 us/op 5.1790 us/op 0.88
mainnet_e217614 - capella processInactivityUpdates 11.941 ms/op 13.541 ms/op 0.88
mainnet_e217614 - capella processRewardsAndPenalties 96.509 ms/op 101.37 ms/op 0.95
mainnet_e217614 - capella processRegistryUpdates 4.5640 us/op 4.7660 us/op 0.96
mainnet_e217614 - capella processSlashings 149.00 ns/op 155.00 ns/op 0.96
mainnet_e217614 - capella processEth1DataReset 145.00 ns/op 152.00 ns/op 0.95
mainnet_e217614 - capella processEffectiveBalanceUpdates 11.945 ms/op 20.504 ms/op 0.58
mainnet_e217614 - capella processSlashingsReset 715.00 ns/op 719.00 ns/op 0.99
mainnet_e217614 - capella processRandaoMixesReset 963.00 ns/op 1.1140 us/op 0.86
mainnet_e217614 - capella processHistoricalRootsUpdate 145.00 ns/op 156.00 ns/op 0.93
mainnet_e217614 - capella processParticipationFlagUpdates 463.00 ns/op 478.00 ns/op 0.97
mainnet_e217614 - capella afterProcessEpoch 106.27 ms/op 112.22 ms/op 0.95
phase0 processEpoch - mainnet_e58758 186.84 ms/op 268.78 ms/op 0.70
mainnet_e58758 - phase0 beforeProcessEpoch 39.870 ms/op 54.934 ms/op 0.73
mainnet_e58758 - phase0 processJustificationAndFinalization 4.4100 us/op 5.4690 us/op 0.81
mainnet_e58758 - phase0 processRewardsAndPenalties 16.293 ms/op 17.072 ms/op 0.95
mainnet_e58758 - phase0 processRegistryUpdates 2.2870 us/op 2.4360 us/op 0.94
mainnet_e58758 - phase0 processSlashings 143.00 ns/op 157.00 ns/op 0.91
mainnet_e58758 - phase0 processEth1DataReset 279.00 ns/op 155.00 ns/op 1.80
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 871.11 us/op 962.56 us/op 0.90
mainnet_e58758 - phase0 processSlashingsReset 861.00 ns/op 959.00 ns/op 0.90
mainnet_e58758 - phase0 processRandaoMixesReset 967.00 ns/op 1.0780 us/op 0.90
mainnet_e58758 - phase0 processHistoricalRootsUpdate 147.00 ns/op 156.00 ns/op 0.94
mainnet_e58758 - phase0 processParticipationRecordUpdates 948.00 ns/op 1.0550 us/op 0.90
mainnet_e58758 - phase0 afterProcessEpoch 33.196 ms/op 36.326 ms/op 0.91
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0110 ms/op 1.4024 ms/op 0.72
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.2378 ms/op 1.6846 ms/op 0.73
altair processInactivityUpdates - 250000 normalcase 10.740 ms/op 11.225 ms/op 0.96
altair processInactivityUpdates - 250000 worstcase 10.689 ms/op 11.243 ms/op 0.95
phase0 processRegistryUpdates - 250000 normalcase 2.4310 us/op 2.3940 us/op 1.02
phase0 processRegistryUpdates - 250000 badcase_full_deposits 147.53 us/op 151.00 us/op 0.98
phase0 processRegistryUpdates - 250000 worstcase 0.5 67.029 ms/op 67.679 ms/op 0.99
altair processRewardsAndPenalties - 250000 normalcase 14.827 ms/op 15.757 ms/op 0.94
altair processRewardsAndPenalties - 250000 worstcase 14.406 ms/op 15.603 ms/op 0.92
phase0 getAttestationDeltas - 250000 normalcase 6.1108 ms/op 5.9537 ms/op 1.03
phase0 getAttestationDeltas - 250000 worstcase 5.7056 ms/op 9.0427 ms/op 0.63
phase0 processSlashings - 250000 worstcase 61.480 us/op 67.470 us/op 0.91
altair processSyncCommitteeUpdates - 250000 9.9556 ms/op 14.224 ms/op 0.70
BeaconState.hashTreeRoot - No change 177.00 ns/op 189.00 ns/op 0.94
BeaconState.hashTreeRoot - 1 full validator 59.789 us/op 100.06 us/op 0.60
BeaconState.hashTreeRoot - 32 full validator 658.08 us/op 1.1916 ms/op 0.55
BeaconState.hashTreeRoot - 512 full validator 6.3838 ms/op 13.326 ms/op 0.48
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 72.736 us/op 132.64 us/op 0.55
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1392 ms/op 2.0825 ms/op 0.55
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 13.720 ms/op 17.900 ms/op 0.77
BeaconState.hashTreeRoot - 1 balances 60.919 us/op 111.06 us/op 0.55
BeaconState.hashTreeRoot - 32 balances 566.01 us/op 1.0864 ms/op 0.52
BeaconState.hashTreeRoot - 512 balances 4.8646 ms/op 7.9486 ms/op 0.61
BeaconState.hashTreeRoot - 250000 balances 99.064 ms/op 215.07 ms/op 0.46
aggregationBits - 2048 els - zipIndexesInBitList 19.914 us/op 20.722 us/op 0.96
regular array get 100000 times 22.736 us/op 23.243 us/op 0.98
wrappedArray get 100000 times 22.689 us/op 23.307 us/op 0.97
arrayWithProxy get 100000 times 10.436 ms/op 10.117 ms/op 1.03
ssz.Root.equals 21.528 ns/op 21.830 ns/op 0.99
byteArrayEquals 21.342 ns/op 21.632 ns/op 0.99
Buffer.compare 9.4870 ns/op 14.256 ns/op 0.67
processSlot - 1 slots 8.2310 us/op 12.072 us/op 0.68
processSlot - 32 slots 1.5669 ms/op 3.3730 ms/op 0.46
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.6427 ms/op 8.6024 ms/op 0.42
getCommitteeAssignments - req 1 vs - 250000 vc 1.6966 ms/op 1.7395 ms/op 0.98
getCommitteeAssignments - req 100 vs - 250000 vc 3.4354 ms/op 3.5427 ms/op 0.97
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7040 ms/op 3.8751 ms/op 0.96
findModifiedValidators - 10000 modified validators 759.75 ms/op 927.66 ms/op 0.82
findModifiedValidators - 1000 modified validators 630.15 ms/op 790.41 ms/op 0.80
findModifiedValidators - 100 modified validators 403.28 ms/op 492.40 ms/op 0.82
findModifiedValidators - 10 modified validators 354.41 ms/op 361.16 ms/op 0.98
findModifiedValidators - 1 modified validators 306.35 ms/op 318.73 ms/op 0.96
findModifiedValidators - no difference 232.18 ms/op 272.00 ms/op 0.85
migrate state 1500000 validators, 3400 modified, 2000 new 3.3485 s/op 3.7385 s/op 0.90
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6000 ns/op 3.5200 ns/op 1.02
state getBlockRootAtSlot - 250000 vs - 7PWei 434.63 ns/op 497.83 ns/op 0.87
computeProposerIndex 100000 validators 1.4504 ms/op 1.4316 ms/op 1.01
getNextSyncCommitteeIndices 1000 validators 3.0158 ms/op 3.0372 ms/op 0.99
getNextSyncCommitteeIndices 10000 validators 26.970 ms/op 27.408 ms/op 0.98
getNextSyncCommitteeIndices 100000 validators 96.641 ms/op 94.449 ms/op 1.02
computeProposers - vc 250000 606.65 us/op 598.04 us/op 1.01
computeEpochShuffling - vc 250000 41.758 ms/op 41.155 ms/op 1.01
getNextSyncCommittee - vc 250000 10.527 ms/op 9.8714 ms/op 1.07
nodejs block root to RootHex using toHex 101.91 ns/op 101.66 ns/op 1.00
nodejs block root to RootHex using toRootHex 66.585 ns/op 65.559 ns/op 1.02
nodejs fromHex(blob) 980.35 us/op 1.0148 ms/op 0.97
nodejs fromHexInto(blob) 675.28 us/op 659.08 us/op 1.02
nodejs block root to RootHex using the deprecated toHexString 607.80 ns/op 618.61 ns/op 0.98
nodejs byteArrayEquals 32 bytes (block root) 26.635 ns/op 27.365 ns/op 0.97
nodejs byteArrayEquals 48 bytes (pubkey) 38.435 ns/op 39.307 ns/op 0.98
nodejs byteArrayEquals 96 bytes (signature) 38.907 ns/op 37.596 ns/op 1.03
nodejs byteArrayEquals 1024 bytes 45.366 ns/op 44.924 ns/op 1.01
nodejs byteArrayEquals 131072 bytes (blob) 1.7879 us/op 1.8467 us/op 0.97
browser block root to RootHex using toHex 149.72 ns/op 150.56 ns/op 0.99
browser block root to RootHex using toRootHex 134.95 ns/op 135.56 ns/op 1.00
browser fromHex(blob) 1.9475 ms/op 2.0623 ms/op 0.94
browser fromHexInto(blob) 678.75 us/op 655.39 us/op 1.04
browser block root to RootHex using the deprecated toHexString 438.30 ns/op 430.52 ns/op 1.02
browser byteArrayEquals 32 bytes (block root) 28.620 ns/op 28.935 ns/op 0.99
browser byteArrayEquals 48 bytes (pubkey) 40.448 ns/op 40.598 ns/op 1.00
browser byteArrayEquals 96 bytes (signature) 75.362 ns/op 75.896 ns/op 0.99
browser byteArrayEquals 1024 bytes 770.03 ns/op 771.38 ns/op 1.00
browser byteArrayEquals 131072 bytes (blob) 96.846 us/op 96.966 us/op 1.00

by benchmarkbot/action

getState() replays blocks with stateTransition() and then checks the
resulting state root itself, so a replay crossing an epoch boundary that
applies a bls_setting=2 pending deposit would fail with
REGEN_ERROR_INVALID_STATE_ROOT. Without this the option only worked
while the parent or checkpoint state stayed cached.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@nazarhussain

Copy link
Copy Markdown
Contributor Author

@nflaig Other simpler approach would be to have a utility function with module level variable.

let validateDepositSignatures = true; 

function dangerouslyDisableDepositSignaturesValidation () {
   validateDepositSignatures = false;
}

function validateDepositSignatures() {
   return validateDepositSignatures;
}

This will remove all plumbing code, once called in the tests and once in the actual validation path. What do you think?

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

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant