Commit Graph

4238 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
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
Danny Ryan
bca467c926 fmt 2021-05-21 14:36:43 -06:00
Danny Ryan
5bf01c4298 add resourceunavailable error code with more guidance 2021-05-21 14:24:58 -06:00
protolambda
e50d8d4391 Merge branch 'dev' into config-rework 2021-05-20 23:31:49 +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
terence tsao
c03c72a543 Altair fork: add a link 2021-05-18 13:50:46 -07: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
ericsson
441992c779 Fix typing problem in sharding.process_block 2021-05-18 14:14:43 +03:00
protolambda
ef8d6003d3 fix inactivity penalties markdown table 2021-05-18 10:07:35 +02:00
protolambda
2c7a68406f update config section markdown table header 2021-05-18 09:55:25 +02:00
protolambda
e4593d2d0c update with configs<>presets separation 2021-05-18 09:55:20 +02:00
protolambda
c1f1adb4d1 Custody Game constant/preset/config separation 2021-05-18 09:33:07 +02:00
protolambda
4941a97829 Sharding constant/preset/config separation 2021-05-18 09:33:05 +02:00
protolambda
7d59016bb8 Merge constant/preset/config separation 2021-05-18 09:31:07 +02:00
protolambda
7689ebb2bd Altair constant/preset/config separation 2021-05-18 09:28:09 +02:00
protolambda
b9ffd8f640 Phase0 constant/config/preset separation 2021-05-18 09:20:41 +02:00
terence tsao
a7344b3ee1 Fix PARTICIPATION_FLAG_WEIGHTS to use correct head weight 2021-05-17 21:35:43 -07:00
protolambda
fcf37895ba remove duplicate sharding config var, fix minimal-sharding-config fork epoch name 2021-05-18 00:48:59 +02:00
terence tsao
abda2dd5fa Sharding: move get_committee_count_per_slot to the outside 2021-05-14 12:02:46 -07:00
Danny Ryan
c87333face minor review from dankrad on release pr 2021-05-14 10:05:54 -06:00
Danny Ryan
110e6b38ee remove resourceunavailable for more discussion 2021-05-14 08:07:08 -06:00
Diederik Loerakker
5984fd74b3 Merge pull request #2393 from Nashatyrev/cosmetics/blob-subnet-name
[Sharding] Network: Calculate {subnet_id} for shard_blob_ subnets
2021-05-14 14:49:09 +02:00
Diederik Loerakker
a1e64c1ceb Merge pull request #2368 from Nashatyrev/fix/root-for-empty-shard-header
[Sharding] Calc the right root with respect to (slot, shard) for an empty PendingShardHeader
2021-05-14 14:44:56 +02:00
Danny Ryan
4cd9a6c710 Merge pull request #2385 from ethereum/execution-payload-testing
Execution payload tests
2021-05-14 06:40:40 -06:00
Diederik Loerakker
86792b9232 Merge pull request #2411 from ethereum/order-indices
ensure indices are ordered [source, target, head] everywhere
2021-05-14 14:38:26 +02:00
Danny Ryan
160b704f4a ensure indices are ordered source, target, head everywhere 2021-05-14 06:19:29 -06:00
Danny Ryan
5dd29b6659 fix tests and minor copy edit 2021-05-14 06:15:48 -06:00
terence tsao
1310105174 Return non-duplicated sync committee subnets 2021-05-13 16:22:28 -07:00
protolambda
d3160ba23a update ExecutionEngine protocol arg references 2021-05-14 01:07:22 +02:00
Danny Ryan
d38af7a158 Merge branch 'dev' into vbuterin-patch-11 2021-05-13 13:39:05 -06:00
Danny Ryan
699a3f837e pr feedback 2021-05-13 13:38:43 -06:00
Danny Ryan
a52565aa81 add random altair fork tests for better translation coverage + pr review 2021-05-13 13:21:43 -06:00
Danny Ryan
a2c8e0e6c6 Merge branch 'dev' into translate-participation-test 2021-05-13 06:33:06 -06:00
Danny Ryan
4a91c93962 add epoch processing tests for inactivity udpates 2021-05-12 15:06:32 -06:00
Danny Ryan
24f6e1e99f Merge branch 'dev' into vbuterin-patch-11 2021-05-12 12:42:46 -06:00
Danny Ryan
a469b467ff Merge branch 'dev' into keep-inactivity-function 2021-05-12 12:27:15 -06:00
Danny Ryan
5188671816 Update specs/altair/beacon-chain.md
Co-authored-by: dankrad <dankrad@ethereum.org>
2021-05-12 12:18:35 -06:00
Danny Ryan
a0f86d19d3 Merge pull request #2407 from ethereum/ralexstokes-patch-1
Update validator guide with restricted sync committee computation
2021-05-12 12:18:06 -06:00
Danny Ryan
9a0be85b1e Merge pull request #2406 from ethereum/sync-seed
remove sync committee seed and restrict period calculation boundaries
2021-05-12 12:17:42 -06:00
Alex Stokes
4286f85a68 Update validator guide with restricted sync committee computation 2021-05-12 11:05:41 -07:00
Danny Ryan
a8791f04c7 'get_sync_committee -> get_next_sync_committee 2021-05-12 09:44:13 -06:00
Danny Ryan
84830e8f26 Merge pull request #2131 from ethereum/bbr-ws
BlocksByRange under WS
2021-05-12 08:51:16 -06:00
Danny Ryan
1a7aa898ab Merge branch 'dev' into sync-seed 2021-05-12 08:46:11 -06:00
Danny Ryan
dff12dd644 Merge pull request #2400 from ethereum/sync-committee-off-by-1
add logic for handling sync committee off by one issue
2021-05-12 08:45:05 -06:00
Danny Ryan
6371707779 Apply suggestions from code review
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-05-12 08:40:34 -06:00