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 3 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: 8c99b8f Previous: a25ea77 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.1389 ms/op 933.03 us/op 1.22
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 40.718 us/op 34.747 us/op 1.17
BLS verify - blst 947.76 us/op 835.49 us/op 1.13
BLS verifyMultipleSignatures 3 - blst 1.4400 ms/op 1.1567 ms/op 1.24
BLS verifyMultipleSignatures 8 - blst 1.9022 ms/op 1.6187 ms/op 1.18
BLS verifyMultipleSignatures 32 - blst 5.4743 ms/op 4.7793 ms/op 1.15
BLS verifyMultipleSignatures 64 - blst 10.246 ms/op 8.8093 ms/op 1.16
BLS verifyMultipleSignatures 128 - blst 20.513 ms/op 17.335 ms/op 1.18
BLS deserializing 10000 signatures 731.56 ms/op 690.46 ms/op 1.06
BLS deserializing 100000 signatures 6.6702 s/op 6.7867 s/op 0.98
BLS verifyMultipleSignatures - same message - 3 - blst 933.91 us/op 892.13 us/op 1.05
BLS verifyMultipleSignatures - same message - 8 - blst 1.0830 ms/op 1.0113 ms/op 1.07
BLS verifyMultipleSignatures - same message - 32 - blst 1.6491 ms/op 1.6716 ms/op 0.99
BLS verifyMultipleSignatures - same message - 64 - blst 2.5444 ms/op 2.5566 ms/op 1.00
BLS verifyMultipleSignatures - same message - 128 - blst 4.2783 ms/op 4.2973 ms/op 1.00
BLS aggregatePubkeys 32 - blst 18.385 us/op 19.308 us/op 0.95
BLS aggregatePubkeys 128 - blst 71.277 us/op 69.038 us/op 1.03
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 59.017 ms/op 45.287 ms/op 1.30
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 46.245 ms/op 43.546 ms/op 1.06
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 38.914 ms/op 34.312 ms/op 1.13
getSlashingsAndExits - default max 61.033 us/op 74.971 us/op 0.81
getSlashingsAndExits - 2k 395.57 us/op 281.01 us/op 1.41
proposeBlockBody type=full, size=empty 5.8317 ms/op 4.5967 ms/op 1.27
isKnown best case - 1 super set check 399.00 ns/op 200.00 ns/op 2.00
isKnown normal case - 2 super set checks 393.00 ns/op 196.00 ns/op 2.01
isKnown worse case - 16 super set checks 392.00 ns/op 200.00 ns/op 1.96
InMemoryCheckpointStateCache - add get delete 2.5280 us/op 2.1860 us/op 1.16
validate api signedAggregateAndProof - struct 1.5998 ms/op 1.3180 ms/op 1.21
validate gossip signedAggregateAndProof - struct 1.5141 ms/op 1.3189 ms/op 1.15
batch validate gossip attestation - vc 640000 - chunk 32 118.48 us/op 116.91 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 64 96.812 us/op 101.94 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 128 87.182 us/op 92.293 us/op 0.94
batch validate gossip attestation - vc 640000 - chunk 256 101.19 us/op 95.599 us/op 1.06
pickEth1Vote - no votes 770.03 us/op 919.80 us/op 0.84
pickEth1Vote - max votes 6.5910 ms/op 5.6717 ms/op 1.16
pickEth1Vote - Eth1Data hashTreeRoot value x2048 13.689 ms/op 18.106 ms/op 0.76
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.839 ms/op 22.152 ms/op 0.94
pickEth1Vote - Eth1Data fastSerialize value x2048 319.32 us/op 400.99 us/op 0.80
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.2792 ms/op 4.0191 ms/op 0.57
bytes32 toHexString 498.00 ns/op 344.00 ns/op 1.45
bytes32 Buffer.toString(hex) 428.00 ns/op 218.00 ns/op 1.96
bytes32 Buffer.toString(hex) from Uint8Array 510.00 ns/op 315.00 ns/op 1.62
bytes32 Buffer.toString(hex) + 0x 423.00 ns/op 227.00 ns/op 1.86
Object access 1 prop 0.31200 ns/op 0.11300 ns/op 2.76
Map access 1 prop 0.31000 ns/op 0.11200 ns/op 2.77
Object get x1000 5.0960 ns/op 5.4360 ns/op 0.94
Map get x1000 5.7860 ns/op 6.0930 ns/op 0.95
Object set x1000 21.285 ns/op 26.164 ns/op 0.81
Map set x1000 16.925 ns/op 18.255 ns/op 0.93
Return object 10000 times 0.29620 ns/op 0.26730 ns/op 1.11
Throw Error 10000 times 3.7520 us/op 4.0226 us/op 0.93
toHex 100.83 ns/op 124.10 ns/op 0.81
Buffer.from 98.003 ns/op 115.24 ns/op 0.85
shared Buffer 63.391 ns/op 71.837 ns/op 0.88
fastMsgIdFn sha256 / 200 bytes 2.5110 us/op 2.0640 us/op 1.22
fastMsgIdFn h32 xxhash / 200 bytes 381.00 ns/op 197.00 ns/op 1.93
fastMsgIdFn h64 xxhash / 200 bytes 445.00 ns/op 262.00 ns/op 1.70
fastMsgIdFn sha256 / 1000 bytes 7.5450 us/op 6.8940 us/op 1.09
fastMsgIdFn h32 xxhash / 1000 bytes 553.00 ns/op 317.00 ns/op 1.74
fastMsgIdFn h64 xxhash / 1000 bytes 546.00 ns/op 321.00 ns/op 1.70
fastMsgIdFn sha256 / 10000 bytes 47.706 us/op 61.031 us/op 0.78
fastMsgIdFn h32 xxhash / 10000 bytes 1.8700 us/op 1.8000 us/op 1.04
fastMsgIdFn h64 xxhash / 10000 bytes 1.3110 us/op 1.2350 us/op 1.06
send data - 1000 256B messages 17.115 ms/op 12.803 ms/op 1.34
send data - 1000 512B messages 18.134 ms/op 15.261 ms/op 1.19
send data - 1000 1024B messages 23.694 ms/op 21.994 ms/op 1.08
send data - 1000 1200B messages 25.008 ms/op 19.952 ms/op 1.25
send data - 1000 2048B messages 24.040 ms/op 21.143 ms/op 1.14
send data - 1000 4096B messages 29.124 ms/op 24.735 ms/op 1.18
send data - 1000 16384B messages 82.994 ms/op 74.224 ms/op 1.12
send data - 1000 65536B messages 322.08 ms/op 205.50 ms/op 1.57
enrSubnets - fastDeserialize 64 bits 1.7160 us/op 1.6730 us/op 1.03
enrSubnets - ssz BitVector 64 bits 504.00 ns/op 303.00 ns/op 1.66
enrSubnets - fastDeserialize 4 bits 316.00 ns/op 118.00 ns/op 2.68
enrSubnets - ssz BitVector 4 bits 511.00 ns/op 302.00 ns/op 1.69
prioritizePeers score -10:0 att 32-0.1 sync 2-0 104.11 us/op 113.66 us/op 0.92
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 126.63 us/op 130.46 us/op 0.97
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 192.88 us/op 191.02 us/op 1.01
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 338.67 us/op 361.77 us/op 0.94
prioritizePeers score 0:0 att 64-1 sync 4-1 431.11 us/op 440.79 us/op 0.98
array of 16000 items push then shift 1.3292 us/op 1.5342 us/op 0.87
LinkedList of 16000 items push then shift 6.8560 ns/op 6.7330 ns/op 1.02
array of 16000 items push then pop 85.136 ns/op 71.326 ns/op 1.19
LinkedList of 16000 items push then pop 7.4440 ns/op 6.5300 ns/op 1.14
array of 24000 items push then shift 1.9280 us/op 2.2609 us/op 0.85
LinkedList of 24000 items push then shift 6.4360 ns/op 6.6000 ns/op 0.98
array of 24000 items push then pop 103.68 ns/op 96.225 ns/op 1.08
LinkedList of 24000 items push then pop 6.6020 ns/op 6.4830 ns/op 1.02
intersect bitArray bitLen 8 5.4860 ns/op 6.1290 ns/op 0.90
intersect array and set length 8 31.898 ns/op 36.398 ns/op 0.88
intersect bitArray bitLen 128 25.939 ns/op 28.176 ns/op 0.92
intersect array and set length 128 533.59 ns/op 586.23 ns/op 0.91
bitArray.getTrueBitIndexes() bitLen 128 1.2810 us/op 958.00 ns/op 1.34
bitArray.getTrueBitIndexes() bitLen 248 2.0270 us/op 1.6890 us/op 1.20
bitArray.getTrueBitIndexes() bitLen 512 3.9560 us/op 3.4970 us/op 1.13
Buffer.concat 32 items 742.00 ns/op 564.00 ns/op 1.32
Uint8Array.set 32 items 1.3280 us/op 1.7430 us/op 0.76
Buffer.copy 2.7580 us/op 1.9570 us/op 1.41
Uint8Array.set - with subarray 2.5360 us/op 1.6110 us/op 1.57
Uint8Array.set - without subarray 2.2180 us/op 994.00 ns/op 2.23
getUint32 - dataview 436.00 ns/op 184.00 ns/op 2.37
getUint32 - manual 318.00 ns/op 110.00 ns/op 2.89
Set add up to 64 items then delete first 1.8812 us/op 2.1152 us/op 0.89
OrderedSet add up to 64 items then delete first 2.9766 us/op 3.1288 us/op 0.95
Set add up to 64 items then delete last 2.1027 us/op 2.3885 us/op 0.88
OrderedSet add up to 64 items then delete last 3.8522 us/op 3.5115 us/op 1.10
Set add up to 64 items then delete middle 2.1732 us/op 2.3505 us/op 0.92
OrderedSet add up to 64 items then delete middle 4.7341 us/op 4.9953 us/op 0.95
Set add up to 128 items then delete first 4.0238 us/op 4.7941 us/op 0.84
OrderedSet add up to 128 items then delete first 6.1026 us/op 7.6348 us/op 0.80
Set add up to 128 items then delete last 4.3243 us/op 4.8067 us/op 0.90
OrderedSet add up to 128 items then delete last 6.5083 us/op 7.0201 us/op 0.93
Set add up to 128 items then delete middle 4.4837 us/op 4.7284 us/op 0.95
OrderedSet add up to 128 items then delete middle 13.298 us/op 13.414 us/op 0.99
Set add up to 256 items then delete first 7.9167 us/op 9.5220 us/op 0.83
OrderedSet add up to 256 items then delete first 12.296 us/op 14.981 us/op 0.82
Set add up to 256 items then delete last 8.0438 us/op 9.8720 us/op 0.81
OrderedSet add up to 256 items then delete last 13.387 us/op 13.700 us/op 0.98
Set add up to 256 items then delete middle 8.2031 us/op 9.0776 us/op 0.90
OrderedSet add up to 256 items then delete middle 41.502 us/op 39.940 us/op 1.04
transfer serialized Status (84 B) 2.6700 us/op 2.1570 us/op 1.24
copy serialized Status (84 B) 1.5480 us/op 1.2660 us/op 1.22
transfer serialized SignedVoluntaryExit (112 B) 2.6630 us/op 2.1860 us/op 1.22
copy serialized SignedVoluntaryExit (112 B) 1.6270 us/op 1.3290 us/op 1.22
transfer serialized ProposerSlashing (416 B) 2.1670 us/op 3.4810 us/op 0.62
copy serialized ProposerSlashing (416 B) 1.3620 us/op 2.0210 us/op 0.67
transfer serialized Attestation (485 B) 2.1000 us/op 2.3320 us/op 0.90
copy serialized Attestation (485 B) 1.3650 us/op 1.4210 us/op 0.96
transfer serialized AttesterSlashing (33232 B) 2.2990 us/op 2.6870 us/op 0.86
copy serialized AttesterSlashing (33232 B) 3.0470 us/op 3.7410 us/op 0.81
transfer serialized Small SignedBeaconBlock (128000 B) 2.5480 us/op 3.0600 us/op 0.83
copy serialized Small SignedBeaconBlock (128000 B) 6.3170 us/op 9.4900 us/op 0.67
transfer serialized Avg SignedBeaconBlock (200000 B) 2.8410 us/op 3.5770 us/op 0.79
copy serialized Avg SignedBeaconBlock (200000 B) 8.9700 us/op 12.498 us/op 0.72
transfer serialized BlobsSidecar (524380 B) 4.1290 us/op 3.9300 us/op 1.05
copy serialized BlobsSidecar (524380 B) 128.70 us/op 69.816 us/op 1.84
transfer serialized Big SignedBeaconBlock (1000000 B) 4.7150 us/op 4.3400 us/op 1.09
copy serialized Big SignedBeaconBlock (1000000 B) 130.21 us/op 109.54 us/op 1.19
pass gossip attestations to forkchoice per slot 2.3477 ms/op 2.6257 ms/op 0.89
forkChoice updateHead vc 100000 bc 64 eq 0 342.02 us/op 429.28 us/op 0.80
forkChoice updateHead vc 600000 bc 64 eq 0 2.3181 ms/op 2.7654 ms/op 0.84
forkChoice updateHead vc 1000000 bc 64 eq 0 3.6643 ms/op 4.5420 ms/op 0.81
forkChoice updateHead vc 600000 bc 320 eq 0 2.2408 ms/op 2.6517 ms/op 0.85
forkChoice updateHead vc 600000 bc 1200 eq 0 2.2479 ms/op 2.6898 ms/op 0.84
forkChoice updateHead vc 600000 bc 7200 eq 0 2.3720 ms/op 2.9975 ms/op 0.79
forkChoice updateHead vc 600000 bc 64 eq 1000 9.6022 ms/op 10.114 ms/op 0.95
forkChoice updateHead vc 600000 bc 64 eq 10000 9.4466 ms/op 10.058 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 300000 11.433 ms/op 13.322 ms/op 0.86
computeDeltas 500000 validators 300 proto nodes 3.1451 ms/op 3.7647 ms/op 0.84
computeDeltas 500000 validators 1200 proto nodes 3.1649 ms/op 3.7847 ms/op 0.84
computeDeltas 500000 validators 7200 proto nodes 3.0649 ms/op 3.7794 ms/op 0.81
computeDeltas 750000 validators 300 proto nodes 4.6965 ms/op 5.5783 ms/op 0.84
computeDeltas 750000 validators 1200 proto nodes 4.6957 ms/op 5.6610 ms/op 0.83
computeDeltas 750000 validators 7200 proto nodes 4.6792 ms/op 5.6830 ms/op 0.82
computeDeltas 1400000 validators 300 proto nodes 8.6007 ms/op 10.501 ms/op 0.82
computeDeltas 1400000 validators 1200 proto nodes 8.6309 ms/op 10.472 ms/op 0.82
computeDeltas 1400000 validators 7200 proto nodes 8.7150 ms/op 10.474 ms/op 0.83
computeDeltas 2100000 validators 300 proto nodes 13.572 ms/op 15.713 ms/op 0.86
computeDeltas 2100000 validators 1200 proto nodes 13.547 ms/op 15.921 ms/op 0.85
computeDeltas 2100000 validators 7200 proto nodes 13.036 ms/op 15.801 ms/op 0.82
altair processAttestation - 250000 vs - 7PWei normalcase 1.6142 ms/op 2.0502 ms/op 0.79
altair processAttestation - 250000 vs - 7PWei worstcase 2.3871 ms/op 2.9770 ms/op 0.80
altair processAttestation - setStatus - 1/6 committees join 102.14 us/op 122.69 us/op 0.83
altair processAttestation - setStatus - 1/3 committees join 186.73 us/op 234.09 us/op 0.80
altair processAttestation - setStatus - 1/2 committees join 274.43 us/op 329.87 us/op 0.83
altair processAttestation - setStatus - 2/3 committees join 358.20 us/op 419.48 us/op 0.85
altair processAttestation - setStatus - 4/5 committees join 492.24 us/op 583.81 us/op 0.84
altair processAttestation - setStatus - 100% committees join 585.12 us/op 682.51 us/op 0.86
altair processBlock - 250000 vs - 7PWei normalcase 3.5188 ms/op 4.2563 ms/op 0.83
altair processBlock - 250000 vs - 7PWei normalcase hashState 19.721 ms/op 36.920 ms/op 0.53
altair processBlock - 250000 vs - 7PWei worstcase 31.849 ms/op 35.212 ms/op 0.90
altair processBlock - 250000 vs - 7PWei worstcase hashState 63.974 ms/op 90.525 ms/op 0.71
phase0 processBlock - 250000 vs - 7PWei normalcase 1.5917 ms/op 1.6322 ms/op 0.98
phase0 processBlock - 250000 vs - 7PWei worstcase 23.369 ms/op 21.018 ms/op 1.11
altair processEth1Data - 250000 vs - 7PWei normalcase 280.21 us/op 318.88 us/op 0.88
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.3330 us/op 4.4830 us/op 1.41
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 26.914 us/op 26.795 us/op 1.00
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 7.2220 us/op 7.0800 us/op 1.02
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 4.5740 us/op 4.5230 us/op 1.01
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 109.44 us/op 98.738 us/op 1.11
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.2502 ms/op 941.54 us/op 1.33
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 939.86 us/op 1.3417 ms/op 0.70
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 950.33 us/op 1.2845 ms/op 0.74
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.7831 ms/op 3.1711 ms/op 0.88
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 967.77 us/op 1.3353 ms/op 0.72
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 2.5897 ms/op 3.1892 ms/op 0.81
Tree 40 250000 create 335.07 ms/op 419.83 ms/op 0.80
Tree 40 250000 get(125000) 100.62 ns/op 142.75 ns/op 0.70
Tree 40 250000 set(125000) 1.1844 us/op 1.3691 us/op 0.87
Tree 40 250000 toArray() 13.148 ms/op 15.283 ms/op 0.86
Tree 40 250000 iterate all - toArray() + loop 12.824 ms/op 16.466 ms/op 0.78
Tree 40 250000 iterate all - get(i) 40.277 ms/op 51.046 ms/op 0.79
Array 250000 create 2.5271 ms/op 2.3576 ms/op 1.07
Array 250000 clone - spread 656.52 us/op 790.44 us/op 0.83
Array 250000 get(125000) 0.54400 ns/op 0.39600 ns/op 1.37
Array 250000 set(125000) 0.55700 ns/op 0.40600 ns/op 1.37
Array 250000 iterate all - loop 70.213 us/op 77.175 us/op 0.91
phase0 afterProcessEpoch - 250000 vs - 7PWei 37.725 ms/op 45.106 ms/op 0.84
Array.fill - length 1000000 2.2091 ms/op 3.2494 ms/op 0.68
Array push - length 1000000 8.9525 ms/op 12.401 ms/op 0.72
Array.get 0.24226 ns/op 0.26809 ns/op 0.90
Uint8Array.get 0.29740 ns/op 0.43030 ns/op 0.69
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.924 ms/op 15.487 ms/op 0.96
altair processEpoch - mainnet_e81889 280.04 ms/op 274.36 ms/op 1.02
mainnet_e81889 - altair beforeProcessEpoch 15.247 ms/op 17.177 ms/op 0.89
mainnet_e81889 - altair processJustificationAndFinalization 4.8550 us/op 5.2970 us/op 0.92
mainnet_e81889 - altair processInactivityUpdates 3.3420 ms/op 3.9610 ms/op 0.84
mainnet_e81889 - altair processRewardsAndPenalties 53.474 ms/op 38.353 ms/op 1.39
mainnet_e81889 - altair processRegistryUpdates 799.00 ns/op 697.00 ns/op 1.15
mainnet_e81889 - altair processSlashings 385.00 ns/op 171.00 ns/op 2.25
mainnet_e81889 - altair processEth1DataReset 374.00 ns/op 168.00 ns/op 2.23
mainnet_e81889 - altair processEffectiveBalanceUpdates 907.53 us/op 1.2214 ms/op 0.74
mainnet_e81889 - altair processSlashingsReset 1.0180 us/op 858.00 ns/op 1.19
mainnet_e81889 - altair processRandaoMixesReset 1.3080 us/op 1.1410 us/op 1.15
mainnet_e81889 - altair processHistoricalRootsUpdate 403.00 ns/op 173.00 ns/op 2.33
mainnet_e81889 - altair processParticipationFlagUpdates 691.00 ns/op 495.00 ns/op 1.40
mainnet_e81889 - altair processSyncCommitteeUpdates 354.00 ns/op 132.00 ns/op 2.68
mainnet_e81889 - altair afterProcessEpoch 42.181 ms/op 47.095 ms/op 0.90
capella processEpoch - mainnet_e217614 731.13 ms/op 903.25 ms/op 0.81
mainnet_e217614 - capella beforeProcessEpoch 63.809 ms/op 59.125 ms/op 1.08
mainnet_e217614 - capella processJustificationAndFinalization 4.5790 us/op 5.3070 us/op 0.86
mainnet_e217614 - capella processInactivityUpdates 13.161 ms/op 15.454 ms/op 0.85
mainnet_e217614 - capella processRewardsAndPenalties 207.45 ms/op 173.09 ms/op 1.20
mainnet_e217614 - capella processRegistryUpdates 6.2250 us/op 6.1750 us/op 1.01
mainnet_e217614 - capella processSlashings 403.00 ns/op 170.00 ns/op 2.37
mainnet_e217614 - capella processEth1DataReset 377.00 ns/op 168.00 ns/op 2.24
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.0744 ms/op 13.965 ms/op 0.29
mainnet_e217614 - capella processSlashingsReset 968.00 ns/op 835.00 ns/op 1.16
mainnet_e217614 - capella processRandaoMixesReset 1.2140 us/op 1.1460 us/op 1.06
mainnet_e217614 - capella processHistoricalRootsUpdate 396.00 ns/op 172.00 ns/op 2.30
mainnet_e217614 - capella processParticipationFlagUpdates 692.00 ns/op 504.00 ns/op 1.37
mainnet_e217614 - capella afterProcessEpoch 104.97 ms/op 117.79 ms/op 0.89
phase0 processEpoch - mainnet_e58758 236.24 ms/op 285.33 ms/op 0.83
mainnet_e58758 - phase0 beforeProcessEpoch 71.945 ms/op 74.140 ms/op 0.97
mainnet_e58758 - phase0 processJustificationAndFinalization 6.3530 us/op 5.4720 us/op 1.16
mainnet_e58758 - phase0 processRewardsAndPenalties 37.005 ms/op 35.972 ms/op 1.03
mainnet_e58758 - phase0 processRegistryUpdates 2.7510 us/op 2.9950 us/op 0.92
mainnet_e58758 - phase0 processSlashings 401.00 ns/op 168.00 ns/op 2.39
mainnet_e58758 - phase0 processEth1DataReset 399.00 ns/op 170.00 ns/op 2.35
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 840.22 us/op 980.43 us/op 0.86
mainnet_e58758 - phase0 processSlashingsReset 1.1320 us/op 854.00 ns/op 1.33
mainnet_e58758 - phase0 processRandaoMixesReset 1.3140 us/op 1.1530 us/op 1.14
mainnet_e58758 - phase0 processHistoricalRootsUpdate 404.00 ns/op 171.00 ns/op 2.36
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.2260 us/op 852.00 ns/op 1.44
mainnet_e58758 - phase0 afterProcessEpoch 34.280 ms/op 40.040 ms/op 0.86
phase0 processEffectiveBalanceUpdates - 250000 normalcase 940.71 us/op 1.3118 ms/op 0.72
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.7220 ms/op 1.9836 ms/op 1.88
altair processInactivityUpdates - 250000 normalcase 16.767 ms/op 16.168 ms/op 1.04
altair processInactivityUpdates - 250000 worstcase 19.503 ms/op 16.120 ms/op 1.21
phase0 processRegistryUpdates - 250000 normalcase 3.5080 us/op 6.5290 us/op 0.54
phase0 processRegistryUpdates - 250000 badcase_full_deposits 304.05 us/op 229.19 us/op 1.33
phase0 processRegistryUpdates - 250000 worstcase 0.5 106.99 ms/op 109.31 ms/op 0.98
altair processRewardsAndPenalties - 250000 normalcase 37.587 ms/op 42.434 ms/op 0.89
altair processRewardsAndPenalties - 250000 worstcase 34.814 ms/op 34.066 ms/op 1.02
phase0 getAttestationDeltas - 250000 normalcase 5.4776 ms/op 5.8578 ms/op 0.94
phase0 getAttestationDeltas - 250000 worstcase 5.1852 ms/op 6.6448 ms/op 0.78
phase0 processSlashings - 250000 worstcase 97.690 us/op 83.265 us/op 1.17
altair processSyncCommitteeUpdates - 250000 119.77 ms/op 120.27 ms/op 1.00
BeaconState.hashTreeRoot - No change 425.00 ns/op 204.00 ns/op 2.08
BeaconState.hashTreeRoot - 1 full validator 73.761 us/op 81.680 us/op 0.90
BeaconState.hashTreeRoot - 32 full validator 781.42 us/op 976.72 us/op 0.80
BeaconState.hashTreeRoot - 512 full validator 9.3209 ms/op 11.021 ms/op 0.85
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 76.418 us/op 98.870 us/op 0.77
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4713 ms/op 2.2343 ms/op 0.66
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 22.926 ms/op 21.447 ms/op 1.07
BeaconState.hashTreeRoot - 1 balances 80.920 us/op 72.732 us/op 1.11
BeaconState.hashTreeRoot - 32 balances 625.12 us/op 827.62 us/op 0.76
BeaconState.hashTreeRoot - 512 balances 9.2771 ms/op 8.2272 ms/op 1.13
BeaconState.hashTreeRoot - 250000 balances 196.90 ms/op 185.16 ms/op 1.06
aggregationBits - 2048 els - zipIndexesInBitList 19.348 us/op 20.477 us/op 0.94
byteArrayEquals 32 44.418 ns/op 61.083 ns/op 0.73
Buffer.compare 32 14.700 ns/op 16.511 ns/op 0.89
byteArrayEquals 1024 1.1982 us/op 1.5153 us/op 0.79
Buffer.compare 1024 21.155 ns/op 23.686 ns/op 0.89
byteArrayEquals 16384 19.325 us/op 24.220 us/op 0.80
Buffer.compare 16384 184.99 ns/op 193.58 ns/op 0.96
byteArrayEquals 123687377 141.22 ms/op 183.24 ms/op 0.77
Buffer.compare 123687377 4.7799 ms/op 6.4495 ms/op 0.74
byteArrayEquals 32 - diff last byte 39.887 ns/op 52.440 ns/op 0.76
Buffer.compare 32 - diff last byte 14.684 ns/op 17.007 ns/op 0.86
byteArrayEquals 1024 - diff last byte 1.1955 us/op 1.5996 us/op 0.75
Buffer.compare 1024 - diff last byte 21.273 ns/op 24.976 ns/op 0.85
byteArrayEquals 16384 - diff last byte 19.106 us/op 25.293 us/op 0.76
Buffer.compare 16384 - diff last byte 189.54 ns/op 187.46 ns/op 1.01
byteArrayEquals 123687377 - diff last byte 149.63 ms/op 189.07 ms/op 0.79
Buffer.compare 123687377 - diff last byte 4.8224 ms/op 6.7773 ms/op 0.71
byteArrayEquals 32 - random bytes 5.0630 ns/op 5.0250 ns/op 1.01
Buffer.compare 32 - random bytes 15.835 ns/op 16.812 ns/op 0.94
byteArrayEquals 1024 - random bytes 4.8640 ns/op 5.0100 ns/op 0.97
Buffer.compare 1024 - random bytes 15.365 ns/op 16.713 ns/op 0.92
byteArrayEquals 16384 - random bytes 4.6290 ns/op 5.0560 ns/op 0.92
Buffer.compare 16384 - random bytes 14.614 ns/op 16.737 ns/op 0.87
byteArrayEquals 123687377 - random bytes 7.5000 ns/op 6.2900 ns/op 1.19
Buffer.compare 123687377 - random bytes 17.340 ns/op 18.200 ns/op 0.95
regular array get 100000 times 29.455 us/op 43.431 us/op 0.68
wrappedArray get 100000 times 29.402 us/op 32.528 us/op 0.90
arrayWithProxy get 100000 times 8.7409 ms/op 14.008 ms/op 0.62
ssz.Root.equals 37.878 ns/op 45.652 ns/op 0.83
byteArrayEquals 36.932 ns/op 44.781 ns/op 0.82
Buffer.compare 8.5370 ns/op 10.236 ns/op 0.83
processSlot - 1 slots 9.7390 us/op 10.246 us/op 0.95
processSlot - 32 slots 2.0580 ms/op 2.2142 ms/op 0.93
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 55.824 ms/op 51.062 ms/op 1.09
getCommitteeAssignments - req 1 vs - 250000 vc 1.6262 ms/op 2.0328 ms/op 0.80
getCommitteeAssignments - req 100 vs - 250000 vc 3.2891 ms/op 3.9307 ms/op 0.84
getCommitteeAssignments - req 1000 vs - 250000 vc 3.4531 ms/op 4.2010 ms/op 0.82
findModifiedValidators - 10000 modified validators 761.40 ms/op 746.89 ms/op 1.02
findModifiedValidators - 1000 modified validators 649.01 ms/op 686.47 ms/op 0.95
findModifiedValidators - 100 modified validators 151.36 ms/op 283.88 ms/op 0.53
findModifiedValidators - 10 modified validators 125.86 ms/op 215.46 ms/op 0.58
findModifiedValidators - 1 modified validators 147.42 ms/op 142.91 ms/op 1.03
findModifiedValidators - no difference 161.71 ms/op 143.37 ms/op 1.13
compare ViewDUs 6.1131 s/op 5.8657 s/op 1.04
compare each validator Uint8Array 1.9185 s/op 1.6456 s/op 1.17
compare ViewDU to Uint8Array 1.0641 s/op 976.28 ms/op 1.09
migrate state 1000000 validators, 24 modified, 0 new 837.20 ms/op 846.08 ms/op 0.99
migrate state 1000000 validators, 1700 modified, 1000 new 1.0851 s/op 1.1242 s/op 0.97
migrate state 1000000 validators, 3400 modified, 2000 new 1.1200 s/op 1.1703 s/op 0.96
migrate state 1500000 validators, 24 modified, 0 new 767.29 ms/op 870.53 ms/op 0.88
migrate state 1500000 validators, 1700 modified, 1000 new 1.0393 s/op 999.79 ms/op 1.04
migrate state 1500000 validators, 3400 modified, 2000 new 1.2141 s/op 1.3190 s/op 0.92
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 6.0000 ns/op 4.1900 ns/op 1.43
state getBlockRootAtSlot - 250000 vs - 7PWei 319.40 ns/op 471.58 ns/op 0.68
naive computeProposerIndex 100000 validators 38.938 ms/op 50.887 ms/op 0.77
computeProposerIndex 100000 validators 7.2661 ms/op 7.9855 ms/op 0.91
naiveGetNextSyncCommitteeIndices 1000 validators 6.9424 s/op 7.3477 s/op 0.94
getNextSyncCommitteeIndices 1000 validators 224.39 ms/op 232.21 ms/op 0.97
naiveGetNextSyncCommitteeIndices 10000 validators 5.7883 s/op 7.2344 s/op 0.80
getNextSyncCommitteeIndices 10000 validators 195.06 ms/op 230.94 ms/op 0.84
naiveGetNextSyncCommitteeIndices 100000 validators 5.9851 s/op 6.7864 s/op 0.88
getNextSyncCommitteeIndices 100000 validators 207.02 ms/op 222.39 ms/op 0.93
naive computeShuffledIndex 100000 validators 17.929 s/op 24.039 s/op 0.75
cached computeShuffledIndex 100000 validators 478.94 ms/op 522.05 ms/op 0.92
naive computeShuffledIndex 2000000 validators 526.30 s/op 486.99 s/op 1.08
cached computeShuffledIndex 2000000 validators 35.439 s/op 33.512 s/op 1.06
computeProposers - vc 250000 9.7054 ms/op 9.3335 ms/op 1.04
computeEpochShuffling - vc 250000 37.475 ms/op 40.504 ms/op 0.93
getNextSyncCommittee - vc 250000 119.89 ms/op 143.51 ms/op 0.84
computeSigningRoot for AttestationData 20.907 us/op 24.808 us/op 0.84
hash AttestationData serialized data then Buffer.toString(base64) 1.2450 us/op 1.5066 us/op 0.83
toHexString serialized data 1.1244 us/op 1.0118 us/op 1.11
Buffer.toString(base64) 117.42 ns/op 165.54 ns/op 0.71
nodejs block root to RootHex using toHex 109.40 ns/op 126.32 ns/op 0.87
nodejs block root to RootHex using toRootHex 81.204 ns/op 77.581 ns/op 1.05
browser block root to RootHex using the deprecated toHexString 195.42 ns/op 199.73 ns/op 0.98
browser block root to RootHex using toHex 167.27 ns/op 162.91 ns/op 1.03
browser block root to RootHex using toRootHex 152.76 ns/op 156.18 ns/op 0.98

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.49%. Comparing base (a25ea77) to head (7b788ce).

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #7444   +/-   ##
=========================================
  Coverage     50.48%   50.49%           
=========================================
  Files           602      602           
  Lines         40606    40612    +6     
  Branches       2230     2230           
=========================================
+ Hits          20499    20505    +6     
  Misses        20067    20067           
  Partials         40       40           

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