Commit Graph

297 Commits

Author SHA1 Message Date
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
Danny Ryan 52e4ce3bcf
Merge pull request #2276 from barnabemonnot/altair_incentives
Modify incentives to preserve invariant
2021-04-05 12:23:17 -06:00
Alex Stokes bf7c61ff30
Merge pull request #2299 from ralexstokes/update-altair-p2p
Fix language with sync committee selection proofs
2021-04-05 11:03:36 -07:00
Hsiao-Wei Wang 8d60614728
Merge branch 'dev' into altair_incentives 2021-04-06 00:01:11 +08:00
Meredith Baxter 4a1126d916 Fix table formatting 2021-04-05 11:34:06 -04:00
Alex Stokes 9aaf548c37
Fix language with sync committee selection proofs 2021-04-02 18:37:30 -07:00
Justin 48fb9c39c2
Update beacon-chain.md 2021-04-02 15:05:54 +01:00
Justin 88d8f80957
Fix two bugs (and some cleanups)
Fix two bugs:

1) The participant reward (previously known as "inclusion reward") should not be proportional to `effective_balance` because a sync committee member is already chosen with probability proportional to the effective balance. Credit to @vbuterin.
2) The participant reward (previously known as "inclusion reward") was too large by a factor of `len(participant_indices)`, not taking into account the `for` loop.

Fixing these two bugs actually makes the code significantly simpler and cleaner :)

@barnabemonnot: Could you check the logic? :) If confirmed happy to update the tests.
2021-04-02 14:52:32 +01:00
Danny Ryan acfbd9375e
Merge pull request #2293 from ralexstokes/reorder-aggregation-conditions
Reorder Altair gossip validation conditions
2021-04-01 11:25:10 -06:00
Danny Ryan b81c64fa15
Merge pull request #2287 from mbaxter/altair/change-altair-fork-default
Set tmp ALTAIR_FORK_SLOT to max value
2021-04-01 06:39:14 -06:00
Danny Ryan b3f72075cb
Merge pull request #2294 from michaelsproul/sync-committee-balance
Simplify balance calc in `process_sync_committee`
2021-04-01 06:36:41 -06:00
Adrian Sutton 45c764618a
Fix missed rename from aggregate_and_proof to contribution_and_proof 2021-04-01 15:18:31 +10:00
Danny Ryan 28216cbcda
fix lint
Co-authored-by: Alex Stokes <r.alex.stokes@gmail.com>
2021-03-31 13:22:45 -06:00
Michael Sproul e8b758f9a6
Simplify balance calc in `process_sync_committee` 2021-03-31 17:21:51 +11:00
Alex Stokes b151adbd4e
Reorder Altair gossip validation conditions
Validate the `selection_proof` selects the incoming validator as an
aggregator before doing other checks like committee inclusion and
(relatively) expensive signature checks.
2021-03-30 16:18:14 -07:00
Hsiao-Wei Wang 2def461298
Merge branch 'dev' into altair_incentives 2021-03-31 00:53:58 +08:00
Danny Ryan ed6358a719
Merge pull request #2248 from hukkinj1/dev
Fix list indentation
2021-03-30 07:32:35 -06:00
Meredith Baxter 4b81cc21f4 Update altair/fork.md 2021-03-29 15:15:53 -04:00
Danny Ryan 41c5f1c4d6
Merge pull request #2279 from ethereum/ralexstokes-patch-2
Fix aggregation bits example in Altair validator guide
2021-03-29 12:37:47 -06:00
Danny Ryan 6f07448883
Merge pull request #2282 from benjaminion/altair-1
Make if condition more precise
2021-03-29 07:59:19 -06:00
Danny Ryan 48d619d299
Merge pull request #2277 from ralexstokes/fix-altair-val-guide
Fix use of block root in Altair validator guide
2021-03-29 07:59:02 -06:00
Danny Ryan ef4a5af645
Merge pull request #2278 from ethereum/ralexstokes-patch-1
Fix typo from earlier edit to field name
2021-03-29 07:55:09 -06:00
Danny Ryan a51c5ee4c2
Apply suggestions from code review
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-03-29 07:51:49 -06:00
terence tsao f73aa2f98d
Fix spelling: negotiatied -> negotiated 2021-03-28 17:06:12 -07:00
Taneli Hukkinen b02aed93a3 Fix another list's indent 2021-03-29 01:17:29 +03:00
Ben Edgington 64fc912ce7 Make if condition more precise 2021-03-27 16:13:46 +00:00
Alex Stokes ccfbf5c70a
Fix use of block root in Altair validator guide 2021-03-26 11:59:01 -07:00
Alex Stokes 875aac4c43
Fix aggregation bits example in Altair validator guide
The sub-index calculation was incorrect when demonstrating how to map a validator in the sync committee to a particular bit in the `aggregation_bits` in the sync committee aggregation scheme. The correct index is given in this commit.
2021-03-26 11:50:48 -07:00
Alex Stokes f9ba7f616e
Fix typo from earlier edit to field name
The field name `aggregation_bits` was changed from `aggregate_bits` to reflect the same usage under the attestation scheme. This PR cleans up left-over references to the old field name in the section header and TOC.
2021-03-26 11:38:47 -07:00
Justin 0481e920f0
Deprecate the use of PROPOSER_REWARD_QUOTIENT 2021-03-26 10:51:29 +00:00
Barnabé Monnot 71d03a411c Scale up weights; use existing constants and new PROPOSER_WEIGHT 2021-03-26 18:36:49 +08:00
Barnabé Monnot 59134fb0ae Modify incentives to preserve invariant 2021-03-26 12:18:51 +08:00
Alex Vlasov 020895e35d
Typing problems fixes (#2271)
* Typing problem fixed: `process_block_header` passes `Bytes32()` to `state_root` of `BeaconBlockHeader`, which type is `Root`

* Typing problem fixed in `initialize_beacon_state_from_eth1`: `len` returns an `int` value, while `deposit_count=uint64` of `Eth1Data` has type `uint64`

* Typing problem fixed in `process_rewards_and_penalties`: `numerator` of type `int` passed to `weight` parameter of `get_flag_index_deltas`, which has type `uint64`

* Typing problem fixed in `process_attestation`; `False` passes as `crosslink_success` parameter of `PendingAttestation`, which has type `boolean`. `False` is an instance of `(python.)bool` and is not an instance of `(ssz.)boolean`

* Typing problem fixed: `shard_data_roots` of `ShardTransition` has type `List[Bytes32]`, but its elements are used as if they were `Root` values, e.g. in `process_chunk_challenge` method: passed to `data_root` of `CustodyChunkChallengeRecord` which has type `Root`

* Typing problem fixed in `process_custody_final_updates`: `index` has type `int`, while `validator_indices_in_records` has type `Set[ValidatorIndex]`, so tesing whether `index in validator_indices_in_records` can be risky, depending on implementation details. `ValidatorIndex(index) in validator_indices_in_records` is a safer variant.

* Typing problem fixed: `slashed` parameter of `pack_compact_validator` has type `(python.)bool`, however in `committee_to_compact_committee` a value of `(ssz.)boolean` is passed as a value of the parameter

* Typing problem fixed: `inactivity_scores` is a `List[uint64,...]`, while it is intialized/appended with values of `(python.)int` type

* fixed according to @protolambda suggestions

* changed types of _WEIGHT constants and appropriate variables/parameters, according to @protolambda suggestions

* revert code formatting back

* Introduced ZERO_ROOT according to @protolambda 's suggestion

* Reverted back to , according to @protolambda comments
2021-03-25 22:03:21 +01:00
terence tsao d0b1ac1934
Update beacon-chain.md 2021-03-22 16:28:45 -07:00
Danny Ryan d49cddc1d8
Merge pull request #2255 from ralexstokes/update-subcommittee-name
Use different name for constant for sync committee aggregates
2021-03-22 11:34:32 -06:00
Danny Ryan bb85ef5a57
pr cleanup 2021-03-22 10:53:26 -06:00
protolambda 493dd17cc4
reduce justification and finalization Altair diff 2021-03-21 04:22:45 +01:00
Hsiao-Wei Wang 2ce389216d
Executable Altair validator guide 2021-03-19 23:38:59 +08:00
Alex Stokes 484fae3c2b
update constant name 2021-03-19 07:59:49 -06:00
Justin 053661ad20
Update beacon-chain.md 2021-03-19 10:04:46 +00:00
Alex Stokes 208a658305
Use different name for constant for sync committee aggregates 2021-03-18 15:53:57 -06:00
Danny Ryan e2c9a15aaf
Merge pull request #2246 from ethereum/sync_rewards
refactor sync committee rewards
2021-03-16 20:27:04 -06:00
protolambda 0fe5e1ef6e
update of req-resp, v2 sync methods, gossip topics 2021-03-17 00:54:29 +01:00
Alex Stokes 893134d2ab
Add validator guide and initial P2P spec for Altair 2021-03-16 17:37:42 -06:00
Justin Drake 27e88a2484 (WIP) refactor sync committee rewards 2021-03-16 15:30:25 +00:00
Danny Ryan 85d323c227
Merge pull request #2242 from ethereum/sync_aggregate
Define SyncAggregate to bundle sync committee bits and signature
2021-03-15 15:48:20 -06:00
protolambda 1eaa3c1742
Define SyncAggregate to bundle sync committee bits and signature, update tests to better isolate the state-change, introduce helper function for future tests, and update test doc 2021-03-15 21:55:36 +01:00
Danny Ryan 4afb6533a2
suffix ALTAIR on update constants 2021-03-15 11:46:53 -06:00
Hsiao-Wei Wang 8fdc0338ac
Merge pull request #2240 from ethereum/altair-genesis-tests
Enable Altair genesis tests + rename `SpecLightclient` -> `SpecAltair` + disable too slow test
2021-03-16 01:19:14 +08:00
Hsiao-Wei Wang 40fa73a311
Fork to Altair 2021-03-16 00:05:13 +08:00
Justin b4c1520bc2
Minor formatting fix 2021-03-15 15:02:57 +00:00
Danny Ryan b8bf7f0f80
Merge pull request #2236 from ethereum/justin_altair_cleanups
Altair cosmetic cleanups plus a couple substantive changes
2021-03-15 08:57:35 -06:00
Danny Ryan 2a0e0eb119
fix typo 2021-03-15 08:42:50 -06:00
Danny Ryan 178a994804
Apply suggestions from code review
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
2021-03-15 07:33:14 -06:00
Justin Drake e7ebd08d69 Altair cosmetic cleanups plus a couple substantive changes 2021-03-15 11:08:41 +00:00
protolambda c979e69003
Altair in description and titles 2021-03-14 22:54:30 +01:00
Danny Ryan 65dcf897c2
Merge pull request #2147 from ethereum/lightclient-sync-exe
Make `sync-protocol.md` pass the linter and add basic tests
2021-03-12 07:52:45 -07:00
Hsiao-Wei Wang c34eae33d0
Merge branch 'dev' into lightclient-sync-exe 2021-03-12 00:49:29 +08:00
Danny Ryan 79f351cfca
Merge branch 'dev' into leak-scores 2021-03-11 09:28:58 -07:00
Danny Ryan b9c95b722d
one more hf-1 to Altair conversion 2021-03-11 08:55:55 -07:00
Hsiao-Wei Wang b44e576e95
LIGHTCLIENT_PATCH/HF1 -> ALTAIR 2021-03-11 21:32:00 +08:00
Hsiao-Wei Wang 69489d1541
Rename folders and file names to `altair` 2021-03-11 21:12:46 +08:00