Skip to content

Conversation

@wemeetagain
Copy link
Member

Motivation

Description

  • three separate and distinct block input classes (for preDA, blobs, columns)
  • each class has its own state machine with transition rules unique to the type of DA
    • modeling each state explicitly allows for monomorphic state objects and minimal amount of overhead for each DA type / state
    • eg: PreDA is modeled as a single state, doesn't do extra work that it doesn't need to, eg: columns DA can track custody and sampled column DA status separately
    • (monomorphic == easier for engine to optimize and easier to reason about)
  • no unknown block input type -- the unknown block input type is a degenerate case that does not apply generally across the codebase but rather only exists in the context of sync. It can be defined there.
  • some rewording (and reworking) of types to make more sense (to me, feedback welcome)
    • DataAvailabilityStatus -> DARequirement (also removed PreData now that the enum intent is more clear)
    • BlockInputType -> DAType
    • BlockInputDataStatus -> DAStatus (remove NoData, we don't care about that, add Unknown)
    • PossibleDataTypes -> DAData

@codecov
Copy link

codecov bot commented Apr 24, 2025

Codecov Report

Attention: Patch coverage is 33.33333% with 2 lines in your changes missing coverage. Please review.

Project coverage is 56.05%. Comparing base (5ae1b18) to head (771eadd).
Report is 24 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7745      +/-   ##
============================================
+ Coverage     50.08%   56.05%   +5.97%     
============================================
  Files           604      837     +233     
  Lines         40611    57909   +17298     
  Branches       2222     4452    +2230     
============================================
+ Hits          20340    32463   +12123     
- Misses        20229    25378    +5149     
- Partials         42       68      +26     
🚀 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 Apr 24, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: f554bfb Previous: 6dd10cb Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0502 ms/op 1.0299 ms/op 1.02
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 36.232 us/op 36.792 us/op 0.98
BLS verify - blst 931.15 us/op 771.12 us/op 1.21
BLS verifyMultipleSignatures 3 - blst 1.2696 ms/op 1.1624 ms/op 1.09
BLS verifyMultipleSignatures 8 - blst 1.9194 ms/op 1.6500 ms/op 1.16
BLS verifyMultipleSignatures 32 - blst 7.2752 ms/op 4.8656 ms/op 1.50
BLS verifyMultipleSignatures 64 - blst 9.2257 ms/op 8.9955 ms/op 1.03
BLS verifyMultipleSignatures 128 - blst 17.806 ms/op 17.876 ms/op 1.00
BLS deserializing 10000 signatures 702.63 ms/op 700.41 ms/op 1.00
BLS deserializing 100000 signatures 7.0049 s/op 6.9911 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 955.07 us/op 902.30 us/op 1.06
BLS verifyMultipleSignatures - same message - 8 - blst 1.0599 ms/op 1.0045 ms/op 1.06
BLS verifyMultipleSignatures - same message - 32 - blst 1.7341 ms/op 1.7023 ms/op 1.02
BLS verifyMultipleSignatures - same message - 64 - blst 2.6570 ms/op 2.6557 ms/op 1.00
BLS verifyMultipleSignatures - same message - 128 - blst 4.5358 ms/op 4.4426 ms/op 1.02
BLS aggregatePubkeys 32 - blst 19.857 us/op 19.732 us/op 1.01
BLS aggregatePubkeys 128 - blst 71.039 us/op 70.184 us/op 1.01
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 52.937 ms/op 51.427 ms/op 1.03
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 51.798 ms/op 46.284 ms/op 1.12
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 39.913 ms/op 37.038 ms/op 1.08
getSlashingsAndExits - default max 74.963 us/op 75.604 us/op 0.99
getSlashingsAndExits - 2k 339.29 us/op 280.95 us/op 1.21
proposeBlockBody type=full, size=empty 7.4659 ms/op 5.5018 ms/op 1.36
isKnown best case - 1 super set check 222.00 ns/op 214.00 ns/op 1.04
isKnown normal case - 2 super set checks 207.00 ns/op 212.00 ns/op 0.98
isKnown worse case - 16 super set checks 206.00 ns/op 211.00 ns/op 0.98
InMemoryCheckpointStateCache - add get delete 2.5410 us/op 2.4290 us/op 1.05
validate api signedAggregateAndProof - struct 1.4745 ms/op 1.3948 ms/op 1.06
validate gossip signedAggregateAndProof - struct 1.8689 ms/op 1.5898 ms/op 1.18
batch validate gossip attestation - vc 640000 - chunk 32 131.06 us/op 121.28 us/op 1.08
batch validate gossip attestation - vc 640000 - chunk 64 110.32 us/op 106.57 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 128 108.11 us/op 96.848 us/op 1.12
batch validate gossip attestation - vc 640000 - chunk 256 102.44 us/op 104.41 us/op 0.98
pickEth1Vote - no votes 1.0168 ms/op 1.0251 ms/op 0.99
pickEth1Vote - max votes 6.3489 ms/op 5.7385 ms/op 1.11
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.499 ms/op 11.890 ms/op 0.97
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.812 ms/op 16.884 ms/op 1.17
pickEth1Vote - Eth1Data fastSerialize value x2048 470.46 us/op 485.49 us/op 0.97
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.8378 ms/op 2.4656 ms/op 1.15
bytes32 toHexString 376.00 ns/op 373.00 ns/op 1.01
bytes32 Buffer.toString(hex) 253.00 ns/op 253.00 ns/op 1.00
bytes32 Buffer.toString(hex) from Uint8Array 345.00 ns/op 347.00 ns/op 0.99
bytes32 Buffer.toString(hex) + 0x 285.00 ns/op 260.00 ns/op 1.10
Object access 1 prop 0.13000 ns/op 0.13200 ns/op 0.98
Map access 1 prop 0.13700 ns/op 0.13600 ns/op 1.01
Object get x1000 6.0740 ns/op 6.0780 ns/op 1.00
Map get x1000 6.4460 ns/op 6.8450 ns/op 0.94
Object set x1000 29.334 ns/op 33.912 ns/op 0.87
Map set x1000 19.946 ns/op 20.645 ns/op 0.97
Return object 10000 times 0.29930 ns/op 0.29760 ns/op 1.01
Throw Error 10000 times 4.4595 us/op 4.6919 us/op 0.95
toHex 148.13 ns/op 150.65 ns/op 0.98
Buffer.from 139.51 ns/op 127.31 ns/op 1.10
shared Buffer 90.673 ns/op 89.517 ns/op 1.01
fastMsgIdFn sha256 / 200 bytes 2.3820 us/op 2.2460 us/op 1.06
fastMsgIdFn h32 xxhash / 200 bytes 215.00 ns/op 219.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 200 bytes 316.00 ns/op 284.00 ns/op 1.11
fastMsgIdFn sha256 / 1000 bytes 7.3710 us/op 7.5850 us/op 0.97
fastMsgIdFn h32 xxhash / 1000 bytes 346.00 ns/op 358.00 ns/op 0.97
fastMsgIdFn h64 xxhash / 1000 bytes 434.00 ns/op 370.00 ns/op 1.17
fastMsgIdFn sha256 / 10000 bytes 66.878 us/op 66.540 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.8730 us/op 1.9090 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 1.2380 us/op 1.2790 us/op 0.97
send data - 1000 256B messages 12.891 ms/op 14.451 ms/op 0.89
send data - 1000 512B messages 16.745 ms/op 18.098 ms/op 0.93
send data - 1000 1024B messages 25.500 ms/op 26.813 ms/op 0.95
send data - 1000 1200B messages 21.096 ms/op 24.777 ms/op 0.85
send data - 1000 2048B messages 21.925 ms/op 23.951 ms/op 0.92
send data - 1000 4096B messages 27.044 ms/op 30.046 ms/op 0.90
send data - 1000 16384B messages 60.322 ms/op 53.645 ms/op 1.12
send data - 1000 65536B messages 206.87 ms/op 257.38 ms/op 0.80
enrSubnets - fastDeserialize 64 bits 923.00 ns/op 906.00 ns/op 1.02
enrSubnets - ssz BitVector 64 bits 361.00 ns/op 340.00 ns/op 1.06
enrSubnets - fastDeserialize 4 bits 142.00 ns/op 141.00 ns/op 1.01
enrSubnets - ssz BitVector 4 bits 340.00 ns/op 344.00 ns/op 0.99
prioritizePeers score -10:0 att 32-0.1 sync 2-0 121.00 us/op 121.04 us/op 1.00
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 139.94 us/op 145.07 us/op 0.96
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 214.55 us/op 207.86 us/op 1.03
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 386.94 us/op 390.86 us/op 0.99
prioritizePeers score 0:0 att 64-1 sync 4-1 468.59 us/op 476.45 us/op 0.98
array of 16000 items push then shift 1.6584 us/op 1.6854 us/op 0.98
LinkedList of 16000 items push then shift 7.1730 ns/op 8.1480 ns/op 0.88
array of 16000 items push then pop 75.226 ns/op 77.854 ns/op 0.97
LinkedList of 16000 items push then pop 7.1010 ns/op 7.3650 ns/op 0.96
array of 24000 items push then shift 2.4558 us/op 2.3994 us/op 1.02
LinkedList of 24000 items push then shift 7.1720 ns/op 7.6890 ns/op 0.93
array of 24000 items push then pop 102.19 ns/op 109.29 ns/op 0.94
LinkedList of 24000 items push then pop 7.0190 ns/op 7.2680 ns/op 0.97
intersect bitArray bitLen 8 6.5370 ns/op 6.7120 ns/op 0.97
intersect array and set length 8 38.672 ns/op 39.675 ns/op 0.97
intersect bitArray bitLen 128 30.502 ns/op 31.070 ns/op 0.98
intersect array and set length 128 633.89 ns/op 660.40 ns/op 0.96
bitArray.getTrueBitIndexes() bitLen 128 1.0560 us/op 1.0910 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 248 1.8330 us/op 1.8750 us/op 0.98
bitArray.getTrueBitIndexes() bitLen 512 3.8520 us/op 3.8290 us/op 1.01
Buffer.concat 32 items 701.00 ns/op 639.00 ns/op 1.10
Uint8Array.set 32 items 1.1080 us/op 1.4540 us/op 0.76
Buffer.copy 2.2500 us/op 2.3660 us/op 0.95
Uint8Array.set - with subarray 1.7910 us/op 1.8120 us/op 0.99
Uint8Array.set - without subarray 949.00 ns/op 1.4620 us/op 0.65
getUint32 - dataview 210.00 ns/op 213.00 ns/op 0.99
getUint32 - manual 132.00 ns/op 133.00 ns/op 0.99
Set add up to 64 items then delete first 2.2524 us/op 2.4566 us/op 0.92
OrderedSet add up to 64 items then delete first 3.5876 us/op 3.5862 us/op 1.00
Set add up to 64 items then delete last 2.8178 us/op 2.4370 us/op 1.16
OrderedSet add up to 64 items then delete last 3.9157 us/op 4.5305 us/op 0.86
Set add up to 64 items then delete middle 2.3921 us/op 2.6921 us/op 0.89
OrderedSet add up to 64 items then delete middle 5.5945 us/op 5.9059 us/op 0.95
Set add up to 128 items then delete first 6.2019 us/op 6.1090 us/op 1.02
OrderedSet add up to 128 items then delete first 8.5076 us/op 8.9678 us/op 0.95
Set add up to 128 items then delete last 5.1230 us/op 6.1627 us/op 0.83
OrderedSet add up to 128 items then delete last 7.5851 us/op 9.6381 us/op 0.79
Set add up to 128 items then delete middle 5.0213 us/op 5.9627 us/op 0.84
OrderedSet add up to 128 items then delete middle 14.312 us/op 15.725 us/op 0.91
Set add up to 256 items then delete first 10.730 us/op 11.864 us/op 0.90
OrderedSet add up to 256 items then delete first 16.443 us/op 17.152 us/op 0.96
Set add up to 256 items then delete last 10.161 us/op 12.824 us/op 0.79
OrderedSet add up to 256 items then delete last 15.477 us/op 19.887 us/op 0.78
Set add up to 256 items then delete middle 10.128 us/op 11.106 us/op 0.91
OrderedSet add up to 256 items then delete middle 42.410 us/op 47.596 us/op 0.89
transfer serialized Status (84 B) 2.4340 us/op 2.4270 us/op 1.00
copy serialized Status (84 B) 1.3160 us/op 1.2820 us/op 1.03
transfer serialized SignedVoluntaryExit (112 B) 2.4480 us/op 2.4970 us/op 0.98
copy serialized SignedVoluntaryExit (112 B) 1.4040 us/op 1.3180 us/op 1.07
transfer serialized ProposerSlashing (416 B) 2.4650 us/op 2.4800 us/op 0.99
copy serialized ProposerSlashing (416 B) 1.3390 us/op 1.6370 us/op 0.82
transfer serialized Attestation (485 B) 2.4660 us/op 2.4570 us/op 1.00
copy serialized Attestation (485 B) 1.3330 us/op 1.8780 us/op 0.71
transfer serialized AttesterSlashing (33232 B) 2.6120 us/op 2.8560 us/op 0.91
copy serialized AttesterSlashing (33232 B) 3.5880 us/op 5.1520 us/op 0.70
transfer serialized Small SignedBeaconBlock (128000 B) 3.1080 us/op 3.8620 us/op 0.80
copy serialized Small SignedBeaconBlock (128000 B) 9.5510 us/op 13.285 us/op 0.72
transfer serialized Avg SignedBeaconBlock (200000 B) 3.6110 us/op 4.1040 us/op 0.88
copy serialized Avg SignedBeaconBlock (200000 B) 13.493 us/op 18.207 us/op 0.74
transfer serialized BlobsSidecar (524380 B) 3.8060 us/op 4.2640 us/op 0.89
copy serialized BlobsSidecar (524380 B) 64.972 us/op 141.48 us/op 0.46
transfer serialized Big SignedBeaconBlock (1000000 B) 3.7860 us/op 4.4510 us/op 0.85
copy serialized Big SignedBeaconBlock (1000000 B) 140.81 us/op 130.11 us/op 1.08
pass gossip attestations to forkchoice per slot 2.7892 ms/op 2.9635 ms/op 0.94
forkChoice updateHead vc 100000 bc 64 eq 0 496.35 us/op 477.90 us/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 0 2.9031 ms/op 2.9230 ms/op 0.99
forkChoice updateHead vc 1000000 bc 64 eq 0 4.8622 ms/op 4.9920 ms/op 0.97
forkChoice updateHead vc 600000 bc 320 eq 0 3.0064 ms/op 3.3556 ms/op 0.90
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8362 ms/op 3.3319 ms/op 0.85
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0602 ms/op 3.6638 ms/op 0.84
forkChoice updateHead vc 600000 bc 64 eq 1000 10.424 ms/op 10.923 ms/op 0.95
forkChoice updateHead vc 600000 bc 64 eq 10000 10.555 ms/op 10.976 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 300000 15.262 ms/op 13.695 ms/op 1.11
computeDeltas 500000 validators 300 proto nodes 4.0060 ms/op 4.0712 ms/op 0.98
computeDeltas 500000 validators 1200 proto nodes 4.0133 ms/op 4.1114 ms/op 0.98
computeDeltas 500000 validators 7200 proto nodes 4.0225 ms/op 4.0553 ms/op 0.99
computeDeltas 750000 validators 300 proto nodes 5.8188 ms/op 5.9311 ms/op 0.98
computeDeltas 750000 validators 1200 proto nodes 5.8814 ms/op 6.0584 ms/op 0.97
computeDeltas 750000 validators 7200 proto nodes 5.9994 ms/op 5.9437 ms/op 1.01
computeDeltas 1400000 validators 300 proto nodes 11.970 ms/op 10.881 ms/op 1.10
computeDeltas 1400000 validators 1200 proto nodes 11.152 ms/op 10.997 ms/op 1.01
computeDeltas 1400000 validators 7200 proto nodes 11.298 ms/op 11.137 ms/op 1.01
computeDeltas 2100000 validators 300 proto nodes 16.768 ms/op 16.775 ms/op 1.00
computeDeltas 2100000 validators 1200 proto nodes 16.701 ms/op 16.931 ms/op 0.99
computeDeltas 2100000 validators 7200 proto nodes 16.552 ms/op 17.091 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei normalcase 2.2175 ms/op 2.1435 ms/op 1.03
altair processAttestation - 250000 vs - 7PWei worstcase 3.1881 ms/op 3.1177 ms/op 1.02
altair processAttestation - setStatus - 1/6 committees join 138.10 us/op 130.14 us/op 1.06
altair processAttestation - setStatus - 1/3 committees join 260.12 us/op 247.61 us/op 1.05
altair processAttestation - setStatus - 1/2 committees join 357.87 us/op 339.95 us/op 1.05
altair processAttestation - setStatus - 2/3 committees join 460.97 us/op 436.47 us/op 1.06
altair processAttestation - setStatus - 4/5 committees join 628.01 us/op 601.34 us/op 1.04
altair processAttestation - setStatus - 100% committees join 770.43 us/op 719.42 us/op 1.07
altair processBlock - 250000 vs - 7PWei normalcase 5.0999 ms/op 4.6378 ms/op 1.10
altair processBlock - 250000 vs - 7PWei normalcase hashState 33.986 ms/op 29.745 ms/op 1.14
altair processBlock - 250000 vs - 7PWei worstcase 42.622 ms/op 35.883 ms/op 1.19
altair processBlock - 250000 vs - 7PWei worstcase hashState 98.154 ms/op 79.501 ms/op 1.23
phase0 processBlock - 250000 vs - 7PWei normalcase 2.3462 ms/op 1.7655 ms/op 1.33
phase0 processBlock - 250000 vs - 7PWei worstcase 29.923 ms/op 25.578 ms/op 1.17
altair processEth1Data - 250000 vs - 7PWei normalcase 343.72 us/op 365.64 us/op 0.94
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.1700 us/op 7.4960 us/op 1.22
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 61.750 us/op 44.513 us/op 1.39
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 12.370 us/op 12.418 us/op 1.00
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 11.987 us/op 7.4370 us/op 1.61
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 271.99 us/op 171.47 us/op 1.59
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9377 ms/op 1.8861 ms/op 1.03
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4110 ms/op 2.3363 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4245 ms/op 2.3088 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.7558 ms/op 4.5602 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4488 ms/op 2.4018 ms/op 1.02
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.9169 ms/op 4.6163 ms/op 1.07
Tree 40 250000 create 419.59 ms/op 475.00 ms/op 0.88
Tree 40 250000 get(125000) 140.24 ns/op 145.44 ns/op 0.96
Tree 40 250000 set(125000) 1.5726 us/op 1.5306 us/op 1.03
Tree 40 250000 toArray() 19.459 ms/op 19.793 ms/op 0.98
Tree 40 250000 iterate all - toArray() + loop 17.103 ms/op 21.151 ms/op 0.81
Tree 40 250000 iterate all - get(i) 58.753 ms/op 56.380 ms/op 1.04
Array 250000 create 3.0212 ms/op 2.6649 ms/op 1.13
Array 250000 clone - spread 814.44 us/op 843.82 us/op 0.97
Array 250000 get(125000) 0.46600 ns/op 0.48200 ns/op 0.97
Array 250000 set(125000) 0.48500 ns/op 0.44700 ns/op 1.09
Array 250000 iterate all - loop 83.448 us/op 83.016 us/op 1.01
phase0 afterProcessEpoch - 250000 vs - 7PWei 43.138 ms/op 43.133 ms/op 1.00
Array.fill - length 1000000 3.8695 ms/op 3.7616 ms/op 1.03
Array push - length 1000000 13.836 ms/op 15.539 ms/op 0.89
Array.get 0.27752 ns/op 0.27640 ns/op 1.00
Uint8Array.get 0.44796 ns/op 0.45656 ns/op 0.98
phase0 beforeProcessEpoch - 250000 vs - 7PWei 17.093 ms/op 18.452 ms/op 0.93
altair processEpoch - mainnet_e81889 240.94 ms/op 286.40 ms/op 0.84
mainnet_e81889 - altair beforeProcessEpoch 19.090 ms/op 19.181 ms/op 1.00
mainnet_e81889 - altair processJustificationAndFinalization 5.2870 us/op 5.7460 us/op 0.92
mainnet_e81889 - altair processInactivityUpdates 4.3065 ms/op 4.5562 ms/op 0.95
mainnet_e81889 - altair processRewardsAndPenalties 35.366 ms/op 43.856 ms/op 0.81
mainnet_e81889 - altair processRegistryUpdates 700.00 ns/op 716.00 ns/op 0.98
mainnet_e81889 - altair processSlashings 198.00 ns/op 195.00 ns/op 1.02
mainnet_e81889 - altair processEth1DataReset 198.00 ns/op 186.00 ns/op 1.06
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2465 ms/op 1.2800 ms/op 0.97
mainnet_e81889 - altair processSlashingsReset 874.00 ns/op 909.00 ns/op 0.96
mainnet_e81889 - altair processRandaoMixesReset 1.2150 us/op 1.1750 us/op 1.03
mainnet_e81889 - altair processHistoricalRootsUpdate 200.00 ns/op 186.00 ns/op 1.08
mainnet_e81889 - altair processParticipationFlagUpdates 552.00 ns/op 536.00 ns/op 1.03
mainnet_e81889 - altair processSyncCommitteeUpdates 150.00 ns/op 151.00 ns/op 0.99
mainnet_e81889 - altair afterProcessEpoch 44.941 ms/op 46.200 ms/op 0.97
capella processEpoch - mainnet_e217614 862.61 ms/op 955.93 ms/op 0.90
mainnet_e217614 - capella beforeProcessEpoch 63.355 ms/op 64.843 ms/op 0.98
mainnet_e217614 - capella processJustificationAndFinalization 5.3820 us/op 5.5620 us/op 0.97
mainnet_e217614 - capella processInactivityUpdates 14.401 ms/op 15.397 ms/op 0.94
mainnet_e217614 - capella processRewardsAndPenalties 185.00 ms/op 183.96 ms/op 1.01
mainnet_e217614 - capella processRegistryUpdates 7.5050 us/op 6.6790 us/op 1.12
mainnet_e217614 - capella processSlashings 206.00 ns/op 192.00 ns/op 1.07
mainnet_e217614 - capella processEth1DataReset 181.00 ns/op 186.00 ns/op 0.97
mainnet_e217614 - capella processEffectiveBalanceUpdates 11.723 ms/op 13.784 ms/op 0.85
mainnet_e217614 - capella processSlashingsReset 982.00 ns/op 900.00 ns/op 1.09
mainnet_e217614 - capella processRandaoMixesReset 1.2740 us/op 1.1820 us/op 1.08
mainnet_e217614 - capella processHistoricalRootsUpdate 185.00 ns/op 191.00 ns/op 0.97
mainnet_e217614 - capella processParticipationFlagUpdates 571.00 ns/op 538.00 ns/op 1.06
mainnet_e217614 - capella afterProcessEpoch 116.99 ms/op 118.91 ms/op 0.98
phase0 processEpoch - mainnet_e58758 286.02 ms/op 304.13 ms/op 0.94
mainnet_e58758 - phase0 beforeProcessEpoch 76.440 ms/op 75.967 ms/op 1.01
mainnet_e58758 - phase0 processJustificationAndFinalization 6.3200 us/op 5.7230 us/op 1.10
mainnet_e58758 - phase0 processRewardsAndPenalties 42.294 ms/op 38.607 ms/op 1.10
mainnet_e58758 - phase0 processRegistryUpdates 3.4540 us/op 3.1680 us/op 1.09
mainnet_e58758 - phase0 processSlashings 186.00 ns/op 179.00 ns/op 1.04
mainnet_e58758 - phase0 processEth1DataReset 182.00 ns/op 176.00 ns/op 1.03
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2201 ms/op 1.1798 ms/op 1.03
mainnet_e58758 - phase0 processSlashingsReset 971.00 ns/op 911.00 ns/op 1.07
mainnet_e58758 - phase0 processRandaoMixesReset 1.4230 us/op 1.2250 us/op 1.16
mainnet_e58758 - phase0 processHistoricalRootsUpdate 228.00 ns/op 185.00 ns/op 1.23
mainnet_e58758 - phase0 processParticipationRecordUpdates 916.00 ns/op 934.00 ns/op 0.98
mainnet_e58758 - phase0 afterProcessEpoch 36.765 ms/op 36.004 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.6436 ms/op 1.3622 ms/op 1.21
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.7941 ms/op 2.1389 ms/op 0.84
altair processInactivityUpdates - 250000 normalcase 19.562 ms/op 19.279 ms/op 1.01
altair processInactivityUpdates - 250000 worstcase 19.897 ms/op 19.061 ms/op 1.04
phase0 processRegistryUpdates - 250000 normalcase 6.8540 us/op 6.6100 us/op 1.04
phase0 processRegistryUpdates - 250000 badcase_full_deposits 313.41 us/op 342.33 us/op 0.92
phase0 processRegistryUpdates - 250000 worstcase 0.5 120.31 ms/op 108.99 ms/op 1.10
altair processRewardsAndPenalties - 250000 normalcase 29.227 ms/op 27.504 ms/op 1.06
altair processRewardsAndPenalties - 250000 worstcase 28.510 ms/op 28.728 ms/op 0.99
phase0 getAttestationDeltas - 250000 normalcase 6.9265 ms/op 8.3005 ms/op 0.83
phase0 getAttestationDeltas - 250000 worstcase 6.2399 ms/op 7.5759 ms/op 0.82
phase0 processSlashings - 250000 worstcase 107.44 us/op 94.822 us/op 1.13
altair processSyncCommitteeUpdates - 250000 11.576 ms/op 11.064 ms/op 1.05
BeaconState.hashTreeRoot - No change 255.00 ns/op 229.00 ns/op 1.11
BeaconState.hashTreeRoot - 1 full validator 83.355 us/op 88.419 us/op 0.94
BeaconState.hashTreeRoot - 32 full validator 776.62 us/op 875.99 us/op 0.89
BeaconState.hashTreeRoot - 512 full validator 10.110 ms/op 12.414 ms/op 0.81
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 90.393 us/op 97.460 us/op 0.93
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4911 ms/op 1.6501 ms/op 0.90
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 27.783 ms/op 31.022 ms/op 0.90
BeaconState.hashTreeRoot - 1 balances 80.493 us/op 72.540 us/op 1.11
BeaconState.hashTreeRoot - 32 balances 745.30 us/op 734.53 us/op 1.01
BeaconState.hashTreeRoot - 512 balances 8.5148 ms/op 8.2726 ms/op 1.03
BeaconState.hashTreeRoot - 250000 balances 151.95 ms/op 155.05 ms/op 0.98
aggregationBits - 2048 els - zipIndexesInBitList 21.739 us/op 22.355 us/op 0.97
byteArrayEquals 32 54.003 ns/op 55.076 ns/op 0.98
Buffer.compare 32 17.216 ns/op 17.684 ns/op 0.97
byteArrayEquals 1024 1.6054 us/op 1.6367 us/op 0.98
Buffer.compare 1024 25.046 ns/op 25.991 ns/op 0.96
byteArrayEquals 16384 25.653 us/op 25.955 us/op 0.99
Buffer.compare 16384 202.72 ns/op 185.30 ns/op 1.09
byteArrayEquals 123687377 193.99 ms/op 186.54 ms/op 1.04
Buffer.compare 123687377 6.8940 ms/op 6.4588 ms/op 1.07
byteArrayEquals 32 - diff last byte 53.173 ns/op 51.251 ns/op 1.04
Buffer.compare 32 - diff last byte 17.164 ns/op 16.516 ns/op 1.04
byteArrayEquals 1024 - diff last byte 1.6071 us/op 1.5469 us/op 1.04
Buffer.compare 1024 - diff last byte 26.142 ns/op 24.704 ns/op 1.06
byteArrayEquals 16384 - diff last byte 25.606 us/op 25.302 us/op 1.01
Buffer.compare 16384 - diff last byte 206.63 ns/op 199.64 ns/op 1.03
byteArrayEquals 123687377 - diff last byte 194.82 ms/op 192.60 ms/op 1.01
Buffer.compare 123687377 - diff last byte 7.6848 ms/op 7.0071 ms/op 1.10
byteArrayEquals 32 - random bytes 5.2430 ns/op 5.1500 ns/op 1.02
Buffer.compare 32 - random bytes 17.746 ns/op 17.286 ns/op 1.03
byteArrayEquals 1024 - random bytes 5.2650 ns/op 5.1540 ns/op 1.02
Buffer.compare 1024 - random bytes 17.424 ns/op 18.833 ns/op 0.93
byteArrayEquals 16384 - random bytes 5.2670 ns/op 5.2440 ns/op 1.00
Buffer.compare 16384 - random bytes 17.426 ns/op 18.842 ns/op 0.92
byteArrayEquals 123687377 - random bytes 6.7500 ns/op 6.5300 ns/op 1.03
Buffer.compare 123687377 - random bytes 18.830 ns/op 18.590 ns/op 1.01
regular array get 100000 times 45.368 us/op 39.306 us/op 1.15
wrappedArray get 100000 times 33.893 us/op 33.325 us/op 1.02
arrayWithProxy get 100000 times 12.498 ms/op 12.025 ms/op 1.04
ssz.Root.equals 47.476 ns/op 46.387 ns/op 1.02
byteArrayEquals 46.239 ns/op 45.499 ns/op 1.02
Buffer.compare 10.614 ns/op 10.312 ns/op 1.03
processSlot - 1 slots 11.071 us/op 10.141 us/op 1.09
processSlot - 32 slots 2.2474 ms/op 3.0013 ms/op 0.75
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.2444 ms/op 3.1039 ms/op 1.05
getCommitteeAssignments - req 1 vs - 250000 vc 2.1544 ms/op 2.1171 ms/op 1.02
getCommitteeAssignments - req 100 vs - 250000 vc 4.2117 ms/op 4.1772 ms/op 1.01
getCommitteeAssignments - req 1000 vs - 250000 vc 4.5396 ms/op 4.4268 ms/op 1.03
findModifiedValidators - 10000 modified validators 739.25 ms/op 748.87 ms/op 0.99
findModifiedValidators - 1000 modified validators 730.19 ms/op 729.63 ms/op 1.00
findModifiedValidators - 100 modified validators 207.77 ms/op 265.36 ms/op 0.78
findModifiedValidators - 10 modified validators 142.27 ms/op 219.86 ms/op 0.65
findModifiedValidators - 1 modified validators 172.75 ms/op 161.14 ms/op 1.07
findModifiedValidators - no difference 249.55 ms/op 149.50 ms/op 1.67
compare ViewDUs 6.5592 s/op 6.1915 s/op 1.06
compare each validator Uint8Array 1.6369 s/op 1.3145 s/op 1.25
compare ViewDU to Uint8Array 1.0046 s/op 1.0533 s/op 0.95
migrate state 1000000 validators, 24 modified, 0 new 879.44 ms/op 840.55 ms/op 1.05
migrate state 1000000 validators, 1700 modified, 1000 new 1.1102 s/op 1.1007 s/op 1.01
migrate state 1000000 validators, 3400 modified, 2000 new 1.3028 s/op 1.3304 s/op 0.98
migrate state 1500000 validators, 24 modified, 0 new 801.15 ms/op 925.93 ms/op 0.87
migrate state 1500000 validators, 1700 modified, 1000 new 1.1329 s/op 1.1291 s/op 1.00
migrate state 1500000 validators, 3400 modified, 2000 new 1.3542 s/op 1.3042 s/op 1.04
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 7.2400 ns/op 4.4100 ns/op 1.64
state getBlockRootAtSlot - 250000 vs - 7PWei 485.96 ns/op 444.09 ns/op 1.09
naive computeProposerIndex 100000 validators 48.996 ms/op 57.886 ms/op 0.85
computeProposerIndex 100000 validators 1.5441 ms/op 1.7044 ms/op 0.91
naiveGetNextSyncCommitteeIndices 1000 validators 7.4388 s/op 10.004 s/op 0.74
getNextSyncCommitteeIndices 1000 validators 113.22 ms/op 126.50 ms/op 0.90
naiveGetNextSyncCommitteeIndices 10000 validators 7.8492 s/op 7.7548 s/op 1.01
getNextSyncCommitteeIndices 10000 validators 114.07 ms/op 117.35 ms/op 0.97
naiveGetNextSyncCommitteeIndices 100000 validators 7.2743 s/op 7.7784 s/op 0.94
getNextSyncCommitteeIndices 100000 validators 118.20 ms/op 121.09 ms/op 0.98
naive computeShuffledIndex 100000 validators 25.695 s/op 25.913 s/op 0.99
cached computeShuffledIndex 100000 validators 568.51 ms/op 577.45 ms/op 0.98
naive computeShuffledIndex 2000000 validators 462.27 s/op 494.38 s/op 0.94
cached computeShuffledIndex 2000000 validators 35.242 s/op 64.238 s/op 0.55
computeProposers - vc 250000 637.09 us/op 1.0610 ms/op 0.60
computeEpochShuffling - vc 250000 43.087 ms/op 50.250 ms/op 0.86
getNextSyncCommittee - vc 250000 10.594 ms/op 13.384 ms/op 0.79
computeSigningRoot for AttestationData 20.045 us/op 48.636 us/op 0.41
hash AttestationData serialized data then Buffer.toString(base64) 1.6208 us/op 1.9542 us/op 0.83
toHexString serialized data 1.2668 us/op 2.0150 us/op 0.63
Buffer.toString(base64) 155.89 ns/op 197.10 ns/op 0.79
nodejs block root to RootHex using toHex 155.45 ns/op 168.45 ns/op 0.92
nodejs block root to RootHex using toRootHex 95.673 ns/op 108.11 ns/op 0.88
browser block root to RootHex using the deprecated toHexString 216.56 ns/op 268.99 ns/op 0.81
browser block root to RootHex using toHex 172.26 ns/op 408.88 ns/op 0.42
browser block root to RootHex using toRootHex 160.69 ns/op 382.77 ns/op 0.42

by benchmarkbot/action

@wemeetagain
Copy link
Member Author

wemeetagain added a commit that referenced this pull request May 12, 2025
**Motivation**

- continuation of #7734 and #7745
- dependent on #7774 

**Description**

- Add new `BlockInput` classes to eventually replace our block input
functions
- These classes track data availability per block root, with preDA,
blobs, and columns DA implemented

---------

Co-authored-by: matthewkeil <[email protected]>
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.

3 participants