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

Add verifyBlocksSanityChecks #4318

Merged
merged 1 commit into from Jul 18, 2022
Merged

Conversation

dapplion
Copy link
Contributor

Motivation

Description

Convert verifyBlockSanityChecks into a batched version verifyBlocksSanityChecks. It must consider:

  • ignore conditions for blocks on sync
  • apply some checks on chain tip only

Added some tests for the more than one block case

BLOCKED

Base automatically changed from dapplion/merge-block-processor-single-multi to unstable July 17, 2022 19:22
@dapplion dapplion force-pushed the dapplion/verifyBlocksSanityChecks branch from 63596b8 to dfb062c Compare July 17, 2022 19:39
@dapplion dapplion marked this pull request as ready for review July 17, 2022 19:39
@dapplion dapplion requested a review from a team as a code owner July 17, 2022 19:39
@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: a48c354 Previous: 3239eb2 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.7750 ms/op 1.5147 ms/op 1.17
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 71.643 us/op 62.432 us/op 1.15
BLS verify - blst-native 1.8556 ms/op 2.1644 ms/op 0.86
BLS verifyMultipleSignatures 3 - blst-native 3.8005 ms/op 4.4661 ms/op 0.85
BLS verifyMultipleSignatures 8 - blst-native 8.1811 ms/op 9.6598 ms/op 0.85
BLS verifyMultipleSignatures 32 - blst-native 29.646 ms/op 35.116 ms/op 0.84
BLS aggregatePubkeys 32 - blst-native 39.600 us/op 46.809 us/op 0.85
BLS aggregatePubkeys 128 - blst-native 152.53 us/op 182.78 us/op 0.83
getAttestationsForBlock 43.724 ms/op 39.228 ms/op 1.11
isKnown best case - 1 super set check 374.00 ns/op 470.00 ns/op 0.80
isKnown normal case - 2 super set checks 366.00 ns/op 463.00 ns/op 0.79
isKnown worse case - 16 super set checks 370.00 ns/op 455.00 ns/op 0.81
CheckpointStateCache - add get delete 9.5780 us/op 10.639 us/op 0.90
validate gossip signedAggregateAndProof - struct 3.7578 ms/op 5.0264 ms/op 0.75
validate gossip attestation - struct 1.7870 ms/op 2.3704 ms/op 0.75
altair verifyImport mainnet_s3766816:31 12.170 s/op 12.468 s/op 0.98
pickEth1Vote - no votes 1.9084 ms/op 1.9804 ms/op 0.96
pickEth1Vote - max votes 24.796 ms/op 19.720 ms/op 1.26
pickEth1Vote - Eth1Data hashTreeRoot value x2048 10.664 ms/op 12.595 ms/op 0.85
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.285 ms/op 20.079 ms/op 1.01
pickEth1Vote - Eth1Data fastSerialize value x2048 1.5393 ms/op 1.4245 ms/op 1.08
pickEth1Vote - Eth1Data fastSerialize tree x2048 17.575 ms/op 14.049 ms/op 1.25
bytes32 toHexString 1.0500 us/op 972.00 ns/op 1.08
bytes32 Buffer.toString(hex) 680.00 ns/op 769.00 ns/op 0.88
bytes32 Buffer.toString(hex) from Uint8Array 900.00 ns/op 1.0160 us/op 0.89
bytes32 Buffer.toString(hex) + 0x 654.00 ns/op 763.00 ns/op 0.86
Object access 1 prop 0.34900 ns/op 0.35700 ns/op 0.98
Map access 1 prop 0.29100 ns/op 0.30800 ns/op 0.94
Object get x1000 18.039 ns/op 11.787 ns/op 1.53
Map get x1000 0.97100 ns/op 1.0650 ns/op 0.91
Object set x1000 112.79 ns/op 72.481 ns/op 1.56
Map set x1000 66.136 ns/op 48.429 ns/op 1.37
Return object 10000 times 0.37880 ns/op 0.43240 ns/op 0.88
Throw Error 10000 times 5.9329 us/op 6.2300 us/op 0.95
enrSubnets - fastDeserialize 64 bits 2.6850 us/op 2.6560 us/op 1.01
enrSubnets - ssz BitVector 64 bits 726.00 ns/op 804.00 ns/op 0.90
enrSubnets - fastDeserialize 4 bits 364.00 ns/op 413.00 ns/op 0.88
enrSubnets - ssz BitVector 4 bits 708.00 ns/op 809.00 ns/op 0.88
prioritizePeers score -10:0 att 32-0.1 sync 2-0 81.040 us/op 83.024 us/op 0.98
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 110.23 us/op 125.46 us/op 0.88
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 182.88 us/op 204.56 us/op 0.89
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 411.41 us/op 336.21 us/op 1.22
prioritizePeers score 0:0 att 64-1 sync 4-1 412.13 us/op 406.82 us/op 1.01
RateTracker 1000000 limit, 1 obj count per request 174.53 ns/op 187.39 ns/op 0.93
RateTracker 1000000 limit, 2 obj count per request 133.72 ns/op 136.56 ns/op 0.98
RateTracker 1000000 limit, 4 obj count per request 116.73 ns/op 111.78 ns/op 1.04
RateTracker 1000000 limit, 8 obj count per request 99.661 ns/op 98.853 ns/op 1.01
RateTracker with prune 4.0340 us/op 3.9980 us/op 1.01
array of 16000 items push then shift 2.7827 us/op 51.564 us/op 0.05
LinkedList of 16000 items push then shift 24.333 ns/op 14.880 ns/op 1.64
array of 16000 items push then pop 234.88 ns/op 213.58 ns/op 1.10
LinkedList of 16000 items push then pop 21.621 ns/op 13.784 ns/op 1.57
array of 24000 items push then shift 4.0145 us/op 77.320 us/op 0.05
LinkedList of 24000 items push then shift 28.259 ns/op 17.353 ns/op 1.63
array of 24000 items push then pop 180.32 ns/op 182.57 ns/op 0.99
LinkedList of 24000 items push then pop 22.037 ns/op 14.620 ns/op 1.51
intersect bitArray bitLen 8 10.431 ns/op 10.695 ns/op 0.98
intersect array and set length 8 152.49 ns/op 137.48 ns/op 1.11
intersect bitArray bitLen 128 54.446 ns/op 57.915 ns/op 0.94
intersect array and set length 128 2.0391 us/op 1.7867 us/op 1.14
pass gossip attestations to forkchoice per slot 3.5639 ms/op 2.8728 ms/op 1.24
computeDeltas 3.7692 ms/op 3.3493 ms/op 1.13
computeProposerBoostScoreFromBalances 921.35 us/op 805.20 us/op 1.14
altair processAttestation - 250000 vs - 7PWei normalcase 4.2650 ms/op 3.4886 ms/op 1.22
altair processAttestation - 250000 vs - 7PWei worstcase 5.3219 ms/op 5.2000 ms/op 1.02
altair processAttestation - setStatus - 1/6 committees join 195.27 us/op 184.44 us/op 1.06
altair processAttestation - setStatus - 1/3 committees join 366.82 us/op 363.39 us/op 1.01
altair processAttestation - setStatus - 1/2 committees join 523.95 us/op 527.76 us/op 0.99
altair processAttestation - setStatus - 2/3 committees join 670.34 us/op 691.89 us/op 0.97
altair processAttestation - setStatus - 4/5 committees join 1.0440 ms/op 947.23 us/op 1.10
altair processAttestation - setStatus - 100% committees join 1.2397 ms/op 1.1676 ms/op 1.06
altair processBlock - 250000 vs - 7PWei normalcase 29.124 ms/op 23.108 ms/op 1.26
altair processBlock - 250000 vs - 7PWei normalcase hashState 36.748 ms/op 36.779 ms/op 1.00
altair processBlock - 250000 vs - 7PWei worstcase 81.052 ms/op 81.385 ms/op 1.00
altair processBlock - 250000 vs - 7PWei worstcase hashState 98.039 ms/op 110.99 ms/op 0.88
phase0 processBlock - 250000 vs - 7PWei normalcase 4.5661 ms/op 3.7176 ms/op 1.23
phase0 processBlock - 250000 vs - 7PWei worstcase 47.530 ms/op 51.406 ms/op 0.92
altair processEth1Data - 250000 vs - 7PWei normalcase 689.26 us/op 691.99 us/op 1.00
Tree 40 250000 create 773.56 ms/op 662.35 ms/op 1.17
Tree 40 250000 get(125000) 290.55 ns/op 226.86 ns/op 1.28
Tree 40 250000 set(125000) 2.6343 us/op 2.0793 us/op 1.27
Tree 40 250000 toArray() 37.066 ms/op 24.919 ms/op 1.49
Tree 40 250000 iterate all - toArray() + loop 38.112 ms/op 24.938 ms/op 1.53
Tree 40 250000 iterate all - get(i) 115.18 ms/op 103.51 ms/op 1.11
MutableVector 250000 create 15.142 ms/op 13.943 ms/op 1.09
MutableVector 250000 get(125000) 14.813 ns/op 10.789 ns/op 1.37
MutableVector 250000 set(125000) 669.90 ns/op 498.30 ns/op 1.34
MutableVector 250000 toArray() 6.8149 ms/op 5.2719 ms/op 1.29
MutableVector 250000 iterate all - toArray() + loop 7.0107 ms/op 5.3774 ms/op 1.30
MutableVector 250000 iterate all - get(i) 3.6092 ms/op 2.5883 ms/op 1.39
Array 250000 create 5.9915 ms/op 5.2949 ms/op 1.13
Array 250000 clone - spread 3.6818 ms/op 3.1719 ms/op 1.16
Array 250000 get(125000) 1.5550 ns/op 1.4790 ns/op 1.05
Array 250000 set(125000) 1.5310 ns/op 1.4910 ns/op 1.03
Array 250000 iterate all - loop 167.89 us/op 150.88 us/op 1.11
effectiveBalanceIncrements clone Uint8Array 300000 81.395 us/op 45.010 us/op 1.81
effectiveBalanceIncrements clone MutableVector 300000 1.1790 us/op 1.1010 us/op 1.07
effectiveBalanceIncrements rw all Uint8Array 300000 252.51 us/op 247.38 us/op 1.02
effectiveBalanceIncrements rw all MutableVector 300000 229.83 ms/op 162.13 ms/op 1.42
phase0 afterProcessEpoch - 250000 vs - 7PWei 172.30 ms/op 189.07 ms/op 0.91
phase0 beforeProcessEpoch - 250000 vs - 7PWei 72.504 ms/op 54.845 ms/op 1.32
altair processEpoch - mainnet_e81889 582.52 ms/op 539.13 ms/op 1.08
mainnet_e81889 - altair beforeProcessEpoch 160.61 ms/op 116.46 ms/op 1.38
mainnet_e81889 - altair processJustificationAndFinalization 29.367 us/op 22.168 us/op 1.32
mainnet_e81889 - altair processInactivityUpdates 11.192 ms/op 8.5264 ms/op 1.31
mainnet_e81889 - altair processRewardsAndPenalties 94.703 ms/op 77.494 ms/op 1.22
mainnet_e81889 - altair processRegistryUpdates 5.6930 us/op 4.6560 us/op 1.22
mainnet_e81889 - altair processSlashings 1.6300 us/op 1.2100 us/op 1.35
mainnet_e81889 - altair processEth1DataReset 1.6670 us/op 1.0580 us/op 1.58
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.6028 ms/op 1.9152 ms/op 1.36
mainnet_e81889 - altair processSlashingsReset 12.719 us/op 7.5610 us/op 1.68
mainnet_e81889 - altair processRandaoMixesReset 10.560 us/op 7.0960 us/op 1.49
mainnet_e81889 - altair processHistoricalRootsUpdate 1.8120 us/op 3.0920 us/op 0.59
mainnet_e81889 - altair processParticipationFlagUpdates 5.3580 us/op 8.6060 us/op 0.62
mainnet_e81889 - altair processSyncCommitteeUpdates 1.3350 us/op 2.5190 us/op 0.53
mainnet_e81889 - altair afterProcessEpoch 191.42 ms/op 216.65 ms/op 0.88
phase0 processEpoch - mainnet_e58758 530.17 ms/op 608.01 ms/op 0.87
mainnet_e58758 - phase0 beforeProcessEpoch 237.29 ms/op 227.83 ms/op 1.04
mainnet_e58758 - phase0 processJustificationAndFinalization 32.923 us/op 26.384 us/op 1.25
mainnet_e58758 - phase0 processRewardsAndPenalties 139.37 ms/op 135.32 ms/op 1.03
mainnet_e58758 - phase0 processRegistryUpdates 14.360 us/op 10.363 us/op 1.39
mainnet_e58758 - phase0 processSlashings 1.3060 us/op 1.0560 us/op 1.24
mainnet_e58758 - phase0 processEth1DataReset 1.4930 us/op 1.0200 us/op 1.46
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.4210 ms/op 1.8972 ms/op 1.28
mainnet_e58758 - phase0 processSlashingsReset 8.4690 us/op 6.0510 us/op 1.40
mainnet_e58758 - phase0 processRandaoMixesReset 10.509 us/op 6.9360 us/op 1.52
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.5860 us/op 1.2230 us/op 1.30
mainnet_e58758 - phase0 processParticipationRecordUpdates 8.8290 us/op 6.1370 us/op 1.44
mainnet_e58758 - phase0 afterProcessEpoch 157.32 ms/op 162.36 ms/op 0.97
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.7200 ms/op 1.9961 ms/op 1.36
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.1886 ms/op 2.2681 ms/op 1.41
altair processInactivityUpdates - 250000 normalcase 40.832 ms/op 50.313 ms/op 0.81
altair processInactivityUpdates - 250000 worstcase 49.913 ms/op 51.311 ms/op 0.97
phase0 processRegistryUpdates - 250000 normalcase 16.394 us/op 10.406 us/op 1.58
phase0 processRegistryUpdates - 250000 badcase_full_deposits 657.85 us/op 491.18 us/op 1.34
phase0 processRegistryUpdates - 250000 worstcase 0.5 210.52 ms/op 213.49 ms/op 0.99
altair processRewardsAndPenalties - 250000 normalcase 126.46 ms/op 128.85 ms/op 0.98
altair processRewardsAndPenalties - 250000 worstcase 88.960 ms/op 142.46 ms/op 0.62
phase0 getAttestationDeltas - 250000 normalcase 12.868 ms/op 10.931 ms/op 1.18
phase0 getAttestationDeltas - 250000 worstcase 12.938 ms/op 11.299 ms/op 1.15
phase0 processSlashings - 250000 worstcase 5.5497 ms/op 5.0620 ms/op 1.10
altair processSyncCommitteeUpdates - 250000 268.46 ms/op 287.41 ms/op 0.93
BeaconState.hashTreeRoot - No change 477.00 ns/op 575.00 ns/op 0.83
BeaconState.hashTreeRoot - 1 full validator 56.665 us/op 66.009 us/op 0.86
BeaconState.hashTreeRoot - 32 full validator 556.58 us/op 657.61 us/op 0.85
BeaconState.hashTreeRoot - 512 full validator 6.1546 ms/op 6.9571 ms/op 0.88
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 68.841 us/op 81.740 us/op 0.84
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 958.92 us/op 1.1717 ms/op 0.82
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 11.314 ms/op 14.431 ms/op 0.78
BeaconState.hashTreeRoot - 1 balances 47.197 us/op 64.623 us/op 0.73
BeaconState.hashTreeRoot - 32 balances 408.21 us/op 559.36 us/op 0.73
BeaconState.hashTreeRoot - 512 balances 4.2083 ms/op 5.2804 ms/op 0.80
BeaconState.hashTreeRoot - 250000 balances 91.343 ms/op 120.09 ms/op 0.76
aggregationBits - 2048 els - zipIndexesInBitList 26.963 us/op 23.798 us/op 1.13
regular array get 100000 times 59.517 us/op 60.551 us/op 0.98
wrappedArray get 100000 times 59.454 us/op 62.330 us/op 0.95
arrayWithProxy get 100000 times 25.457 ms/op 28.826 ms/op 0.88
ssz.Root.equals 393.00 ns/op 474.00 ns/op 0.83
byteArrayEquals 391.00 ns/op 456.00 ns/op 0.86
shuffle list - 16384 els 10.970 ms/op 11.365 ms/op 0.97
shuffle list - 250000 els 162.18 ms/op 167.67 ms/op 0.97
processSlot - 1 slots 10.002 us/op 11.949 us/op 0.84
processSlot - 32 slots 1.6638 ms/op 1.8621 ms/op 0.89
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 368.20 us/op 346.31 us/op 1.06
getCommitteeAssignments - req 1 vs - 250000 vc 5.2729 ms/op 5.4590 ms/op 0.97
getCommitteeAssignments - req 100 vs - 250000 vc 7.2993 ms/op 7.9812 ms/op 0.91
getCommitteeAssignments - req 1000 vs - 250000 vc 7.7570 ms/op 8.5685 ms/op 0.91
computeProposers - vc 250000 17.398 ms/op 16.861 ms/op 1.03
computeEpochShuffling - vc 250000 164.09 ms/op 170.18 ms/op 0.96
getNextSyncCommittee - vc 250000 233.58 ms/op 288.78 ms/op 0.81

by benchmarkbot/action

@wemeetagain wemeetagain merged commit 9fe2fb3 into unstable Jul 18, 2022
@wemeetagain wemeetagain deleted the dapplion/verifyBlocksSanityChecks branch July 18, 2022 02:29
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

2 participants