Commit Graph

213 Commits

Author SHA1 Message Date
Danny Ryan c61eeb8a27
optimize sync committee message gossip and caches 2021-06-22 12:31:02 -06:00
Danny Ryan fc1012b632
typo 2021-06-21 12:49:41 -06:00
Danny Ryan a61aa7968d
clean up 2021-06-21 12:48:44 -06:00
Nishant Das 67f1c2c2bd
Update validator.md 2021-06-17 23:05:23 +08:00
protolambda 5140b59c57
add missing parenthesis 2021-06-08 21:51:26 +02:00
Diederik Loerakker 8f8b5ab648
Merge pull request #2475 from ralexstokes/discriminate-sync-comm-msg
Add `message.topic` to gossipsub `message-id` in Altair
2021-06-08 21:47:06 +02:00
Alex Stokes a343680fd4
Add implementation note on message id fn 2021-06-08 14:29:08 -05:00
Alex Stokes f60f13964c
Harden topic serialization 2021-06-08 14:15:57 -05:00
Alex Stokes 25a2e3463e
Update specs/altair/p2p-interface.md
Co-authored-by: Diederik Loerakker <proto@protolambda.com>
2021-06-08 12:06:02 -07:00
Alex Stokes d64b4e7d24
Add `message.topic` to gossipsub `message-id` in Altair 2021-06-08 13:44:06 -05:00
Alex Stokes c7980d3cd0
Clarify p2p validation conditions for Altair sync committees 2021-06-08 13:34:16 -05:00
protolambda 64f217d3e1
update sync aggregate processing reference in validator doc 2021-06-08 01:05:50 +02:00
Danny Ryan cfc66a3794
patch tests 2021-06-07 16:36:18 -06:00
Danny Ryan 09b6fb0e64
ensure consistency about sync committees vs aggregates in naming throughout 2021-06-07 16:17:46 -06:00
Danny Ryan 30f2a07637
Merge pull request #2438 from ralexstokes/add-aggregate-pks-fn
Move BLS extensions to new file in Altair
2021-06-07 07:18:31 -06:00
Danny Ryan 335d7ce1dc
Merge pull request #2446 from ethereum/SyncCommitteeSignature-to-SyncCommitteeMessage
Rename `SyncCommitteeSignature` to `SyncCommitteeMessage` to avoid name conflicts
2021-06-07 07:06:14 -06:00
Danny Ryan 1d5c4ecffb
Merge pull request #2453 from ethereum/vbuterin-patch-11
Modify sync committee logic and parameters to reduce variance
2021-06-04 12:23:16 -06:00
Hsiao-Wei Wang 45d554aee8
Merge branch 'dev' into SyncCommitteeSignature-to-SyncCommitteeMessage 2021-06-03 22:13:53 +08:00
Danny Ryan b3f2635ce7
Merge pull request #2466 from terencechain/patch-123
Altair: missing `block_root` in `SyncCommitteeSignature`
2021-06-02 16:09:13 -06:00
Danny Ryan 45a71eb267
line length lint 2021-06-02 15:58:51 -06:00
terence tsao 65f48178b7
Include block_root in SyncCommitteeSignature 2021-06-02 14:41:24 -07:00
Justin d87e076ce3
Minor Altair cosmetic polishing 2021-06-01 17:05:12 +01:00
Hsiao-Wei Wang 65f8d3d296
Merge branch 'dev' into SyncCommitteeSignature-to-SyncCommitteeMessage 2021-06-01 22:05:10 +08:00
Alex Stokes b0500c3de1
Update specs/altair/beacon-chain.md 2021-05-27 12:06:01 -07:00
Alex Stokes 4d5bc83af4
Re-org files 2021-05-27 11:59:15 -07:00
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
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
Alex Stokes a08d23189e
Update specs/altair/validator.md
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-05-26 15:51:22 -07:00
Hsiao-Wei Wang a25bc832b9
Update section headers 2021-05-26 03:01:38 +08:00
Hsiao-Wei Wang 0142978b60
Rename `SyncCommitteeSignature` to `SyncCommitteeMessage` 2021-05-26 02:36:54 +08:00
Alex Stokes 41ca149429
Explicitly define `bls.AggregatePKs` 2021-05-24 11:56:10 -07:00
protolambda e50d8d4391
Merge branch 'dev' into config-rework 2021-05-20 23:31:49 +02:00
terence tsao c03c72a543
Altair fork: add a link 2021-05-18 13:50:46 -07:00
protolambda ef8d6003d3
fix inactivity penalties markdown table 2021-05-18 10:07:35 +02:00
protolambda e4593d2d0c
update with configs<>presets separation 2021-05-18 09:55:20 +02:00
protolambda 7689ebb2bd
Altair constant/preset/config separation 2021-05-18 09:28:09 +02:00
terence tsao a7344b3ee1
Fix `PARTICIPATION_FLAG_WEIGHTS` to use correct head weight 2021-05-17 21:35:43 -07:00
Danny Ryan c87333face
minor review from dankrad on release pr 2021-05-14 10:05:54 -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
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