这是indexloc提供的服务,不要输入任何密码
Skip to content

Conversation

@ensi321
Copy link
Contributor

@ensi321 ensi321 commented Sep 24, 2025

Add gloas containers and minimal change to gloas type.

All remaining gloas type update will be in the next PR

Part of #8439

@ensi321 ensi321 marked this pull request as ready for review September 24, 2025 22:36
@ensi321 ensi321 requested a review from a team as a code owner September 24, 2025 22:36
@ensi321 ensi321 added the spec-gloas Issues targeting the Glamsterdam spec version label Sep 24, 2025
@codecov
Copy link

codecov bot commented Sep 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.25%. Comparing base (643a113) to head (fc32c9b).
⚠️ Report is 9 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #8464      +/-   ##
============================================
+ Coverage     52.22%   52.25%   +0.03%     
============================================
  Files           853      852       -1     
  Lines         64899    64973      +74     
  Branches       4767     4769       +2     
============================================
+ Hits          33894    33954      +60     
- Misses        30935    30950      +15     
+ Partials         70       69       -1     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 24, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: dcb5317 Previous: 39be8f0 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 978.20 us/op 742.48 us/op 1.32
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.252 us/op 30.211 us/op 1.23
BLS verify - blst 864.09 us/op 874.34 us/op 0.99
BLS verifyMultipleSignatures 3 - blst 1.3547 ms/op 1.2771 ms/op 1.06
BLS verifyMultipleSignatures 8 - blst 2.5210 ms/op 2.0660 ms/op 1.22
BLS verifyMultipleSignatures 32 - blst 6.8419 ms/op 4.4281 ms/op 1.55
BLS verifyMultipleSignatures 64 - blst 11.591 ms/op 8.1187 ms/op 1.43
BLS verifyMultipleSignatures 128 - blst 18.112 ms/op 15.954 ms/op 1.14
BLS deserializing 10000 signatures 707.20 ms/op 617.41 ms/op 1.15
BLS deserializing 100000 signatures 7.1036 s/op 6.0087 s/op 1.18
BLS verifyMultipleSignatures - same message - 3 - blst 1.1819 ms/op 941.98 us/op 1.25
BLS verifyMultipleSignatures - same message - 8 - blst 1.2780 ms/op 1.0724 ms/op 1.19
BLS verifyMultipleSignatures - same message - 32 - blst 1.7734 ms/op 1.6997 ms/op 1.04
BLS verifyMultipleSignatures - same message - 64 - blst 2.7493 ms/op 2.4543 ms/op 1.12
BLS verifyMultipleSignatures - same message - 128 - blst 4.5138 ms/op 4.0034 ms/op 1.13
BLS aggregatePubkeys 32 - blst 19.782 us/op 17.063 us/op 1.16
BLS aggregatePubkeys 128 - blst 68.624 us/op 59.210 us/op 1.16
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 62.819 ms/op 40.965 ms/op 1.53
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 59.166 ms/op 34.109 ms/op 1.73
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 42.684 ms/op 39.831 ms/op 1.07
getSlashingsAndExits - default max 71.668 us/op 49.014 us/op 1.46
getSlashingsAndExits - 2k 275.08 us/op 264.40 us/op 1.04
isKnown best case - 1 super set check 196.00 ns/op 386.00 ns/op 0.51
isKnown normal case - 2 super set checks 195.00 ns/op 383.00 ns/op 0.51
isKnown worse case - 16 super set checks 197.00 ns/op 382.00 ns/op 0.52
InMemoryCheckpointStateCache - add get delete 2.3780 us/op 2.4250 us/op 0.98
validate api signedAggregateAndProof - struct 2.5916 ms/op 1.9365 ms/op 1.34
validate gossip signedAggregateAndProof - struct 2.5837 ms/op 1.9379 ms/op 1.33
batch validate gossip attestation - vc 640000 - chunk 32 113.96 us/op 104.08 us/op 1.09
batch validate gossip attestation - vc 640000 - chunk 64 102.73 us/op 92.011 us/op 1.12
batch validate gossip attestation - vc 640000 - chunk 128 94.920 us/op 83.963 us/op 1.13
batch validate gossip attestation - vc 640000 - chunk 256 100.99 us/op 82.147 us/op 1.23
pickEth1Vote - no votes 974.80 us/op 816.68 us/op 1.19
pickEth1Vote - max votes 6.0365 ms/op 4.3938 ms/op 1.37
pickEth1Vote - Eth1Data hashTreeRoot value x2048 10.903 ms/op 8.3652 ms/op 1.30
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 14.677 ms/op 10.767 ms/op 1.36
pickEth1Vote - Eth1Data fastSerialize value x2048 425.72 us/op 379.00 us/op 1.12
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.2539 ms/op 1.9435 ms/op 1.16
bytes32 toHexString 372.00 ns/op 555.00 ns/op 0.67
bytes32 Buffer.toString(hex) 304.00 ns/op 410.00 ns/op 0.74
bytes32 Buffer.toString(hex) from Uint8Array 375.00 ns/op 490.00 ns/op 0.77
bytes32 Buffer.toString(hex) + 0x 274.00 ns/op 407.00 ns/op 0.67
Object access 1 prop 0.15100 ns/op 0.30300 ns/op 0.50
Map access 1 prop 0.12500 ns/op 0.30800 ns/op 0.41
Object get x1000 5.9400 ns/op 5.2670 ns/op 1.13
Map get x1000 6.5440 ns/op 5.9670 ns/op 1.10
Object set x1000 28.482 ns/op 18.583 ns/op 1.53
Map set x1000 19.197 ns/op 16.091 ns/op 1.19
Return object 10000 times 0.28380 ns/op 0.27680 ns/op 1.03
Throw Error 10000 times 4.3626 us/op 3.4330 us/op 1.27
toHex 127.62 ns/op 103.54 ns/op 1.23
Buffer.from 121.71 ns/op 97.357 ns/op 1.25
shared Buffer 83.271 ns/op 68.460 ns/op 1.22
fastMsgIdFn sha256 / 200 bytes 2.2370 us/op 1.9730 us/op 1.13
fastMsgIdFn h32 xxhash / 200 bytes 202.00 ns/op 379.00 ns/op 0.53
fastMsgIdFn h64 xxhash / 200 bytes 274.00 ns/op 426.00 ns/op 0.64
fastMsgIdFn sha256 / 1000 bytes 7.4840 us/op 5.7630 us/op 1.30
fastMsgIdFn h32 xxhash / 1000 bytes 381.00 ns/op 503.00 ns/op 0.76
fastMsgIdFn h64 xxhash / 1000 bytes 334.00 ns/op 504.00 ns/op 0.66
fastMsgIdFn sha256 / 10000 bytes 64.851 us/op 49.506 us/op 1.31
fastMsgIdFn h32 xxhash / 10000 bytes 1.9290 us/op 1.8840 us/op 1.02
fastMsgIdFn h64 xxhash / 10000 bytes 1.2690 us/op 1.3160 us/op 0.96
send data - 1000 256B messages 16.004 ms/op 11.781 ms/op 1.36
send data - 1000 512B messages 21.693 ms/op 17.402 ms/op 1.25
send data - 1000 1024B messages 28.529 ms/op 23.145 ms/op 1.23
send data - 1000 1200B messages 28.423 ms/op 14.564 ms/op 1.95
send data - 1000 2048B messages 25.895 ms/op 14.318 ms/op 1.81
send data - 1000 4096B messages 27.728 ms/op 15.547 ms/op 1.78
send data - 1000 16384B messages 47.667 ms/op 22.687 ms/op 2.10
send data - 1000 65536B messages 126.57 ms/op 61.611 ms/op 2.05
enrSubnets - fastDeserialize 64 bits 891.00 ns/op 961.00 ns/op 0.93
enrSubnets - ssz BitVector 64 bits 333.00 ns/op 489.00 ns/op 0.68
enrSubnets - fastDeserialize 4 bits 127.00 ns/op 308.00 ns/op 0.41
enrSubnets - ssz BitVector 4 bits 327.00 ns/op 490.00 ns/op 0.67
prioritizePeers score -10:0 att 32-0.1 sync 2-0 237.76 us/op 194.09 us/op 1.23
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 265.59 us/op 224.58 us/op 1.18
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 384.32 us/op 360.71 us/op 1.07
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 723.23 us/op 630.50 us/op 1.15
prioritizePeers score 0:0 att 64-1 sync 4-1 862.42 us/op 724.42 us/op 1.19
array of 16000 items push then shift 1.6380 us/op 1.2669 us/op 1.29
LinkedList of 16000 items push then shift 7.6500 ns/op 6.5000 ns/op 1.18
array of 16000 items push then pop 75.911 ns/op 62.111 ns/op 1.22
LinkedList of 16000 items push then pop 7.5300 ns/op 6.1880 ns/op 1.22
array of 24000 items push then shift 2.4199 us/op 1.8603 us/op 1.30
LinkedList of 24000 items push then shift 7.8320 ns/op 6.4270 ns/op 1.22
array of 24000 items push then pop 107.66 ns/op 85.494 ns/op 1.26
LinkedList of 24000 items push then pop 7.1700 ns/op 6.1850 ns/op 1.16
intersect bitArray bitLen 8 6.3350 ns/op 5.6690 ns/op 1.12
intersect array and set length 8 37.320 ns/op 32.364 ns/op 1.15
intersect bitArray bitLen 128 29.557 ns/op 26.417 ns/op 1.12
intersect array and set length 128 612.35 ns/op 542.38 ns/op 1.13
bitArray.getTrueBitIndexes() bitLen 128 1.0850 us/op 1.1070 us/op 0.98
bitArray.getTrueBitIndexes() bitLen 248 1.7470 us/op 1.7540 us/op 1.00
bitArray.getTrueBitIndexes() bitLen 512 3.6040 us/op 3.2310 us/op 1.12
Buffer.concat 32 items 768.00 ns/op 783.00 ns/op 0.98
Uint8Array.set 32 items 1.0890 us/op 976.00 ns/op 1.12
Buffer.copy 2.0680 us/op 2.0410 us/op 1.01
Uint8Array.set - with subarray 1.5870 us/op 1.5920 us/op 1.00
Uint8Array.set - without subarray 1.0250 us/op 994.00 ns/op 1.03
getUint32 - dataview 199.00 ns/op 376.00 ns/op 0.53
getUint32 - manual 118.00 ns/op 311.00 ns/op 0.38
Set add up to 64 items then delete first 2.2466 us/op 1.8263 us/op 1.23
OrderedSet add up to 64 items then delete first 3.4194 us/op 2.8668 us/op 1.19
Set add up to 64 items then delete last 2.4738 us/op 2.0742 us/op 1.19
OrderedSet add up to 64 items then delete last 4.0171 us/op 3.1904 us/op 1.26
Set add up to 64 items then delete middle 2.6688 us/op 2.0798 us/op 1.28
OrderedSet add up to 64 items then delete middle 5.3612 us/op 4.6013 us/op 1.17
Set add up to 128 items then delete first 5.5258 us/op 4.1200 us/op 1.34
OrderedSet add up to 128 items then delete first 9.4041 us/op 6.4965 us/op 1.45
Set add up to 128 items then delete last 5.0169 us/op 3.9821 us/op 1.26
OrderedSet add up to 128 items then delete last 7.6481 us/op 6.1599 us/op 1.24
Set add up to 128 items then delete middle 5.2294 us/op 3.9792 us/op 1.31
OrderedSet add up to 128 items then delete middle 14.247 us/op 11.829 us/op 1.20
Set add up to 256 items then delete first 19.248 us/op 8.0610 us/op 2.39
OrderedSet add up to 256 items then delete first 17.239 us/op 12.636 us/op 1.36
Set add up to 256 items then delete last 9.9341 us/op 7.8158 us/op 1.27
OrderedSet add up to 256 items then delete last 14.955 us/op 12.061 us/op 1.24
Set add up to 256 items then delete middle 9.6866 us/op 7.8221 us/op 1.24
OrderedSet add up to 256 items then delete middle 41.218 us/op 34.329 us/op 1.20
transfer serialized Status (84 B) 2.3270 us/op 1.9310 us/op 1.21
copy serialized Status (84 B) 1.1660 us/op 1.1840 us/op 0.98
transfer serialized SignedVoluntaryExit (112 B) 2.2510 us/op 1.9450 us/op 1.16
copy serialized SignedVoluntaryExit (112 B) 1.4690 us/op 1.1790 us/op 1.25
transfer serialized ProposerSlashing (416 B) 2.3630 us/op 2.1080 us/op 1.12
copy serialized ProposerSlashing (416 B) 1.7570 us/op 1.3380 us/op 1.31
transfer serialized Attestation (485 B) 2.3950 us/op 2.0810 us/op 1.15
copy serialized Attestation (485 B) 1.3030 us/op 1.3480 us/op 0.97
transfer serialized AttesterSlashing (33232 B) 2.2940 us/op 2.1470 us/op 1.07
copy serialized AttesterSlashing (33232 B) 4.1260 us/op 2.5340 us/op 1.63
transfer serialized Small SignedBeaconBlock (128000 B) 3.0370 us/op 2.1860 us/op 1.39
copy serialized Small SignedBeaconBlock (128000 B) 11.598 us/op 5.5960 us/op 2.07
transfer serialized Avg SignedBeaconBlock (200000 B) 3.6820 us/op 2.3560 us/op 1.56
copy serialized Avg SignedBeaconBlock (200000 B) 13.606 us/op 8.0400 us/op 1.69
transfer serialized BlobsSidecar (524380 B) 3.5820 us/op 3.0870 us/op 1.16
copy serialized BlobsSidecar (524380 B) 60.118 us/op 95.290 us/op 0.63
transfer serialized Big SignedBeaconBlock (1000000 B) 4.0030 us/op 3.4430 us/op 1.16
copy serialized Big SignedBeaconBlock (1000000 B) 142.74 us/op 114.60 us/op 1.25
pass gossip attestations to forkchoice per slot 2.8435 ms/op 2.3385 ms/op 1.22
forkChoice updateHead vc 100000 bc 64 eq 0 467.49 us/op 395.20 us/op 1.18
forkChoice updateHead vc 600000 bc 64 eq 0 3.0114 ms/op 2.3380 ms/op 1.29
forkChoice updateHead vc 1000000 bc 64 eq 0 4.8805 ms/op 3.8828 ms/op 1.26
forkChoice updateHead vc 600000 bc 320 eq 0 2.9412 ms/op 2.4376 ms/op 1.21
forkChoice updateHead vc 600000 bc 1200 eq 0 2.9689 ms/op 2.3889 ms/op 1.24
forkChoice updateHead vc 600000 bc 7200 eq 0 3.2764 ms/op 2.5309 ms/op 1.29
forkChoice updateHead vc 600000 bc 64 eq 1000 10.680 ms/op 9.4372 ms/op 1.13
forkChoice updateHead vc 600000 bc 64 eq 10000 10.599 ms/op 9.3493 ms/op 1.13
forkChoice updateHead vc 600000 bc 64 eq 300000 13.610 ms/op 11.210 ms/op 1.21
computeDeltas 500000 validators 300 proto nodes 4.0197 ms/op 3.0753 ms/op 1.31
computeDeltas 500000 validators 1200 proto nodes 4.0061 ms/op 3.0793 ms/op 1.30
computeDeltas 500000 validators 7200 proto nodes 4.0269 ms/op 3.0079 ms/op 1.34
computeDeltas 750000 validators 300 proto nodes 5.8275 ms/op 4.6891 ms/op 1.24
computeDeltas 750000 validators 1200 proto nodes 5.8157 ms/op 4.5363 ms/op 1.28
computeDeltas 750000 validators 7200 proto nodes 5.7675 ms/op 4.5426 ms/op 1.27
computeDeltas 1400000 validators 300 proto nodes 10.758 ms/op 8.5766 ms/op 1.25
computeDeltas 1400000 validators 1200 proto nodes 10.660 ms/op 8.4038 ms/op 1.27
computeDeltas 1400000 validators 7200 proto nodes 10.825 ms/op 8.3982 ms/op 1.29
computeDeltas 2100000 validators 300 proto nodes 16.094 ms/op 12.922 ms/op 1.25
computeDeltas 2100000 validators 1200 proto nodes 16.068 ms/op 13.006 ms/op 1.24
computeDeltas 2100000 validators 7200 proto nodes 15.965 ms/op 12.814 ms/op 1.25
altair processAttestation - 250000 vs - 7PWei normalcase 1.9981 ms/op 1.6087 ms/op 1.24
altair processAttestation - 250000 vs - 7PWei worstcase 2.9346 ms/op 2.4484 ms/op 1.20
altair processAttestation - setStatus - 1/6 committees join 136.60 us/op 102.49 us/op 1.33
altair processAttestation - setStatus - 1/3 committees join 248.38 us/op 182.59 us/op 1.36
altair processAttestation - setStatus - 1/2 committees join 342.31 us/op 254.78 us/op 1.34
altair processAttestation - setStatus - 2/3 committees join 450.79 us/op 393.42 us/op 1.15
altair processAttestation - setStatus - 4/5 committees join 604.12 us/op 473.85 us/op 1.27
altair processAttestation - setStatus - 100% committees join 713.56 us/op 546.98 us/op 1.30
altair processBlock - 250000 vs - 7PWei normalcase 5.5723 ms/op 3.8498 ms/op 1.45
altair processBlock - 250000 vs - 7PWei normalcase hashState 35.664 ms/op 30.047 ms/op 1.19
altair processBlock - 250000 vs - 7PWei worstcase 43.725 ms/op 37.640 ms/op 1.16
altair processBlock - 250000 vs - 7PWei worstcase hashState 90.464 ms/op 78.909 ms/op 1.15
phase0 processBlock - 250000 vs - 7PWei normalcase 2.5021 ms/op 1.8807 ms/op 1.33
phase0 processBlock - 250000 vs - 7PWei worstcase 21.852 ms/op 23.965 ms/op 0.91
altair processEth1Data - 250000 vs - 7PWei normalcase 333.76 us/op 258.90 us/op 1.29
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.5040 us/op 5.6680 us/op 1.68
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 55.285 us/op 34.514 us/op 1.60
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 16.369 us/op 9.5800 us/op 1.71
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 10.130 us/op 3.7110 us/op 2.73
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 257.70 us/op 160.61 us/op 1.60
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.8672 ms/op 1.2739 ms/op 1.47
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.3601 ms/op 1.6093 ms/op 1.47
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.2504 ms/op 1.7055 ms/op 1.32
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.6150 ms/op 3.6349 ms/op 1.27
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.3472 ms/op 1.7765 ms/op 1.32
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.8523 ms/op 3.7079 ms/op 1.31
Tree 40 250000 create 409.07 ms/op 339.97 ms/op 1.20
Tree 40 250000 get(125000) 144.50 ns/op 109.48 ns/op 1.32
Tree 40 250000 set(125000) 1.4231 us/op 1.1701 us/op 1.22
Tree 40 250000 toArray() 14.738 ms/op 12.620 ms/op 1.17
Tree 40 250000 iterate all - toArray() + loop 14.582 ms/op 13.897 ms/op 1.05
Tree 40 250000 iterate all - get(i) 49.239 ms/op 41.235 ms/op 1.19
Array 250000 create 2.3635 ms/op 2.1255 ms/op 1.11
Array 250000 clone - spread 805.78 us/op 625.28 us/op 1.29
Array 250000 get(125000) 0.40300 ns/op 0.52500 ns/op 0.77
Array 250000 set(125000) 0.42600 ns/op 0.53400 ns/op 0.80
Array 250000 iterate all - loop 106.82 us/op 92.614 us/op 1.15
phase0 afterProcessEpoch - 250000 vs - 7PWei 39.036 ms/op 37.573 ms/op 1.04
Array.fill - length 1000000 3.2992 ms/op 2.6525 ms/op 1.24
Array push - length 1000000 12.121 ms/op 11.214 ms/op 1.08
Array.get 0.26638 ns/op 0.24580 ns/op 1.08
Uint8Array.get 0.43224 ns/op 0.39178 ns/op 1.10
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.346 ms/op 17.118 ms/op 0.95
altair processEpoch - mainnet_e81889 295.41 ms/op 276.69 ms/op 1.07
mainnet_e81889 - altair beforeProcessEpoch 19.860 ms/op 15.085 ms/op 1.32
mainnet_e81889 - altair processJustificationAndFinalization 6.4600 us/op 4.6310 us/op 1.39
mainnet_e81889 - altair processInactivityUpdates 5.0022 ms/op 3.5313 ms/op 1.42
mainnet_e81889 - altair processRewardsAndPenalties 46.744 ms/op 35.774 ms/op 1.31
mainnet_e81889 - altair processRegistryUpdates 725.00 ns/op 850.00 ns/op 0.85
mainnet_e81889 - altair processSlashings 192.00 ns/op 393.00 ns/op 0.49
mainnet_e81889 - altair processEth1DataReset 190.00 ns/op 389.00 ns/op 0.49
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2020 ms/op 1.1342 ms/op 1.06
mainnet_e81889 - altair processSlashingsReset 899.00 ns/op 984.00 ns/op 0.91
mainnet_e81889 - altair processRandaoMixesReset 1.5110 us/op 1.2010 us/op 1.26
mainnet_e81889 - altair processHistoricalRootsUpdate 181.00 ns/op 391.00 ns/op 0.46
mainnet_e81889 - altair processParticipationFlagUpdates 543.00 ns/op 688.00 ns/op 0.79
mainnet_e81889 - altair processSyncCommitteeUpdates 147.00 ns/op 352.00 ns/op 0.42
mainnet_e81889 - altair afterProcessEpoch 43.109 ms/op 39.453 ms/op 1.09
capella processEpoch - mainnet_e217614 967.37 ms/op 899.04 ms/op 1.08
mainnet_e217614 - capella beforeProcessEpoch 63.962 ms/op 56.389 ms/op 1.13
mainnet_e217614 - capella processJustificationAndFinalization 5.4150 us/op 4.4060 us/op 1.23
mainnet_e217614 - capella processInactivityUpdates 13.997 ms/op 12.031 ms/op 1.16
mainnet_e217614 - capella processRewardsAndPenalties 205.46 ms/op 189.89 ms/op 1.08
mainnet_e217614 - capella processRegistryUpdates 6.3270 us/op 5.0450 us/op 1.25
mainnet_e217614 - capella processSlashings 175.00 ns/op 386.00 ns/op 0.45
mainnet_e217614 - capella processEth1DataReset 168.00 ns/op 383.00 ns/op 0.44
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.1730 ms/op 3.3378 ms/op 1.25
mainnet_e217614 - capella processSlashingsReset 1.1190 us/op 980.00 ns/op 1.14
mainnet_e217614 - capella processRandaoMixesReset 1.8670 us/op 1.4950 us/op 1.25
mainnet_e217614 - capella processHistoricalRootsUpdate 174.00 ns/op 400.00 ns/op 0.43
mainnet_e217614 - capella processParticipationFlagUpdates 508.00 ns/op 694.00 ns/op 0.73
mainnet_e217614 - capella afterProcessEpoch 112.58 ms/op 100.54 ms/op 1.12
phase0 processEpoch - mainnet_e58758 324.46 ms/op 264.50 ms/op 1.23
mainnet_e58758 - phase0 beforeProcessEpoch 80.837 ms/op 72.754 ms/op 1.11
mainnet_e58758 - phase0 processJustificationAndFinalization 5.9910 us/op 5.4790 us/op 1.09
mainnet_e58758 - phase0 processRewardsAndPenalties 42.706 ms/op 36.218 ms/op 1.18
mainnet_e58758 - phase0 processRegistryUpdates 3.6880 us/op 3.7090 us/op 0.99
mainnet_e58758 - phase0 processSlashings 181.00 ns/op 394.00 ns/op 0.46
mainnet_e58758 - phase0 processEth1DataReset 185.00 ns/op 388.00 ns/op 0.48
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1561 ms/op 880.60 us/op 1.31
mainnet_e58758 - phase0 processSlashingsReset 901.00 ns/op 1.0880 us/op 0.83
mainnet_e58758 - phase0 processRandaoMixesReset 1.2370 us/op 1.2050 us/op 1.03
mainnet_e58758 - phase0 processHistoricalRootsUpdate 180.00 ns/op 397.00 ns/op 0.45
mainnet_e58758 - phase0 processParticipationRecordUpdates 882.00 ns/op 1.1600 us/op 0.76
mainnet_e58758 - phase0 afterProcessEpoch 35.486 ms/op 31.793 ms/op 1.12
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3059 ms/op 936.11 us/op 1.40
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9359 ms/op 1.4748 ms/op 1.31
altair processInactivityUpdates - 250000 normalcase 20.641 ms/op 18.120 ms/op 1.14
altair processInactivityUpdates - 250000 worstcase 20.011 ms/op 15.643 ms/op 1.28
phase0 processRegistryUpdates - 250000 normalcase 6.5560 us/op 5.0700 us/op 1.29
phase0 processRegistryUpdates - 250000 badcase_full_deposits 256.96 us/op 277.05 us/op 0.93
phase0 processRegistryUpdates - 250000 worstcase 0.5 104.80 ms/op 109.41 ms/op 0.96
altair processRewardsAndPenalties - 250000 normalcase 32.404 ms/op 25.186 ms/op 1.29
altair processRewardsAndPenalties - 250000 worstcase 30.349 ms/op 30.421 ms/op 1.00
phase0 getAttestationDeltas - 250000 normalcase 7.2895 ms/op 4.3357 ms/op 1.68
phase0 getAttestationDeltas - 250000 worstcase 6.0325 ms/op 5.1979 ms/op 1.16
phase0 processSlashings - 250000 worstcase 128.20 us/op 83.411 us/op 1.54
altair processSyncCommitteeUpdates - 250000 11.176 ms/op 9.6011 ms/op 1.16
BeaconState.hashTreeRoot - No change 217.00 ns/op 425.00 ns/op 0.51
BeaconState.hashTreeRoot - 1 full validator 72.219 us/op 71.742 us/op 1.01
BeaconState.hashTreeRoot - 32 full validator 894.32 us/op 989.55 us/op 0.90
BeaconState.hashTreeRoot - 512 full validator 10.174 ms/op 7.0966 ms/op 1.43
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 87.577 us/op 87.519 us/op 1.00
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2655 ms/op 1.5017 ms/op 0.84
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 25.463 ms/op 23.910 ms/op 1.06
BeaconState.hashTreeRoot - 1 balances 80.554 us/op 73.456 us/op 1.10
BeaconState.hashTreeRoot - 32 balances 1.0060 ms/op 613.42 us/op 1.64
BeaconState.hashTreeRoot - 512 balances 9.1156 ms/op 5.5968 ms/op 1.63
BeaconState.hashTreeRoot - 250000 balances 184.07 ms/op 162.33 ms/op 1.13
aggregationBits - 2048 els - zipIndexesInBitList 21.229 us/op 17.686 us/op 1.20
byteArrayEquals 32 53.333 ns/op 42.385 ns/op 1.26
Buffer.compare 32 18.058 ns/op 15.758 ns/op 1.15
byteArrayEquals 1024 1.5792 us/op 1.2469 us/op 1.27
Buffer.compare 1024 25.204 ns/op 24.249 ns/op 1.04
byteArrayEquals 16384 25.136 us/op 19.953 us/op 1.26
Buffer.compare 16384 175.97 ns/op 172.63 ns/op 1.02
byteArrayEquals 123687377 189.54 ms/op 151.00 ms/op 1.26
Buffer.compare 123687377 6.3202 ms/op 4.4533 ms/op 1.42
byteArrayEquals 32 - diff last byte 52.088 ns/op 41.895 ns/op 1.24
Buffer.compare 32 - diff last byte 17.593 ns/op 15.767 ns/op 1.12
byteArrayEquals 1024 - diff last byte 1.5742 us/op 1.2557 us/op 1.25
Buffer.compare 1024 - diff last byte 25.028 ns/op 23.943 ns/op 1.05
byteArrayEquals 16384 - diff last byte 25.063 us/op 20.002 us/op 1.25
Buffer.compare 16384 - diff last byte 180.44 ns/op 194.68 ns/op 0.93
byteArrayEquals 123687377 - diff last byte 188.62 ms/op 148.29 ms/op 1.27
Buffer.compare 123687377 - diff last byte 6.2358 ms/op 4.3284 ms/op 1.44
byteArrayEquals 32 - random bytes 5.0900 ns/op 4.8720 ns/op 1.04
Buffer.compare 32 - random bytes 17.898 ns/op 15.851 ns/op 1.13
byteArrayEquals 1024 - random bytes 5.0910 ns/op 4.8340 ns/op 1.05
Buffer.compare 1024 - random bytes 17.765 ns/op 15.085 ns/op 1.18
byteArrayEquals 16384 - random bytes 5.3940 ns/op 4.7260 ns/op 1.14
Buffer.compare 16384 - random bytes 17.771 ns/op 14.892 ns/op 1.19
byteArrayEquals 123687377 - random bytes 6.4200 ns/op 7.6800 ns/op 0.84
Buffer.compare 123687377 - random bytes 19.070 ns/op 18.900 ns/op 1.01
regular array get 100000 times 32.961 us/op 40.289 us/op 0.82
wrappedArray get 100000 times 32.958 us/op 40.491 us/op 0.81
arrayWithProxy get 100000 times 12.699 ms/op 9.3924 ms/op 1.35
ssz.Root.equals 46.386 ns/op 39.212 ns/op 1.18
byteArrayEquals 45.499 ns/op 38.657 ns/op 1.18
Buffer.compare 10.656 ns/op 9.4240 ns/op 1.13
processSlot - 1 slots 10.027 us/op 8.6860 us/op 1.15
processSlot - 32 slots 3.7150 ms/op 1.9913 ms/op 1.87
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.8043 ms/op 2.0751 ms/op 1.35
getCommitteeAssignments - req 1 vs - 250000 vc 2.0825 ms/op 1.7377 ms/op 1.20
getCommitteeAssignments - req 100 vs - 250000 vc 4.0024 ms/op 3.4374 ms/op 1.16
getCommitteeAssignments - req 1000 vs - 250000 vc 4.2602 ms/op 3.6601 ms/op 1.16
findModifiedValidators - 10000 modified validators 739.32 ms/op 777.78 ms/op 0.95
findModifiedValidators - 1000 modified validators 698.33 ms/op 683.51 ms/op 1.02
findModifiedValidators - 100 modified validators 185.82 ms/op 222.82 ms/op 0.83
findModifiedValidators - 10 modified validators 206.52 ms/op 130.84 ms/op 1.58
findModifiedValidators - 1 modified validators 141.99 ms/op 156.42 ms/op 0.91
findModifiedValidators - no difference 145.51 ms/op 130.85 ms/op 1.11
compare ViewDUs 6.2265 s/op 5.9606 s/op 1.04
compare each validator Uint8Array 2.0747 s/op 1.9524 s/op 1.06
compare ViewDU to Uint8Array 1.1253 s/op 863.72 ms/op 1.30
migrate state 1000000 validators, 24 modified, 0 new 881.88 ms/op 839.98 ms/op 1.05
migrate state 1000000 validators, 1700 modified, 1000 new 1.1103 s/op 1.0642 s/op 1.04
migrate state 1000000 validators, 3400 modified, 2000 new 1.3083 s/op 1.2209 s/op 1.07
migrate state 1500000 validators, 24 modified, 0 new 868.93 ms/op 921.08 ms/op 0.94
migrate state 1500000 validators, 1700 modified, 1000 new 1.0388 s/op 1.0322 s/op 1.01
migrate state 1500000 validators, 3400 modified, 2000 new 1.3269 s/op 1.2325 s/op 1.08
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.1900 ns/op 5.8200 ns/op 0.89
state getBlockRootAtSlot - 250000 vs - 7PWei 503.42 ns/op 352.35 ns/op 1.43
naive computeProposerIndex 100000 validators 50.472 ms/op 43.275 ms/op 1.17
computeProposerIndex 100000 validators 1.5414 ms/op 1.3235 ms/op 1.16
naiveGetNextSyncCommitteeIndices 1000 validators 7.5929 s/op 6.5120 s/op 1.17
getNextSyncCommitteeIndices 1000 validators 111.97 ms/op 91.352 ms/op 1.23
naiveGetNextSyncCommitteeIndices 10000 validators 7.4072 s/op 6.8792 s/op 1.08
getNextSyncCommitteeIndices 10000 validators 110.49 ms/op 91.111 ms/op 1.21
naiveGetNextSyncCommitteeIndices 100000 validators 7.6663 s/op 6.1532 s/op 1.25
getNextSyncCommitteeIndices 100000 validators 109.12 ms/op 90.574 ms/op 1.20
naive computeShuffledIndex 100000 validators 23.797 s/op 21.429 s/op 1.11
cached computeShuffledIndex 100000 validators 537.39 ms/op 455.85 ms/op 1.18
naive computeShuffledIndex 2000000 validators 494.65 s/op 409.42 s/op 1.21
cached computeShuffledIndex 2000000 validators 32.447 s/op 14.331 s/op 2.26
computeProposers - vc 250000 625.72 us/op 531.39 us/op 1.18
computeEpochShuffling - vc 250000 41.948 ms/op 36.751 ms/op 1.14
getNextSyncCommittee - vc 250000 10.405 ms/op 8.9499 ms/op 1.16
computeSigningRoot for AttestationData 19.310 us/op 16.606 us/op 1.16
hash AttestationData serialized data then Buffer.toString(base64) 1.5771 us/op 1.0721 us/op 1.47
toHexString serialized data 1.1611 us/op 809.63 ns/op 1.43
Buffer.toString(base64) 150.96 ns/op 100.64 ns/op 1.50
nodejs block root to RootHex using toHex 158.81 ns/op 110.59 ns/op 1.44
nodejs block root to RootHex using toRootHex 88.611 ns/op 74.657 ns/op 1.19
nodejs fromhex(blob) 117.90 ms/op 93.255 ms/op 1.26
nodejs fromHexInto(blob) 93.468 ms/op 80.088 ms/op 1.17
browser block root to RootHex using the deprecated toHexString 208.19 ns/op 188.90 ns/op 1.10
browser block root to RootHex using toHex 174.28 ns/op 152.29 ns/op 1.14
browser block root to RootHex using toRootHex 163.87 ns/op 137.36 ns/op 1.19
browser fromHexInto(blob) 825.39 us/op 616.88 us/op 1.34
browser fromHex(blob) 797.93 ms/op 563.11 ms/op 1.42

by benchmarkbot/action

currentSyncCommittee: altairSsz.SyncCommittee,
nextSyncCommittee: altairSsz.SyncCommittee,
// Execution
// latestExecutionPayloadHeader: ExecutionPayloadHeader, // Removed in GLOAS:EIP7732
Copy link
Member

Choose a reason for hiding this comment

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

this was removed but ExecutionPayloadBid was added, we should make sure we are update to date with v1.6.0-beta.0 which is the spec that will be used for devnet-0

should look into how we can activate ssz static tests already

Copy link
Contributor Author

Choose a reason for hiding this comment

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

should look into how we can activate ssz static tests already

Probably non-trivial to do because SkipOpts.skippedForks is applied to all spec tests. Can't run ssz static tests only for gloas.

But I can run it locally and see the result

const stateGloas = state as CompositeViewDU<typeof ssz.gloas.BeaconState>;
stateGloas.fork.previousVersion = config.GLOAS_FORK_VERSION;
stateGloas.fork.currentVersion = config.GLOAS_FORK_VERSION;
stateGloas.latestExecutionPayloadHeader =
Copy link
Member

Choose a reason for hiding this comment

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

might need to initialize latest_execution_payload_bid here

Copy link
Contributor Author

Choose a reason for hiding this comment

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

might need to initialize latest_execution_payload_bid here

Why do we need to do it?

Copy link
Member

Choose a reason for hiding this comment

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

for same reason we need a default value for latestExecutionPayloadHeader, it's gonna need some value in the genesis state

Copy link
Member

Choose a reason for hiding this comment

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

can keep this out for now, we are not starting genesis from gloas for now anyways in our tests

@nflaig
Copy link
Member

nflaig commented Sep 25, 2025

/gemini review

Copy link
Contributor

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

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 introduces the SSZ container definitions for the new gloas fork, including new types for the beacon block body, beacon state, and various attestation-related structures. The changes are mostly additive, preparing the codebase for the upcoming fork. The integration of these new types is partially deferred, as indicated by TODO comments, which aligns with the PR description. My review found a minor but important typo in one of the new BeaconState fields, for which I've suggested a fix.

BeaconBlockBody: electra.BeaconBlockBody;
BeaconState: gloas.BeaconState;
SignedBeaconBlock: gloas.SignedBeaconBlock;
BeaconBlock: electra.BeaconBlock; // TODO GLOAS: Use Gloas type
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is temporarily set to electra because there is a lot of type issue that needs to be fixed with the latest definition of gloas.BeaconBlock and others

currentSyncCommittee: altairSsz.SyncCommittee,
nextSyncCommittee: altairSsz.SyncCommittee,
// Execution
// latestExecutionPayloadHeader: ExecutionPayloadHeader, // Removed in GLOAS:EIP7732
Copy link
Contributor Author

Choose a reason for hiding this comment

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

should look into how we can activate ssz static tests already

Probably non-trivial to do because SkipOpts.skippedForks is applied to all spec tests. Can't run ssz static tests only for gloas.

But I can run it locally and see the result

@nflaig
Copy link
Member

nflaig commented Sep 26, 2025

/gemini review

Copy link
Contributor

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

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 introduces the SSZ container types for the upcoming gloas fork, which includes significant changes related to proposer-builder separation. The changes are well-contained and primarily involve adding new type definitions in packages/types/src/gloas/. The PR also updates test configurations to accommodate the new spec version. The approach of adding TODO markers for full integration in a future PR is reasonable for incremental development. My review focuses on improving the maintainability of the new SSZ type definitions by reducing code duplication and making them more declarative.

Copy link
Member

@nflaig nflaig left a comment

Choose a reason for hiding this comment

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

LGTM

const stateGloas = state as CompositeViewDU<typeof ssz.gloas.BeaconState>;
stateGloas.fork.previousVersion = config.GLOAS_FORK_VERSION;
stateGloas.fork.currentVersion = config.GLOAS_FORK_VERSION;
stateGloas.latestExecutionPayloadHeader =
Copy link
Member

Choose a reason for hiding this comment

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

can keep this out for now, we are not starting genesis from gloas for now anyways in our tests

@nflaig nflaig merged commit fcf8d02 into unstable Sep 26, 2025
26 of 28 checks passed
@nflaig nflaig deleted the nc/epbs-container branch September 26, 2025 16:02
nflaig added a commit that referenced this pull request Oct 2, 2025
Update gloas types in `packages/types/src/types.ts` to use the
containers defined in #8464 and fix all type error that come along with
it

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.35.0 🎉

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

Labels

spec-gloas Issues targeting the Glamsterdam spec version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants