Commit Graph

6328 Commits

Author SHA1 Message Date
Alex Stokes 3cd842a94d
Update specs/altair/beacon-chain.md 2021-05-27 11:39:29 -07:00
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