Skip to content

chore: remove old deposit mechanism in fulu#9459

Merged
nflaig merged 6 commits into
unstablefrom
nflaig/remove-old-deposit-mechanism-fulu
Jun 4, 2026
Merged

chore: remove old deposit mechanism in fulu#9459
nflaig merged 6 commits into
unstablefrom
nflaig/remove-old-deposit-mechanism-fulu

Conversation

@nflaig

@nflaig nflaig commented Jun 3, 2026

Copy link
Copy Markdown
Member

@nflaig nflaig requested a review from a team as a code owner June 3, 2026 17:42

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request implements changes to handle the removal of the Eth1 bridge deposit mechanism starting from the Fulu fork. Specifically, it restricts setting depositRequestsStartIndex and checking pending Eth1 bridge deposits to pre-Fulu forks, and updates getEth1DepositCount to return 0 for Fulu and later forks. A corresponding unit test has been added to verify this behavior. There are no review comments, and I have no additional feedback to provide.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 96f9af3 Previous: 00facd4 Ratio
send data - 1000 16384B messages 26.071 ms/op 105.90 ms/op 0.25
Full benchmark results
Benchmark suite Current: 96f9af3 Previous: 00facd4 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 886.91 us/op 902.68 us/op 0.98
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 40.021 us/op 39.703 us/op 1.01
BLS verify - blst 734.09 us/op 746.46 us/op 0.98
BLS verifyMultipleSignatures 3 - blst 1.3549 ms/op 1.3356 ms/op 1.01
BLS verifyMultipleSignatures 8 - blst 2.1577 ms/op 2.1109 ms/op 1.02
BLS verifyMultipleSignatures 32 - blst 6.9013 ms/op 6.5468 ms/op 1.05
BLS verifyMultipleSignatures 64 - blst 13.611 ms/op 13.247 ms/op 1.03
BLS verifyMultipleSignatures 128 - blst 25.575 ms/op 24.904 ms/op 1.03
BLS deserializing 10000 signatures 634.69 ms/op 615.83 ms/op 1.03
BLS deserializing 100000 signatures 6.3670 s/op 6.1239 s/op 1.04
BLS verifyMultipleSignatures - same message - 3 - blst 711.89 us/op 780.31 us/op 0.91
BLS verifyMultipleSignatures - same message - 8 - blst 948.06 us/op 897.36 us/op 1.06
BLS verifyMultipleSignatures - same message - 32 - blst 1.5903 ms/op 1.5095 ms/op 1.05
BLS verifyMultipleSignatures - same message - 64 - blst 2.4572 ms/op 2.3046 ms/op 1.07
BLS verifyMultipleSignatures - same message - 128 - blst 4.1385 ms/op 3.9205 ms/op 1.06
BLS aggregatePubkeys 32 - blst 17.678 us/op 17.088 us/op 1.03
BLS aggregatePubkeys 128 - blst 63.120 us/op 61.020 us/op 1.03
getSlashingsAndExits - default max 48.410 us/op 47.791 us/op 1.01
getSlashingsAndExits - 2k 332.37 us/op 339.59 us/op 0.98
proposeBlockBody type=full, size=empty 801.73 us/op 595.48 us/op 1.35
isKnown best case - 1 super set check 165.00 ns/op 160.00 ns/op 1.03
isKnown normal case - 2 super set checks 163.00 ns/op 163.00 ns/op 1.00
isKnown worse case - 16 super set checks 163.00 ns/op 163.00 ns/op 1.00
validate api signedAggregateAndProof - struct 1.5300 ms/op 1.4542 ms/op 1.05
validate gossip signedAggregateAndProof - struct 1.5338 ms/op 1.4584 ms/op 1.05
batch validate gossip attestation - vc 640000 - chunk 32 109.46 us/op 104.07 us/op 1.05
batch validate gossip attestation - vc 640000 - chunk 64 95.805 us/op 92.506 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 128 89.215 us/op 85.404 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 256 85.409 us/op 83.953 us/op 1.02
bytes32 toHexString 291.00 ns/op 281.00 ns/op 1.04
bytes32 Buffer.toString(hex) 169.00 ns/op 164.00 ns/op 1.03
bytes32 Buffer.toString(hex) from Uint8Array 232.00 ns/op 223.00 ns/op 1.04
bytes32 Buffer.toString(hex) + 0x 168.00 ns/op 168.00 ns/op 1.00
Return object 10000 times 0.21530 ns/op 0.21320 ns/op 1.01
Throw Error 10000 times 3.2799 us/op 3.2579 us/op 1.01
toHex 90.423 ns/op 88.258 ns/op 1.02
Buffer.from 84.880 ns/op 80.432 ns/op 1.06
shared Buffer 55.471 ns/op 50.687 ns/op 1.09
fastMsgIdFn sha256 / 200 bytes 1.4680 us/op 1.4470 us/op 1.01
fastMsgIdFn h32 xxhash / 200 bytes 165.00 ns/op 150.00 ns/op 1.10
fastMsgIdFn h64 xxhash / 200 bytes 208.00 ns/op 201.00 ns/op 1.03
fastMsgIdFn sha256 / 1000 bytes 4.7620 us/op 4.6050 us/op 1.03
fastMsgIdFn h32 xxhash / 1000 bytes 268.00 ns/op 233.00 ns/op 1.15
fastMsgIdFn h64 xxhash / 1000 bytes 259.00 ns/op 249.00 ns/op 1.04
fastMsgIdFn sha256 / 10000 bytes 41.938 us/op 42.947 us/op 0.98
fastMsgIdFn h32 xxhash / 10000 bytes 1.2950 us/op 1.3090 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 833.00 ns/op 831.00 ns/op 1.00
send data - 1000 256B messages 4.2823 ms/op 4.4750 ms/op 0.96
send data - 1000 512B messages 4.5898 ms/op 5.7140 ms/op 0.80
send data - 1000 1024B messages 4.7028 ms/op 6.8553 ms/op 0.69
send data - 1000 1200B messages 4.9281 ms/op 7.1325 ms/op 0.69
send data - 1000 2048B messages 5.1765 ms/op 6.6879 ms/op 0.77
send data - 1000 4096B messages 5.9108 ms/op 7.3740 ms/op 0.80
send data - 1000 16384B messages 26.071 ms/op 105.90 ms/op 0.25
send data - 1000 65536B messages 232.78 ms/op 169.98 ms/op 1.37
enrSubnets - fastDeserialize 64 bits 736.00 ns/op 682.00 ns/op 1.08
enrSubnets - ssz BitVector 64 bits 265.00 ns/op 244.00 ns/op 1.09
enrSubnets - fastDeserialize 4 bits 99.000 ns/op 102.00 ns/op 0.97
enrSubnets - ssz BitVector 4 bits 264.00 ns/op 254.00 ns/op 1.04
prioritizePeers score -10:0 att 32-0.1 sync 2-0 208.56 us/op 195.36 us/op 1.07
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 238.14 us/op 243.82 us/op 0.98
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 363.33 us/op 326.29 us/op 1.11
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 611.33 us/op 587.68 us/op 1.04
prioritizePeers score 0:0 att 64-1 sync 4-1 724.04 us/op 682.52 us/op 1.06
array of 16000 items push then shift 1.3025 us/op 1.2118 us/op 1.07
LinkedList of 16000 items push then shift 7.5720 ns/op 7.2430 ns/op 1.05
array of 16000 items push then pop 69.775 ns/op 67.493 ns/op 1.03
LinkedList of 16000 items push then pop 6.1340 ns/op 5.7950 ns/op 1.06
array of 24000 items push then shift 1.9148 us/op 1.8106 us/op 1.06
LinkedList of 24000 items push then shift 7.1110 ns/op 6.8550 ns/op 1.04
array of 24000 items push then pop 96.873 ns/op 92.267 ns/op 1.05
LinkedList of 24000 items push then pop 6.1670 ns/op 5.8670 ns/op 1.05
intersect bitArray bitLen 8 4.8020 ns/op 4.6540 ns/op 1.03
intersect array and set length 8 29.928 ns/op 28.385 ns/op 1.05
intersect bitArray bitLen 128 24.306 ns/op 23.534 ns/op 1.03
intersect array and set length 128 504.63 ns/op 482.19 ns/op 1.05
bitArray.getTrueBitIndexes() bitLen 128 1.1080 us/op 963.00 ns/op 1.15
bitArray.getTrueBitIndexes() bitLen 248 1.9530 us/op 1.6990 us/op 1.15
bitArray.getTrueBitIndexes() bitLen 512 4.0360 us/op 3.4690 us/op 1.16
Full columns - reconstruct all 6 blobs 166.52 us/op 116.51 us/op 1.43
Full columns - reconstruct half of the blobs out of 6 70.317 us/op 94.723 us/op 0.74
Full columns - reconstruct single blob out of 6 33.696 us/op 31.485 us/op 1.07
Half columns - reconstruct all 6 blobs 394.73 ms/op 376.72 ms/op 1.05
Half columns - reconstruct half of the blobs out of 6 199.11 ms/op 188.42 ms/op 1.06
Half columns - reconstruct single blob out of 6 71.011 ms/op 69.550 ms/op 1.02
Full columns - reconstruct all 10 blobs 221.67 us/op 239.82 us/op 0.92
Full columns - reconstruct half of the blobs out of 10 102.22 us/op 142.98 us/op 0.71
Full columns - reconstruct single blob out of 10 30.893 us/op 44.183 us/op 0.70
Half columns - reconstruct all 10 blobs 655.17 ms/op 634.71 ms/op 1.03
Half columns - reconstruct half of the blobs out of 10 330.66 ms/op 316.76 ms/op 1.04
Half columns - reconstruct single blob out of 10 70.697 ms/op 67.407 ms/op 1.05
Full columns - reconstruct all 20 blobs 1.7724 ms/op 606.97 us/op 2.92
Full columns - reconstruct half of the blobs out of 20 283.12 us/op 219.06 us/op 1.29
Full columns - reconstruct single blob out of 20 31.113 us/op 32.435 us/op 0.96
Half columns - reconstruct all 20 blobs 1.3078 s/op 1.2480 s/op 1.05
Half columns - reconstruct half of the blobs out of 20 654.44 ms/op 621.14 ms/op 1.05
Half columns - reconstruct single blob out of 20 70.515 ms/op 68.254 ms/op 1.03
Set add up to 64 items then delete first 2.5639 us/op 2.4677 us/op 1.04
OrderedSet add up to 64 items then delete first 3.3532 us/op 3.1928 us/op 1.05
Set add up to 64 items then delete last 2.3638 us/op 2.2557 us/op 1.05
OrderedSet add up to 64 items then delete last 3.2820 us/op 3.2377 us/op 1.01
Set add up to 64 items then delete middle 2.1162 us/op 2.0858 us/op 1.01
OrderedSet add up to 64 items then delete middle 4.7685 us/op 4.6933 us/op 1.02
Set add up to 128 items then delete first 4.2065 us/op 4.0770 us/op 1.03
OrderedSet add up to 128 items then delete first 6.5337 us/op 6.2079 us/op 1.05
Set add up to 128 items then delete last 3.8702 us/op 3.8901 us/op 0.99
OrderedSet add up to 128 items then delete last 5.7928 us/op 5.8618 us/op 0.99
Set add up to 128 items then delete middle 3.8390 us/op 4.2042 us/op 0.91
OrderedSet add up to 128 items then delete middle 11.729 us/op 12.242 us/op 0.96
Set add up to 256 items then delete first 7.8763 us/op 8.3295 us/op 0.95
OrderedSet add up to 256 items then delete first 12.169 us/op 12.752 us/op 0.95
Set add up to 256 items then delete last 7.6470 us/op 7.9815 us/op 0.96
OrderedSet add up to 256 items then delete last 11.485 us/op 12.635 us/op 0.91
Set add up to 256 items then delete middle 7.5530 us/op 11.085 us/op 0.68
OrderedSet add up to 256 items then delete middle 35.481 us/op 38.281 us/op 0.93
pass gossip attestations to forkchoice per slot 2.5522 ms/op 2.5507 ms/op 1.00
forkChoice updateHead vc 100000 bc 64 eq 0 408.17 us/op 387.24 us/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 0 2.4451 ms/op 2.7052 ms/op 0.90
forkChoice updateHead vc 1000000 bc 64 eq 0 4.0451 ms/op 3.8480 ms/op 1.05
forkChoice updateHead vc 600000 bc 320 eq 0 2.4338 ms/op 2.3306 ms/op 1.04
forkChoice updateHead vc 600000 bc 1200 eq 0 2.4896 ms/op 2.4109 ms/op 1.03
forkChoice updateHead vc 600000 bc 7200 eq 0 2.9717 ms/op 3.6449 ms/op 0.82
forkChoice updateHead vc 600000 bc 64 eq 1000 2.9763 ms/op 2.8522 ms/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 10000 3.0352 ms/op 2.9617 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 300000 7.0113 ms/op 6.7546 ms/op 1.04
computeDeltas 1400000 validators 0% inactive 13.591 ms/op 12.329 ms/op 1.10
computeDeltas 1400000 validators 10% inactive 11.770 ms/op 11.502 ms/op 1.02
computeDeltas 1400000 validators 20% inactive 10.751 ms/op 10.471 ms/op 1.03
computeDeltas 1400000 validators 50% inactive 8.3341 ms/op 8.0311 ms/op 1.04
computeDeltas 2100000 validators 0% inactive 19.012 ms/op 18.094 ms/op 1.05
computeDeltas 2100000 validators 10% inactive 17.795 ms/op 17.094 ms/op 1.04
computeDeltas 2100000 validators 20% inactive 16.141 ms/op 15.530 ms/op 1.04
computeDeltas 2100000 validators 50% inactive 9.5598 ms/op 9.0960 ms/op 1.05
altair processAttestation - 250000 vs - 7PWei normalcase 1.7978 ms/op 2.4235 ms/op 0.74
altair processAttestation - 250000 vs - 7PWei worstcase 2.4230 ms/op 3.2392 ms/op 0.75
altair processAttestation - setStatus - 1/6 committees join 102.66 us/op 99.004 us/op 1.04
altair processAttestation - setStatus - 1/3 committees join 194.25 us/op 191.50 us/op 1.01
altair processAttestation - setStatus - 1/2 committees join 283.61 us/op 277.93 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 372.78 us/op 352.80 us/op 1.06
altair processAttestation - setStatus - 4/5 committees join 516.90 us/op 492.02 us/op 1.05
altair processAttestation - setStatus - 100% committees join 600.45 us/op 578.18 us/op 1.04
altair processBlock - 250000 vs - 7PWei normalcase 3.5150 ms/op 4.2335 ms/op 0.83
altair processBlock - 250000 vs - 7PWei normalcase hashState 12.507 ms/op 15.503 ms/op 0.81
altair processBlock - 250000 vs - 7PWei worstcase 19.809 ms/op 21.974 ms/op 0.90
altair processBlock - 250000 vs - 7PWei worstcase hashState 37.713 ms/op 42.902 ms/op 0.88
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2746 ms/op 1.4023 ms/op 0.91
phase0 processBlock - 250000 vs - 7PWei worstcase 17.123 ms/op 17.207 ms/op 1.00
altair processEth1Data - 250000 vs - 7PWei normalcase 301.02 us/op 284.54 us/op 1.06
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.4020 us/op 3.1440 us/op 1.08
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.704 us/op 19.665 us/op 1.10
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.9890 us/op 6.3460 us/op 0.94
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.8620 us/op 3.4730 us/op 1.11
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 94.885 us/op 94.586 us/op 1.00
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4011 ms/op 1.3569 ms/op 1.03
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8286 ms/op 1.8295 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7821 ms/op 1.8424 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.5980 ms/op 3.8640 ms/op 0.93
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0715 ms/op 2.0818 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9777 ms/op 4.0974 ms/op 0.97
Tree 40 250000 create 300.84 ms/op 330.63 ms/op 0.91
Tree 40 250000 get(125000) 95.206 ns/op 91.741 ns/op 1.04
Tree 40 250000 set(125000) 1.0303 us/op 983.31 ns/op 1.05
Tree 40 250000 toArray() 8.9240 ms/op 14.424 ms/op 0.62
Tree 40 250000 iterate all - toArray() + loop 9.1237 ms/op 14.597 ms/op 0.63
Tree 40 250000 iterate all - get(i) 33.517 ms/op 40.218 ms/op 0.83
Array 250000 create 2.0282 ms/op 2.0926 ms/op 0.97
Array 250000 clone - spread 665.24 us/op 646.89 us/op 1.03
Array 250000 get(125000) 0.29400 ns/op 0.29200 ns/op 1.01
Array 250000 set(125000) 0.30000 ns/op 0.29400 ns/op 1.02
Array 250000 iterate all - loop 57.272 us/op 56.555 us/op 1.01
phase0 afterProcessEpoch - 250000 vs - 7PWei 40.802 ms/op 56.643 ms/op 0.72
Array.fill - length 1000000 2.1671 ms/op 2.0447 ms/op 1.06
Array push - length 1000000 11.534 ms/op 8.7122 ms/op 1.32
Array.get 0.20779 ns/op 0.20011 ns/op 1.04
Uint8Array.get 0.23745 ns/op 0.22964 ns/op 1.03
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.001 ms/op 14.113 ms/op 0.99
altair processEpoch - mainnet_e81889 243.08 ms/op 264.35 ms/op 0.92
mainnet_e81889 - altair beforeProcessEpoch 14.315 ms/op 15.337 ms/op 0.93
mainnet_e81889 - altair processJustificationAndFinalization 5.1250 us/op 6.3950 us/op 0.80
mainnet_e81889 - altair processInactivityUpdates 3.5339 ms/op 3.5582 ms/op 0.99
mainnet_e81889 - altair processRewardsAndPenalties 17.770 ms/op 19.168 ms/op 0.93
mainnet_e81889 - altair processRegistryUpdates 518.00 ns/op 521.00 ns/op 0.99
mainnet_e81889 - altair processSlashings 126.00 ns/op 132.00 ns/op 0.95
mainnet_e81889 - altair processEth1DataReset 123.00 ns/op 131.00 ns/op 0.94
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2083 ms/op 2.4537 ms/op 0.49
mainnet_e81889 - altair processSlashingsReset 690.00 ns/op 682.00 ns/op 1.01
mainnet_e81889 - altair processRandaoMixesReset 1.0650 us/op 1.1790 us/op 0.90
mainnet_e81889 - altair processHistoricalRootsUpdate 127.00 ns/op 130.00 ns/op 0.98
mainnet_e81889 - altair processParticipationFlagUpdates 419.00 ns/op 415.00 ns/op 1.01
mainnet_e81889 - altair processSyncCommitteeUpdates 105.00 ns/op 107.00 ns/op 0.98
mainnet_e81889 - altair afterProcessEpoch 40.405 ms/op 42.771 ms/op 0.94
capella processEpoch - mainnet_e217614 722.37 ms/op 807.27 ms/op 0.89
mainnet_e217614 - capella beforeProcessEpoch 54.303 ms/op 61.371 ms/op 0.88
mainnet_e217614 - capella processJustificationAndFinalization 5.4470 us/op 6.3470 us/op 0.86
mainnet_e217614 - capella processInactivityUpdates 11.059 ms/op 14.835 ms/op 0.75
mainnet_e217614 - capella processRewardsAndPenalties 85.388 ms/op 88.154 ms/op 0.97
mainnet_e217614 - capella processRegistryUpdates 4.5480 us/op 4.3690 us/op 1.04
mainnet_e217614 - capella processSlashings 127.00 ns/op 124.00 ns/op 1.02
mainnet_e217614 - capella processEth1DataReset 125.00 ns/op 125.00 ns/op 1.00
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.2588 ms/op 13.489 ms/op 0.39
mainnet_e217614 - capella processSlashingsReset 681.00 ns/op 654.00 ns/op 1.04
mainnet_e217614 - capella processRandaoMixesReset 1.0960 us/op 1.1460 us/op 0.96
mainnet_e217614 - capella processHistoricalRootsUpdate 127.00 ns/op 125.00 ns/op 1.02
mainnet_e217614 - capella processParticipationFlagUpdates 418.00 ns/op 419.00 ns/op 1.00
mainnet_e217614 - capella afterProcessEpoch 111.91 ms/op 107.88 ms/op 1.04
phase0 processEpoch - mainnet_e58758 245.08 ms/op 315.75 ms/op 0.78
mainnet_e58758 - phase0 beforeProcessEpoch 51.818 ms/op 65.525 ms/op 0.79
mainnet_e58758 - phase0 processJustificationAndFinalization 5.2110 us/op 6.2740 us/op 0.83
mainnet_e58758 - phase0 processRewardsAndPenalties 14.916 ms/op 16.442 ms/op 0.91
mainnet_e58758 - phase0 processRegistryUpdates 2.2880 us/op 2.2430 us/op 1.02
mainnet_e58758 - phase0 processSlashings 131.00 ns/op 244.00 ns/op 0.54
mainnet_e58758 - phase0 processEth1DataReset 371.00 ns/op 125.00 ns/op 2.97
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0716 ms/op 788.58 us/op 1.36
mainnet_e58758 - phase0 processSlashingsReset 814.00 ns/op 857.00 ns/op 0.95
mainnet_e58758 - phase0 processRandaoMixesReset 1.2040 us/op 1.1960 us/op 1.01
mainnet_e58758 - phase0 processHistoricalRootsUpdate 135.00 ns/op 126.00 ns/op 1.07
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.0610 us/op 1.1160 us/op 0.95
mainnet_e58758 - phase0 afterProcessEpoch 33.567 ms/op 32.732 ms/op 1.03
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0107 ms/op 963.83 us/op 1.05
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5956 ms/op 1.6658 ms/op 0.96
altair processInactivityUpdates - 250000 normalcase 10.470 ms/op 10.761 ms/op 0.97
altair processInactivityUpdates - 250000 worstcase 10.606 ms/op 10.584 ms/op 1.00
phase0 processRegistryUpdates - 250000 normalcase 2.3310 us/op 2.0980 us/op 1.11
phase0 processRegistryUpdates - 250000 badcase_full_deposits 144.62 us/op 145.24 us/op 1.00
phase0 processRegistryUpdates - 250000 worstcase 0.5 57.124 ms/op 62.574 ms/op 0.91
altair processRewardsAndPenalties - 250000 normalcase 14.113 ms/op 15.658 ms/op 0.90
altair processRewardsAndPenalties - 250000 worstcase 12.386 ms/op 15.496 ms/op 0.80
phase0 getAttestationDeltas - 250000 normalcase 5.3253 ms/op 5.1474 ms/op 1.03
phase0 getAttestationDeltas - 250000 worstcase 5.4182 ms/op 5.1733 ms/op 1.05
phase0 processSlashings - 250000 worstcase 60.989 us/op 61.123 us/op 1.00
altair processSyncCommitteeUpdates - 250000 10.129 ms/op 10.490 ms/op 0.97
BeaconState.hashTreeRoot - No change 172.00 ns/op 168.00 ns/op 1.02
BeaconState.hashTreeRoot - 1 full validator 57.746 us/op 83.569 us/op 0.69
BeaconState.hashTreeRoot - 32 full validator 613.66 us/op 868.72 us/op 0.71
BeaconState.hashTreeRoot - 512 full validator 5.9912 ms/op 9.0405 ms/op 0.66
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 69.034 us/op 99.365 us/op 0.69
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0072 ms/op 1.5328 ms/op 0.66
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.715 ms/op 20.473 ms/op 0.62
BeaconState.hashTreeRoot - 1 balances 56.344 us/op 83.376 us/op 0.68
BeaconState.hashTreeRoot - 32 balances 540.62 us/op 788.68 us/op 0.69
BeaconState.hashTreeRoot - 512 balances 4.5714 ms/op 6.7304 ms/op 0.68
BeaconState.hashTreeRoot - 250000 balances 88.860 ms/op 164.29 ms/op 0.54
aggregationBits - 2048 els - zipIndexesInBitList 20.046 us/op 20.473 us/op 0.98
regular array get 100000 times 23.061 us/op 23.123 us/op 1.00
wrappedArray get 100000 times 23.185 us/op 22.908 us/op 1.01
arrayWithProxy get 100000 times 10.380 ms/op 9.6170 ms/op 1.08
ssz.Root.equals 21.721 ns/op 21.650 ns/op 1.00
byteArrayEquals 21.507 ns/op 21.345 ns/op 1.01
Buffer.compare 8.9190 ns/op 8.8260 ns/op 1.01
processSlot - 1 slots 8.2010 us/op 11.953 us/op 0.69
processSlot - 32 slots 1.4957 ms/op 2.1709 ms/op 0.69
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.5209 ms/op 4.2316 ms/op 0.60
getCommitteeAssignments - req 1 vs - 250000 vc 1.6910 ms/op 1.6360 ms/op 1.03
getCommitteeAssignments - req 100 vs - 250000 vc 3.4417 ms/op 3.3871 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7027 ms/op 3.6429 ms/op 1.02
findModifiedValidators - 10000 modified validators 767.45 ms/op 745.84 ms/op 1.03
findModifiedValidators - 1000 modified validators 503.40 ms/op 445.92 ms/op 1.13
findModifiedValidators - 100 modified validators 359.59 ms/op 331.52 ms/op 1.08
findModifiedValidators - 10 modified validators 340.81 ms/op 251.12 ms/op 1.36
findModifiedValidators - 1 modified validators 276.66 ms/op 155.27 ms/op 1.78
findModifiedValidators - no difference 205.32 ms/op 155.22 ms/op 1.32
migrate state 1500000 validators, 3400 modified, 2000 new 2.5838 s/op 3.1445 s/op 0.82
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6900 ns/op 3.7900 ns/op 0.97
state getBlockRootAtSlot - 250000 vs - 7PWei 260.66 ns/op 408.96 ns/op 0.64
computeProposerIndex 100000 validators 1.3385 ms/op 1.3675 ms/op 0.98
getNextSyncCommitteeIndices 1000 validators 2.8759 ms/op 2.9042 ms/op 0.99
getNextSyncCommitteeIndices 10000 validators 25.359 ms/op 25.396 ms/op 1.00
getNextSyncCommitteeIndices 100000 validators 86.268 ms/op 90.226 ms/op 0.96
computeProposers - vc 250000 552.77 us/op 567.73 us/op 0.97
computeEpochShuffling - vc 250000 39.581 ms/op 39.524 ms/op 1.00
getNextSyncCommittee - vc 250000 9.4295 ms/op 10.551 ms/op 0.89
nodejs block root to RootHex using toHex 90.330 ns/op 90.860 ns/op 0.99
nodejs block root to RootHex using toRootHex 55.699 ns/op 52.621 ns/op 1.06
nodejs fromHex(blob) 766.90 us/op 910.03 us/op 0.84
nodejs fromHexInto(blob) 633.35 us/op 641.78 us/op 0.99
nodejs block root to RootHex using the deprecated toHexString 477.71 ns/op 501.34 ns/op 0.95
nodejs byteArrayEquals 32 bytes (block root) 26.019 ns/op 26.514 ns/op 0.98
nodejs byteArrayEquals 48 bytes (pubkey) 37.703 ns/op 38.091 ns/op 0.99
nodejs byteArrayEquals 96 bytes (signature) 35.914 ns/op 38.068 ns/op 0.94
nodejs byteArrayEquals 1024 bytes 42.858 ns/op 46.033 ns/op 0.93
nodejs byteArrayEquals 131072 bytes (blob) 1.7428 us/op 1.7790 us/op 0.98
browser block root to RootHex using toHex 145.53 ns/op 144.08 ns/op 1.01
browser block root to RootHex using toRootHex 131.68 ns/op 132.13 ns/op 1.00
browser fromHex(blob) 1.5203 ms/op 1.6027 ms/op 0.95
browser fromHexInto(blob) 645.54 us/op 634.76 us/op 1.02
browser block root to RootHex using the deprecated toHexString 329.43 ns/op 347.73 ns/op 0.95
browser byteArrayEquals 32 bytes (block root) 27.992 ns/op 28.457 ns/op 0.98
browser byteArrayEquals 48 bytes (pubkey) 39.470 ns/op 40.091 ns/op 0.98
browser byteArrayEquals 96 bytes (signature) 73.746 ns/op 75.048 ns/op 0.98
browser byteArrayEquals 1024 bytes 753.46 ns/op 756.14 ns/op 1.00
browser byteArrayEquals 131072 bytes (blob) 95.113 us/op 95.679 us/op 0.99

by benchmarkbot/action

@ensi321 ensi321 left a comment

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.

looks good to me. Minor comments about style

Comment thread packages/state-transition/src/block/processDepositRequest.ts Outdated
Comment thread packages/state-transition/src/util/deposit.ts Outdated
@nflaig nflaig changed the title feat: remove old deposit mechanism in fulu chore: remove old deposit mechanism in fulu Jun 3, 2026

@lodekeeper lodekeeper left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Reviewed against v1.7.0-alpha.9 Fulu spec (specs/fulu/beacon-chain.md):

  • processDepositRequest.ts: gate matches Fulu's modified process_deposit_request, which only appends to pending_deposits and no longer touches deposit_requests_start_index.
  • processPendingDeposits.ts: gate matches the removal of the "no requests before bridge deposits" condition post-Fulu (since bridge deposits are gone).
  • util/deposit.ts: getEth1DepositCount → 0 for Fulu+ is the right single-source change. The existing body.deposits.length !== maxDeposits check in processOperations then enforces assert len(body.deposits) == 0 from the Fulu spec, and the unchanged for (const deposit of body.deposits) processDeposit(...) loop is naturally a no-op once that assert has passed. Cleaner than a separate Fulu branch.
  • Iterator-skip removal + spec-tests-version.json bump look right; v1.7.0-alpha.10 release tarball isn't published on consensus-specs yet (current CI download step 404s), but the alpha.10 nightly artifacts from consensus-specs run 26884230978 — which are the exact build that will become alpha.10 — pass on this branch per @nflaig's local run. Once the release publishes, the existing CI cache step will pick it up cleanly.
  • Unit test covers the new Fulu branch of getEth1DepositCount directly.

Closed my parallel attempt (#9458) — this is strictly cleaner.

@nflaig nflaig merged commit e36a2dc into unstable Jun 4, 2026
19 checks passed
@nflaig nflaig deleted the nflaig/remove-old-deposit-mechanism-fulu branch June 4, 2026 08:11
@wemeetagain

Copy link
Copy Markdown
Member

🎉 This PR is included in v1.44.0 🎉

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fully remove old deposit mechanism in Fulu

4 participants