Skip to content

Conversation

@matthewkeil
Copy link
Member

Motivation

Implement new IBlockInput on unstable version of peer das code.

@matthewkeil matthewkeil changed the title Mkeil/refactor block input on unstable refactor block input on unstable Aug 13, 2025
@matthewkeil matthewkeil changed the title refactor block input on unstable feat: refactor block input on unstable Aug 13, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Aug 14, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 0f9bcbd Previous: 56313c7 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 988.18 us/op 954.76 us/op 1.04
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.223 us/op 42.420 us/op 0.88
BLS verify - blst 952.80 us/op 1.2796 ms/op 0.74
BLS verifyMultipleSignatures 3 - blst 1.6739 ms/op 1.5957 ms/op 1.05
BLS verifyMultipleSignatures 8 - blst 2.1159 ms/op 2.5167 ms/op 0.84
BLS verifyMultipleSignatures 32 - blst 6.6213 ms/op 6.6754 ms/op 0.99
BLS verifyMultipleSignatures 64 - blst 11.357 ms/op 10.799 ms/op 1.05
BLS verifyMultipleSignatures 128 - blst 20.224 ms/op 17.207 ms/op 1.18
BLS deserializing 10000 signatures 719.98 ms/op 690.31 ms/op 1.04
BLS deserializing 100000 signatures 7.2599 s/op 6.9721 s/op 1.04
BLS verifyMultipleSignatures - same message - 3 - blst 1.0066 ms/op 914.63 us/op 1.10
BLS verifyMultipleSignatures - same message - 8 - blst 1.2688 ms/op 1.0648 ms/op 1.19
BLS verifyMultipleSignatures - same message - 32 - blst 1.7794 ms/op 1.7205 ms/op 1.03
BLS verifyMultipleSignatures - same message - 64 - blst 3.5627 ms/op 2.6151 ms/op 1.36
BLS verifyMultipleSignatures - same message - 128 - blst 4.6113 ms/op 4.4648 ms/op 1.03
BLS aggregatePubkeys 32 - blst 20.034 us/op 19.658 us/op 1.02
BLS aggregatePubkeys 128 - blst 71.397 us/op 69.780 us/op 1.02
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 58.091 ms/op 66.705 ms/op 0.87
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 55.166 ms/op 58.131 ms/op 0.95
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 44.003 ms/op 42.775 ms/op 1.03
getSlashingsAndExits - default max 94.831 us/op 78.852 us/op 1.20
getSlashingsAndExits - 2k 368.75 us/op 360.96 us/op 1.02
proposeBlockBody type=full, size=empty 5.7705 ms/op 6.4554 ms/op 0.89
isKnown best case - 1 super set check 212.00 ns/op 201.00 ns/op 1.05
isKnown normal case - 2 super set checks 213.00 ns/op 198.00 ns/op 1.08
isKnown worse case - 16 super set checks 210.00 ns/op 200.00 ns/op 1.05
InMemoryCheckpointStateCache - add get delete 2.7060 us/op 2.4540 us/op 1.10
validate api signedAggregateAndProof - struct 1.8577 ms/op 1.4656 ms/op 1.27
validate gossip signedAggregateAndProof - struct 2.2617 ms/op 1.7965 ms/op 1.26
batch validate gossip attestation - vc 640000 - chunk 32 127.19 us/op 118.55 us/op 1.07
batch validate gossip attestation - vc 640000 - chunk 64 105.62 us/op 110.26 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 128 96.604 us/op 100.58 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 256 98.945 us/op 107.90 us/op 0.92
pickEth1Vote - no votes 950.24 us/op 1.0052 ms/op 0.95
pickEth1Vote - max votes 5.6039 ms/op 6.2092 ms/op 0.90
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.133 ms/op 12.421 ms/op 0.98
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.989 ms/op 20.806 ms/op 0.82
pickEth1Vote - Eth1Data fastSerialize value x2048 476.95 us/op 444.79 us/op 1.07
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.6647 ms/op 2.2019 ms/op 1.21
bytes32 toHexString 367.00 ns/op 368.00 ns/op 1.00
bytes32 Buffer.toString(hex) 251.00 ns/op 272.00 ns/op 0.92
bytes32 Buffer.toString(hex) from Uint8Array 353.00 ns/op 364.00 ns/op 0.97
bytes32 Buffer.toString(hex) + 0x 236.00 ns/op 254.00 ns/op 0.93
Object access 1 prop 0.11500 ns/op 0.12700 ns/op 0.91
Map access 1 prop 0.13200 ns/op 0.17900 ns/op 0.74
Object get x1000 6.2170 ns/op 6.0750 ns/op 1.02
Map get x1000 6.4210 ns/op 6.8080 ns/op 0.94
Object set x1000 28.731 ns/op 34.385 ns/op 0.84
Map set x1000 19.719 ns/op 21.902 ns/op 0.90
Return object 10000 times 0.29020 ns/op 0.30780 ns/op 0.94
Throw Error 10000 times 4.6105 us/op 4.7544 us/op 0.97
toHex 136.53 ns/op 145.44 ns/op 0.94
Buffer.from 129.97 ns/op 136.19 ns/op 0.95
shared Buffer 87.916 ns/op 88.259 ns/op 1.00
fastMsgIdFn sha256 / 200 bytes 2.2070 us/op 2.2750 us/op 0.97
fastMsgIdFn h32 xxhash / 200 bytes 220.00 ns/op 235.00 ns/op 0.94
fastMsgIdFn h64 xxhash / 200 bytes 319.00 ns/op 361.00 ns/op 0.88
fastMsgIdFn sha256 / 1000 bytes 7.1230 us/op 9.1190 us/op 0.78
fastMsgIdFn h32 xxhash / 1000 bytes 340.00 ns/op 397.00 ns/op 0.86
fastMsgIdFn h64 xxhash / 1000 bytes 342.00 ns/op 354.00 ns/op 0.97
fastMsgIdFn sha256 / 10000 bytes 66.474 us/op 67.923 us/op 0.98
fastMsgIdFn h32 xxhash / 10000 bytes 1.8170 us/op 1.9220 us/op 0.95
fastMsgIdFn h64 xxhash / 10000 bytes 1.2830 us/op 1.2630 us/op 1.02
send data - 1000 256B messages 17.197 ms/op 18.703 ms/op 0.92
send data - 1000 512B messages 20.695 ms/op 22.286 ms/op 0.93
send data - 1000 1024B messages 28.217 ms/op 30.910 ms/op 0.91
send data - 1000 1200B messages 23.917 ms/op 26.663 ms/op 0.90
send data - 1000 2048B messages 26.128 ms/op 27.497 ms/op 0.95
send data - 1000 4096B messages 31.172 ms/op 30.661 ms/op 1.02
send data - 1000 16384B messages 47.385 ms/op 46.392 ms/op 1.02
send data - 1000 65536B messages 119.81 ms/op 126.18 ms/op 0.95
enrSubnets - fastDeserialize 64 bits 900.00 ns/op 913.00 ns/op 0.99
enrSubnets - ssz BitVector 64 bits 331.00 ns/op 332.00 ns/op 1.00
enrSubnets - fastDeserialize 4 bits 127.00 ns/op 147.00 ns/op 0.86
enrSubnets - ssz BitVector 4 bits 341.00 ns/op 392.00 ns/op 0.87
prioritizePeers score -10:0 att 32-0.1 sync 2-0 238.04 us/op 241.50 us/op 0.99
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 267.03 us/op 265.54 us/op 1.01
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 381.65 us/op 389.57 us/op 0.98
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 712.00 us/op 729.56 us/op 0.98
prioritizePeers score 0:0 att 64-1 sync 4-1 859.53 us/op 878.17 us/op 0.98
array of 16000 items push then shift 1.6132 us/op 1.6863 us/op 0.96
LinkedList of 16000 items push then shift 7.5790 ns/op 7.9150 ns/op 0.96
array of 16000 items push then pop 78.758 ns/op 78.028 ns/op 1.01
LinkedList of 16000 items push then pop 7.5300 ns/op 8.1770 ns/op 0.92
array of 24000 items push then shift 2.4325 us/op 2.4377 us/op 1.00
LinkedList of 24000 items push then shift 7.9410 ns/op 7.6700 ns/op 1.04
array of 24000 items push then pop 112.81 ns/op 113.41 ns/op 0.99
LinkedList of 24000 items push then pop 7.1910 ns/op 7.6010 ns/op 0.95
intersect bitArray bitLen 8 6.2850 ns/op 6.5590 ns/op 0.96
intersect array and set length 8 39.054 ns/op 38.728 ns/op 1.01
intersect bitArray bitLen 128 30.755 ns/op 30.664 ns/op 1.00
intersect array and set length 128 652.87 ns/op 628.55 ns/op 1.04
bitArray.getTrueBitIndexes() bitLen 128 1.0400 us/op 1.0290 us/op 1.01
bitArray.getTrueBitIndexes() bitLen 248 1.8400 us/op 1.8220 us/op 1.01
bitArray.getTrueBitIndexes() bitLen 512 3.8530 us/op 3.6920 us/op 1.04
Buffer.concat 32 items 682.00 ns/op 659.00 ns/op 1.03
Uint8Array.set 32 items 986.00 ns/op 1.0380 us/op 0.95
Buffer.copy 2.0370 us/op 2.2030 us/op 0.92
Uint8Array.set - with subarray 1.4850 us/op 1.6870 us/op 0.88
Uint8Array.set - without subarray 885.00 ns/op 1.0270 us/op 0.86
getUint32 - dataview 206.00 ns/op 231.00 ns/op 0.89
getUint32 - manual 137.00 ns/op 156.00 ns/op 0.88
Set add up to 64 items then delete first 2.2578 us/op 2.4740 us/op 0.91
OrderedSet add up to 64 items then delete first 3.3607 us/op 3.7238 us/op 0.90
Set add up to 64 items then delete last 2.7201 us/op 2.7341 us/op 0.99
OrderedSet add up to 64 items then delete last 4.1332 us/op 4.1197 us/op 1.00
Set add up to 64 items then delete middle 2.4452 us/op 2.4659 us/op 0.99
OrderedSet add up to 64 items then delete middle 5.8277 us/op 8.4247 us/op 0.69
Set add up to 128 items then delete first 6.8701 us/op 6.4369 us/op 1.07
OrderedSet add up to 128 items then delete first 11.206 us/op 8.9899 us/op 1.25
Set add up to 128 items then delete last 6.9121 us/op 5.2055 us/op 1.33
OrderedSet add up to 128 items then delete last 8.7194 us/op 7.8696 us/op 1.11
Set add up to 128 items then delete middle 5.5199 us/op 5.1637 us/op 1.07
OrderedSet add up to 128 items then delete middle 15.084 us/op 14.561 us/op 1.04
Set add up to 256 items then delete first 11.751 us/op 10.816 us/op 1.09
OrderedSet add up to 256 items then delete first 17.019 us/op 17.499 us/op 0.97
Set add up to 256 items then delete last 11.252 us/op 10.352 us/op 1.09
OrderedSet add up to 256 items then delete last 16.049 us/op 15.151 us/op 1.06
Set add up to 256 items then delete middle 10.350 us/op 10.250 us/op 1.01
OrderedSet add up to 256 items then delete middle 44.358 us/op 45.457 us/op 0.98
transfer serialized Status (84 B) 2.1800 us/op 2.1650 us/op 1.01
copy serialized Status (84 B) 1.1070 us/op 1.1290 us/op 0.98
transfer serialized SignedVoluntaryExit (112 B) 2.2140 us/op 2.2340 us/op 0.99
copy serialized SignedVoluntaryExit (112 B) 1.1210 us/op 1.2610 us/op 0.89
transfer serialized ProposerSlashing (416 B) 2.2530 us/op 2.2430 us/op 1.00
copy serialized ProposerSlashing (416 B) 1.1680 us/op 1.2030 us/op 0.97
transfer serialized Attestation (485 B) 2.2720 us/op 2.2640 us/op 1.00
copy serialized Attestation (485 B) 1.1670 us/op 1.1870 us/op 0.98
transfer serialized AttesterSlashing (33232 B) 3.0120 us/op 3.1930 us/op 0.94
copy serialized AttesterSlashing (33232 B) 3.9890 us/op 4.9180 us/op 0.81
transfer serialized Small SignedBeaconBlock (128000 B) 2.8900 us/op 3.5380 us/op 0.82
copy serialized Small SignedBeaconBlock (128000 B) 10.083 us/op 10.291 us/op 0.98
transfer serialized Avg SignedBeaconBlock (200000 B) 3.2280 us/op 3.9580 us/op 0.82
copy serialized Avg SignedBeaconBlock (200000 B) 15.917 us/op 14.645 us/op 1.09
transfer serialized BlobsSidecar (524380 B) 3.2740 us/op 4.0800 us/op 0.80
copy serialized BlobsSidecar (524380 B) 62.456 us/op 119.53 us/op 0.52
transfer serialized Big SignedBeaconBlock (1000000 B) 3.4510 us/op 4.1090 us/op 0.84
copy serialized Big SignedBeaconBlock (1000000 B) 141.36 us/op 124.73 us/op 1.13
pass gossip attestations to forkchoice per slot 2.8639 ms/op 2.8134 ms/op 1.02
forkChoice updateHead vc 100000 bc 64 eq 0 461.99 us/op 512.85 us/op 0.90
forkChoice updateHead vc 600000 bc 64 eq 0 3.1629 ms/op 3.1703 ms/op 1.00
forkChoice updateHead vc 1000000 bc 64 eq 0 5.0421 ms/op 5.0562 ms/op 1.00
forkChoice updateHead vc 600000 bc 320 eq 0 2.9568 ms/op 2.8830 ms/op 1.03
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1278 ms/op 2.9447 ms/op 1.06
forkChoice updateHead vc 600000 bc 7200 eq 0 3.7702 ms/op 3.4370 ms/op 1.10
forkChoice updateHead vc 600000 bc 64 eq 1000 10.916 ms/op 10.558 ms/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 10000 10.808 ms/op 10.599 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 300000 14.239 ms/op 13.640 ms/op 1.04
computeDeltas 500000 validators 300 proto nodes 4.2338 ms/op 4.2215 ms/op 1.00
computeDeltas 500000 validators 1200 proto nodes 4.4648 ms/op 4.1016 ms/op 1.09
computeDeltas 500000 validators 7200 proto nodes 4.5383 ms/op 4.2872 ms/op 1.06
computeDeltas 750000 validators 300 proto nodes 6.7192 ms/op 6.0674 ms/op 1.11
computeDeltas 750000 validators 1200 proto nodes 6.6875 ms/op 6.0991 ms/op 1.10
computeDeltas 750000 validators 7200 proto nodes 8.9968 ms/op 6.2900 ms/op 1.43
computeDeltas 1400000 validators 300 proto nodes 18.287 ms/op 11.298 ms/op 1.62
computeDeltas 1400000 validators 1200 proto nodes 15.956 ms/op 11.059 ms/op 1.44
computeDeltas 1400000 validators 7200 proto nodes 13.730 ms/op 11.230 ms/op 1.22
computeDeltas 2100000 validators 300 proto nodes 19.377 ms/op 18.046 ms/op 1.07
computeDeltas 2100000 validators 1200 proto nodes 17.867 ms/op 17.764 ms/op 1.01
computeDeltas 2100000 validators 7200 proto nodes 16.498 ms/op 17.883 ms/op 0.92
altair processAttestation - 250000 vs - 7PWei normalcase 2.1658 ms/op 2.2766 ms/op 0.95
altair processAttestation - 250000 vs - 7PWei worstcase 3.1565 ms/op 3.7227 ms/op 0.85
altair processAttestation - setStatus - 1/6 committees join 143.43 us/op 146.13 us/op 0.98
altair processAttestation - setStatus - 1/3 committees join 246.51 us/op 256.07 us/op 0.96
altair processAttestation - setStatus - 1/2 committees join 349.25 us/op 364.24 us/op 0.96
altair processAttestation - setStatus - 2/3 committees join 434.84 us/op 459.18 us/op 0.95
altair processAttestation - setStatus - 4/5 committees join 614.01 us/op 652.23 us/op 0.94
altair processAttestation - setStatus - 100% committees join 743.39 us/op 756.26 us/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase 4.5907 ms/op 5.8521 ms/op 0.78
altair processBlock - 250000 vs - 7PWei normalcase hashState 31.874 ms/op 33.172 ms/op 0.96
altair processBlock - 250000 vs - 7PWei worstcase 36.106 ms/op 43.109 ms/op 0.84
altair processBlock - 250000 vs - 7PWei worstcase hashState 98.269 ms/op 100.56 ms/op 0.98
phase0 processBlock - 250000 vs - 7PWei normalcase 2.6166 ms/op 2.0333 ms/op 1.29
phase0 processBlock - 250000 vs - 7PWei worstcase 34.822 ms/op 26.811 ms/op 1.30
altair processEth1Data - 250000 vs - 7PWei normalcase 355.90 us/op 349.86 us/op 1.02
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 7.2510 us/op 9.6670 us/op 0.75
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 50.367 us/op 55.295 us/op 0.91
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 13.412 us/op 11.826 us/op 1.13
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.9830 us/op 10.425 us/op 0.77
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 212.04 us/op 212.71 us/op 1.00
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 2.4084 ms/op 1.9194 ms/op 1.25
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4629 ms/op 2.6916 ms/op 0.91
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4563 ms/op 2.4017 ms/op 1.02
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 5.9679 ms/op 4.8826 ms/op 1.22
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.5006 ms/op 2.5168 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.3944 ms/op 5.7625 ms/op 0.94
Tree 40 250000 create 440.31 ms/op 458.06 ms/op 0.96
Tree 40 250000 get(125000) 144.16 ns/op 143.03 ns/op 1.01
Tree 40 250000 set(125000) 1.5625 us/op 1.6155 us/op 0.97
Tree 40 250000 toArray() 17.866 ms/op 16.258 ms/op 1.10
Tree 40 250000 iterate all - toArray() + loop 20.647 ms/op 19.231 ms/op 1.07
Tree 40 250000 iterate all - get(i) 60.339 ms/op 58.544 ms/op 1.03
Array 250000 create 2.4341 ms/op 2.9103 ms/op 0.84
Array 250000 clone - spread 1.5427 ms/op 1.5179 ms/op 1.02
Array 250000 get(125000) 0.40800 ns/op 0.42100 ns/op 0.97
Array 250000 set(125000) 0.43800 ns/op 0.44300 ns/op 0.99
Array 250000 iterate all - loop 84.861 us/op 133.99 us/op 0.63
phase0 afterProcessEpoch - 250000 vs - 7PWei 42.216 ms/op 42.548 ms/op 0.99
Array.fill - length 1000000 3.7907 ms/op 3.4689 ms/op 1.09
Array push - length 1000000 14.016 ms/op 13.754 ms/op 1.02
Array.get 0.28482 ns/op 0.28718 ns/op 0.99
Uint8Array.get 0.45015 ns/op 0.44750 ns/op 1.01
phase0 beforeProcessEpoch - 250000 vs - 7PWei 21.358 ms/op 20.319 ms/op 1.05
altair processEpoch - mainnet_e81889 293.55 ms/op 284.18 ms/op 1.03
mainnet_e81889 - altair beforeProcessEpoch 18.268 ms/op 21.075 ms/op 0.87
mainnet_e81889 - altair processJustificationAndFinalization 6.0130 us/op 8.5240 us/op 0.71
mainnet_e81889 - altair processInactivityUpdates 4.9549 ms/op 4.3250 ms/op 1.15
mainnet_e81889 - altair processRewardsAndPenalties 40.223 ms/op 48.019 ms/op 0.84
mainnet_e81889 - altair processRegistryUpdates 716.00 ns/op 830.00 ns/op 0.86
mainnet_e81889 - altair processSlashings 178.00 ns/op 201.00 ns/op 0.89
mainnet_e81889 - altair processEth1DataReset 170.00 ns/op 198.00 ns/op 0.86
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2141 ms/op 1.3234 ms/op 0.92
mainnet_e81889 - altair processSlashingsReset 957.00 ns/op 1.1490 us/op 0.83
mainnet_e81889 - altair processRandaoMixesReset 1.3470 us/op 1.4290 us/op 0.94
mainnet_e81889 - altair processHistoricalRootsUpdate 177.00 ns/op 181.00 ns/op 0.98
mainnet_e81889 - altair processParticipationFlagUpdates 527.00 ns/op 528.00 ns/op 1.00
mainnet_e81889 - altair processSyncCommitteeUpdates 140.00 ns/op 139.00 ns/op 1.01
mainnet_e81889 - altair afterProcessEpoch 45.873 ms/op 44.739 ms/op 1.03
capella processEpoch - mainnet_e217614 898.66 ms/op 1.1013 s/op 0.82
mainnet_e217614 - capella beforeProcessEpoch 62.080 ms/op 67.437 ms/op 0.92
mainnet_e217614 - capella processJustificationAndFinalization 5.9080 us/op 5.8290 us/op 1.01
mainnet_e217614 - capella processInactivityUpdates 14.792 ms/op 14.723 ms/op 1.00
mainnet_e217614 - capella processRewardsAndPenalties 184.57 ms/op 193.90 ms/op 0.95
mainnet_e217614 - capella processRegistryUpdates 8.1460 us/op 7.2310 us/op 1.13
mainnet_e217614 - capella processSlashings 191.00 ns/op 183.00 ns/op 1.04
mainnet_e217614 - capella processEth1DataReset 184.00 ns/op 183.00 ns/op 1.01
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.1853 ms/op 15.246 ms/op 0.27
mainnet_e217614 - capella processSlashingsReset 1.0890 us/op 1.0840 us/op 1.00
mainnet_e217614 - capella processRandaoMixesReset 1.2250 us/op 1.3760 us/op 0.89
mainnet_e217614 - capella processHistoricalRootsUpdate 172.00 ns/op 248.00 ns/op 0.69
mainnet_e217614 - capella processParticipationFlagUpdates 514.00 ns/op 684.00 ns/op 0.75
mainnet_e217614 - capella afterProcessEpoch 114.01 ms/op 121.60 ms/op 0.94
phase0 processEpoch - mainnet_e58758 304.24 ms/op 321.28 ms/op 0.95
mainnet_e58758 - phase0 beforeProcessEpoch 87.323 ms/op 82.850 ms/op 1.05
mainnet_e58758 - phase0 processJustificationAndFinalization 6.2070 us/op 5.7400 us/op 1.08
mainnet_e58758 - phase0 processRewardsAndPenalties 43.355 ms/op 37.516 ms/op 1.16
mainnet_e58758 - phase0 processRegistryUpdates 4.3660 us/op 3.1840 us/op 1.37
mainnet_e58758 - phase0 processSlashings 180.00 ns/op 182.00 ns/op 0.99
mainnet_e58758 - phase0 processEth1DataReset 168.00 ns/op 226.00 ns/op 0.74
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1688 ms/op 3.5715 ms/op 0.33
mainnet_e58758 - phase0 processSlashingsReset 1.0050 us/op 1.3780 us/op 0.73
mainnet_e58758 - phase0 processRandaoMixesReset 1.6410 us/op 1.5400 us/op 1.07
mainnet_e58758 - phase0 processHistoricalRootsUpdate 165.00 ns/op 198.00 ns/op 0.83
mainnet_e58758 - phase0 processParticipationRecordUpdates 912.00 ns/op 916.00 ns/op 1.00
mainnet_e58758 - phase0 afterProcessEpoch 33.867 ms/op 36.558 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.4287 ms/op 1.4547 ms/op 1.67
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9328 ms/op 2.7417 ms/op 0.70
altair processInactivityUpdates - 250000 normalcase 16.070 ms/op 18.882 ms/op 0.85
altair processInactivityUpdates - 250000 worstcase 24.495 ms/op 21.390 ms/op 1.15
phase0 processRegistryUpdates - 250000 normalcase 10.192 us/op 10.401 us/op 0.98
phase0 processRegistryUpdates - 250000 badcase_full_deposits 436.52 us/op 386.84 us/op 1.13
phase0 processRegistryUpdates - 250000 worstcase 0.5 131.07 ms/op 122.64 ms/op 1.07
altair processRewardsAndPenalties - 250000 normalcase 32.176 ms/op 37.719 ms/op 0.85
altair processRewardsAndPenalties - 250000 worstcase 38.281 ms/op 34.689 ms/op 1.10
phase0 getAttestationDeltas - 250000 normalcase 6.6370 ms/op 13.557 ms/op 0.49
phase0 getAttestationDeltas - 250000 worstcase 5.7825 ms/op 6.6857 ms/op 0.86
phase0 processSlashings - 250000 worstcase 125.64 us/op 128.21 us/op 0.98
altair processSyncCommitteeUpdates - 250000 11.749 ms/op 11.776 ms/op 1.00
BeaconState.hashTreeRoot - No change 217.00 ns/op 238.00 ns/op 0.91
BeaconState.hashTreeRoot - 1 full validator 92.341 us/op 83.571 us/op 1.10
BeaconState.hashTreeRoot - 32 full validator 957.26 us/op 1.0811 ms/op 0.89
BeaconState.hashTreeRoot - 512 full validator 11.780 ms/op 14.396 ms/op 0.82
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 103.87 us/op 128.65 us/op 0.81
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.1611 ms/op 1.9195 ms/op 1.13
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 23.077 ms/op 30.030 ms/op 0.77
BeaconState.hashTreeRoot - 1 balances 89.022 us/op 86.782 us/op 1.03
BeaconState.hashTreeRoot - 32 balances 1.1970 ms/op 841.46 us/op 1.42
BeaconState.hashTreeRoot - 512 balances 8.5986 ms/op 9.0398 ms/op 0.95
BeaconState.hashTreeRoot - 250000 balances 202.45 ms/op 186.15 ms/op 1.09
aggregationBits - 2048 els - zipIndexesInBitList 21.359 us/op 24.407 us/op 0.88
byteArrayEquals 32 53.628 ns/op 55.664 ns/op 0.96
Buffer.compare 32 17.098 ns/op 18.027 ns/op 0.95
byteArrayEquals 1024 1.5884 us/op 1.6657 us/op 0.95
Buffer.compare 1024 24.538 ns/op 28.566 ns/op 0.86
byteArrayEquals 16384 25.291 us/op 27.999 us/op 0.90
Buffer.compare 16384 199.53 ns/op 216.15 ns/op 0.92
byteArrayEquals 123687377 193.42 ms/op 208.98 ms/op 0.93
Buffer.compare 123687377 7.3335 ms/op 10.395 ms/op 0.71
byteArrayEquals 32 - diff last byte 52.437 ns/op 56.332 ns/op 0.93
Buffer.compare 32 - diff last byte 16.903 ns/op 18.491 ns/op 0.91
byteArrayEquals 1024 - diff last byte 1.6472 us/op 1.6824 us/op 0.98
Buffer.compare 1024 - diff last byte 26.492 ns/op 26.890 ns/op 0.99
byteArrayEquals 16384 - diff last byte 26.177 us/op 26.429 us/op 0.99
Buffer.compare 16384 - diff last byte 203.09 ns/op 212.40 ns/op 0.96
byteArrayEquals 123687377 - diff last byte 192.66 ms/op 204.63 ms/op 0.94
Buffer.compare 123687377 - diff last byte 7.0211 ms/op 9.1228 ms/op 0.77
byteArrayEquals 32 - random bytes 5.2470 ns/op 5.3090 ns/op 0.99
Buffer.compare 32 - random bytes 17.520 ns/op 18.117 ns/op 0.97
byteArrayEquals 1024 - random bytes 5.2000 ns/op 5.3540 ns/op 0.97
Buffer.compare 1024 - random bytes 17.403 ns/op 18.997 ns/op 0.92
byteArrayEquals 16384 - random bytes 5.1450 ns/op 5.6770 ns/op 0.91
Buffer.compare 16384 - random bytes 17.488 ns/op 19.321 ns/op 0.91
byteArrayEquals 123687377 - random bytes 6.9500 ns/op 6.7700 ns/op 1.03
Buffer.compare 123687377 - random bytes 18.920 ns/op 19.930 ns/op 0.95
regular array get 100000 times 45.549 us/op 43.078 us/op 1.06
wrappedArray get 100000 times 34.362 us/op 37.732 us/op 0.91
arrayWithProxy get 100000 times 12.884 ms/op 13.060 ms/op 0.99
ssz.Root.equals 47.985 ns/op 48.354 ns/op 0.99
byteArrayEquals 47.338 ns/op 47.280 ns/op 1.00
Buffer.compare 10.859 ns/op 10.979 ns/op 0.99
processSlot - 1 slots 10.321 us/op 12.260 us/op 0.84
processSlot - 32 slots 2.7347 ms/op 2.5262 ms/op 1.08
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.9902 ms/op 4.6266 ms/op 0.65
getCommitteeAssignments - req 1 vs - 250000 vc 2.1023 ms/op 2.3437 ms/op 0.90
getCommitteeAssignments - req 100 vs - 250000 vc 4.0991 ms/op 4.4803 ms/op 0.91
getCommitteeAssignments - req 1000 vs - 250000 vc 4.3793 ms/op 4.8600 ms/op 0.90
findModifiedValidators - 10000 modified validators 735.97 ms/op 985.27 ms/op 0.75
findModifiedValidators - 1000 modified validators 733.41 ms/op 854.98 ms/op 0.86
findModifiedValidators - 100 modified validators 215.88 ms/op 317.56 ms/op 0.68
findModifiedValidators - 10 modified validators 241.91 ms/op 270.34 ms/op 0.89
findModifiedValidators - 1 modified validators 176.35 ms/op 174.65 ms/op 1.01
findModifiedValidators - no difference 145.62 ms/op 352.34 ms/op 0.41
compare ViewDUs 6.3283 s/op 7.2828 s/op 0.87
compare each validator Uint8Array 1.6255 s/op 2.0680 s/op 0.79
compare ViewDU to Uint8Array 1.0931 s/op 1.8697 s/op 0.58
migrate state 1000000 validators, 24 modified, 0 new 924.47 ms/op 1.1150 s/op 0.83
migrate state 1000000 validators, 1700 modified, 1000 new 1.1761 s/op 1.6710 s/op 0.70
migrate state 1000000 validators, 3400 modified, 2000 new 1.3259 s/op 1.9288 s/op 0.69
migrate state 1500000 validators, 24 modified, 0 new 938.72 ms/op 1.1491 s/op 0.82
migrate state 1500000 validators, 1700 modified, 1000 new 1.2177 s/op 1.4421 s/op 0.84
migrate state 1500000 validators, 3400 modified, 2000 new 1.2994 s/op 1.6239 s/op 0.80
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.3400 ns/op 4.7800 ns/op 1.12
state getBlockRootAtSlot - 250000 vs - 7PWei 419.49 ns/op 572.69 ns/op 0.73
naive computeProposerIndex 100000 validators 59.081 ms/op 62.675 ms/op 0.94
computeProposerIndex 100000 validators 1.5405 ms/op 1.6354 ms/op 0.94
naiveGetNextSyncCommitteeIndices 1000 validators 7.5697 s/op 8.9374 s/op 0.85
getNextSyncCommitteeIndices 1000 validators 110.03 ms/op 132.57 ms/op 0.83
naiveGetNextSyncCommitteeIndices 10000 validators 7.9227 s/op 8.2670 s/op 0.96
getNextSyncCommitteeIndices 10000 validators 118.80 ms/op 128.57 ms/op 0.92
naiveGetNextSyncCommitteeIndices 100000 validators 8.6893 s/op 8.0132 s/op 1.08
getNextSyncCommitteeIndices 100000 validators 121.14 ms/op 122.66 ms/op 0.99
naive computeShuffledIndex 100000 validators 25.090 s/op 27.115 s/op 0.93
cached computeShuffledIndex 100000 validators 566.97 ms/op 603.95 ms/op 0.94
naive computeShuffledIndex 2000000 validators 491.72 s/op 533.56 s/op 0.92
cached computeShuffledIndex 2000000 validators 29.197 s/op 39.362 s/op 0.74
computeProposers - vc 250000 629.93 us/op 635.38 us/op 0.99
computeEpochShuffling - vc 250000 42.608 ms/op 42.754 ms/op 1.00
getNextSyncCommittee - vc 250000 10.888 ms/op 10.525 ms/op 1.03
computeSigningRoot for AttestationData 21.008 us/op 20.970 us/op 1.00
hash AttestationData serialized data then Buffer.toString(base64) 1.5974 us/op 1.6083 us/op 0.99
toHexString serialized data 1.1777 us/op 1.2755 us/op 0.92
Buffer.toString(base64) 166.08 ns/op 152.22 ns/op 1.09
nodejs block root to RootHex using toHex 143.32 ns/op 142.08 ns/op 1.01
nodejs block root to RootHex using toRootHex 87.916 ns/op 96.079 ns/op 0.92
nodejs fromhex(blob) 115.58 ms/op 116.38 ms/op 0.99
nodejs fromHexInto(blob) 96.637 ms/op 99.629 ms/op 0.97
browser block root to RootHex using the deprecated toHexString 214.73 ns/op 222.65 ns/op 0.96
browser block root to RootHex using toHex 173.21 ns/op 176.36 ns/op 0.98
browser block root to RootHex using toRootHex 160.32 ns/op 162.98 ns/op 0.98
browser fromHexInto(blob) 839.51 us/op 834.52 us/op 1.01
browser fromHex(blob) 807.74 ms/op 839.60 ms/op 0.96

by benchmarkbot/action

@matthewkeil
Copy link
Member Author

TODO!!!! Need to figure out downscoring in unknownBlock!!!! swiiiing and a miss....

Tracked in #8411

matthewkeil and others added 7 commits September 16, 2025 10:21
**Motivation**

- Implement getBlobV1
- Update `GetBlobsTracker` to handle multiple blocks in a slot at a time
(forky network)

---------

Co-authored-by: Nico Flaig <[email protected]>
**Motivation**

Audit usage of kzgCommitmentToVersionedHash to make sure we are not
recomputing anywhere unnecessarily. Is a heavy operation and in most
cases has already been computed and cached on the BlockInput

Updated `verifyBlocksExecutionPayload`, `verifyBlockExecutionPayload`
and `getSegmentErrorResponse` to use `IBlockInput` so that the cached
versionedHashes could be consumed instead of recalculating them
twoeths and others added 3 commits September 17, 2025 07:48
**Motivation**

- we want to know how UnknownBlock helps us

**Description**

- track fetch time into slot
- track total fetch time
- track fetch result and fetched peers with different labels following
this enum:
```typescript
enum FetchResult {
  SuccessResolved = "success_resolved",
  SuccessMissingParent = "success_missing_parent",
  SuccessLate = "success_late",
  FailureTriedAllPeers = "failure_tried_all_peers",
  FailureMaxAttempts = "failure_max_attempts",
}
```

Closes #8403

Co-authored-by: Tuyen Nguyen <[email protected]>
**Motivation**

Use consistent log messages with useful information.

**Description**

- Add slot to all log messages
- Use `blockSlot` in log where other slot data is available.

Closes #8385 

**Steps to test or reproduce**

- Run all tests

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
wemeetagain and others added 3 commits September 18, 2025 05:35
**Motivation**

- merging #8200 within sight

**Description**

- replace `custodyGroups` with `custodyColumns` where we're tracking
per-peer
- code was wrongly comparing groups and columns, but this wasn't causing
bugged behavior given the current configuration
- in BlockInputSync (unknown sync), don't unilaterally exclude a peer
after fetching data from it. Instead only exclude the peer upon (most)
errors
- in unknown block sync e2e test, create the proper type of block input
(BlockInputColumns). Using the wrong class causes the block input to
fail to process

---------

Co-authored-by: Tuyen Nguyen <[email protected]>
**Motivation**

- elapsed time till processed of devnet-5 is not great after it gets to
`MAX_BLOBS_PER_BLOCK` as 72
- when I look into some late processed blocks, it turned out that data
columns were received very late, for example the 64th seen columns:

```
Sep-18 08:08:20.167[network]         debug: Received gossip dataColumn slot=55841, blockRoot=0x2a9f…209d, timeCreatedSec=1758182899.816, expectedColumns=128, receivedColumns=64, currentSlot=55841, peerId=16Uiu2HAmSnADzjUiLA41g1J8jKTHqq3tKCP4PVfAa8bHGSrQwKGq, delaySec=8.138000011444092, gossipSubnet=107, columnIndex=107, recvToValLatency=0.003000020980834961, recvToValidation=0.029000043869018555, validationTime=0.026000022888183594
```
- the current `elapsedTimeTillReceived` does not help much because it
track all columns

**Description**

- refine `elapsedTimeTillReceived` metric to only track columns at
specific orders: 1st, 32th, 64th, 128th
- this will help us investigate late block processed easier postfulu

---------

Co-authored-by: Tuyen Nguyen <[email protected]>
**Motivation**

- the data columns `recoverTime` could be more than 2s, we should
reflect that in our metrics

**Description**

- this shows that we should only consider it as a back up way to make
sure all data available, not a way to speed up the import process
<img width="1507" height="700" alt="Screenshot 2025-09-18 at 14 47 40"
src="https://github.com/user-attachments/assets/52696e3d-a379-4b57-af2c-323b9db08f33"
/>

Co-authored-by: Tuyen Nguyen <[email protected]>
Copy link
Member Author

@matthewkeil matthewkeil left a comment

Choose a reason for hiding this comment

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

LGTM!!! 🎸

@wemeetagain wemeetagain merged commit a70bac5 into unstable Sep 18, 2025
18 of 20 checks passed
@wemeetagain wemeetagain deleted the mkeil/refactor-block-input-on-unstable branch September 18, 2025 11:49
@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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants