Commit Graph

6768 Commits

Author SHA1 Message Date
Mikhail Kalinin 6226be9e1e Implement TransitionStore and transition total difficulty computation 2021-06-01 16:28:30 +06:00
protolambda 2545c3e2d0
update pending header weights after epoch transition, fix committee index loop, fix header processing status assert, add todos for Altair-like shard attestation rewards 2021-05-31 18:55:08 +02:00
Diederik Loerakker 5a235d0251
Review suggestions
Co-authored-by: Anton Nashatyrev <Nashatyrev@users.noreply.github.com>
2021-05-31 17:03:06 +02:00
Mikhail Kalinin fd4369dc7c Add merge/fork.md with upgrade_to_merge definition 2021-05-31 19:30:54 +06:00
Diederik Loerakker d857935d6c
Merge pull request #2459 from ethereum/pyspec-build-var-fix
Pyspec builder internal config formatting fix
2021-05-31 15:28:54 +02:00
protolambda 8f005c18e5
when an untyped var is not the last config var, it needs a comma 2021-05-31 15:20:50 +02:00
protolambda bb3d581b13
update shard processing naming and doc structure 2021-05-29 23:55:16 +02:00
protolambda 31f48b7b3b
update sharding presets 2021-05-29 22:39:25 +02:00
protolambda 3665dbea8b
name (slot, shard) union wrapper ShardWork 2021-05-29 21:28:00 +02:00
Alex Stokes 042ca57a61
Merge pull request #2458 from ethereum/ralexstokes-patch-1
Clarify language on ssz Unions
2021-05-28 20:00:30 -07:00
Alex Stokes fa09d89648
Update simple-serialize.md 2021-05-28 18:13:22 -07:00
Diederik Loerakker 482b028b88
Merge pull request #2436 from terencechain/patch-122
Sharding p2p: minor fixes
2021-05-28 22:09:58 +02:00
Diederik Loerakker 12335a2702
Merge pull request #2456 from ralexstokes/clean-up-ssz-null
Clean up SSZ `null`
2021-05-28 22:05:24 +02:00
protolambda 72215412fa
For slow shard confirmation, assuming it is available via DAS, we could confirm the best pending header 2021-05-28 21:56:13 +02:00
Alex Stokes b763416a6b
remove unnecessary defn of `null` 2021-05-28 12:27:29 -07:00
Alex Stokes ef9b7125c2
whitespace 2021-05-28 12:27:19 -07:00
protolambda 38a0f4f211
update to wrap the union, clean up initialization and typing 2021-05-28 21:27:05 +02:00
Diederik Loerakker f08cc15b8d
Merge pull request #2445 from ethereum/union-type-update
Union type update
2021-05-28 20:20:52 +02:00
protolambda e5521af1f8
new union-based shard headers/commitments representation 2021-05-28 20:18:29 +02:00
protolambda d11586122f
update remerkleable, union support 2021-05-28 01:02:08 +02:00
Alex Stokes 6ecbc5e357
Add new file to spec infra 2021-05-27 12:21:04 -07:00
Alex Stokes b0500c3de1
Update specs/altair/beacon-chain.md 2021-05-27 12:06:01 -07:00
Alex Stokes 7a14e93c65
PR feedback 2021-05-27 12:02:44 -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
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
Anton Nashatyrev 414ef614cb Handle the case when a shard may not have a committee at slot.
Block is invalid if contains ShardBlobHeader lacking committee
Reject Gossip ShardBlobHeader and ShardBlob messages which lacks committee
2021-05-27 15:13:13 +03: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
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 671ed36212
Merge pull request #2447 from ethereum/fix_get_sync_committee_signature 2021-05-26 12:05:43 +08:00
Hsiao-Wei Wang a25bc832b9
Update section headers 2021-05-26 03:01:38 +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
Hsiao-Wei Wang 0142978b60
Rename `SyncCommitteeSignature` to `SyncCommitteeMessage` 2021-05-26 02:36:54 +08:00
protolambda d71c50f656
Union type update 2021-05-25 19:57:09 +02:00
Hsiao-Wei Wang b5f9b5d74f
Add more checks 2021-05-26 01:21:04 +08:00
Hsiao-Wei Wang 69f2a31406
Add some config invariant checks 2021-05-26 01:10:40 +08:00
Alex Stokes 4664ccbc42
Fix bug in Altair transition tests with missing state root 2021-05-25 09:58:36 -07: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 41ca149429
Explicitly define `bls.AggregatePKs` 2021-05-24 11:56:10 -07:00
Alex Stokes c9f3780565
Clean up outdated attestation helper 2021-05-24 11:54:28 -07:00
terence tsao 71d0d45343
Align table 2021-05-24 06:57:09 -07:00