Commit Graph

6327 Commits

Author SHA1 Message Date
vbuterin
a89ecced1c Modify sync committee logic and parameters to reduce variance
Sync committee rewards as currently implemented significantly increase variance in proposer rewards: https://github.com/ethereum/eth2.0-specs/issues/2448

For example, if there are 200000 validators (6.4m ETH staked), then during each 1/4-eek (~54 hour) period there is a chance of 512/200000 that a validator will get accepted into the sync committee, so on average that will happen once every 200000/512 * 1/4 = 97.6 eeks, or close to two years. The payout of this "lottery" is 1/8 of that, or ~12.2 eeks (a bit less than four months) of revenue. This is much more severe than block proposing (a chance of 1/200000 per slot, or a lottery worth ~0.38 eeks of revenue once every ~3.05 eeks).

This PR makes three changes to cut make the sync committee lottery less drastic and bring variance closer in line with what is available from block proposing:

* Reduce the `SYNC_REWARD_WEIGHT` from 8 to 2
* Add a penalty for not participating in the sync committee, so that despite the first change the total net reward for participating vs not participating is only cut down by 2x
* Reduce the sync committee period from 1/4 eek to 1/8 eek (~27 hours)

With these three factors combined, the lottery reduces to ~1.5 eeks of revenue, on average occurring every ~48 eeks. Validators who are maximally unlucky (ie. never become part of a sync committee) only lose ~3.12% of their rewards instead of ~12.5%.

The compromises that this approach makes are:

* In the extreme case where >50% of proposers are operating efficiently, being in a sync committee becomes a net burden. However, this should be extremely rare, and in such cases validators would likely be suffering inactivity leak penalties anyway.
* Incentive to participate in a sync committee decreased by 2x (but this is IMO an improvement; sync committees are _not_ as important as proposals and deserve to have lower rewards)
* Minimum data syncing needed to maintain a light client increases by 2x (from 24 kB per 54 hours to 24 kB per 27 hours). A burden for on-chain light clients, but still insignificant for others.
2021-05-27 09:02:51 -06:00
Danny Ryan
d50a12cb18 Merge pull request #2449 from ethereum/fix-sharding-comments
add/update comments on shard blob/header/reference body field
2021-05-27 08:06:32 -06:00
Danny Ryan
1ea1d2259f Merge pull request #2451 from paulhauner/patch-27
Add clock disparity tolerance for sync subnets
2021-05-27 08:04:30 -06:00
Paul Hauner
48f989070d Remove naughty space 2021-05-27 15:30:44 +10:00
Paul Hauner
103d029a1a Add clock disparity tolerance for sync subnets 2021-05-27 15:28:51 +10:00
protolambda
1360860d1e add/update comments on shard blob/header/reference body field 2021-05-27 03:57:59 +02:00
Hsiao-Wei Wang
671ed36212 Merge pull request #2447 from ethereum/fix_get_sync_committee_signature 2021-05-26 12:05:43 +08:00
Hsiao-Wei Wang
cb008f2c1a Fix _get_sync_committee_signature helper. Should have used target_slot 2021-05-26 02:40:22 +08:00
Danny Ryan
fa3e017b65 Merge pull request #2442 from ethereum/fix-coverage-report
Generate coverage report on `minimal` config spec by default
2021-05-25 10:54:28 -06:00
Hsiao-Wei Wang
715e450e0b Generate coverage report on minimal config spec by default 2021-05-26 00:18:59 +08:00
Alex Stokes
f753ca3f9d Merge pull request #2437 from ralexstokes/clean-up-attestation-helper
Clean up outdated attestation helper
2021-05-25 09:18:56 -07:00
Diederik Loerakker
f492f3b196 Merge pull request #2441 from ethereum/default-spec
[pyspec] Use mainnet.py as the default spec
2021-05-25 17:54:20 +02:00
Hsiao-Wei Wang
74761db7a3 Fix lint error 2021-05-25 21:40:10 +08:00
Hsiao-Wei Wang
fc1af1cff3 [pyspec] Use mainnet.py as the default spec 2021-05-25 21:13:12 +08:00
Alex Stokes
c9f3780565 Clean up outdated attestation helper 2021-05-24 11:54:28 -07:00
Danny Ryan
f7da1a3834 Merge pull request #2432 from ethereum/bump-version
bump VERSION.txt to 1.1.0-alpha.6
2021-05-21 14:44:17 -06:00
Danny Ryan
b59a9a95a4 Merge pull request #2430 from ethereum/resource-unavailable
add resourceunavailable error code with more guidance
2021-05-21 14:44:06 -06:00
Danny Ryan
bca467c926 fmt 2021-05-21 14:36:43 -06:00
Danny Ryan
51bf8f3985 bump VERSION.txt to 1.1.0-alpha.6 2021-05-21 14:26:40 -06:00
Danny Ryan
5bf01c4298 add resourceunavailable error code with more guidance 2021-05-21 14:24:58 -06:00
Danny Ryan
a52d67de0f Merge pull request #2426 from ralexstokes/more-altair-fork-transition-tests
More Altair fork transition tests
2021-05-21 13:53:19 -06:00
Danny Ryan
378d167ee0 Merge pull request #2390 from ethereum/config-rework
Separation of Constant, Preset and Configuration variables
2021-05-21 13:49:19 -06:00
Danny Ryan
ba6d19308b Update tests/core/pyspec/eth2spec/test/helpers/attestations.py
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-05-21 13:44:35 -06:00
protolambda
e50d8d4391 Merge branch 'dev' into config-rework 2021-05-20 23:31:49 +02:00
Alex Stokes
b9ad8bca00 Update tests/core/pyspec/eth2spec/test/altair/transition/test_transition.py 2021-05-20 12:07:46 -07:00
Alex Stokes
d04ecf16b1 PR feedback and add two more test cases 2021-05-20 11:55:11 -07:00
Alex Stokes
240209915c Refactor attestation helper 2021-05-20 11:41:06 -07:00
Alex Stokes
1dfca0e677 Refactor block helper 2021-05-20 11:40:25 -07:00
Danny Ryan
e384686ec1 Merge pull request #2427 from ralexstokes/fix-altair-fork-unit-tests
Add Altair fork tests to test generators
2021-05-19 16:18:24 -06:00
Alex Stokes
df742ea8af add fork finality test with random participation 2021-05-19 12:16:24 -07:00
protolambda
1636a1df58 reduce duplicate combination code, and no in-place updates 2021-05-19 19:18:42 +02:00
Diederik Loerakker
6193c7c255 Update configs/README.md
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-05-19 19:08:59 +02:00
protolambda
c080324e08 set RNG for test case for consistent test outputs 2021-05-19 19:07:24 +02:00
Diederik Loerakker
76cc964a37 Update presets/README.md
Co-authored-by: Danny Ryan <dannyjryan@gmail.com>
2021-05-19 17:58:57 +02:00
protolambda
46bb8273df update ejection balance config references 2021-05-19 17:43:56 +02:00
protolambda
ff021da551 change line formatting, new refence as config var implicitly takes more space 2021-05-19 17:21:30 +02:00
protolambda
291168e1e3 clarify config/preset separation, address review comments by @djrtwo 2021-05-19 17:15:34 +02:00
Alex Stokes
a7346ae384 Add Altair fork tests to test generators 2021-05-18 18:05:07 -07:00
Alex Stokes
7eba1612cf Add fork transition test that finalizes across fork boundary 2021-05-18 17:43:34 -07:00
Alex Stokes
0ec1ec77b8 Expose attestation helper in pyspec tests 2021-05-18 17:25:51 -07:00
Danny Ryan
92a8ca73ab Merge pull request #2423 from ethereum/alpha.5
bump VERSION.txt to alpha.5
2021-05-18 16:07:21 -06:00
Danny Ryan
19a8076b89 bump VERSION.txt to alpha.5 2021-05-18 15:57:44 -06:00
Danny Ryan
ba551b572c Merge pull request #2422 from terencechain/patch-121
Altair fork: add a link
2021-05-18 15:57:00 -06:00
terence tsao
c03c72a543 Altair fork: add a link 2021-05-18 13:50:46 -07:00
protolambda
48e1ef193a update docs with config usage 2021-05-18 21:31:27 +02:00
protolambda
90c4a7599b fix lint 2021-05-18 20:53:04 +02:00
protolambda
925f0508ce test generator fixes 2021-05-18 20:13:19 +02:00
Danny Ryan
248363ce21 Merge pull request #2419 from terencechain/patch-120
Fix `PARTICIPATION_FLAG_WEIGHTS` to use correct head weight
2021-05-18 11:27:36 -06:00
protolambda
fb82472b46 update test generators 2021-05-18 18:48:58 +02:00
Diederik Loerakker
943d334173 Merge pull request #2421 from ericsson49/ericsson49/fix_sharding_process_block
Fix typing problem in `sharding.process_block`
2021-05-18 16:27:32 +02:00