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: implement SingleAttestation #7126

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

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Oct 4, 2024

Motivation

Description

  • [te] Modify SeenAttestationData cache
  • [te] New SingleAttestation types, sszUtils to extract data
  • [te] Modify NetworkProcessor/GossipQueue/GossipHandler
  • [nc]Modify unaggregated attestation validation
  • [nc]Modify aggregated attestation validation
  • [nc]Modify opPool AttestationPool
  • [nf] API to validate Attestation (may convert to SingleAttestation?)
  • [nf] API to convert Attestation to SingleAttestation then publish (this should not be required as vc submits SingleAttestation post-electra which can be gossiped as is, we might need it to emit single_attestation event pre-electa as noted in comment)
  • [nf] validator change, may wait for the api spec PR

Copy link
Contributor

github-actions bot commented Oct 4, 2024

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 091a858 Previous: 0d1fd9c Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.8671 ms/op 1.8512 ms/op 1.01
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 46.186 us/op 39.441 us/op 1.17
BLS verify - blst 1.0448 ms/op 852.98 us/op 1.22
BLS verifyMultipleSignatures 3 - blst 1.6982 ms/op 1.4373 ms/op 1.18
BLS verifyMultipleSignatures 8 - blst 1.9927 ms/op 2.0655 ms/op 0.96
BLS verifyMultipleSignatures 32 - blst 5.8211 ms/op 4.4732 ms/op 1.30
BLS verifyMultipleSignatures 64 - blst 10.505 ms/op 8.1416 ms/op 1.29
BLS verifyMultipleSignatures 128 - blst 17.083 ms/op 15.782 ms/op 1.08
BLS deserializing 10000 signatures 690.28 ms/op 603.08 ms/op 1.14
BLS deserializing 100000 signatures 6.9432 s/op 6.0504 s/op 1.15
BLS verifyMultipleSignatures - same message - 3 - blst 1.2523 ms/op 939.94 us/op 1.33
BLS verifyMultipleSignatures - same message - 8 - blst 1.0298 ms/op 1.1121 ms/op 0.93
BLS verifyMultipleSignatures - same message - 32 - blst 1.6960 ms/op 1.6300 ms/op 1.04
BLS verifyMultipleSignatures - same message - 64 - blst 2.5181 ms/op 2.4197 ms/op 1.04
BLS verifyMultipleSignatures - same message - 128 - blst 4.2335 ms/op 4.1835 ms/op 1.01
BLS aggregatePubkeys 32 - blst 19.312 us/op 17.921 us/op 1.08
BLS aggregatePubkeys 128 - blst 69.048 us/op 63.060 us/op 1.09
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 76.154 ms/op 58.388 ms/op 1.30
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 68.852 ms/op 40.352 ms/op 1.71
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 41.705 ms/op 28.706 ms/op 1.45
getSlashingsAndExits - default max 88.965 us/op 80.735 us/op 1.10
getSlashingsAndExits - 2k 254.36 us/op 269.88 us/op 0.94
proposeBlockBody type=full, size=empty 5.7109 ms/op 5.1155 ms/op 1.12
isKnown best case - 1 super set check 287.00 ns/op 566.00 ns/op 0.51
isKnown normal case - 2 super set checks 272.00 ns/op 542.00 ns/op 0.50
isKnown worse case - 16 super set checks 272.00 ns/op 519.00 ns/op 0.52
InMemoryCheckpointStateCache - add get delete 2.8980 us/op 3.2790 us/op 0.88
updateUnfinalizedPubkeys - updating 10 pubkeys 497.94 us/op 678.84 us/op 0.73
updateUnfinalizedPubkeys - updating 100 pubkeys 3.6052 ms/op 2.4769 ms/op 1.46
updateUnfinalizedPubkeys - updating 1000 pubkeys 48.171 ms/op 37.960 ms/op 1.27
validate api signedAggregateAndProof - struct 2.6226 ms/op 1.9665 ms/op 1.33
validate gossip signedAggregateAndProof - struct 2.7087 ms/op 1.9115 ms/op 1.42
validate gossip attestation - vc 640000 1.3428 ms/op 981.08 us/op 1.37
batch validate gossip attestation - vc 640000 - chunk 32 129.52 us/op 129.87 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 64 114.43 us/op 116.78 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 128 105.88 us/op 104.72 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 256 101.83 us/op 102.28 us/op 1.00
pickEth1Vote - no votes 1.0255 ms/op 846.22 us/op 1.21
pickEth1Vote - max votes 6.6871 ms/op 4.4186 ms/op 1.51
pickEth1Vote - Eth1Data hashTreeRoot value x2048 14.133 ms/op 9.9643 ms/op 1.42
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.745 ms/op 13.724 ms/op 1.73
pickEth1Vote - Eth1Data fastSerialize value x2048 460.08 us/op 357.46 us/op 1.29
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.6883 ms/op 2.0672 ms/op 1.78
bytes32 toHexString 418.00 ns/op 585.00 ns/op 0.71
bytes32 Buffer.toString(hex) 245.00 ns/op 445.00 ns/op 0.55
bytes32 Buffer.toString(hex) from Uint8Array 356.00 ns/op 542.00 ns/op 0.66
bytes32 Buffer.toString(hex) + 0x 246.00 ns/op 442.00 ns/op 0.56
Object access 1 prop 0.13000 ns/op 0.33300 ns/op 0.39
Map access 1 prop 0.13500 ns/op 0.32700 ns/op 0.41
Object get x1000 6.1180 ns/op 5.1200 ns/op 1.19
Map get x1000 6.5570 ns/op 5.8540 ns/op 1.12
Object set x1000 31.806 ns/op 22.954 ns/op 1.39
Map set x1000 23.348 ns/op 18.840 ns/op 1.24
Return object 10000 times 0.28400 ns/op 0.30080 ns/op 0.94
Throw Error 10000 times 3.3242 us/op 2.7184 us/op 1.22
toHex 137.78 ns/op 111.52 ns/op 1.24
Buffer.from 130.47 ns/op 102.96 ns/op 1.27
shared Buffer 85.428 ns/op 69.944 ns/op 1.22
fastMsgIdFn sha256 / 200 bytes 2.2810 us/op 2.0710 us/op 1.10
fastMsgIdFn h32 xxhash / 200 bytes 230.00 ns/op 412.00 ns/op 0.56
fastMsgIdFn h64 xxhash / 200 bytes 269.00 ns/op 459.00 ns/op 0.59
fastMsgIdFn sha256 / 1000 bytes 7.5380 us/op 5.9260 us/op 1.27
fastMsgIdFn h32 xxhash / 1000 bytes 363.00 ns/op 546.00 ns/op 0.66
fastMsgIdFn h64 xxhash / 1000 bytes 342.00 ns/op 537.00 ns/op 0.64
fastMsgIdFn sha256 / 10000 bytes 64.390 us/op 49.986 us/op 1.29
fastMsgIdFn h32 xxhash / 10000 bytes 1.8090 us/op 1.9500 us/op 0.93
fastMsgIdFn h64 xxhash / 10000 bytes 1.1870 us/op 1.3550 us/op 0.88
send data - 1000 256B messages 12.515 ms/op 9.4972 ms/op 1.32
send data - 1000 512B messages 16.139 ms/op 13.188 ms/op 1.22
send data - 1000 1024B messages 26.863 ms/op 24.936 ms/op 1.08
send data - 1000 1200B messages 27.169 ms/op 22.437 ms/op 1.21
send data - 1000 2048B messages 32.421 ms/op 28.732 ms/op 1.13
send data - 1000 4096B messages 31.127 ms/op 25.077 ms/op 1.24
send data - 1000 16384B messages 71.132 ms/op 63.834 ms/op 1.11
send data - 1000 65536B messages 207.69 ms/op 233.01 ms/op 0.89
enrSubnets - fastDeserialize 64 bits 1.0300 us/op 1.1600 us/op 0.89
enrSubnets - ssz BitVector 64 bits 352.00 ns/op 521.00 ns/op 0.68
enrSubnets - fastDeserialize 4 bits 146.00 ns/op 325.00 ns/op 0.45
enrSubnets - ssz BitVector 4 bits 356.00 ns/op 518.00 ns/op 0.69
prioritizePeers score -10:0 att 32-0.1 sync 2-0 154.73 us/op 109.66 us/op 1.41
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 174.41 us/op 137.38 us/op 1.27
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 283.44 us/op 201.24 us/op 1.41
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 680.61 us/op 333.69 us/op 2.04
prioritizePeers score 0:0 att 64-1 sync 4-1 880.38 us/op 423.20 us/op 2.08
array of 16000 items push then shift 1.6103 us/op 1.2336 us/op 1.31
LinkedList of 16000 items push then shift 7.0080 ns/op 7.5650 ns/op 0.93
array of 16000 items push then pop 98.576 ns/op 99.399 ns/op 0.99
LinkedList of 16000 items push then pop 6.9870 ns/op 6.1760 ns/op 1.13
array of 24000 items push then shift 2.3664 us/op 1.8010 us/op 1.31
LinkedList of 24000 items push then shift 7.5420 ns/op 6.8930 ns/op 1.09
array of 24000 items push then pop 129.68 ns/op 125.49 ns/op 1.03
LinkedList of 24000 items push then pop 6.6970 ns/op 6.1900 ns/op 1.08
intersect bitArray bitLen 8 6.7020 ns/op 5.1430 ns/op 1.30
intersect array and set length 8 46.568 ns/op 37.152 ns/op 1.25
intersect bitArray bitLen 128 30.387 ns/op 25.386 ns/op 1.20
intersect array and set length 128 681.16 ns/op 549.85 ns/op 1.24
bitArray.getTrueBitIndexes() bitLen 128 2.6310 us/op 1.4880 us/op 1.77
bitArray.getTrueBitIndexes() bitLen 248 3.8100 us/op 2.2750 us/op 1.67
bitArray.getTrueBitIndexes() bitLen 512 7.7380 us/op 4.1950 us/op 1.84
Buffer.concat 32 items 1.0080 us/op 948.00 ns/op 1.06
Uint8Array.set 32 items 1.9790 us/op 1.5160 us/op 1.31
Buffer.copy 2.2880 us/op 1.7490 us/op 1.31
Uint8Array.set - with subarray 2.6680 us/op 2.2670 us/op 1.18
Uint8Array.set - without subarray 1.4850 us/op 1.5110 us/op 0.98
getUint32 - dataview 235.00 ns/op 386.00 ns/op 0.61
getUint32 - manual 157.00 ns/op 331.00 ns/op 0.47
Set add up to 64 items then delete first 2.1926 us/op 1.6622 us/op 1.32
OrderedSet add up to 64 items then delete first 3.3179 us/op 2.7679 us/op 1.20
Set add up to 64 items then delete last 2.5097 us/op 1.9191 us/op 1.31
OrderedSet add up to 64 items then delete last 3.7020 us/op 3.0305 us/op 1.22
Set add up to 64 items then delete middle 2.5142 us/op 2.0029 us/op 1.26
OrderedSet add up to 64 items then delete middle 5.2303 us/op 4.2560 us/op 1.23
Set add up to 128 items then delete first 5.0745 us/op 3.7615 us/op 1.35
OrderedSet add up to 128 items then delete first 7.8808 us/op 5.8568 us/op 1.35
Set add up to 128 items then delete last 4.9552 us/op 3.6270 us/op 1.37
OrderedSet add up to 128 items then delete last 7.3524 us/op 5.5414 us/op 1.33
Set add up to 128 items then delete middle 4.8745 us/op 3.6341 us/op 1.34
OrderedSet add up to 128 items then delete middle 14.109 us/op 11.264 us/op 1.25
Set add up to 256 items then delete first 10.284 us/op 7.3960 us/op 1.39
OrderedSet add up to 256 items then delete first 16.242 us/op 11.963 us/op 1.36
Set add up to 256 items then delete last 9.8059 us/op 7.2074 us/op 1.36
OrderedSet add up to 256 items then delete last 14.798 us/op 11.202 us/op 1.32
Set add up to 256 items then delete middle 9.8085 us/op 7.1048 us/op 1.38
OrderedSet add up to 256 items then delete middle 41.039 us/op 34.528 us/op 1.19
transfer serialized Status (84 B) 1.4080 us/op 1.4030 us/op 1.00
copy serialized Status (84 B) 1.1230 us/op 1.2000 us/op 0.94
transfer serialized SignedVoluntaryExit (112 B) 1.4830 us/op 1.5450 us/op 0.96
copy serialized SignedVoluntaryExit (112 B) 1.3240 us/op 1.3420 us/op 0.99
transfer serialized ProposerSlashing (416 B) 2.1380 us/op 1.6980 us/op 1.26
copy serialized ProposerSlashing (416 B) 2.7750 us/op 2.1530 us/op 1.29
transfer serialized Attestation (485 B) 2.8610 us/op 2.0920 us/op 1.37
copy serialized Attestation (485 B) 2.8040 us/op 2.0210 us/op 1.39
transfer serialized AttesterSlashing (33232 B) 3.0020 us/op 2.2850 us/op 1.31
copy serialized AttesterSlashing (33232 B) 6.8690 us/op 5.1650 us/op 1.33
transfer serialized Small SignedBeaconBlock (128000 B) 4.0020 us/op 2.7910 us/op 1.43
copy serialized Small SignedBeaconBlock (128000 B) 17.018 us/op 9.5210 us/op 1.79
transfer serialized Avg SignedBeaconBlock (200000 B) 4.3810 us/op 2.4920 us/op 1.76
copy serialized Avg SignedBeaconBlock (200000 B) 24.721 us/op 11.831 us/op 2.09
transfer serialized BlobsSidecar (524380 B) 3.4270 us/op 3.0330 us/op 1.13
copy serialized BlobsSidecar (524380 B) 77.473 us/op 73.961 us/op 1.05
transfer serialized Big SignedBeaconBlock (1000000 B) 3.3490 us/op 3.1730 us/op 1.06
copy serialized Big SignedBeaconBlock (1000000 B) 144.66 us/op 132.52 us/op 1.09
pass gossip attestations to forkchoice per slot 2.8400 ms/op 2.4098 ms/op 1.18
forkChoice updateHead vc 100000 bc 64 eq 0 496.96 us/op 472.22 us/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 0 3.5209 ms/op 2.6057 ms/op 1.35
forkChoice updateHead vc 1000000 bc 64 eq 0 5.3758 ms/op 4.0555 ms/op 1.33
forkChoice updateHead vc 600000 bc 320 eq 0 3.3859 ms/op 2.4924 ms/op 1.36
forkChoice updateHead vc 600000 bc 1200 eq 0 3.2431 ms/op 2.5436 ms/op 1.28
forkChoice updateHead vc 600000 bc 7200 eq 0 3.5496 ms/op 2.7706 ms/op 1.28
forkChoice updateHead vc 600000 bc 64 eq 1000 10.809 ms/op 9.6252 ms/op 1.12
forkChoice updateHead vc 600000 bc 64 eq 10000 11.758 ms/op 9.4451 ms/op 1.24
forkChoice updateHead vc 600000 bc 64 eq 300000 15.961 ms/op 11.589 ms/op 1.38
computeDeltas 500000 validators 300 proto nodes 3.5952 ms/op 3.0197 ms/op 1.19
computeDeltas 500000 validators 1200 proto nodes 3.5718 ms/op 3.0237 ms/op 1.18
computeDeltas 500000 validators 7200 proto nodes 3.5556 ms/op 3.1144 ms/op 1.14
computeDeltas 750000 validators 300 proto nodes 5.5674 ms/op 4.4246 ms/op 1.26
computeDeltas 750000 validators 1200 proto nodes 5.3340 ms/op 4.3886 ms/op 1.22
computeDeltas 750000 validators 7200 proto nodes 5.3935 ms/op 4.5213 ms/op 1.19
computeDeltas 1400000 validators 300 proto nodes 9.9357 ms/op 8.6127 ms/op 1.15
computeDeltas 1400000 validators 1200 proto nodes 10.101 ms/op 8.5352 ms/op 1.18
computeDeltas 1400000 validators 7200 proto nodes 9.9147 ms/op 8.5737 ms/op 1.16
computeDeltas 2100000 validators 300 proto nodes 15.479 ms/op 13.151 ms/op 1.18
computeDeltas 2100000 validators 1200 proto nodes 15.343 ms/op 12.746 ms/op 1.20
computeDeltas 2100000 validators 7200 proto nodes 15.671 ms/op 12.778 ms/op 1.23
altair processAttestation - 250000 vs - 7PWei normalcase 1.7253 ms/op 1.4115 ms/op 1.22
altair processAttestation - 250000 vs - 7PWei worstcase 2.6239 ms/op 2.0993 ms/op 1.25
altair processAttestation - setStatus - 1/6 committees join 88.021 us/op 72.076 us/op 1.22
altair processAttestation - setStatus - 1/3 committees join 175.47 us/op 146.36 us/op 1.20
altair processAttestation - setStatus - 1/2 committees join 255.88 us/op 183.48 us/op 1.39
altair processAttestation - setStatus - 2/3 committees join 333.80 us/op 278.70 us/op 1.20
altair processAttestation - setStatus - 4/5 committees join 480.30 us/op 431.82 us/op 1.11
altair processAttestation - setStatus - 100% committees join 554.62 us/op 514.96 us/op 1.08
altair processBlock - 250000 vs - 7PWei normalcase 4.1959 ms/op 5.2211 ms/op 0.80
altair processBlock - 250000 vs - 7PWei normalcase hashState 32.176 ms/op 26.210 ms/op 1.23
altair processBlock - 250000 vs - 7PWei worstcase 49.366 ms/op 34.790 ms/op 1.42
altair processBlock - 250000 vs - 7PWei worstcase hashState 95.032 ms/op 76.777 ms/op 1.24
phase0 processBlock - 250000 vs - 7PWei normalcase 2.3960 ms/op 2.0183 ms/op 1.19
phase0 processBlock - 250000 vs - 7PWei worstcase 25.810 ms/op 22.970 ms/op 1.12
altair processEth1Data - 250000 vs - 7PWei normalcase 315.96 us/op 259.01 us/op 1.22
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 7.7250 us/op 6.1370 us/op 1.26
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 45.035 us/op 28.803 us/op 1.56
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 11.782 us/op 9.7820 us/op 1.20
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.2300 us/op 5.8820 us/op 1.40
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 180.07 us/op 131.53 us/op 1.37
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 2.0857 ms/op 864.55 us/op 2.41
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.2396 ms/op 1.2773 ms/op 1.75
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.4364 ms/op 1.1102 ms/op 1.29
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.7245 ms/op 2.9440 ms/op 1.27
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.9873 ms/op 1.1777 ms/op 2.54
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9025 ms/op 3.1553 ms/op 1.24
Tree 40 250000 create 227.63 ms/op 228.02 ms/op 1.00
Tree 40 250000 get(125000) 143.61 ns/op 119.08 ns/op 1.21
Tree 40 250000 set(125000) 668.89 ns/op 545.30 ns/op 1.23
Tree 40 250000 toArray() 15.435 ms/op 24.008 ms/op 0.64
Tree 40 250000 iterate all - toArray() + loop 15.586 ms/op 22.474 ms/op 0.69
Tree 40 250000 iterate all - get(i) 50.948 ms/op 56.913 ms/op 0.90
Array 250000 create 2.8900 ms/op 3.8791 ms/op 0.75
Array 250000 clone - spread 1.5669 ms/op 1.2256 ms/op 1.28
Array 250000 get(125000) 0.43100 ns/op 0.59700 ns/op 0.72
Array 250000 set(125000) 0.44300 ns/op 0.60600 ns/op 0.73
Array 250000 iterate all - loop 88.721 us/op 76.362 us/op 1.16
phase0 afterProcessEpoch - 250000 vs - 7PWei 91.177 ms/op 86.728 ms/op 1.05
Array.fill - length 1000000 3.6984 ms/op 2.7566 ms/op 1.34
Array push - length 1000000 12.501 ms/op 17.435 ms/op 0.72
Array.get 0.27498 ns/op 0.27840 ns/op 0.99
Uint8Array.get 0.44828 ns/op 0.36012 ns/op 1.24
phase0 beforeProcessEpoch - 250000 vs - 7PWei 18.360 ms/op 23.350 ms/op 0.79
altair processEpoch - mainnet_e81889 340.52 ms/op 276.08 ms/op 1.23
mainnet_e81889 - altair beforeProcessEpoch 19.189 ms/op 23.343 ms/op 0.82
mainnet_e81889 - altair processJustificationAndFinalization 12.101 us/op 16.318 us/op 0.74
mainnet_e81889 - altair processInactivityUpdates 5.1502 ms/op 4.6084 ms/op 1.12
mainnet_e81889 - altair processRewardsAndPenalties 56.968 ms/op 49.484 ms/op 1.15
mainnet_e81889 - altair processRegistryUpdates 3.0820 us/op 2.0300 us/op 1.52
mainnet_e81889 - altair processSlashings 667.00 ns/op 721.00 ns/op 0.93
mainnet_e81889 - altair processEth1DataReset 499.00 ns/op 714.00 ns/op 0.70
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.3739 ms/op 1.6882 ms/op 0.81
mainnet_e81889 - altair processSlashingsReset 7.7890 us/op 2.6200 us/op 2.97
mainnet_e81889 - altair processRandaoMixesReset 7.6200 us/op 3.2170 us/op 2.37
mainnet_e81889 - altair processHistoricalRootsUpdate 813.00 ns/op 742.00 ns/op 1.10
mainnet_e81889 - altair processParticipationFlagUpdates 3.2800 us/op 4.2740 us/op 0.77
mainnet_e81889 - altair processSyncCommitteeUpdates 730.00 ns/op 850.00 ns/op 0.86
mainnet_e81889 - altair afterProcessEpoch 92.549 ms/op 82.189 ms/op 1.13
capella processEpoch - mainnet_e217614 1.2373 s/op 1.2437 s/op 0.99
mainnet_e217614 - capella beforeProcessEpoch 69.911 ms/op 140.75 ms/op 0.50
mainnet_e217614 - capella processJustificationAndFinalization 15.182 us/op 22.496 us/op 0.67
mainnet_e217614 - capella processInactivityUpdates 16.467 ms/op 24.694 ms/op 0.67
mainnet_e217614 - capella processRewardsAndPenalties 266.78 ms/op 303.03 ms/op 0.88
mainnet_e217614 - capella processRegistryUpdates 21.451 us/op 16.256 us/op 1.32
mainnet_e217614 - capella processSlashings 655.00 ns/op 960.00 ns/op 0.68
mainnet_e217614 - capella processEth1DataReset 513.00 ns/op 995.00 ns/op 0.52
mainnet_e217614 - capella processEffectiveBalanceUpdates 7.4541 ms/op 18.998 ms/op 0.39
mainnet_e217614 - capella processSlashingsReset 3.7150 us/op 4.9010 us/op 0.76
mainnet_e217614 - capella processRandaoMixesReset 6.7570 us/op 7.4200 us/op 0.91
mainnet_e217614 - capella processHistoricalRootsUpdate 622.00 ns/op 1.1200 us/op 0.56
mainnet_e217614 - capella processParticipationFlagUpdates 3.0040 us/op 5.4880 us/op 0.55
mainnet_e217614 - capella afterProcessEpoch 231.52 ms/op 202.38 ms/op 1.14
phase0 processEpoch - mainnet_e58758 397.78 ms/op 401.07 ms/op 0.99
mainnet_e58758 - phase0 beforeProcessEpoch 101.44 ms/op 122.65 ms/op 0.83
mainnet_e58758 - phase0 processJustificationAndFinalization 22.653 us/op 19.905 us/op 1.14
mainnet_e58758 - phase0 processRewardsAndPenalties 34.076 ms/op 25.219 ms/op 1.35
mainnet_e58758 - phase0 processRegistryUpdates 10.731 us/op 12.576 us/op 0.85
mainnet_e58758 - phase0 processSlashings 627.00 ns/op 979.00 ns/op 0.64
mainnet_e58758 - phase0 processEth1DataReset 522.00 ns/op 951.00 ns/op 0.55
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.9228 ms/op 1.4756 ms/op 1.98
mainnet_e58758 - phase0 processSlashingsReset 3.3250 us/op 6.5900 us/op 0.50
mainnet_e58758 - phase0 processRandaoMixesReset 5.3530 us/op 7.1580 us/op 0.75
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.4920 us/op 1.4820 us/op 1.01
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.7760 us/op 4.6910 us/op 1.02
mainnet_e58758 - phase0 afterProcessEpoch 79.548 ms/op 66.784 ms/op 1.19
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4406 ms/op 966.36 us/op 1.49
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.3379 ms/op 1.9654 ms/op 1.19
altair processInactivityUpdates - 250000 normalcase 19.453 ms/op 20.650 ms/op 0.94
altair processInactivityUpdates - 250000 worstcase 21.547 ms/op 24.639 ms/op 0.87
phase0 processRegistryUpdates - 250000 normalcase 5.7800 us/op 6.0020 us/op 0.96
phase0 processRegistryUpdates - 250000 badcase_full_deposits 458.25 us/op 332.41 us/op 1.38
phase0 processRegistryUpdates - 250000 worstcase 0.5 133.60 ms/op 126.69 ms/op 1.05
altair processRewardsAndPenalties - 250000 normalcase 49.965 ms/op 59.693 ms/op 0.84
altair processRewardsAndPenalties - 250000 worstcase 46.061 ms/op 45.258 ms/op 1.02
phase0 getAttestationDeltas - 250000 normalcase 7.6627 ms/op 6.3114 ms/op 1.21
phase0 getAttestationDeltas - 250000 worstcase 6.9084 ms/op 6.6061 ms/op 1.05
phase0 processSlashings - 250000 worstcase 89.534 us/op 91.586 us/op 0.98
altair processSyncCommitteeUpdates - 250000 123.74 ms/op 105.07 ms/op 1.18
BeaconState.hashTreeRoot - No change 244.00 ns/op 455.00 ns/op 0.54
BeaconState.hashTreeRoot - 1 full validator 115.67 us/op 147.54 us/op 0.78
BeaconState.hashTreeRoot - 32 full validator 1.4279 ms/op 1.4310 ms/op 1.00
BeaconState.hashTreeRoot - 512 full validator 12.469 ms/op 8.4238 ms/op 1.48
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 137.44 us/op 91.510 us/op 1.50
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.3017 ms/op 1.8866 ms/op 1.22
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 28.005 ms/op 21.464 ms/op 1.30
BeaconState.hashTreeRoot - 1 balances 126.73 us/op 89.457 us/op 1.42
BeaconState.hashTreeRoot - 32 balances 1.0279 ms/op 726.01 us/op 1.42
BeaconState.hashTreeRoot - 512 balances 10.103 ms/op 6.6603 ms/op 1.52
BeaconState.hashTreeRoot - 250000 balances 190.44 ms/op 130.03 ms/op 1.46
aggregationBits - 2048 els - zipIndexesInBitList 23.435 us/op 23.726 us/op 0.99
byteArrayEquals 32 53.598 ns/op 47.490 ns/op 1.13
Buffer.compare 32 17.084 ns/op 15.093 ns/op 1.13
byteArrayEquals 1024 1.5838 us/op 1.2427 us/op 1.27
Buffer.compare 1024 24.571 ns/op 22.716 ns/op 1.08
byteArrayEquals 16384 25.247 us/op 19.735 us/op 1.28
Buffer.compare 16384 199.41 ns/op 178.22 ns/op 1.12
byteArrayEquals 123687377 192.79 ms/op 150.11 ms/op 1.28
Buffer.compare 123687377 6.5480 ms/op 4.3862 ms/op 1.49
byteArrayEquals 32 - diff last byte 53.714 ns/op 46.648 ns/op 1.15
Buffer.compare 32 - diff last byte 17.760 ns/op 15.796 ns/op 1.12
byteArrayEquals 1024 - diff last byte 1.6536 us/op 1.2502 us/op 1.32
Buffer.compare 1024 - diff last byte 25.381 ns/op 24.032 ns/op 1.06
byteArrayEquals 16384 - diff last byte 25.880 us/op 19.838 us/op 1.30
Buffer.compare 16384 - diff last byte 186.12 ns/op 201.91 ns/op 0.92
byteArrayEquals 123687377 - diff last byte 202.04 ms/op 144.07 ms/op 1.40
Buffer.compare 123687377 - diff last byte 6.9261 ms/op 5.4276 ms/op 1.28
byteArrayEquals 32 - random bytes 5.2300 ns/op 4.8040 ns/op 1.09
Buffer.compare 32 - random bytes 17.523 ns/op 15.070 ns/op 1.16
byteArrayEquals 1024 - random bytes 5.7830 ns/op 4.7800 ns/op 1.21
Buffer.compare 1024 - random bytes 17.811 ns/op 14.797 ns/op 1.20
byteArrayEquals 16384 - random bytes 5.1750 ns/op 4.7000 ns/op 1.10
Buffer.compare 16384 - random bytes 17.578 ns/op 14.832 ns/op 1.19
byteArrayEquals 123687377 - random bytes 6.5400 ns/op 7.5600 ns/op 0.87
Buffer.compare 123687377 - random bytes 18.840 ns/op 17.680 ns/op 1.07
regular array get 100000 times 40.044 us/op 29.324 us/op 1.37
wrappedArray get 100000 times 37.058 us/op 29.330 us/op 1.26
arrayWithProxy get 100000 times 15.033 ms/op 10.186 ms/op 1.48
ssz.Root.equals 47.000 ns/op 44.283 ns/op 1.06
byteArrayEquals 47.755 ns/op 43.086 ns/op 1.11
Buffer.compare 11.517 ns/op 9.1160 ns/op 1.26
shuffle list - 16384 els 6.6239 ms/op 5.3620 ms/op 1.24
shuffle list - 250000 els 93.580 ms/op 79.830 ms/op 1.17
processSlot - 1 slots 13.738 us/op 12.714 us/op 1.08
processSlot - 32 slots 2.2496 ms/op 2.5557 ms/op 0.88
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 41.876 ms/op 38.478 ms/op 1.09
getCommitteeAssignments - req 1 vs - 250000 vc 2.3122 ms/op 1.8144 ms/op 1.27
getCommitteeAssignments - req 100 vs - 250000 vc 4.3018 ms/op 3.4647 ms/op 1.24
getCommitteeAssignments - req 1000 vs - 250000 vc 4.9148 ms/op 3.7900 ms/op 1.30
findModifiedValidators - 10000 modified validators 317.79 ms/op 229.85 ms/op 1.38
findModifiedValidators - 1000 modified validators 237.21 ms/op 136.68 ms/op 1.74
findModifiedValidators - 100 modified validators 192.34 ms/op 139.80 ms/op 1.38
findModifiedValidators - 10 modified validators 171.73 ms/op 141.79 ms/op 1.21
findModifiedValidators - 1 modified validators 165.73 ms/op 145.86 ms/op 1.14
findModifiedValidators - no difference 217.09 ms/op 139.20 ms/op 1.56
compare ViewDUs 3.2863 s/op 3.0761 s/op 1.07
compare each validator Uint8Array 1.2772 s/op 1.5870 s/op 0.80
compare ViewDU to Uint8Array 1.3998 s/op 772.85 ms/op 1.81
migrate state 1000000 validators, 24 modified, 0 new 1.2795 s/op 805.87 ms/op 1.59
migrate state 1000000 validators, 1700 modified, 1000 new 1.6673 s/op 1.0616 s/op 1.57
migrate state 1000000 validators, 3400 modified, 2000 new 1.8788 s/op 1.2092 s/op 1.55
migrate state 1500000 validators, 24 modified, 0 new 1.3387 s/op 762.24 ms/op 1.76
migrate state 1500000 validators, 1700 modified, 1000 new 1.9175 s/op 1.1511 s/op 1.67
migrate state 1500000 validators, 3400 modified, 2000 new 1.8689 s/op 1.3126 s/op 1.42
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 10.400 ns/op 6.4000 ns/op 1.63
state getBlockRootAtSlot - 250000 vs - 7PWei 1.2418 us/op 415.03 ns/op 2.99
computeProposers - vc 250000 12.927 ms/op 5.5841 ms/op 2.31
computeEpochShuffling - vc 250000 137.16 ms/op 78.132 ms/op 1.76
getNextSyncCommittee - vc 250000 224.79 ms/op 95.009 ms/op 2.37
computeSigningRoot for AttestationData 36.169 us/op 25.349 us/op 1.43
hash AttestationData serialized data then Buffer.toString(base64) 2.3176 us/op 1.2006 us/op 1.93
toHexString serialized data 1.2973 us/op 862.56 ns/op 1.50
Buffer.toString(base64) 257.78 ns/op 165.31 ns/op 1.56
nodejs block root to RootHex using toHex 226.32 ns/op 115.54 ns/op 1.96
nodejs block root to RootHex using toRootHex 199.18 ns/op 74.927 ns/op 2.66
browser block root to RootHex using the deprecated toHexString 509.04 ns/op 227.98 ns/op 2.23
browser block root to RootHex using toHex 349.86 ns/op 176.07 ns/op 1.99
browser block root to RootHex using toRootHex 226.76 ns/op 148.12 ns/op 1.53

by benchmarkbot/action

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