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

Validator to submit attestations when seeing new head #3397

Merged
merged 3 commits into from
Nov 4, 2021

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Oct 29, 2021

Motivation

  • We want to submit attestation as long as validator see new head or 1/3 slot, whichever comes first

Description

@codeclimate
Copy link

codeclimate bot commented Oct 29, 2021

Code Climate has analyzed commit accad68 and detected 0 issues on this pull request.

View more on Code Climate.

@twoeths twoeths marked this pull request as draft October 29, 2021 11:04
@codecov
Copy link

codecov bot commented Oct 29, 2021

Codecov Report

Merging #3397 (accad68) into master (397327a) will increase coverage by 0.05%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #3397      +/-   ##
==========================================
+ Coverage   38.35%   38.41%   +0.05%     
==========================================
  Files         303      304       +1     
  Lines        7743     7761      +18     
  Branches     1158     1159       +1     
==========================================
+ Hits         2970     2981      +11     
- Misses       4632     4639       +7     
  Partials      141      141              

@github-actions
Copy link
Contributor

github-actions bot commented Oct 29, 2021

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 4dc1af3 Previous: 397327a Ratio
BeaconState.hashTreeRoot - No change 701.00 ns/op 785.00 ns/op 0.89
BeaconState.hashTreeRoot - 1 full validator 81.326 us/op 95.972 us/op 0.85
BeaconState.hashTreeRoot - 32 full validator 1.1323 ms/op 1.3770 ms/op 0.82
BeaconState.hashTreeRoot - 512 full validator 15.024 ms/op 18.084 ms/op 0.83
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 78.557 us/op 93.138 us/op 0.84
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2921 ms/op 1.6496 ms/op 0.78
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.722 ms/op 20.500 ms/op 0.86
BeaconState.hashTreeRoot - 1 balances 60.116 us/op 70.480 us/op 0.85
BeaconState.hashTreeRoot - 32 balances 497.34 us/op 609.76 us/op 0.82
BeaconState.hashTreeRoot - 512 balances 4.7262 ms/op 5.5161 ms/op 0.86
BeaconState.hashTreeRoot - 250000 balances 90.044 ms/op 106.80 ms/op 0.84
processSlot - 1 slots 37.764 us/op 47.122 us/op 0.80
processSlot - 32 slots 2.1374 ms/op 2.5799 ms/op 0.83
getCommitteeAssignments - req 1 vs - 250000 vc 5.2186 ms/op 6.2224 ms/op 0.84
getCommitteeAssignments - req 100 vs - 250000 vc 7.1487 ms/op 8.5100 ms/op 0.84
getCommitteeAssignments - req 1000 vs - 250000 vc 7.6624 ms/op 9.1040 ms/op 0.84
computeProposers - vc 250000 20.170 ms/op 24.660 ms/op 0.82
computeEpochShuffling - vc 250000 192.20 ms/op 225.43 ms/op 0.85
getNextSyncCommittee - vc 250000 332.25 ms/op 404.65 ms/op 0.82
altair processAttestation - 250000 vs - 7PWei normalcase 38.730 ms/op 40.262 ms/op 0.96
altair processAttestation - 250000 vs - 7PWei worstcase 42.266 ms/op 48.976 ms/op 0.86
altair processAttestation - setStatus - 1/6 committees join 9.8374 ms/op 11.480 ms/op 0.86
altair processAttestation - setStatus - 1/3 committees join 21.406 ms/op 24.196 ms/op 0.88
altair processAttestation - setStatus - 1/2 committees join 31.441 ms/op 37.602 ms/op 0.84
altair processAttestation - setStatus - 2/3 committees join 42.679 ms/op 50.074 ms/op 0.85
altair processAttestation - setStatus - 4/5 committees join 52.271 ms/op 67.475 ms/op 0.77
altair processAttestation - setStatus - 100% committees join 64.053 ms/op 82.269 ms/op 0.78
altair processAttestation - updateEpochParticipants - 1/6 committees join 10.181 ms/op 12.422 ms/op 0.82
altair processAttestation - updateEpochParticipants - 1/3 committees join 21.804 ms/op 25.473 ms/op 0.86
altair processAttestation - updateEpochParticipants - 1/2 committees join 23.788 ms/op 28.203 ms/op 0.84
altair processAttestation - updateEpochParticipants - 2/3 committees join 25.989 ms/op 29.532 ms/op 0.88
altair processAttestation - updateEpochParticipants - 4/5 committees join 28.012 ms/op 31.457 ms/op 0.89
altair processAttestation - updateEpochParticipants - 100% committees join 27.546 ms/op 35.258 ms/op 0.78
altair processAttestation - updateAllStatus 19.310 ms/op 23.764 ms/op 0.81
altair processBlock - 250000 vs - 7PWei normalcase 40.252 ms/op 48.748 ms/op 0.83
altair processBlock - 250000 vs - 7PWei worstcase 109.34 ms/op 129.84 ms/op 0.84
altair processEpoch - pyrmont_e62330 448.19 ms/op 506.88 ms/op 0.88
pyrmont_e62330 - altair beforeProcessEpoch 147.56 ms/op 170.06 ms/op 0.87
pyrmont_e62330 - altair processJustificationAndFinalization 49.163 us/op 90.093 us/op 0.55
pyrmont_e62330 - altair processInactivityUpdates 8.4614 ms/op 9.9084 ms/op 0.85
pyrmont_e62330 - altair processRewardsAndPenalties 56.731 ms/op 65.726 ms/op 0.86
pyrmont_e62330 - altair processRegistryUpdates 5.7050 us/op 11.630 us/op 0.49
pyrmont_e62330 - altair processSlashings 1.3700 us/op 4.0140 us/op 0.34
pyrmont_e62330 - altair processEth1DataReset 1.2130 us/op 3.8790 us/op 0.31
pyrmont_e62330 - altair processEffectiveBalanceUpdates 6.1972 ms/op 7.0376 ms/op 0.88
pyrmont_e62330 - altair processSlashingsReset 9.4120 us/op 21.637 us/op 0.43
pyrmont_e62330 - altair processRandaoMixesReset 12.421 us/op 26.953 us/op 0.46
pyrmont_e62330 - altair processHistoricalRootsUpdate 1.4450 us/op 4.8320 us/op 0.30
pyrmont_e62330 - altair processParticipationFlagUpdates 39.408 ms/op 46.523 ms/op 0.85
pyrmont_e62330 - altair processSyncCommitteeUpdates 1.1900 us/op 3.1110 us/op 0.38
pyrmont_e62330 - altair afterProcessEpoch 115.06 ms/op 137.33 ms/op 0.84
altair processInactivityUpdates - 250000 normalcase 66.760 ms/op 78.687 ms/op 0.85
altair processInactivityUpdates - 250000 worstcase 70.212 ms/op 75.728 ms/op 0.93
altair processParticipationFlagUpdates - 250000 anycase 95.414 ms/op 120.17 ms/op 0.79
altair processRewardsAndPenalties - 250000 normalcase 116.62 ms/op 134.49 ms/op 0.87
altair processRewardsAndPenalties - 250000 worstcase 126.09 ms/op 135.09 ms/op 0.93
altair processSyncCommitteeUpdates - 250000 352.10 ms/op 427.25 ms/op 0.82
Tree 40 250000 create 488.02 ms/op 596.71 ms/op 0.82
Tree 40 250000 get(125000) 270.03 ns/op 330.93 ns/op 0.82
Tree 40 250000 set(125000) 1.5692 us/op 1.7300 us/op 0.91
Tree 40 250000 toArray() 38.219 ms/op 43.479 ms/op 0.88
Tree 40 250000 iterate all - toArray() + loop 39.366 ms/op 43.180 ms/op 0.91
Tree 40 250000 iterate all - get(i) 104.96 ms/op 121.02 ms/op 0.87
MutableVector 250000 create 22.340 ms/op 26.189 ms/op 0.85
MutableVector 250000 get(125000) 12.996 ns/op 15.770 ns/op 0.82
MutableVector 250000 set(125000) 579.71 ns/op 622.06 ns/op 0.93
MutableVector 250000 toArray() 8.8264 ms/op 11.456 ms/op 0.77
MutableVector 250000 iterate all - toArray() + loop 9.5475 ms/op 11.892 ms/op 0.80
MutableVector 250000 iterate all - get(i) 3.1535 ms/op 4.3001 ms/op 0.73
Array 250000 create 5.3042 ms/op 6.6366 ms/op 0.80
Array 250000 clone - spread 1.7411 ms/op 2.6947 ms/op 0.65
Array 250000 get(125000) 1.0970 ns/op 1.3550 ns/op 0.81
Array 250000 set(125000) 0.77600 ns/op 0.96400 ns/op 0.80
Array 250000 iterate all - loop 168.68 us/op 201.27 us/op 0.84
aggregationBits - 2048 els - readonlyValues 227.95 us/op 275.27 us/op 0.83
aggregationBits - 2048 els - zipIndexesInBitList 36.334 us/op 52.349 us/op 0.69
ssz.Root.equals 1.2390 us/op 1.6030 us/op 0.77
ssz.Root.equals with valueOf() 1.5400 us/op 1.9680 us/op 0.78
byteArrayEquals with valueOf() 1.5120 us/op 1.9130 us/op 0.79
phase0 processBlock - 250000 vs - 7PWei normalcase 10.084 ms/op 12.696 ms/op 0.79
phase0 processBlock - 250000 vs - 7PWei worstcase 73.406 ms/op 88.568 ms/op 0.83
phase0 afterProcessEpoch - 250000 vs - 7PWei 209.57 ms/op 254.67 ms/op 0.82
phase0 beforeProcessEpoch - 250000 vs - 7PWei 519.61 ms/op 652.30 ms/op 0.80
phase0 processEpoch - mainnet_e58758 772.25 ms/op 891.07 ms/op 0.87
mainnet_e58758 - phase0 beforeProcessEpoch 454.56 ms/op 526.16 ms/op 0.86
mainnet_e58758 - phase0 processJustificationAndFinalization 46.000 us/op 84.698 us/op 0.54
mainnet_e58758 - phase0 processRewardsAndPenalties 82.304 ms/op 94.080 ms/op 0.87
mainnet_e58758 - phase0 processRegistryUpdates 35.101 us/op 59.253 us/op 0.59
mainnet_e58758 - phase0 processSlashings 1.3460 us/op 4.2480 us/op 0.32
mainnet_e58758 - phase0 processEth1DataReset 1.2430 us/op 3.6890 us/op 0.34
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 8.9359 ms/op 11.219 ms/op 0.80
mainnet_e58758 - phase0 processSlashingsReset 8.0270 us/op 18.771 us/op 0.43
mainnet_e58758 - phase0 processRandaoMixesReset 11.668 us/op 24.843 us/op 0.47
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.4020 us/op 4.7970 us/op 0.29
mainnet_e58758 - phase0 processParticipationRecordUpdates 9.7750 us/op 16.052 us/op 0.61
mainnet_e58758 - phase0 afterProcessEpoch 188.73 ms/op 221.08 ms/op 0.85
phase0 processEffectiveBalanceUpdates - 250000 normalcase 10.303 ms/op 13.148 ms/op 0.78
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.1383 s/op 1.3245 s/op 0.86
phase0 processRegistryUpdates - 250000 normalcase 33.512 us/op 53.807 us/op 0.62
phase0 processRegistryUpdates - 250000 badcase_full_deposits 2.9018 ms/op 3.6163 ms/op 0.80
phase0 processRegistryUpdates - 250000 worstcase 0.5 1.4039 s/op 1.7742 s/op 0.79
phase0 getAttestationDeltas - 250000 normalcase 34.805 ms/op 43.449 ms/op 0.80
phase0 getAttestationDeltas - 250000 worstcase 34.557 ms/op 43.109 ms/op 0.80
phase0 processSlashings - 250000 worstcase 31.569 ms/op 39.646 ms/op 0.80
shuffle list - 16384 els 12.881 ms/op 16.706 ms/op 0.77
shuffle list - 250000 els 188.70 ms/op 219.61 ms/op 0.86
getEffectiveBalances - 250000 vs - 7PWei 10.243 ms/op 13.528 ms/op 0.76
computeDeltas 3.7845 ms/op 3.8979 ms/op 0.97
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.5386 ms/op 2.3571 ms/op 1.08
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 911.66 us/op 1.0960 ms/op 0.83
BLS verify - blst-native 1.8590 ms/op 2.2317 ms/op 0.83
BLS verifyMultipleSignatures 3 - blst-native 3.8091 ms/op 4.5714 ms/op 0.83
BLS verifyMultipleSignatures 8 - blst-native 8.2073 ms/op 9.8646 ms/op 0.83
BLS verifyMultipleSignatures 32 - blst-native 29.777 ms/op 35.766 ms/op 0.83
BLS aggregatePubkeys 32 - blst-native 39.827 us/op 47.785 us/op 0.83
BLS aggregatePubkeys 128 - blst-native 155.51 us/op 186.58 us/op 0.83
getAttestationsForBlock 81.186 ms/op 100.35 ms/op 0.81
CheckpointStateCache - add get delete 15.380 us/op 18.230 us/op 0.84
validate gossip signedAggregateAndProof - struct 4.4511 ms/op 5.3393 ms/op 0.83
validate gossip signedAggregateAndProof - treeBacked 4.4031 ms/op 5.2659 ms/op 0.84
validate gossip attestation - struct 2.0814 ms/op 2.4914 ms/op 0.84
validate gossip attestation - treeBacked 2.0901 ms/op 2.4817 ms/op 0.84
Object access 1 prop 0.42900 ns/op 0.51100 ns/op 0.84
Map access 1 prop 0.50300 ns/op 0.48400 ns/op 1.04
Object get x1000 17.609 ns/op 20.096 ns/op 0.88
Map get x1000 1.1310 ns/op 1.3380 ns/op 0.85
Object set x1000 96.623 ns/op 113.74 ns/op 0.85
Map set x1000 61.668 ns/op 76.522 ns/op 0.81
Return object 10000 times 0.38230 ns/op 0.46200 ns/op 0.83
Throw Error 10000 times 6.3854 us/op 7.6312 us/op 0.84

by benchmarkbot/action

@twoeths twoeths marked this pull request as ready for review November 1, 2021 02:32
@twoeths twoeths force-pushed the tuyen/submit-attestations-early branch from ac2c1da to 032839f Compare November 3, 2021 02:34
@twoeths twoeths force-pushed the tuyen/submit-attestations-early branch from 032839f to accad68 Compare November 4, 2021 02:19
@dapplion dapplion merged commit da26111 into master Nov 4, 2021
@dapplion dapplion deleted the tuyen/submit-attestations-early branch November 4, 2021 14:18
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