Hsiao-Wei Wang
16c350ebcd
Merge pull request #2796 from etan-status/lc-aggregate
...
Rename `sync_committee_aggregate` > `sync_aggregate`
2022-01-13 21:07:50 +08:00
Danny Ryan
7b435bd470
Merge pull request #2797 from etan-status/lc-update-doc
...
Fix light client docs to match function signature
2022-01-11 06:57:19 -07:00
Etan Kissling
79c456b9f4
Fix light client docs to match function signature
...
In the light client docs a mentioning of a function trigger is lacking
the `genesis_validators_root` argument. This patch adds that argument
to the documentation to match the real function signature. It also
slightly improves the grammar.
2022-01-11 12:10:30 +01:00
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
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