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

Improve attestation production #3102

Merged
merged 4 commits into from
Sep 13, 2021
Merged

Conversation

dapplion
Copy link
Contributor

@dapplion dapplion commented Sep 9, 2021

Motivation

Ensure correctness in more corner cases, where the vc and beacon node may not agree on time.

Description

@codeclimate
Copy link

codeclimate bot commented Sep 9, 2021

Code Climate has analyzed commit 92f5e3c and detected 1 issue on this pull request.

Here's the issue category breakdown:

Category Count
Complexity 1

View more on Code Climate.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 9, 2021

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 77ad181 Previous: c357ef9 Ratio
BeaconState.hashTreeRoot - No change 831.00 ns/op 623.00 ns/op 1.33
BeaconState.hashTreeRoot - 1 full validator 96.171 us/op 72.043 us/op 1.33
BeaconState.hashTreeRoot - 32 full validator 1.3969 ms/op 1.0107 ms/op 1.38
BeaconState.hashTreeRoot - 512 full validator 17.759 ms/op 14.220 ms/op 1.25
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 93.997 us/op 77.371 us/op 1.21
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4730 ms/op 1.1122 ms/op 1.32
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 20.338 ms/op 16.759 ms/op 1.21
BeaconState.hashTreeRoot - 1 balances 63.777 us/op 54.508 us/op 1.17
BeaconState.hashTreeRoot - 32 balances 622.53 us/op 490.37 us/op 1.27
BeaconState.hashTreeRoot - 512 balances 5.8731 ms/op 4.4087 ms/op 1.33
BeaconState.hashTreeRoot - 250000 balances 106.69 ms/op 85.555 ms/op 1.25
processSlot - 1 slots 46.607 us/op 39.957 us/op 1.17
processSlot - 32 slots 2.5718 ms/op 2.1753 ms/op 1.18
getCommitteeAssignments - req 1 vs - 250000 vc 6.2191 ms/op 5.2649 ms/op 1.18
getCommitteeAssignments - req 100 vs - 250000 vc 8.4861 ms/op 7.2361 ms/op 1.17
getCommitteeAssignments - req 1000 vs - 250000 vc 9.1846 ms/op 7.7605 ms/op 1.18
computeProposers - vc 250000 26.266 ms/op 21.408 ms/op 1.23
computeEpochShuffling - vc 250000 233.32 ms/op 179.50 ms/op 1.30
getNextSyncCommittee - vc 250000 422.86 ms/op 327.26 ms/op 1.29
altair processBlock - 250000 vs - 7PWei normalcase 88.513 ms/op 79.546 ms/op 1.11
altair processBlock - 250000 vs - 7PWei worstcase 238.83 ms/op 218.47 ms/op 1.09
altair processEpoch - pyrmont_e62330 602.56 ms/op 474.88 ms/op 1.27
pyrmont_e62330 - altair beforeProcessEpoch 166.43 ms/op 144.67 ms/op 1.15
pyrmont_e62330 - altair processJustificationAndFinalization 87.839 us/op 87.247 us/op 1.01
pyrmont_e62330 - altair processInactivityUpdates 89.059 ms/op 69.392 ms/op 1.28
pyrmont_e62330 - altair processRewardsAndPenalties 63.769 ms/op 50.371 ms/op 1.27
pyrmont_e62330 - altair processRegistryUpdates 11.922 us/op 9.7680 us/op 1.22
pyrmont_e62330 - altair processSlashings 3.6760 us/op 2.1550 us/op 1.71
pyrmont_e62330 - altair processEth1DataReset 3.4030 us/op 1.9280 us/op 1.77
pyrmont_e62330 - altair processEffectiveBalanceUpdates 6.5730 ms/op 4.7862 ms/op 1.37
pyrmont_e62330 - altair processSlashingsReset 18.030 us/op 14.198 us/op 1.27
pyrmont_e62330 - altair processRandaoMixesReset 24.479 us/op 19.895 us/op 1.23
pyrmont_e62330 - altair processHistoricalRootsUpdate 4.8260 us/op 2.3010 us/op 2.10
pyrmont_e62330 - altair processParticipationFlagUpdates 51.508 ms/op 48.594 ms/op 1.06
pyrmont_e62330 - altair processSyncCommitteeUpdates 2.8140 us/op 1.9120 us/op 1.47
pyrmont_e62330 - altair afterProcessEpoch 148.32 ms/op 111.14 ms/op 1.33
altair processInactivityUpdates - 250000 normalcase 232.68 ms/op 188.88 ms/op 1.23
altair processInactivityUpdates - 250000 worstcase 234.12 ms/op 195.09 ms/op 1.20
altair processParticipationFlagUpdates - 250000 anycase 102.43 ms/op 80.575 ms/op 1.27
altair processRewardsAndPenalties - 250000 normalcase 140.49 ms/op 113.66 ms/op 1.24
altair processRewardsAndPenalties - 250000 worstcase 147.74 ms/op 113.10 ms/op 1.31
altair processSyncCommitteeUpdates - 250000 439.11 ms/op 368.04 ms/op 1.19
Tree 40 250000 create 508.24 ms/op 477.20 ms/op 1.07
Tree 40 250000 get(125000) 325.29 ns/op 269.53 ns/op 1.21
Tree 40 250000 set(125000) 1.6674 us/op 1.4759 us/op 1.13
Tree 40 250000 toArray() 43.608 ms/op 41.780 ms/op 1.04
Tree 40 250000 iterate all - toArray() + loop 42.429 ms/op 36.923 ms/op 1.15
Tree 40 250000 iterate all - get(i) 121.69 ms/op 102.88 ms/op 1.18
MutableVector 250000 create 29.353 ms/op 18.480 ms/op 1.59
MutableVector 250000 get(125000) 15.619 ns/op 12.880 ns/op 1.21
MutableVector 250000 set(125000) 599.91 ns/op 534.08 ns/op 1.12
MutableVector 250000 toArray() 8.9315 ms/op 7.1791 ms/op 1.24
MutableVector 250000 iterate all - toArray() + loop 9.0628 ms/op 7.3547 ms/op 1.23
MutableVector 250000 iterate all - get(i) 3.8415 ms/op 3.1126 ms/op 1.23
Array 250000 create 5.7722 ms/op 4.8250 ms/op 1.20
Array 250000 clone - spread 1.9286 ms/op 1.6185 ms/op 1.19
Array 250000 get(125000) 1.3140 ns/op 1.1260 ns/op 1.17
Array 250000 set(125000) 1.2870 ns/op 0.79400 ns/op 1.62
Array 250000 iterate all - loop 201.08 us/op 167.93 us/op 1.20
aggregationBits - 2048 els - readonlyValues 267.88 us/op 224.81 us/op 1.19
aggregationBits - 2048 els - zipIndexesInBitList 53.113 us/op 38.469 us/op 1.38
ssz.Root.equals 1.5540 us/op 1.2770 us/op 1.22
ssz.Root.equals with valueOf() 1.8500 us/op 1.4410 us/op 1.28
byteArrayEquals with valueOf() 1.8120 us/op 1.4230 us/op 1.27
phase0 processBlock - 250000 vs - 7PWei normalcase 14.158 ms/op 12.232 ms/op 1.16
phase0 processBlock - 250000 vs - 7PWei worstcase 88.660 ms/op 75.634 ms/op 1.17
phase0 afterProcessEpoch - 250000 vs - 7PWei 252.96 ms/op 213.61 ms/op 1.18
phase0 beforeProcessEpoch - 250000 vs - 7PWei 643.94 ms/op 604.02 ms/op 1.07
phase0 processEpoch - mainnet_e58758 941.48 ms/op 789.54 ms/op 1.19
mainnet_e58758 - phase0 beforeProcessEpoch 513.95 ms/op 489.11 ms/op 1.05
mainnet_e58758 - phase0 processJustificationAndFinalization 89.967 us/op 73.428 us/op 1.23
mainnet_e58758 - phase0 processRewardsAndPenalties 90.524 ms/op 81.178 ms/op 1.12
mainnet_e58758 - phase0 processRegistryUpdates 53.700 us/op 50.569 us/op 1.06
mainnet_e58758 - phase0 processSlashings 3.2070 us/op 2.2930 us/op 1.40
mainnet_e58758 - phase0 processEth1DataReset 2.9010 us/op 1.8240 us/op 1.59
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 10.805 ms/op 8.8192 ms/op 1.23
mainnet_e58758 - phase0 processSlashingsReset 16.463 us/op 12.289 us/op 1.34
mainnet_e58758 - phase0 processRandaoMixesReset 19.414 us/op 20.069 us/op 0.97
mainnet_e58758 - phase0 processHistoricalRootsUpdate 3.6480 us/op 2.2250 us/op 1.64
mainnet_e58758 - phase0 processParticipationRecordUpdates 14.919 us/op 13.962 us/op 1.07
mainnet_e58758 - phase0 afterProcessEpoch 225.73 ms/op 187.80 ms/op 1.20
phase0 processEffectiveBalanceUpdates - 250000 normalcase 12.344 ms/op 10.690 ms/op 1.15
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5019 s/op 1.2320 s/op 1.22
phase0 processRegistryUpdates - 250000 normalcase 56.777 us/op 52.887 us/op 1.07
phase0 processRegistryUpdates - 250000 badcase_full_deposits 4.0537 ms/op 3.5069 ms/op 1.16
phase0 processRegistryUpdates - 250000 worstcase 0.5 1.8821 s/op 1.6163 s/op 1.16
phase0 getAttestationDeltas - 250000 normalcase 40.157 ms/op 35.405 ms/op 1.13
phase0 getAttestationDeltas - 250000 worstcase 41.040 ms/op 35.091 ms/op 1.17
phase0 processSlashings - 250000 worstcase 41.601 ms/op 34.722 ms/op 1.20
shuffle list - 16384 els 15.499 ms/op 13.225 ms/op 1.17
shuffle list - 250000 els 224.72 ms/op 190.53 ms/op 1.18
getEffectiveBalances - 250000 vs - 7PWei 11.647 ms/op 10.166 ms/op 1.15
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.6302 ms/op 2.2731 ms/op 1.16
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 1.1809 ms/op 1.0009 ms/op 1.18
BLS verify - blst-native 2.2308 ms/op 1.8587 ms/op 1.20
BLS verifyMultipleSignatures 3 - blst-native 4.5749 ms/op 3.8097 ms/op 1.20
BLS verifyMultipleSignatures 8 - blst-native 9.8599 ms/op 8.2130 ms/op 1.20
BLS verifyMultipleSignatures 32 - blst-native 35.787 ms/op 29.809 ms/op 1.20
BLS aggregatePubkeys 32 - blst-native 48.042 us/op 40.595 us/op 1.18
BLS aggregatePubkeys 128 - blst-native 186.98 us/op 155.71 us/op 1.20
getAttestationsForBlock 83.644 ms/op 79.405 ms/op 1.05
CheckpointStateCache - add get delete 18.266 us/op 16.137 us/op 1.13
validate gossip signedAggregateAndProof - struct 5.3913 ms/op 4.4460 ms/op 1.21
validate gossip signedAggregateAndProof - treeBacked 5.2886 ms/op 4.3985 ms/op 1.20
validate gossip attestation - struct 2.4904 ms/op 2.0753 ms/op 1.20
validate gossip attestation - treeBacked 2.4894 ms/op 2.0832 ms/op 1.19

by benchmarkbot/action

@codecov
Copy link

codecov bot commented Sep 9, 2021

Codecov Report

Merging #3102 (92f5e3c) into master (1ad9929) will decrease coverage by 0.05%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3102      +/-   ##
==========================================
- Coverage   59.15%   59.09%   -0.06%     
==========================================
  Files         377      375       -2     
  Lines        9066     9090      +24     
  Branches     1336     1345       +9     
==========================================
+ Hits         5363     5372       +9     
- Misses       3320     3338      +18     
+ Partials      383      380       -3     

@dapplion dapplion merged commit 278beef into master Sep 13, 2021
@dapplion dapplion deleted the dapplion/attestation-production branch September 13, 2021 07: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.

3 participants