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

Fix syncParticipantReward rounding issue #3055

Merged
merged 1 commit into from
Sep 1, 2021

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Sep 1, 2021

Motivation

This rounding issue was found in random spec tests (altair v1.1.0-beta.3), since that PR is not ready I make the fix a separate one.

Description

Use Math.floor() to calculate syncParticipantReward

This is a follow up PR for #3044

@codeclimate
Copy link

codeclimate bot commented Sep 1, 2021

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

View more on Code Climate.

@codecov
Copy link

codecov bot commented Sep 1, 2021

Codecov Report

Merging #3055 (e889306) into master (e5af6a4) will not change coverage.
The diff coverage is n/a.

❗ Current head e889306 differs from pull request most recent head 7392437. Consider uploading reports for the commit 7392437 to get more accurate results

@@           Coverage Diff           @@
##           master    #3055   +/-   ##
=======================================
  Coverage   59.88%   59.88%           
=======================================
  Files         376      376           
  Lines        8926     8926           
  Branches     1318     1318           
=======================================
  Hits         5345     5345           
  Misses       3202     3202           
  Partials      379      379           

@github-actions
Copy link
Contributor

github-actions bot commented Sep 1, 2021

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: e889306 Previous: e5af6a4 Ratio
BeaconState.hashTreeRoot - No change 754.00 ns/op 714.00 ns/op 1.06
BeaconState.hashTreeRoot - 1 full validator 76.964 us/op 67.786 us/op 1.14
BeaconState.hashTreeRoot - 32 full validator 1.0287 ms/op 927.24 us/op 1.11
BeaconState.hashTreeRoot - 512 full validator 12.676 ms/op 12.073 ms/op 1.05
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 76.170 us/op 63.826 us/op 1.19
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0414 ms/op 827.81 us/op 1.26
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 9.6530 ms/op 8.3945 ms/op 1.15
BeaconState.hashTreeRoot - 1 balances 68.194 us/op 61.182 us/op 1.11
BeaconState.hashTreeRoot - 32 balances 572.95 us/op 508.13 us/op 1.13
BeaconState.hashTreeRoot - 512 balances 5.0067 ms/op 4.7288 ms/op 1.06
BeaconState.hashTreeRoot - 250000 balances 103.65 ms/op 90.321 ms/op 1.15
processSlot - 1 slots 55.660 us/op 40.060 us/op 1.39
processSlot - 32 slots 2.7032 ms/op 2.1823 ms/op 1.24
getCommitteeAssignments - req 1 vs - 250000 vc 5.3858 ms/op 5.2403 ms/op 1.03
getCommitteeAssignments - req 100 vs - 250000 vc 7.4544 ms/op 7.1653 ms/op 1.04
getCommitteeAssignments - req 1000 vs - 250000 vc 8.5787 ms/op 7.7309 ms/op 1.11
computeProposers - vc 250000 24.701 ms/op 22.144 ms/op 1.12
computeEpochShuffling - vc 250000 192.87 ms/op 194.59 ms/op 0.99
getNextSyncCommittee - vc 250000 412.41 ms/op 360.69 ms/op 1.14
altair processBlock - 250000 vs - 7PWei normalcase 107.87 ms/op 93.639 ms/op 1.15
altair processBlock - 250000 vs - 7PWei worstcase 290.00 ms/op 233.01 ms/op 1.24
altair processEpoch - pyrmont_e62330 451.52 ms/op 424.43 ms/op 1.06
pyrmont_e62330 - altair beforeProcessEpoch 65.984 ms/op 83.325 ms/op 0.79
pyrmont_e62330 - altair processJustificationAndFinalization 161.58 us/op 68.251 us/op 2.37
pyrmont_e62330 - altair processInactivityUpdates 74.316 ms/op 65.959 ms/op 1.13
pyrmont_e62330 - altair processRewardsAndPenalties 67.199 ms/op 58.763 ms/op 1.14
pyrmont_e62330 - altair processRegistryUpdates 15.566 us/op 5.9450 us/op 2.62
pyrmont_e62330 - altair processSlashings 5.7150 us/op 1.6900 us/op 3.38
pyrmont_e62330 - altair processEth1DataReset 5.1290 us/op 1.4830 us/op 3.46
pyrmont_e62330 - altair processEffectiveBalanceUpdates 14.197 ms/op 8.4877 ms/op 1.67
pyrmont_e62330 - altair processSlashingsReset 34.187 us/op 10.688 us/op 3.20
pyrmont_e62330 - altair processRandaoMixesReset 41.373 us/op 18.606 us/op 2.22
pyrmont_e62330 - altair processHistoricalRootsUpdate 6.4220 us/op 1.8030 us/op 3.56
pyrmont_e62330 - altair processParticipationFlagUpdates 49.761 ms/op 45.866 ms/op 1.08
pyrmont_e62330 - altair processSyncCommitteeUpdates 4.2690 us/op 1.2800 us/op 3.34
pyrmont_e62330 - altair afterProcessEpoch 130.93 ms/op 121.24 ms/op 1.08
altair processInactivityUpdates - 250000 normalcase 225.99 ms/op 200.21 ms/op 1.13
altair processInactivityUpdates - 250000 worstcase 220.33 ms/op 204.86 ms/op 1.08
altair processParticipationFlagUpdates - 250000 anycase 116.82 ms/op 111.31 ms/op 1.05
altair processRewardsAndPenalties - 250000 normalcase 136.46 ms/op 110.73 ms/op 1.23
altair processRewardsAndPenalties - 250000 worstcase 150.14 ms/op 123.06 ms/op 1.22
altair processSyncCommitteeUpdates - 250000 482.37 ms/op 409.04 ms/op 1.18
Tree 40 250000 create 584.38 ms/op 589.67 ms/op 0.99
Tree 40 250000 get(125000) 284.03 ns/op 273.75 ns/op 1.04
Tree 40 250000 set(125000) 1.7293 us/op 1.7003 us/op 1.02
Tree 40 250000 toArray() 44.461 ms/op 41.651 ms/op 1.07
Tree 40 250000 iterate all - toArray() + loop 45.279 ms/op 41.613 ms/op 1.09
Tree 40 250000 iterate all - get(i) 114.05 ms/op 106.96 ms/op 1.07
MutableVector 250000 create 22.662 ms/op 24.956 ms/op 0.91
MutableVector 250000 get(125000) 13.623 ns/op 12.904 ns/op 1.06
MutableVector 250000 set(125000) 688.60 ns/op 655.81 ns/op 1.05
MutableVector 250000 toArray() 8.3978 ms/op 8.2176 ms/op 1.02
MutableVector 250000 iterate all - toArray() + loop 9.1402 ms/op 8.8458 ms/op 1.03
MutableVector 250000 iterate all - get(i) 3.8109 ms/op 3.7949 ms/op 1.00
Array 250000 create 6.1985 ms/op 5.7469 ms/op 1.08
Array 250000 clone - spread 2.9434 ms/op 2.2170 ms/op 1.33
Array 250000 get(125000) 1.0250 ns/op 1.1320 ns/op 0.91
Array 250000 set(125000) 1.0690 ns/op 1.1130 ns/op 0.96
Array 250000 iterate all - loop 150.80 us/op 167.85 us/op 0.90
aggregationBits - 2048 els - readonlyValues 305.48 us/op 237.29 us/op 1.29
aggregationBits - 2048 els - zipIndexesInBitList 62.973 us/op 47.116 us/op 1.34
ssz.Root.equals 1.7800 us/op 1.3910 us/op 1.28
ssz.Root.equals with valueOf() 2.0160 us/op 1.5860 us/op 1.27
byteArrayEquals with valueOf() 2.0430 us/op 1.5920 us/op 1.28
phase0 processBlock - 250000 vs - 7PWei normalcase 16.188 ms/op 11.951 ms/op 1.35
phase0 processBlock - 250000 vs - 7PWei worstcase 107.47 ms/op 78.106 ms/op 1.38
phase0 afterProcessEpoch - 250000 vs - 7PWei 242.98 ms/op 220.73 ms/op 1.10
phase0 beforeProcessEpoch - 250000 vs - 7PWei 662.20 ms/op 545.44 ms/op 1.21
phase0 processEpoch - mainnet_e58758 939.35 ms/op 788.85 ms/op 1.19
mainnet_e58758 - phase0 beforeProcessEpoch 435.08 ms/op 397.36 ms/op 1.09
mainnet_e58758 - phase0 processJustificationAndFinalization 116.12 us/op 62.543 us/op 1.86
mainnet_e58758 - phase0 processRewardsAndPenalties 163.03 ms/op 86.916 ms/op 1.88
mainnet_e58758 - phase0 processRegistryUpdates 99.754 us/op 52.816 us/op 1.89
mainnet_e58758 - phase0 processSlashings 5.1930 us/op 1.3230 us/op 3.93
mainnet_e58758 - phase0 processEth1DataReset 5.0040 us/op 1.2350 us/op 4.05
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 9.7862 ms/op 9.6187 ms/op 1.02
mainnet_e58758 - phase0 processSlashingsReset 30.137 us/op 8.5140 us/op 3.54
mainnet_e58758 - phase0 processRandaoMixesReset 40.085 us/op 14.503 us/op 2.76
mainnet_e58758 - phase0 processHistoricalRootsUpdate 6.7830 us/op 1.3390 us/op 5.07
mainnet_e58758 - phase0 processParticipationRecordUpdates 28.408 us/op 9.0170 us/op 3.15
mainnet_e58758 - phase0 afterProcessEpoch 215.65 ms/op 198.35 ms/op 1.09
phase0 processEffectiveBalanceUpdates - 250000 normalcase 10.661 ms/op 11.455 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.2537 s/op 2.6885 s/op 1.21
phase0 processRegistryUpdates - 250000 normalcase 100.32 us/op 59.771 us/op 1.68
phase0 processRegistryUpdates - 250000 badcase_full_deposits 6.7672 ms/op 5.0722 ms/op 1.33
phase0 processRegistryUpdates - 250000 worstcase 0.5 3.2908 s/op 2.7445 s/op 1.20
phase0 getAttestationDeltas - 250000 normalcase 34.578 ms/op 36.130 ms/op 0.96
phase0 getAttestationDeltas - 250000 worstcase 33.510 ms/op 35.304 ms/op 0.95
phase0 processSlashings - 250000 worstcase 39.548 ms/op 35.379 ms/op 1.12
shuffle list - 16384 els 14.238 ms/op 13.481 ms/op 1.06
shuffle list - 250000 els 186.79 ms/op 195.74 ms/op 0.95
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.8922 ms/op 2.5969 ms/op 1.11
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 461.34 us/op 447.27 us/op 1.03
getPubkeys - persistent - req 1000 vs - 250000 vc 17.280 us/op 16.404 us/op 1.05
BLS verify - blst-native 2.1235 ms/op 1.8592 ms/op 1.14
BLS verifyMultipleSignatures 3 - blst-native 4.1108 ms/op 3.8124 ms/op 1.08
BLS verifyMultipleSignatures 8 - blst-native 9.6140 ms/op 8.2153 ms/op 1.17
BLS verifyMultipleSignatures 32 - blst-native 34.592 ms/op 29.812 ms/op 1.16
BLS aggregatePubkeys 32 - blst-native 45.803 us/op 40.101 us/op 1.14
BLS aggregatePubkeys 128 - blst-native 186.49 us/op 156.37 us/op 1.19
getAttestationsForBlock 91.207 ms/op 84.335 ms/op 1.08
CheckpointStateCache - add get delete 22.380 us/op 18.336 us/op 1.22
validate gossip signedAggregateAndProof - struct 4.9999 ms/op 4.4760 ms/op 1.12
validate gossip signedAggregateAndProof - treeBacked 5.1210 ms/op 4.3925 ms/op 1.17
validate gossip attestation - struct 2.4016 ms/op 2.0987 ms/op 1.14
validate gossip attestation - treeBacked 2.4487 ms/op 2.0835 ms/op 1.18

by benchmarkbot/action

@dapplion dapplion merged commit 7afe0aa into master Sep 1, 2021
@dapplion dapplion deleted the tuyen/fix-rounding-syncParticipantReward branch September 1, 2021 13:26
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.

2 participants