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
Alex Stokes
859a7d743e
Only allow sync committee period calculation at period boundaries
2021-05-11 12:42:21 -07:00
Alex Stokes
f328f77e65
clarify fork upgrade conditions
2021-05-11 10:58:45 -07:00
Danny Ryan
a9cc036184
remove timely_head penalty
2021-05-11 11:48:26 -06:00
Danny Ryan
e31a2af87b
remove extra if
2021-05-11 08:15:04 -06:00
Danny Ryan
b1d0364105
Merge branch 'dev' into vbuterin-patch-11
2021-05-11 08:12:27 -06:00
Danny Ryan
3c609e02ea
pr feedback
2021-05-11 07:28:24 -06:00
Danny Ryan
a6b8574962
test
2021-05-10 16:18:42 -06:00
Danny Ryan
85198fabfa
lint
2021-05-10 13:26:43 -06:00
Danny Ryan
d8e2d19ecc
spelling
2021-05-10 13:01:31 -06:00
Danny Ryan
ff706e5c7a
add logic for handling sync committee off by one issue
2021-05-10 12:57:11 -06:00
Danny Ryan
1494fe6ace
add get_inactivity_penalty_deltas back in
2021-05-10 12:21:49 -06:00
Danny Ryan
cd78425570
lint
2021-05-10 10:30:47 -06:00
Danny Ryan
95e2aa6471
Merge branch 'dev' into dankrad-altair-review
2021-05-10 10:23:38 -06:00
Danny Ryan
dd9fb06d25
Merge branch 'dev' into vbuterin-patch-12
2021-05-10 07:38:32 -06:00
Alex Stokes
b336b710e9
Update specs/altair/beacon-chain.md
...
Co-authored-by: vbuterin <v@buterin.com>
2021-05-07 16:48:16 -07:00
vbuterin
d1bedbfbec
Update inactivity penalty deltas processing
...
Two main changes:
1. Inactivity scores are modified to decrease slowly for inactive validators when we are not in a leak, and quickly for active validators
2. The inactivity penalties are applied even not during a leak (note that inactivity _scores_ decrease when outside of a leak)
This has the effect that the inactivity leak "overshoots" the target of finalizing again, and keeps leaking balances a bit more. For inactive validators, this PR sets post-leak recovery to happen 3x faster than the during-leak increase, so if a validator loses 3% during a leak, if they stay offline they should expect to lose another 1% until their score decreases back to zero.
2021-05-07 11:05:27 -07:00
Alex Stokes
04a9595415
Add notes about sync committee stability
2021-05-07 10:06:44 -07:00
Alex Stokes
86104ea361
Use stable sync committee indices when processing block rewards
2021-05-07 09:55:21 -07:00
dankrad
2fc68c451e
Update specs/altair/beacon-chain.md
...
Co-authored-by: Alex Stokes <r.alex.stokes@gmail.com>
2021-05-06 22:55:55 +01:00
Dankrad Feist
ba2c717bf1
Remove PARTICIPATION_FLAGS
2021-05-06 22:55:17 +01:00
Danny Ryan
637cf0743c
Merge pull request #2376 from ralexstokes/adjust-sync-committee-subnet-count
...
Adjust subnet count to reflect smaller sync committees
2021-05-06 12:51:24 -06:00
Danny Ryan
b979ea144a
Merge pull request #2378 from ralexstokes/update-altair-sync-protocol
...
Updates to Altair light client sync protocol
2021-05-06 12:50:52 -06:00
Danny Ryan
13409dc1bc
Merge branch 'dev' into adjust-sync-comm-params
2021-05-06 12:43:11 -06:00
Danny Ryan
609172d790
Merge pull request #2370 from ralexstokes/simplify-sync-committee-aggregates
...
Simplify sync committee aggregates
2021-05-06 12:38:49 -06:00
Alex Stokes
4c73fec88e
convert `LightClientStore` to python object instead of SSZ object
...
this avoids the type overhead of having to define a max size for
the object's data and skips the overhead of serialization/consensus
for a type that does not need it
2021-05-06 10:52:48 -07:00
Dankrad Feist
81a8c2748f
Integrate get_inactivity_penalty_deltas into reward computation for better readability
2021-05-06 13:03:26 +01:00
Dankrad Feist
cf724daa7a
No inactivity penalty for untimely head
2021-05-06 12:42:05 +01:00
Dankrad Feist
cbf9f85537
Remove duplicate inactivity leak
2021-05-06 12:28:18 +01:00
Michael Sproul
ea6c042918
Altair: carry-over prev epoch participation
2021-05-06 10:55:10 +10:00
Dankrad Feist
b041a9b0d6
Further flag_index revert
2021-05-05 22:22:32 +01:00
Dankrad Feist
77524036f5
Revert "Flags to BitVector"
...
This reverts commit 786e611c71
.
# Conflicts:
# specs/altair/beacon-chain.md
2021-05-05 22:02:37 +01:00
Dankrad Feist
55471bc5d4
Revert "BitVector -> Bitvector"
...
This reverts commit df6bd1b6c3
.
2021-05-05 21:58:03 +01:00
Dankrad Feist
687641a79b
Remove extra variable
2021-05-05 21:55:36 +01:00
Dankrad Feist
227d1007e6
Update toc
2021-05-05 20:09:14 +01:00
Dankrad Feist
a382cf6d5c
Refactor participation flag list
2021-05-05 20:04:06 +01:00
Dankrad Feist
238a9b03fc
Correct confusing comments in "get_sync_committee_indices"
2021-05-05 18:09:36 +01:00
Alex Stokes
a2cf833437
Update specs/altair/beacon-chain.md
...
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-05-05 09:32:28 -07:00
Hsiao-Wei Wang
ded6d5bad4
Merge pull request #2377 from ralexstokes/altair-whitespace
...
clean up whitespace on altair files
2021-05-05 20:44:15 +08:00
Hsiao-Wei Wang
6a9b3671f0
Fix the type of `EPOCHS_PER_SYNC_COMMITTEE_PERIOD` and update the config files
2021-05-05 19:53:37 +08:00
Hsiao-Wei Wang
d383a14213
Fix ToC
2021-05-05 19:47:26 +08:00
Dankrad Feist
df6bd1b6c3
BitVector -> Bitvector
2021-05-05 12:26:37 +01:00
Dankrad Feist
786e611c71
Flags to BitVector
2021-05-05 12:05:32 +01:00
vbuterin
b310482bce
Update specs/altair/beacon-chain.md
2021-05-04 17:19:51 -07:00
vbuterin
9dcdbafba3
Reorganization of config params to put sync committee in one section
...
This may be marginally "cleaner" than the previous approach, keeping constants with the same topic together.
2021-05-04 17:19:15 -07:00
vbuterin
a562f2aeb4
"toward" -> "closer to" for penalty adjustments
...
Makes it clearer that even the Altair values are not final
2021-05-04 17:05:15 -07:00
Alex Stokes
3b80324119
Compute `LIGHT_CLIENT_UPDATE_TIMEOUT` in lieu of maintaining a constant
2021-05-04 13:47:46 -07:00
Alex Stokes
7a168be862
allow fault tolerance equal to threshold, not just above
2021-05-04 13:25:34 -07:00
Alex Stokes
eae64fd18c
clean up whitespace on altair files
2021-05-04 12:43:21 -07:00
Alex Stokes
7d236561bd
adjust subnet count to reflect smaller sync committees
2021-05-04 12:41:19 -07:00
Alex Stokes
9c3d5982cf
add documentation about duplicate pubkeys
2021-05-04 12:20:48 -07:00
Alex Stokes
7b33c1119a
simplify sync committee pubkey aggregation in altair
2021-05-04 12:19:33 -07:00
Alex Stokes
0438f2f27c
whitespace
2021-05-04 12:19:33 -07:00
Hsiao-Wei Wang
9980d2098d
Fix lint
2021-05-04 22:21:58 +08:00
Danny Ryan
80df9e6b0b
Merge branch 'dev' into altair-pass
2021-05-04 07:41:25 -06:00
Danny Ryan
053179cee9
comments and tests on altair
2021-05-04 07:39:22 -06:00
terence tsao
930ca61690
Fix lint (124 > 120 characters)
2021-05-02 20:47:57 -07:00
terence tsao
780121f9b0
Add backticks to the arguments in functional comments
2021-05-02 20:31:52 -07:00
Alex Stokes
68d6e4319a
Adjust sync committee size and duration
2021-05-01 16:30:23 -07:00
Danny Ryan
c3dfc2e085
Merge pull request #2362 from ethereum/sync-cleanup
...
Minor altair cleanups
2021-04-28 08:42:23 -06:00
Danny Ryan
e89fae86a6
Apply suggestions from code review
...
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-04-28 06:52:16 -06:00
Danny Ryan
9f74f1f9e5
minor sync committee cleanups
2021-04-27 15:06:45 -06:00
Danny Ryan
2628721f96
Merge pull request #2323 from ethereum/prepare_state
...
Simplify Altair "genesis"
2021-04-27 12:32:13 -06:00
Danny Ryan
c090d6aa21
Merge pull request #2352 from ralexstokes/add-altair-metadata-updates
...
Add `syncnets` data to Altair `MetaData`
2021-04-27 12:20:03 -06:00
Danny Ryan
ae429a38a0
add Modified comment
2021-04-27 12:11:15 -06:00
Alex Stokes
9bb3444c89
Add `syncnets` data to Altair `MetaData`.
2021-04-27 09:34:24 -07:00
ericsson
93378afcd0
Fix typing problem: `upgrade_to_altair` should use `phase0.get_current_epoch`
2021-04-23 18:21:29 +03:00
Alex Stokes
ebd16e1b79
add helper in p2p document to executable spec
2021-04-22 11:05:06 -07:00
Alex Stokes
3c07303c5c
Update specs/altair/p2p-interface.md
...
Co-authored-by: Danny Ryan <dannyjryan@gmail.com>
2021-04-22 10:34:16 -07:00
Alex Stokes
99b2cc2f3e
Clarify usage of field in data
2021-04-22 10:34:16 -07:00
Alex Stokes
f992a9ae65
Remove duplicate validation
2021-04-22 10:34:16 -07:00
Alex Stokes
360a1dd598
Respect subcommittees in gossip validations for Altair
2021-04-22 10:34:15 -07:00
Diederik Loerakker
9d0bfec2d6
Merge pull request #2345 from ralexstokes/use-markdown-parser-for-literate-pyspec
...
Use markdown parser for literate pyspec
2021-04-22 18:05:06 +02:00
Alex Stokes
a9e3ecabbd
demo spec comment feature
2021-04-21 18:49:51 -07:00
Alex Stokes
b870f92801
Update validator.md
2021-04-21 17:08:38 -07:00
Hsiao-Wei Wang
93f6a541ad
PR feedback from @djrtwo
2021-04-21 16:42:54 +08:00
Hsiao-Wei Wang
2063c96c80
Merge branch 'dev' into prepare_state
2021-04-21 16:34:29 +08:00
Hsiao-Wei Wang
66e1a2858f
Use `ALTAIR_FORK_EPOCH` instead of `ALTAIR_FORK_SLOT`
2021-04-21 00:24:44 +08:00
Hsiao-Wei Wang
baf4b73c18
Fix ToC
2021-04-20 23:38:48 +08:00
Hsiao-Wei Wang
666f847354
Update specs and test format note.
2021-04-20 23:37:53 +08:00
Hsiao-Wei Wang
57ac8c3f28
Fix doc
2021-04-16 11:34:50 +08:00
Hsiao-Wei Wang
b65566f184
Fix ToC
2021-04-15 15:41:12 +08:00
Hsiao-Wei Wang
8708ec4bb0
Update doc
2021-04-12 22:02:04 +08:00
Hsiao-Wei Wang
a8160f1634
Try to initialize state with pure Altair spec in tests
2021-04-10 00:53:37 +08:00
Adrian Sutton
08f9f81c1f
Update note about changes to slash_validator.
2021-04-07 11:44:24 +10:00
Danny Ryan
05581e759c
Merge pull request #2309 from terencechain/fix-spelling
...
Fix spelling
2021-04-05 18:48:40 -06:00
terence tsao
b2f42bf4d7
broadast -> broadcast
2021-04-05 17:05:59 -07:00
Alex Stokes
746d6453bc
Clean up unnecessary function arguments
...
Some of the inputs to some functions in the Altair validator guide
were required in earlier iterations of the aggregation scheme but are
no longer required in the current version. This commit cleans up these
functions.
2021-04-05 16:56:13 -07:00