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

Use consistent type-guards in blinded block checks #4560

Merged
merged 1 commit into from Sep 19, 2022

Conversation

dapplion
Copy link
Contributor

Motivation

Use type-guards consistently

Description

Use consistent type-guards in blinded block checks

@dapplion dapplion requested a review from a team as a code owner September 17, 2022 09:56
@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 9c3dd1b Previous: aa1af04 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.7757 ms/op 2.3679 ms/op 1.17
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 101.34 us/op 90.530 us/op 1.12
BLS verify - blst-native 2.5096 ms/op 2.3229 ms/op 1.08
BLS verifyMultipleSignatures 3 - blst-native 5.0781 ms/op 4.7552 ms/op 1.07
BLS verifyMultipleSignatures 8 - blst-native 11.771 ms/op 10.245 ms/op 1.15
BLS verifyMultipleSignatures 32 - blst-native 40.536 ms/op 37.176 ms/op 1.09
BLS aggregatePubkeys 32 - blst-native 52.145 us/op 49.516 us/op 1.05
BLS aggregatePubkeys 128 - blst-native 197.93 us/op 191.28 us/op 1.03
getAttestationsForBlock 122.13 ms/op 105.20 ms/op 1.16
isKnown best case - 1 super set check 577.00 ns/op 539.00 ns/op 1.07
isKnown normal case - 2 super set checks 537.00 ns/op 519.00 ns/op 1.03
isKnown worse case - 16 super set checks 515.00 ns/op 522.00 ns/op 0.99
CheckpointStateCache - add get delete 11.352 us/op 11.286 us/op 1.01
validate gossip signedAggregateAndProof - struct 5.3798 ms/op 5.3265 ms/op 1.01
validate gossip attestation - struct 2.6143 ms/op 2.5115 ms/op 1.04
pickEth1Vote - no votes 3.1372 ms/op 2.7329 ms/op 1.15
pickEth1Vote - max votes 25.462 ms/op 25.427 ms/op 1.00
pickEth1Vote - Eth1Data hashTreeRoot value x2048 15.523 ms/op 13.685 ms/op 1.13
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 26.932 ms/op 24.345 ms/op 1.11
pickEth1Vote - Eth1Data fastSerialize value x2048 1.9607 ms/op 1.9103 ms/op 1.03
pickEth1Vote - Eth1Data fastSerialize tree x2048 18.630 ms/op 16.470 ms/op 1.13
bytes32 toHexString 1.3150 us/op 1.3270 us/op 0.99
bytes32 Buffer.toString(hex) 888.00 ns/op 903.00 ns/op 0.98
bytes32 Buffer.toString(hex) from Uint8Array 1.2110 us/op 1.2190 us/op 0.99
bytes32 Buffer.toString(hex) + 0x 881.00 ns/op 879.00 ns/op 1.00
Object access 1 prop 0.45200 ns/op 0.44600 ns/op 1.01
Map access 1 prop 0.36000 ns/op 0.37000 ns/op 0.97
Object get x1000 17.933 ns/op 22.495 ns/op 0.80
Map get x1000 1.0250 ns/op 1.2550 ns/op 0.82
Object set x1000 126.19 ns/op 144.91 ns/op 0.87
Map set x1000 82.866 ns/op 87.521 ns/op 0.95
Return object 10000 times 0.46370 ns/op 0.46820 ns/op 0.99
Throw Error 10000 times 9.2198 us/op 7.1984 us/op 1.28
enrSubnets - fastDeserialize 64 bits 3.5070 us/op 3.2490 us/op 1.08
enrSubnets - ssz BitVector 64 bits 912.00 ns/op 941.00 ns/op 0.97
enrSubnets - fastDeserialize 4 bits 510.00 ns/op 479.00 ns/op 1.06
enrSubnets - ssz BitVector 4 bits 855.00 ns/op 951.00 ns/op 0.90
prioritizePeers score -10:0 att 32-0.1 sync 2-0 121.44 us/op 127.69 us/op 0.95
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 166.04 us/op 150.85 us/op 1.10
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 321.23 us/op 262.08 us/op 1.23
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 661.29 us/op 561.65 us/op 1.18
prioritizePeers score 0:0 att 64-1 sync 4-1 612.10 us/op 566.35 us/op 1.08
RateTracker 1000000 limit, 1 obj count per request 234.67 ns/op 253.12 ns/op 0.93
RateTracker 1000000 limit, 2 obj count per request 185.60 ns/op 195.76 ns/op 0.95
RateTracker 1000000 limit, 4 obj count per request 146.14 ns/op 164.43 ns/op 0.89
RateTracker 1000000 limit, 8 obj count per request 128.41 ns/op 151.76 ns/op 0.85
RateTracker with prune 5.6630 us/op 5.4640 us/op 1.04
array of 16000 items push then shift 5.7751 us/op 3.8483 us/op 1.50
LinkedList of 16000 items push then shift 22.112 ns/op 21.422 ns/op 1.03
array of 16000 items push then pop 280.54 ns/op 276.08 ns/op 1.02
LinkedList of 16000 items push then pop 21.582 ns/op 20.106 ns/op 1.07
array of 24000 items push then shift 8.7138 us/op 5.6888 us/op 1.53
LinkedList of 24000 items push then shift 21.314 ns/op 24.405 ns/op 0.87
array of 24000 items push then pop 262.58 ns/op 256.80 ns/op 1.02
LinkedList of 24000 items push then pop 21.942 ns/op 21.275 ns/op 1.03
intersect bitArray bitLen 8 13.791 ns/op 14.372 ns/op 0.96
intersect array and set length 8 222.00 ns/op 213.31 ns/op 1.04
intersect bitArray bitLen 128 79.821 ns/op 90.046 ns/op 0.89
intersect array and set length 128 2.7076 us/op 2.8166 us/op 0.96
Buffer.concat 32 items 2.5940 ns/op 2.3840 ns/op 1.09
pass gossip attestations to forkchoice per slot 3.9527 ms/op 6.5181 ms/op 0.61
computeDeltas 3.9790 ms/op 3.7689 ms/op 1.06
computeProposerBoostScoreFromBalances 974.23 us/op 1.1303 ms/op 0.86
altair processAttestation - 250000 vs - 7PWei normalcase 5.5500 ms/op 4.6712 ms/op 1.19
altair processAttestation - 250000 vs - 7PWei worstcase 8.7843 ms/op 7.7541 ms/op 1.13
altair processAttestation - setStatus - 1/6 committees join 275.65 us/op 268.46 us/op 1.03
altair processAttestation - setStatus - 1/3 committees join 519.76 us/op 509.74 us/op 1.02
altair processAttestation - setStatus - 1/2 committees join 745.33 us/op 716.98 us/op 1.04
altair processAttestation - setStatus - 2/3 committees join 967.19 us/op 919.62 us/op 1.05
altair processAttestation - setStatus - 4/5 committees join 1.3478 ms/op 1.2817 ms/op 1.05
altair processAttestation - setStatus - 100% committees join 1.6164 ms/op 1.4902 ms/op 1.08
altair processBlock - 250000 vs - 7PWei normalcase 33.306 ms/op 27.172 ms/op 1.23
altair processBlock - 250000 vs - 7PWei normalcase hashState 48.112 ms/op 46.304 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase 104.10 ms/op 95.678 ms/op 1.09
altair processBlock - 250000 vs - 7PWei worstcase hashState 127.71 ms/op 139.44 ms/op 0.92
phase0 processBlock - 250000 vs - 7PWei normalcase 4.8213 ms/op 4.3120 ms/op 1.12
phase0 processBlock - 250000 vs - 7PWei worstcase 59.848 ms/op 57.919 ms/op 1.03
altair processEth1Data - 250000 vs - 7PWei normalcase 1.2691 ms/op 1.0265 ms/op 1.24
Tree 40 250000 create 1.0129 s/op 979.01 ms/op 1.03
Tree 40 250000 get(125000) 333.51 ns/op 356.01 ns/op 0.94
Tree 40 250000 set(125000) 3.2470 us/op 2.8932 us/op 1.12
Tree 40 250000 toArray() 39.395 ms/op 38.330 ms/op 1.03
Tree 40 250000 iterate all - toArray() + loop 39.038 ms/op 38.555 ms/op 1.01
Tree 40 250000 iterate all - get(i) 140.32 ms/op 138.81 ms/op 1.01
MutableVector 250000 create 21.447 ms/op 22.141 ms/op 0.97
MutableVector 250000 get(125000) 14.652 ns/op 16.693 ns/op 0.88
MutableVector 250000 set(125000) 916.26 ns/op 725.54 ns/op 1.26
MutableVector 250000 toArray() 7.8986 ms/op 8.6315 ms/op 0.92
MutableVector 250000 iterate all - toArray() + loop 8.1469 ms/op 9.1098 ms/op 0.89
MutableVector 250000 iterate all - get(i) 3.6375 ms/op 4.3018 ms/op 0.85
Array 250000 create 8.3199 ms/op 8.1175 ms/op 1.02
Array 250000 clone - spread 4.9138 ms/op 4.1450 ms/op 1.19
Array 250000 get(125000) 2.1770 ns/op 1.7940 ns/op 1.21
Array 250000 set(125000) 2.1670 ns/op 1.8390 ns/op 1.18
Array 250000 iterate all - loop 170.29 us/op 209.85 us/op 0.81
effectiveBalanceIncrements clone Uint8Array 300000 337.70 us/op 104.65 us/op 3.23
effectiveBalanceIncrements clone MutableVector 300000 914.00 ns/op 1.3530 us/op 0.68
effectiveBalanceIncrements rw all Uint8Array 300000 326.98 us/op 318.55 us/op 1.03
effectiveBalanceIncrements rw all MutableVector 300000 241.94 ms/op 247.45 ms/op 0.98
phase0 afterProcessEpoch - 250000 vs - 7PWei 230.35 ms/op 228.17 ms/op 1.01
phase0 beforeProcessEpoch - 250000 vs - 7PWei 82.954 ms/op 119.87 ms/op 0.69
altair processEpoch - mainnet_e81889 704.96 ms/op 710.33 ms/op 0.99
mainnet_e81889 - altair beforeProcessEpoch 173.61 ms/op 167.02 ms/op 1.04
mainnet_e81889 - altair processJustificationAndFinalization 73.998 us/op 40.810 us/op 1.81
mainnet_e81889 - altair processInactivityUpdates 11.729 ms/op 13.511 ms/op 0.87
mainnet_e81889 - altair processRewardsAndPenalties 113.44 ms/op 111.39 ms/op 1.02
mainnet_e81889 - altair processRegistryUpdates 17.487 us/op 7.9320 us/op 2.20
mainnet_e81889 - altair processSlashings 4.0800 us/op 2.2040 us/op 1.85
mainnet_e81889 - altair processEth1DataReset 4.3540 us/op 2.1740 us/op 2.00
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.4752 ms/op 3.0310 ms/op 0.82
mainnet_e81889 - altair processSlashingsReset 25.533 us/op 12.485 us/op 2.05
mainnet_e81889 - altair processRandaoMixesReset 24.823 us/op 13.942 us/op 1.78
mainnet_e81889 - altair processHistoricalRootsUpdate 4.2830 us/op 2.7410 us/op 1.56
mainnet_e81889 - altair processParticipationFlagUpdates 16.272 us/op 10.343 us/op 1.57
mainnet_e81889 - altair processSyncCommitteeUpdates 3.4460 us/op 2.1070 us/op 1.64
mainnet_e81889 - altair afterProcessEpoch 216.54 ms/op 239.95 ms/op 0.90
phase0 processEpoch - mainnet_e58758 631.92 ms/op 634.32 ms/op 1.00
mainnet_e58758 - phase0 beforeProcessEpoch 312.94 ms/op 265.72 ms/op 1.18
mainnet_e58758 - phase0 processJustificationAndFinalization 63.847 us/op 30.016 us/op 2.13
mainnet_e58758 - phase0 processRewardsAndPenalties 91.977 ms/op 173.02 ms/op 0.53
mainnet_e58758 - phase0 processRegistryUpdates 33.882 us/op 19.073 us/op 1.78
mainnet_e58758 - phase0 processSlashings 3.8540 us/op 1.8900 us/op 2.04
mainnet_e58758 - phase0 processEth1DataReset 3.2850 us/op 2.2560 us/op 1.46
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.4116 ms/op 2.7305 ms/op 0.88
mainnet_e58758 - phase0 processSlashingsReset 15.349 us/op 11.026 us/op 1.39
mainnet_e58758 - phase0 processRandaoMixesReset 24.758 us/op 14.396 us/op 1.72
mainnet_e58758 - phase0 processHistoricalRootsUpdate 4.6050 us/op 2.5110 us/op 1.83
mainnet_e58758 - phase0 processParticipationRecordUpdates 23.807 us/op 11.280 us/op 2.11
mainnet_e58758 - phase0 afterProcessEpoch 189.22 ms/op 197.87 ms/op 0.96
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.6718 ms/op 3.4780 ms/op 0.77
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.7541 ms/op 3.7273 ms/op 0.74
altair processInactivityUpdates - 250000 normalcase 57.059 ms/op 47.149 ms/op 1.21
altair processInactivityUpdates - 250000 worstcase 57.558 ms/op 56.724 ms/op 1.01
phase0 processRegistryUpdates - 250000 normalcase 30.432 us/op 17.101 us/op 1.78
phase0 processRegistryUpdates - 250000 badcase_full_deposits 563.44 us/op 548.69 us/op 1.03
phase0 processRegistryUpdates - 250000 worstcase 0.5 255.33 ms/op 256.44 ms/op 1.00
altair processRewardsAndPenalties - 250000 normalcase 104.48 ms/op 160.42 ms/op 0.65
altair processRewardsAndPenalties - 250000 worstcase 102.74 ms/op 102.50 ms/op 1.00
phase0 getAttestationDeltas - 250000 normalcase 15.218 ms/op 15.591 ms/op 0.98
phase0 getAttestationDeltas - 250000 worstcase 16.355 ms/op 14.998 ms/op 1.09
phase0 processSlashings - 250000 worstcase 6.7637 ms/op 6.6428 ms/op 1.02
altair processSyncCommitteeUpdates - 250000 359.50 ms/op 345.42 ms/op 1.04
BeaconState.hashTreeRoot - No change 657.00 ns/op 601.00 ns/op 1.09
BeaconState.hashTreeRoot - 1 full validator 82.704 us/op 68.221 us/op 1.21
BeaconState.hashTreeRoot - 32 full validator 891.84 us/op 787.19 us/op 1.13
BeaconState.hashTreeRoot - 512 full validator 8.0423 ms/op 9.0885 ms/op 0.88
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 119.47 us/op 99.200 us/op 1.20
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8174 ms/op 1.4357 ms/op 1.27
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 19.458 ms/op 19.101 ms/op 1.02
BeaconState.hashTreeRoot - 1 balances 79.966 us/op 77.837 us/op 1.03
BeaconState.hashTreeRoot - 32 balances 772.69 us/op 732.25 us/op 1.06
BeaconState.hashTreeRoot - 512 balances 7.4765 ms/op 7.1845 ms/op 1.04
BeaconState.hashTreeRoot - 250000 balances 115.99 ms/op 119.26 ms/op 0.97
aggregationBits - 2048 els - zipIndexesInBitList 43.563 us/op 36.509 us/op 1.19
regular array get 100000 times 62.852 us/op 84.328 us/op 0.75
wrappedArray get 100000 times 61.183 us/op 84.283 us/op 0.73
arrayWithProxy get 100000 times 40.464 ms/op 36.571 ms/op 1.11
ssz.Root.equals 638.00 ns/op 593.00 ns/op 1.08
byteArrayEquals 672.00 ns/op 587.00 ns/op 1.14
shuffle list - 16384 els 12.901 ms/op 14.011 ms/op 0.92
shuffle list - 250000 els 187.44 ms/op 202.38 ms/op 0.93
processSlot - 1 slots 17.063 us/op 16.144 us/op 1.06
processSlot - 32 slots 2.6659 ms/op 2.1973 ms/op 1.21
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 528.79 us/op 432.78 us/op 1.22
getCommitteeAssignments - req 1 vs - 250000 vc 6.1730 ms/op 6.6798 ms/op 0.92
getCommitteeAssignments - req 100 vs - 250000 vc 8.5403 ms/op 9.1345 ms/op 0.93
getCommitteeAssignments - req 1000 vs - 250000 vc 9.0068 ms/op 9.8044 ms/op 0.92
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 10.580 ns/op 12.330 ns/op 0.86
state getBlockRootAtSlot - 250000 vs - 7PWei 1.4463 us/op 1.5862 us/op 0.91
computeProposers - vc 250000 20.628 ms/op 21.015 ms/op 0.98
computeEpochShuffling - vc 250000 191.82 ms/op 211.20 ms/op 0.91
getNextSyncCommittee - vc 250000 358.16 ms/op 349.84 ms/op 1.02

by benchmarkbot/action

Copy link
Contributor

@g11tech g11tech left a comment

Choose a reason for hiding this comment

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

LGTM!

@g11tech g11tech merged commit 5ace073 into unstable Sep 19, 2022
@g11tech g11tech deleted the dapplion/blind-block-typeguards branch September 19, 2022 10:33
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.

None yet

3 participants