Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: send validator registrations to builder using ssz #7444

Draft
wants to merge 4 commits into
base: unstable
Choose a base branch
from

Conversation

nflaig
Copy link
Member

@nflaig nflaig commented Feb 10, 2025

Motivation

See ethereum/builder-specs#110

Description

Send validator registrations to builder using SSZ

TODO

  • make sure all mev sidecars support 415 status code to fall back to JSON or add custom retry mechanism
  • forward bytes submitted through registerValidator beacon api to skip extra serialization step

Closes #7369

Copy link
Contributor

github-actions bot commented Feb 10, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 8ea777c Previous: d9bd50b Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0169 ms/op 948.09 us/op 1.07
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.775 us/op 34.382 us/op 1.10
BLS verify - blst 923.54 us/op 817.10 us/op 1.13
BLS verifyMultipleSignatures 3 - blst 1.3186 ms/op 1.1705 ms/op 1.13
BLS verifyMultipleSignatures 8 - blst 1.9471 ms/op 1.6140 ms/op 1.21
BLS verifyMultipleSignatures 32 - blst 5.6553 ms/op 4.8039 ms/op 1.18
BLS verifyMultipleSignatures 64 - blst 11.454 ms/op 8.9260 ms/op 1.28
BLS verifyMultipleSignatures 128 - blst 17.896 ms/op 17.076 ms/op 1.05
BLS deserializing 10000 signatures 704.55 ms/op 677.05 ms/op 1.04
BLS deserializing 100000 signatures 6.9722 s/op 6.9521 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 1.1104 ms/op 896.42 us/op 1.24
BLS verifyMultipleSignatures - same message - 8 - blst 1.0389 ms/op 1.0086 ms/op 1.03
BLS verifyMultipleSignatures - same message - 32 - blst 1.6206 ms/op 1.6637 ms/op 0.97
BLS verifyMultipleSignatures - same message - 64 - blst 2.5823 ms/op 2.5533 ms/op 1.01
BLS verifyMultipleSignatures - same message - 128 - blst 4.2924 ms/op 4.3196 ms/op 0.99
BLS aggregatePubkeys 32 - blst 19.240 us/op 19.681 us/op 0.98
BLS aggregatePubkeys 128 - blst 68.744 us/op 69.824 us/op 0.98
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 49.528 ms/op 43.994 ms/op 1.13
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 59.040 ms/op 45.207 ms/op 1.31
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 42.411 ms/op 35.000 ms/op 1.21
getSlashingsAndExits - default max 126.28 us/op 77.757 us/op 1.62
getSlashingsAndExits - 2k 399.82 us/op 334.51 us/op 1.20
proposeBlockBody type=full, size=empty 4.7656 ms/op 4.9378 ms/op 0.97
isKnown best case - 1 super set check 196.00 ns/op 207.00 ns/op 0.95
isKnown normal case - 2 super set checks 197.00 ns/op 202.00 ns/op 0.98
isKnown worse case - 16 super set checks 197.00 ns/op 200.00 ns/op 0.98
InMemoryCheckpointStateCache - add get delete 2.3950 us/op 2.4110 us/op 0.99
validate api signedAggregateAndProof - struct 1.4901 ms/op 1.4414 ms/op 1.03
validate gossip signedAggregateAndProof - struct 1.4219 ms/op 1.4524 ms/op 0.98
batch validate gossip attestation - vc 640000 - chunk 32 126.66 us/op 122.80 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 64 106.23 us/op 111.98 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 128 106.51 us/op 117.61 us/op 0.91
batch validate gossip attestation - vc 640000 - chunk 256 113.83 us/op 125.23 us/op 0.91
pickEth1Vote - no votes 958.72 us/op 1.0571 ms/op 0.91
pickEth1Vote - max votes 8.9859 ms/op 8.0900 ms/op 1.11
pickEth1Vote - Eth1Data hashTreeRoot value x2048 19.299 ms/op 14.055 ms/op 1.37
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 30.420 ms/op 21.245 ms/op 1.43
pickEth1Vote - Eth1Data fastSerialize value x2048 451.16 us/op 442.29 us/op 1.02
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.8517 ms/op 2.3546 ms/op 1.64
bytes32 toHexString 368.00 ns/op 365.00 ns/op 1.01
bytes32 Buffer.toString(hex) 236.00 ns/op 236.00 ns/op 1.00
bytes32 Buffer.toString(hex) from Uint8Array 323.00 ns/op 324.00 ns/op 1.00
bytes32 Buffer.toString(hex) + 0x 242.00 ns/op 235.00 ns/op 1.03
Object access 1 prop 0.12700 ns/op 0.11600 ns/op 1.09
Map access 1 prop 0.13400 ns/op 0.12400 ns/op 1.08
Object get x1000 5.9140 ns/op 6.2190 ns/op 0.95
Map get x1000 6.6230 ns/op 6.8610 ns/op 0.97
Object set x1000 29.137 ns/op 33.711 ns/op 0.86
Map set x1000 20.074 ns/op 26.613 ns/op 0.75
Return object 10000 times 0.29900 ns/op 0.29470 ns/op 1.01
Throw Error 10000 times 4.4076 us/op 4.8166 us/op 0.92
toHex 137.62 ns/op 153.12 ns/op 0.90
Buffer.from 134.15 ns/op 146.83 ns/op 0.91
shared Buffer 80.819 ns/op 83.300 ns/op 0.97
fastMsgIdFn sha256 / 200 bytes 2.2340 us/op 2.3060 us/op 0.97
fastMsgIdFn h32 xxhash / 200 bytes 203.00 ns/op 212.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 200 bytes 280.00 ns/op 260.00 ns/op 1.08
fastMsgIdFn sha256 / 1000 bytes 7.3990 us/op 7.1950 us/op 1.03
fastMsgIdFn h32 xxhash / 1000 bytes 334.00 ns/op 339.00 ns/op 0.99
fastMsgIdFn h64 xxhash / 1000 bytes 381.00 ns/op 346.00 ns/op 1.10
fastMsgIdFn sha256 / 10000 bytes 64.580 us/op 66.274 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.8360 us/op 1.8680 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 1.2440 us/op 1.4100 us/op 0.88
send data - 1000 256B messages 12.682 ms/op 13.607 ms/op 0.93
send data - 1000 512B messages 16.473 ms/op 18.018 ms/op 0.91
send data - 1000 1024B messages 25.382 ms/op 29.388 ms/op 0.86
send data - 1000 1200B messages 20.239 ms/op 23.256 ms/op 0.87
send data - 1000 2048B messages 19.991 ms/op 27.522 ms/op 0.73
send data - 1000 4096B messages 23.026 ms/op 41.610 ms/op 0.55
send data - 1000 16384B messages 68.098 ms/op 75.167 ms/op 0.91
send data - 1000 65536B messages 219.49 ms/op 284.44 ms/op 0.77
enrSubnets - fastDeserialize 64 bits 874.00 ns/op 1.0010 us/op 0.87
enrSubnets - ssz BitVector 64 bits 313.00 ns/op 574.00 ns/op 0.55
enrSubnets - fastDeserialize 4 bits 130.00 ns/op 196.00 ns/op 0.66
enrSubnets - ssz BitVector 4 bits 408.00 ns/op 415.00 ns/op 0.98
prioritizePeers score -10:0 att 32-0.1 sync 2-0 113.69 us/op 126.37 us/op 0.90
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 134.48 us/op 155.74 us/op 0.86
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 193.83 us/op 272.52 us/op 0.71
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 361.22 us/op 409.74 us/op 0.88
prioritizePeers score 0:0 att 64-1 sync 4-1 441.73 us/op 499.58 us/op 0.88
array of 16000 items push then shift 1.5529 us/op 1.7002 us/op 0.91
LinkedList of 16000 items push then shift 6.8020 ns/op 9.7020 ns/op 0.70
array of 16000 items push then pop 74.358 ns/op 97.142 ns/op 0.77
LinkedList of 16000 items push then pop 6.7460 ns/op 8.5260 ns/op 0.79
array of 24000 items push then shift 2.3389 us/op 2.5354 us/op 0.92
LinkedList of 24000 items push then shift 6.9250 ns/op 9.0040 ns/op 0.77
array of 24000 items push then pop 97.585 ns/op 124.69 ns/op 0.78
LinkedList of 24000 items push then pop 6.7340 ns/op 8.8440 ns/op 0.76
intersect bitArray bitLen 8 6.1910 ns/op 7.0560 ns/op 0.88
intersect array and set length 8 36.937 ns/op 47.477 ns/op 0.78
intersect bitArray bitLen 128 28.973 ns/op 32.478 ns/op 0.89
intersect array and set length 128 604.33 ns/op 715.43 ns/op 0.84
bitArray.getTrueBitIndexes() bitLen 128 995.00 ns/op 1.2280 us/op 0.81
bitArray.getTrueBitIndexes() bitLen 248 1.7360 us/op 2.2820 us/op 0.76
bitArray.getTrueBitIndexes() bitLen 512 3.5430 us/op 4.3660 us/op 0.81
Buffer.concat 32 items 590.00 ns/op 929.00 ns/op 0.64
Uint8Array.set 32 items 1.1510 us/op 1.8800 us/op 0.61
Buffer.copy 1.9680 us/op 3.6920 us/op 0.53
Uint8Array.set - with subarray 1.9810 us/op 3.7530 us/op 0.53
Uint8Array.set - without subarray 1.0900 us/op 1.9220 us/op 0.57
getUint32 - dataview 188.00 ns/op 206.00 ns/op 0.91
getUint32 - manual 112.00 ns/op 152.00 ns/op 0.74
Set add up to 64 items then delete first 2.1073 us/op 2.2199 us/op 0.95
OrderedSet add up to 64 items then delete first 3.0744 us/op 4.5789 us/op 0.67
Set add up to 64 items then delete last 2.3678 us/op 3.4186 us/op 0.69
OrderedSet add up to 64 items then delete last 3.6479 us/op 5.4275 us/op 0.67
Set add up to 64 items then delete middle 2.4286 us/op 2.5361 us/op 0.96
OrderedSet add up to 64 items then delete middle 5.0310 us/op 6.5963 us/op 0.76
Set add up to 128 items then delete first 4.8190 us/op 7.0306 us/op 0.69
OrderedSet add up to 128 items then delete first 7.4237 us/op 11.003 us/op 0.67
Set add up to 128 items then delete last 4.7535 us/op 6.7653 us/op 0.70
OrderedSet add up to 128 items then delete last 7.3791 us/op 9.9950 us/op 0.74
Set add up to 128 items then delete middle 4.7991 us/op 6.7001 us/op 0.72
OrderedSet add up to 128 items then delete middle 13.109 us/op 17.758 us/op 0.74
Set add up to 256 items then delete first 9.3403 us/op 13.771 us/op 0.68
OrderedSet add up to 256 items then delete first 14.548 us/op 21.835 us/op 0.67
Set add up to 256 items then delete last 9.2760 us/op 13.734 us/op 0.68
OrderedSet add up to 256 items then delete last 15.158 us/op 17.029 us/op 0.89
Set add up to 256 items then delete middle 9.3715 us/op 14.901 us/op 0.63
OrderedSet add up to 256 items then delete middle 38.702 us/op 48.121 us/op 0.80
transfer serialized Status (84 B) 2.1940 us/op 2.5150 us/op 0.87
copy serialized Status (84 B) 1.2070 us/op 1.4960 us/op 0.81
transfer serialized SignedVoluntaryExit (112 B) 2.2880 us/op 2.5660 us/op 0.89
copy serialized SignedVoluntaryExit (112 B) 1.2850 us/op 1.8110 us/op 0.71
transfer serialized ProposerSlashing (416 B) 2.2680 us/op 3.9180 us/op 0.58
copy serialized ProposerSlashing (416 B) 1.4360 us/op 2.7220 us/op 0.53
transfer serialized Attestation (485 B) 2.2460 us/op 3.7010 us/op 0.61
copy serialized Attestation (485 B) 1.3070 us/op 1.9950 us/op 0.66
transfer serialized AttesterSlashing (33232 B) 3.2280 us/op 3.2660 us/op 0.99
copy serialized AttesterSlashing (33232 B) 4.7020 us/op 5.0730 us/op 0.93
transfer serialized Small SignedBeaconBlock (128000 B) 3.4310 us/op 3.8030 us/op 0.90
copy serialized Small SignedBeaconBlock (128000 B) 9.3670 us/op 16.235 us/op 0.58
transfer serialized Avg SignedBeaconBlock (200000 B) 3.8200 us/op 5.8880 us/op 0.65
copy serialized Avg SignedBeaconBlock (200000 B) 13.027 us/op 25.878 us/op 0.50
transfer serialized BlobsSidecar (524380 B) 3.8230 us/op 8.5670 us/op 0.45
copy serialized BlobsSidecar (524380 B) 63.464 us/op 81.203 us/op 0.78
transfer serialized Big SignedBeaconBlock (1000000 B) 3.7570 us/op 5.5450 us/op 0.68
copy serialized Big SignedBeaconBlock (1000000 B) 107.85 us/op 159.37 us/op 0.68
pass gossip attestations to forkchoice per slot 2.7384 ms/op 3.1923 ms/op 0.86
forkChoice updateHead vc 100000 bc 64 eq 0 452.46 us/op 472.35 us/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 0 2.7249 ms/op 3.0194 ms/op 0.90
forkChoice updateHead vc 1000000 bc 64 eq 0 4.6426 ms/op 5.9689 ms/op 0.78
forkChoice updateHead vc 600000 bc 320 eq 0 2.7098 ms/op 3.2351 ms/op 0.84
forkChoice updateHead vc 600000 bc 1200 eq 0 2.7582 ms/op 2.9310 ms/op 0.94
forkChoice updateHead vc 600000 bc 7200 eq 0 2.9956 ms/op 3.8591 ms/op 0.78
forkChoice updateHead vc 600000 bc 64 eq 1000 10.175 ms/op 10.920 ms/op 0.93
forkChoice updateHead vc 600000 bc 64 eq 10000 10.109 ms/op 10.714 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 300000 13.444 ms/op 14.317 ms/op 0.94
computeDeltas 500000 validators 300 proto nodes 3.7963 ms/op 4.0786 ms/op 0.93
computeDeltas 500000 validators 1200 proto nodes 3.9128 ms/op 3.9097 ms/op 1.00
computeDeltas 500000 validators 7200 proto nodes 3.9661 ms/op 3.9516 ms/op 1.00
computeDeltas 750000 validators 300 proto nodes 6.1674 ms/op 5.8619 ms/op 1.05
computeDeltas 750000 validators 1200 proto nodes 5.8685 ms/op 5.7555 ms/op 1.02
computeDeltas 750000 validators 7200 proto nodes 6.0234 ms/op 5.7377 ms/op 1.05
computeDeltas 1400000 validators 300 proto nodes 11.022 ms/op 10.736 ms/op 1.03
computeDeltas 1400000 validators 1200 proto nodes 11.131 ms/op 11.014 ms/op 1.01
computeDeltas 1400000 validators 7200 proto nodes 12.129 ms/op 11.108 ms/op 1.09
computeDeltas 2100000 validators 300 proto nodes 16.386 ms/op 16.552 ms/op 0.99
computeDeltas 2100000 validators 1200 proto nodes 15.881 ms/op 16.510 ms/op 0.96
computeDeltas 2100000 validators 7200 proto nodes 16.216 ms/op 16.706 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei normalcase 1.9359 ms/op 2.0421 ms/op 0.95
altair processAttestation - 250000 vs - 7PWei worstcase 2.8098 ms/op 3.0135 ms/op 0.93
altair processAttestation - setStatus - 1/6 committees join 114.76 us/op 128.08 us/op 0.90
altair processAttestation - setStatus - 1/3 committees join 221.35 us/op 258.93 us/op 0.85
altair processAttestation - setStatus - 1/2 committees join 316.87 us/op 344.40 us/op 0.92
altair processAttestation - setStatus - 2/3 committees join 407.07 us/op 454.29 us/op 0.90
altair processAttestation - setStatus - 4/5 committees join 546.70 us/op 611.07 us/op 0.89
altair processAttestation - setStatus - 100% committees join 671.43 us/op 755.92 us/op 0.89
altair processBlock - 250000 vs - 7PWei normalcase 4.1067 ms/op 4.4685 ms/op 0.92
altair processBlock - 250000 vs - 7PWei normalcase hashState 37.765 ms/op 35.827 ms/op 1.05
altair processBlock - 250000 vs - 7PWei worstcase 52.273 ms/op 39.499 ms/op 1.32
altair processBlock - 250000 vs - 7PWei worstcase hashState 95.726 ms/op 85.141 ms/op 1.12
phase0 processBlock - 250000 vs - 7PWei normalcase 2.1008 ms/op 1.8405 ms/op 1.14
phase0 processBlock - 250000 vs - 7PWei worstcase 23.710 ms/op 25.401 ms/op 0.93
altair processEth1Data - 250000 vs - 7PWei normalcase 351.48 us/op 398.20 us/op 0.88
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 7.5260 us/op 5.0690 us/op 1.48
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 37.237 us/op 34.059 us/op 1.09
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 8.5150 us/op 8.5280 us/op 1.00
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.1470 us/op 5.6130 us/op 1.10
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 162.97 us/op 141.99 us/op 1.15
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9182 ms/op 952.32 us/op 2.01
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.9733 ms/op 1.3981 ms/op 1.41
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.9075 ms/op 1.4081 ms/op 1.35
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.3929 ms/op 3.5381 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0273 ms/op 1.4399 ms/op 1.41
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.5817 ms/op 3.6635 ms/op 0.98
Tree 40 250000 create 411.69 ms/op 453.81 ms/op 0.91
Tree 40 250000 get(125000) 144.10 ns/op 148.12 ns/op 0.97
Tree 40 250000 set(125000) 1.5032 us/op 1.6936 us/op 0.89
Tree 40 250000 toArray() 18.726 ms/op 20.939 ms/op 0.89
Tree 40 250000 iterate all - toArray() + loop 18.077 ms/op 21.232 ms/op 0.85
Tree 40 250000 iterate all - get(i) 56.294 ms/op 59.193 ms/op 0.95
Array 250000 create 2.4476 ms/op 3.4644 ms/op 0.71
Array 250000 clone - spread 1.4480 ms/op 836.27 us/op 1.73
Array 250000 get(125000) 0.41100 ns/op 0.41600 ns/op 0.99
Array 250000 set(125000) 0.42100 ns/op 0.43800 ns/op 0.96
Array 250000 iterate all - loop 99.202 us/op 84.066 us/op 1.18
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.981 ms/op 42.926 ms/op 0.98
Array.fill - length 1000000 3.4606 ms/op 3.7780 ms/op 0.92
Array push - length 1000000 13.468 ms/op 14.506 ms/op 0.93
Array.get 0.27005 ns/op 0.27571 ns/op 0.98
Uint8Array.get 0.42581 ns/op 0.44177 ns/op 0.96
phase0 beforeProcessEpoch - 250000 vs - 7PWei 17.991 ms/op 17.049 ms/op 1.06
altair processEpoch - mainnet_e81889 275.21 ms/op 267.42 ms/op 1.03
mainnet_e81889 - altair beforeProcessEpoch 20.715 ms/op 18.752 ms/op 1.10
mainnet_e81889 - altair processJustificationAndFinalization 5.7310 us/op 5.4730 us/op 1.05
mainnet_e81889 - altair processInactivityUpdates 4.0651 ms/op 3.8698 ms/op 1.05
mainnet_e81889 - altair processRewardsAndPenalties 58.333 ms/op 38.430 ms/op 1.52
mainnet_e81889 - altair processRegistryUpdates 710.00 ns/op 694.00 ns/op 1.02
mainnet_e81889 - altair processSlashings 186.00 ns/op 172.00 ns/op 1.08
mainnet_e81889 - altair processEth1DataReset 184.00 ns/op 165.00 ns/op 1.12
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7654 ms/op 1.2335 ms/op 1.43
mainnet_e81889 - altair processSlashingsReset 1.0950 us/op 856.00 ns/op 1.28
mainnet_e81889 - altair processRandaoMixesReset 1.3220 us/op 1.1080 us/op 1.19
mainnet_e81889 - altair processHistoricalRootsUpdate 186.00 ns/op 170.00 ns/op 1.09
mainnet_e81889 - altair processParticipationFlagUpdates 512.00 ns/op 499.00 ns/op 1.03
mainnet_e81889 - altair processSyncCommitteeUpdates 142.00 ns/op 130.00 ns/op 1.09
mainnet_e81889 - altair afterProcessEpoch 44.094 ms/op 43.965 ms/op 1.00
capella processEpoch - mainnet_e217614 965.07 ms/op 897.31 ms/op 1.08
mainnet_e217614 - capella beforeProcessEpoch 71.618 ms/op 66.552 ms/op 1.08
mainnet_e217614 - capella processJustificationAndFinalization 5.4970 us/op 5.1960 us/op 1.06
mainnet_e217614 - capella processInactivityUpdates 16.600 ms/op 15.725 ms/op 1.06
mainnet_e217614 - capella processRewardsAndPenalties 222.28 ms/op 172.67 ms/op 1.29
mainnet_e217614 - capella processRegistryUpdates 8.3160 us/op 6.3490 us/op 1.31
mainnet_e217614 - capella processSlashings 195.00 ns/op 167.00 ns/op 1.17
mainnet_e217614 - capella processEth1DataReset 208.00 ns/op 162.00 ns/op 1.28
mainnet_e217614 - capella processEffectiveBalanceUpdates 10.319 ms/op 9.8324 ms/op 1.05
mainnet_e217614 - capella processSlashingsReset 1.2360 us/op 849.00 ns/op 1.46
mainnet_e217614 - capella processRandaoMixesReset 1.2770 us/op 1.1350 us/op 1.13
mainnet_e217614 - capella processHistoricalRootsUpdate 211.00 ns/op 165.00 ns/op 1.28
mainnet_e217614 - capella processParticipationFlagUpdates 546.00 ns/op 500.00 ns/op 1.09
mainnet_e217614 - capella afterProcessEpoch 113.94 ms/op 112.85 ms/op 1.01
phase0 processEpoch - mainnet_e58758 294.41 ms/op 274.80 ms/op 1.07
mainnet_e58758 - phase0 beforeProcessEpoch 82.628 ms/op 69.487 ms/op 1.19
mainnet_e58758 - phase0 processJustificationAndFinalization 6.2100 us/op 5.3270 us/op 1.17
mainnet_e58758 - phase0 processRewardsAndPenalties 38.620 ms/op 35.023 ms/op 1.10
mainnet_e58758 - phase0 processRegistryUpdates 3.2850 us/op 3.0770 us/op 1.07
mainnet_e58758 - phase0 processSlashings 190.00 ns/op 167.00 ns/op 1.14
mainnet_e58758 - phase0 processEth1DataReset 178.00 ns/op 162.00 ns/op 1.10
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0233 ms/op 1.0177 ms/op 1.01
mainnet_e58758 - phase0 processSlashingsReset 931.00 ns/op 936.00 ns/op 0.99
mainnet_e58758 - phase0 processRandaoMixesReset 1.3610 us/op 1.1570 us/op 1.18
mainnet_e58758 - phase0 processHistoricalRootsUpdate 206.00 ns/op 163.00 ns/op 1.26
mainnet_e58758 - phase0 processParticipationRecordUpdates 858.00 ns/op 849.00 ns/op 1.01
mainnet_e58758 - phase0 afterProcessEpoch 35.968 ms/op 35.001 ms/op 1.03
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.1428 ms/op 1.2917 ms/op 1.66
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6686 ms/op 1.9379 ms/op 0.86
altair processInactivityUpdates - 250000 normalcase 20.437 ms/op 16.435 ms/op 1.24
altair processInactivityUpdates - 250000 worstcase 21.185 ms/op 16.628 ms/op 1.27
phase0 processRegistryUpdates - 250000 normalcase 8.5830 us/op 5.3290 us/op 1.61
phase0 processRegistryUpdates - 250000 badcase_full_deposits 395.11 us/op 210.32 us/op 1.88
phase0 processRegistryUpdates - 250000 worstcase 0.5 120.56 ms/op 97.576 ms/op 1.24
altair processRewardsAndPenalties - 250000 normalcase 42.380 ms/op 35.031 ms/op 1.21
altair processRewardsAndPenalties - 250000 worstcase 44.629 ms/op 33.013 ms/op 1.35
phase0 getAttestationDeltas - 250000 normalcase 9.3243 ms/op 6.8648 ms/op 1.36
phase0 getAttestationDeltas - 250000 worstcase 13.244 ms/op 6.6768 ms/op 1.98
phase0 processSlashings - 250000 worstcase 103.17 us/op 77.344 us/op 1.33
altair processSyncCommitteeUpdates - 250000 10.962 ms/op 16.666 ms/op 0.66
BeaconState.hashTreeRoot - No change 258.00 ns/op 205.00 ns/op 1.26
BeaconState.hashTreeRoot - 1 full validator 101.81 us/op 80.588 us/op 1.26
BeaconState.hashTreeRoot - 32 full validator 1.3289 ms/op 955.94 us/op 1.39
BeaconState.hashTreeRoot - 512 full validator 14.511 ms/op 10.142 ms/op 1.43
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 161.90 us/op 96.935 us/op 1.67
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.1283 ms/op 1.6744 ms/op 1.27
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 32.878 ms/op 22.167 ms/op 1.48
BeaconState.hashTreeRoot - 1 balances 126.65 us/op 69.704 us/op 1.82
BeaconState.hashTreeRoot - 32 balances 1.1669 ms/op 798.12 us/op 1.46
BeaconState.hashTreeRoot - 512 balances 8.7588 ms/op 7.8106 ms/op 1.12
BeaconState.hashTreeRoot - 250000 balances 157.03 ms/op 205.88 ms/op 0.76
aggregationBits - 2048 els - zipIndexesInBitList 23.250 us/op 20.817 us/op 1.12
byteArrayEquals 32 53.470 ns/op 51.797 ns/op 1.03
Buffer.compare 32 17.219 ns/op 16.634 ns/op 1.04
byteArrayEquals 1024 1.5809 us/op 1.5329 us/op 1.03
Buffer.compare 1024 25.153 ns/op 24.672 ns/op 1.02
byteArrayEquals 16384 25.105 us/op 24.399 us/op 1.03
Buffer.compare 16384 200.22 ns/op 189.26 ns/op 1.06
byteArrayEquals 123687377 192.60 ms/op 189.55 ms/op 1.02
Buffer.compare 123687377 7.0703 ms/op 6.2836 ms/op 1.13
byteArrayEquals 32 - diff last byte 52.548 ns/op 52.335 ns/op 1.00
Buffer.compare 32 - diff last byte 17.356 ns/op 17.010 ns/op 1.02
byteArrayEquals 1024 - diff last byte 1.5926 us/op 1.5840 us/op 1.01
Buffer.compare 1024 - diff last byte 26.158 ns/op 25.848 ns/op 1.01
byteArrayEquals 16384 - diff last byte 25.174 us/op 25.211 us/op 1.00
Buffer.compare 16384 - diff last byte 202.99 ns/op 185.68 ns/op 1.09
byteArrayEquals 123687377 - diff last byte 201.35 ms/op 194.19 ms/op 1.04
Buffer.compare 123687377 - diff last byte 9.9944 ms/op 7.6230 ms/op 1.31
byteArrayEquals 32 - random bytes 5.3910 ns/op 5.1030 ns/op 1.06
Buffer.compare 32 - random bytes 20.844 ns/op 17.248 ns/op 1.21
byteArrayEquals 1024 - random bytes 6.2960 ns/op 5.1110 ns/op 1.23
Buffer.compare 1024 - random bytes 23.380 ns/op 17.188 ns/op 1.36
byteArrayEquals 16384 - random bytes 5.4890 ns/op 5.1120 ns/op 1.07
Buffer.compare 16384 - random bytes 18.683 ns/op 17.218 ns/op 1.09
byteArrayEquals 123687377 - random bytes 7.1000 ns/op 6.3700 ns/op 1.11
Buffer.compare 123687377 - random bytes 20.810 ns/op 18.340 ns/op 1.13
regular array get 100000 times 40.378 us/op 44.199 us/op 0.91
wrappedArray get 100000 times 38.302 us/op 36.623 us/op 1.05
arrayWithProxy get 100000 times 13.378 ms/op 12.198 ms/op 1.10
ssz.Root.equals 47.860 ns/op 46.471 ns/op 1.03
byteArrayEquals 47.231 ns/op 45.497 ns/op 1.04
Buffer.compare 11.186 ns/op 13.520 ns/op 0.83
processSlot - 1 slots 12.037 us/op 10.343 us/op 1.16
processSlot - 32 slots 3.2665 ms/op 1.9119 ms/op 1.71
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 59.012 ms/op 52.023 ms/op 1.13
getCommitteeAssignments - req 1 vs - 250000 vc 2.3035 ms/op 2.1307 ms/op 1.08
getCommitteeAssignments - req 100 vs - 250000 vc 4.4739 ms/op 4.2627 ms/op 1.05
getCommitteeAssignments - req 1000 vs - 250000 vc 4.9668 ms/op 4.4474 ms/op 1.12
findModifiedValidators - 10000 modified validators 998.48 ms/op 809.93 ms/op 1.23
findModifiedValidators - 1000 modified validators 840.77 ms/op 729.78 ms/op 1.15
findModifiedValidators - 100 modified validators 221.24 ms/op 277.99 ms/op 0.80
findModifiedValidators - 10 modified validators 219.99 ms/op 138.59 ms/op 1.59
findModifiedValidators - 1 modified validators 183.36 ms/op 166.27 ms/op 1.10
findModifiedValidators - no difference 216.61 ms/op 157.53 ms/op 1.38
compare ViewDUs 8.4647 s/op 6.4971 s/op 1.30
compare each validator Uint8Array 2.1745 s/op 2.0402 s/op 1.07
compare ViewDU to Uint8Array 1.4187 s/op 1.4236 s/op 1.00
migrate state 1000000 validators, 24 modified, 0 new 1.1366 s/op 888.45 ms/op 1.28
migrate state 1000000 validators, 1700 modified, 1000 new 1.5913 s/op 1.1218 s/op 1.42
migrate state 1000000 validators, 3400 modified, 2000 new 1.6974 s/op 1.6557 s/op 1.03
migrate state 1500000 validators, 24 modified, 0 new 1.2289 s/op 1.3355 s/op 0.92
migrate state 1500000 validators, 1700 modified, 1000 new 1.3551 s/op 1.6239 s/op 0.83
migrate state 1500000 validators, 3400 modified, 2000 new 1.4761 s/op 1.5156 s/op 0.97
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.0100 ns/op 4.3400 ns/op 1.15
state getBlockRootAtSlot - 250000 vs - 7PWei 558.86 ns/op 544.47 ns/op 1.03
naive computeProposerIndex 100000 validators 70.189 ms/op 53.242 ms/op 1.32
computeProposerIndex 100000 validators 1.6303 ms/op 1.5166 ms/op 1.08
naiveGetNextSyncCommitteeIndices 1000 validators 7.5038 s/op 7.9145 s/op 0.95
getNextSyncCommitteeIndices 1000 validators 109.54 ms/op 109.32 ms/op 1.00
naiveGetNextSyncCommitteeIndices 10000 validators 7.0460 s/op 7.2741 s/op 0.97
getNextSyncCommitteeIndices 10000 validators 108.49 ms/op 108.91 ms/op 1.00
naiveGetNextSyncCommitteeIndices 100000 validators 7.5334 s/op 7.6241 s/op 0.99
getNextSyncCommitteeIndices 100000 validators 107.80 ms/op 110.54 ms/op 0.98
naive computeShuffledIndex 100000 validators 24.321 s/op 26.892 s/op 0.90
cached computeShuffledIndex 100000 validators 534.13 ms/op 606.12 ms/op 0.88
naive computeShuffledIndex 2000000 validators 630.44 s/op 525.42 s/op 1.20
cached computeShuffledIndex 2000000 validators 77.316 s/op 60.131 s/op 1.29
computeProposers - vc 250000 635.67 us/op 623.69 us/op 1.02
computeEpochShuffling - vc 250000 45.311 ms/op 44.614 ms/op 1.02
getNextSyncCommittee - vc 250000 11.059 ms/op 12.071 ms/op 0.92
computeSigningRoot for AttestationData 22.565 us/op 39.030 us/op 0.58
hash AttestationData serialized data then Buffer.toString(base64) 1.6395 us/op 1.6864 us/op 0.97
toHexString serialized data 1.2169 us/op 1.6089 us/op 0.76
Buffer.toString(base64) 164.93 ns/op 168.44 ns/op 0.98
nodejs block root to RootHex using toHex 132.64 ns/op 151.87 ns/op 0.87
nodejs block root to RootHex using toRootHex 86.504 ns/op 91.061 ns/op 0.95
browser block root to RootHex using the deprecated toHexString 215.14 ns/op 233.14 ns/op 0.92
browser block root to RootHex using toHex 175.32 ns/op 183.41 ns/op 0.96
browser block root to RootHex using toRootHex 168.13 ns/op 167.70 ns/op 1.00

by benchmarkbot/action

Copy link

codecov bot commented Feb 10, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 50.23%. Comparing base (d9bd50b) to head (f69c3a7).

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7444      +/-   ##
============================================
+ Coverage     50.22%   50.23%   +0.01%     
============================================
  Files           604      604              
  Lines         40466    40472       +6     
  Branches       2228     2229       +1     
============================================
+ Hits          20324    20333       +9     
+ Misses        20102    20099       -3     
  Partials         40       40              
🚀 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.

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.

Send validator registrations as SSZ instead of JSON
1 participant