Commit Graph

298 Commits

Author SHA1 Message Date
Etan Kissling 212eb00fc1
Document light client constants
This adds documentation about the unit and actual value of light client
specific constants, consistently with the rest of the spec.
2022-01-11 12:10:09 +01:00
Etan Kissling 48e19b15ae
Rename `sync_committee_aggregate` > `sync_aggregate`
This renames the `sync_committee_aggregate` field of `LightClientUpdate`
to `sync_aggregate` for consistency with the terminology in the rest of
the spec.
2022-01-11 11:22:39 +01:00
Hsiao-Wei Wang de892382db
Minor style fixes 2021-12-15 23:44:29 +08:00
Hsiao-Wei Wang 25d88fee24
Fix `process_light_client_update` 2021-12-14 22:05:09 +08:00
Hsiao-Wei Wang 2f618f7b48
Fix lint and presets 2021-12-14 21:38:58 +08:00
vbuterin 916193bd69
Updates in response to comments 2021-12-10 07:48:14 -06:00
Hsiao-Wei Wang 402c663b51
Fix function name leftover 2021-11-30 21:57:43 +08:00
vbuterin c30662b696
Consistently use sum instead of count(1) 2021-11-30 06:39:25 -06:00
Hsiao-Wei Wang 7de1495a42
Fix lint (#2750) 2021-11-30 06:38:42 -06:00
vbuterin 6fa19705fb
Clarified next sync committee comment 2021-11-29 07:05:01 -06:00
vbuterin 06af6296c5
Updated in response to comments 2021-11-29 07:04:05 -06:00
vbuterin c4f70970c4
Update specs/altair/sync-protocol.md
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
2021-11-28 08:31:48 -06:00
vbuterin 77188726de
Fixed ToC and get_active_header positioninf 2021-11-27 07:27:16 -06:00
vbuterin e104164960
Rework data structures (#2747)
1. Replace `header` and `finality_header` with `attested_header` (always the header signed by the committee) and `finailzed_header` (always the header verified by the Merkle branch)
2. Remove `LightClientSnapshot`, fold its fields into `LightClientStore` for simplicity
2021-11-27 07:25:27 -06:00
vbuterin 013e814d2d
Update sync-protocol.md 2021-11-26 15:32:37 -06:00
vbuterin 25f2efab19
Simplify sync protocol and update to calculate optimistic heads
1. Simplify `valid_updates` to `best_valid_update` so the `LightClientStore` only needs to store O(1) data
2. Track an optimistic head, by looking for the highest-slot header which passes a safety threshold
2021-11-26 15:11:19 -06:00
Ben Edgington 44fec310b3
Eth1 block hashes have type Hash32 (#2693)
* Eth1 block hashes have type Hash32

* Modify other forks as well

Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-11-23 08:20:26 -07:00
Hsiao-Wei Wang 1f7040b42b
Make previous_version=current_version 2021-09-30 16:41:05 +08:00
Danny Ryan af5eef37b2
fix am/pm issue 2021-09-24 12:29:34 -06:00
Danny Ryan 9f037180ba
add ALTAIR_FORK_EPOCH for mainnet configuration 2021-09-24 12:14:39 -06:00
Danny Ryan a3953a10fe
minor format 2021-08-19 10:11:02 -06:00
Hsiao-Wei Wang 59d8ee34f9
Update some "1.0" "2.0" wording 2021-08-19 23:24:04 +08:00
Danny Ryan 911a4169fe
spelling
Co-authored-by: Diederik Loerakker <proto@protolambda.com>
2021-08-19 07:59:05 -06:00
Danny Ryan 4c1156d504
rename eth1 and eth2 throughout specs and readme where reasonable 2021-08-18 17:13:24 -06:00
Hsiao-Wei Wang 93af122b2d
PR feedback from @ralexstokes and add single pubkey aggregate tests 2021-08-05 12:09:30 +08:00
Hsiao-Wei Wang 56c92136f2
Merge branch 'dev' into altair-bls-tests 2021-08-05 11:18:41 +08:00
Hsiao-Wei Wang 43a1617ffa
Ensure that the given PKs are valid PKs + fix typos 2021-08-04 21:25:37 +08:00
Hsiao-Wei Wang b262854bb1
Rename the `eth2_*` functions to `eth_` 2021-08-03 21:51:02 +08:00
Danny Ryan f7a2a973ac
Update specs/altair/p2p-interface.md
Co-authored-by: Alex Stokes <r.alex.stokes@gmail.com>
2021-07-21 15:51:59 -06:00
Danny Ryan 02a9fc460e
require aggregation bits to have at least one participant in sync contributions 2021-07-21 11:10:09 -06:00
Danny Ryan 6d0deddbe5
modify target sync committee aggregators to more sound 16 2021-07-12 09:03:43 -06:00
Danny Ryan 8140a789c4
Merge pull request #2509 from terencechain/patch-124
Rename a few instances of `signature` to `message`
2021-07-08 10:09:12 -06:00
Danny Ryan 88bb7562aa
Update specs/altair/beacon-chain.md 2021-07-07 16:11:58 -06:00
terence tsao 6f31077afa
Update `get_next_sync_committee` notes 2021-07-07 10:42:52 -07:00
terence tsao 3a59c1b789
Rename a few instances of signature to message 2021-07-07 10:04:26 -07:00
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
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
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 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
Hsiao-Wei Wang 8e07ece492
Minor rephrase 2021-05-12 14:11:33 +08:00
Danny Ryan 8bb0531f58
only give counter-weight penalty if leak. TMP 2021-05-11 16:23:31 -06:00
Danny Ryan 09cefa03f3
remov sync signature todo 2021-05-11 16:07:24 -06:00
Danny Ryan 468f42c545
Merge branch 'simplify-sync-committee-calc' into sync-seed 2021-05-11 16:03:19 -06:00
Danny Ryan 200c049778
fix seed calc issue 2021-05-11 15:55:33 -06:00
Danny Ryan 2747882776
use current_Epoch seed when calculating next_sync_committee 2021-05-11 15:18:18 -06:00
Danny Ryan 43ba615b75
Apply suggestions from code review 2021-05-11 14:13:22 -06:00