Commit Graph

303 Commits

Author SHA1 Message Date
ericsson 17c86177d9 Change types of BeaconBlockBody chunk_challenges and
chunk_challenge_responses to List[CustodyChunkChallenge, ...]
2020-06-18 01:43:41 +03:00
terence tsao 3eabcddb4c
Update validator.md 2020-06-17 13:24:00 -07:00
protolambda 9b60a9b799
Avoid state usage in p2p validation, compute committee count per slot for epoch as a whole 2020-06-17 20:19:32 +02:00
Danny Ryan fbf10a0db3
fix tests 2020-06-16 22:32:09 -06:00
Hsiao-Wei Wang 23cbbb1d08
Fix shard number assertion and refactor it 2020-06-17 09:48:47 +08:00
Hsiao-Wei Wang c8ae7d99f9
Fix after auto-merge 2020-06-17 09:05:44 +08:00
Danny Ryan a21f93646c
Merge pull request #1878 from ethereum/hwwhww/remove_digest
Remove `ShardState.transition_digest`
2020-06-16 16:40:52 -06:00
Danny Ryan 759185632f
Merge branch 'dev' into phase1-validator 2020-06-16 16:07:20 -06:00
Danny Ryan 2e0950560b
PR feedback 2020-06-16 16:03:36 -06:00
Hsiao-Wei Wang 7fba94a73d
Merge branch 'dev' into hwwhww/attestation-shard 2020-06-17 01:58:05 +08:00
Dankrad Feist e6e694fad9
Fix toc 2020-06-16 17:35:33 +01:00
Dankrad Feist 58935c19d6
Move constant 2020-06-16 17:23:09 +01:00
Dankrad Feist df1a932534
Rename misleading variable all_secrets_are_revealed 2020-06-16 15:19:45 +01:00
dankrad 4bc849bcc2
Update specs/phase1/custody-game.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-06-16 15:05:12 +01:00
dankrad 4b8b3f2cbc
Update specs/phase1/custody-game.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-06-16 15:05:01 +01:00
Dankrad Feist a4c2950c4a
Phase 1 validator guide stub. This is to start collecting important details with correct validator operation. 2020-06-16 14:48:00 +01:00
Danny Ryan a0175ca1b3
Merge branch 'dankrad-custody-256bit' into dankrad-custody-0.01bit 2020-06-16 07:15:00 -06:00
Hsiao-Wei Wang 3ee0761d17
Add `shard: Shard` field to `AttestationData` 2020-06-16 00:17:49 +08:00
Hsiao-Wei Wang 50ac8ebb0c
Fix DOMAIN_CUSTODY_BIT_SLASHING 2020-06-15 21:25:40 +08:00
Hsiao-Wei Wang 458d343497
Fix configs and put domain types to the same table 2020-06-15 21:15:11 +08:00
Danny Ryan f62125eaa6
add phase 1 on-time aggregation 2020-06-15 06:54:48 -06:00
Hsiao-Wei Wang 8697b30eea
Fix configuration 2020-06-15 15:30:32 +08:00
Hsiao-Wei Wang e80f6727dc
Merge branch 'dev' into dankrad-custody-256bit 2020-06-15 15:13:45 +08:00
Dankrad Feist f6d7dac30c
Change to 2**14 epoch (73 day) custody periods as per #1888 2020-06-13 15:15:37 +01:00
Dankrad Feist 42a9f1afdf
Fix Legendre bit computations 2020-06-12 23:44:36 +01:00
Dankrad Feist 04fb9926e8
Remove custody bits from phase 1 and tests 2020-06-12 17:16:08 +01:00
Dankrad Feist 29c1569251
Merge branch 'dev' into dankrad-custody-256bit
# Conflicts:
#	specs/phase1/beacon-chain.md
2020-06-12 12:29:57 +01:00
Dankrad Feist 398fc833b8
Fix TOC 2020-06-12 12:07:31 +01:00
Dankrad Feist 59b35afcd9
Refactor universal hash function 2020-06-12 12:04:30 +01:00
Dankrad Feist 65c3417f90
Fix replace_empty_or_append, remove assert False & test 2020-06-12 11:53:32 +01:00
dankrad 7bf491d49d
Update specs/phase1/custody-game.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-06-12 11:28:49 +01:00
dankrad 0e8bba2ce3
Update specs/phase1/custody-game.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-06-12 11:28:30 +01:00
dankrad d41b6a5775
Update specs/phase1/custody-game.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-06-12 11:18:07 +01:00
dankrad 31654d8bf4
Update specs/phase1/custody-game.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-06-12 11:17:44 +01:00
dankrad 7c6280aa8e
Update specs/phase1/custody-game.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-06-12 11:16:19 +01:00
Danny Ryan 85b227da78
Merge branch 'dev' into phase1-validator 2020-06-10 11:34:55 -05:00
Danny Ryan 4b8f132957
pr feedback 2020-06-10 11:32:02 -05:00
Dankrad Feist e46d5effe4
Add test for slashing after failing to respond to custody chunk challenge 2020-06-10 17:20:42 +01:00
terence tsao 0f6efcd50d
Update toc 2020-06-09 15:38:40 -07:00
terence tsao ef11e924fa
Update phase1 beacon-chain config table 2020-06-09 13:34:46 -07:00
Hsiao-Wei Wang dacf86a5c0
Remove `transition_digest` 2020-06-10 02:43:59 +08:00
Danny Ryan 65a739fe41
Merge branch 'dev' into phase1-validator 2020-06-08 15:50:51 -06:00
Hsiao-Wei Wang 41cfa7fdf6
Merge branch 'dev' into dankrad-custody-256bit 2020-06-09 01:39:51 +08:00
Hsiao-Wei Wang 2d895e9388
PR feedback from danny 2020-06-09 00:13:27 +08:00
Hsiao-Wei Wang 3b749d72c8
Merge branch 'dev' into hwwhww/shard_fork_choice 2020-06-08 23:57:19 +08:00
Hsiao-Wei Wang 9b3f45dfd0
Merge pull request #1875 from ethereum/hwwhww/shard_fork_choice_part2
Handle `beacon_parent_root` checks
2020-06-08 23:53:31 +08:00
Hsiao-Wei Wang e03a970eaf
PR feedback from danny: simplify `verify_shard_block_message` params 2020-06-08 23:49:24 +08:00
Hsiao-Wei Wang 435505746c
PR feedback from Terence: fix `get_shard_latest_attesting_balance`
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
2020-06-08 17:12:46 +08:00
Hsiao-Wei Wang a4cc189f2b
Apply PR feedback from Danny 2020-06-06 05:19:46 +08:00
Hsiao-Wei Wang a71c0a5ccc
Per #1704 discussion, remove `on_time_slot`: the given `beacon_state`
should be transitioned.
2020-06-06 02:39:47 +08:00
Hsiao-Wei Wang 2d4788fe7d
Fix `verify_shard_block_message`
Add check for `block.beacon_parent_root` per Terence's suggestion

Update `get_shard_transition`

1. Disable verification: it will be fix in v-guide
2. Use `on_time_slot` to compute offset_slots

Rework tests
2020-06-06 02:39:47 +08:00
Hsiao-Wei Wang a154d0c22b
Fix typo 2020-06-06 02:39:11 +08:00
Hsiao-Wei Wang 6f9c290bfb
Add TODO flag of latest message 2020-06-06 02:39:11 +08:00
Hsiao-Wei Wang f8597d2965
Add `get_pendings_shard_blocks` 2020-06-06 02:39:10 +08:00
Hsiao-Wei Wang 727353c054
Verify shard_block.slot fits the expected offset_slots 2020-06-06 02:39:10 +08:00
Danny Ryan 8a9ccc4f34
clarify attestations as coming from block.body when getting winning roots in validator guide 2020-06-05 12:12:12 -06:00
Danny Ryan 8e5c98ef3c
PR feedback 2020-06-05 12:01:53 -06:00
Danny Ryan 52de25048a
fix lihth client refs in val guide 2020-06-05 09:35:09 -06:00
Hsiao-Wei Wang 8afb93f5a3
Add `shard_block.slot` to seed 2020-06-04 11:19:04 +08:00
Hsiao-Wei Wang 26aae40941
Use epoch of the shard_block.slot for generating seed 2020-06-04 05:31:53 +08:00
Hsiao-Wei Wang d344521741
Bugfix: should set `shard` for empty proposal 2020-06-04 05:30:13 +08:00
Hsiao-Wei Wang c0108afe77
Use shard_block.slot to get seed for proposer selection 2020-06-04 05:06:04 +08:00
Danny Ryan b1ff00aab0
Merge branch 'dev' into phase1-validator 2020-06-03 12:18:17 -06:00
Danny Ryan 74204f795d
udpate validator guide to work with all updated phase 1 constructions 2020-06-03 12:16:39 -06:00
Hsiao-Wei Wang e1981a7bfd
`head_shard_root` -> `shard_head_root` 2020-06-04 01:00:52 +08:00
Hsiao-Wei Wang 58e75c27ed
Merge branch 'dev' into hwwhww/shard_fork_choice 2020-06-04 00:56:25 +08:00
Hsiao-Wei Wang eb21648146
Merge pull request #1858 from ethereum/hwwhww/get_start_shard
`get_start_shard` proposal
2020-06-04 00:46:12 +08:00
Danny Ryan d1647c28e0
Merge branch 'dev' into phase1-validator 2020-06-03 10:43:42 -06:00
Hsiao-Wei Wang 5c5cedd60d
Apply PR feedback from Danny and Terence 2020-06-03 22:31:16 +08:00
terence tsao 24427947b1
Moved transition_digest to last 2020-06-02 08:09:43 -07:00
Hsiao-Wei Wang 142ba17451
PR review from Danny 2020-06-02 18:08:28 +08:00
Danny Ryan d6435d0cbf
Merge branch 'dev' into dankrad-custody-256bit 2020-06-01 18:49:11 -06:00
Danny Ryan 3a4db69a20
Merge branch 'dev' into dankrad-custody-256bit 2020-06-01 18:45:22 -06:00
terence tsao 2a218520a1
Tidying up `shard_state_transition` 2020-06-01 14:31:45 -07:00
Hsiao-Wei Wang 5f10ac13bf
PR feedback from Terence and Danny: refactor `get_committee_count_delta` 2020-06-01 23:22:59 +08:00
Hsiao-Wei Wang 30f72dd696
Fix `get_shard` and `compute_shard_from_committee_index` calls 2020-06-01 23:15:16 +08:00
Hsiao-Wei Wang 9567c238d4
Merge branch 'dev' into hwwhww/get_start_shard 2020-06-01 18:17:58 +08:00
Hsiao-Wei Wang 92db6da508
Apply suggestions from Terence
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
2020-06-01 17:56:22 +08:00
Hsiao-Wei Wang 31127b7024
Merge branch 'dev' into hwwhww/phase1_refactor_part2 2020-06-01 17:50:49 +08:00
Hsiao-Wei Wang 6317bd68aa
PR feedback from Danny
Co-authored-by: Danny Ryan <dannyjryan@gmail.com>
2020-06-01 17:47:47 +08:00
Hsiao-Wei Wang 8e5db1b49f
Merge pull request #1856 from ethereum/hwwhww/verify_empty_shard_transition
Rework `Shard transition processing`
2020-06-01 17:47:00 +08:00
Hsiao-Wei Wang 8f570b461d
Merge pull request #1854 from ethereum/hwwhww/phase1_refactor
Some phase1 refactoring
2020-06-01 17:46:16 +08:00
Hsiao-Wei Wang 63de59d5f6
Merge branch 'dev' into hwwhww/shard_fork_choice_3 2020-05-30 03:57:17 +08:00
Hsiao-Wei Wang 327deb40b2
Adjust function blocks 2020-05-30 03:14:51 +08:00
Hsiao-Wei Wang cceeab2657
Combine `process_crosslinks` and `verify_empty_shard_transition` into `process_shard_transitions` 2020-05-30 03:13:20 +08:00
Hsiao-Wei Wang 9b9507c138
Merge branch 'dev' into hwwhww/phase1_refactor_part2 2020-05-30 03:11:28 +08:00
Hsiao-Wei Wang f70224b84e
Extract `compute_committee_source_epoch` 2020-05-30 03:09:42 +08:00
Hsiao-Wei Wang 2dc041807a
Implement `get_start_shard` 2020-05-30 01:26:00 +08:00
Hsiao-Wei Wang b16e6d7a86
PR feedback from Danny
Co-authored-by: Danny Ryan <dannyjryan@gmail.com>
2020-05-29 12:58:19 +08:00
Hsiao-Wei Wang bd9f983eea
Minor fix 2020-05-29 02:20:38 +08:00
Hsiao-Wei Wang 8ae7f5b6fa
Refactor `is_valid_indexed_attestation`: extract `verify_attestation_custody` 2020-05-29 01:24:17 +08:00
Hsiao-Wei Wang 7509ecb742
Add comments, minor refactoring 2020-05-29 00:13:08 +08:00
Hsiao-Wei Wang 19262888e4
Rename `verify_shard_transition_false_positives` to `verify_empty_shard_transition` 2020-05-28 21:55:49 +08:00
Hsiao-Wei Wang 8c9bbc48d8
Rework `is_shard_attestation`
Change it to `is_on_time_attestation` so that it could be reused in
`validate_attestation`.
2020-05-28 21:49:36 +08:00
Hsiao-Wei Wang ca48963032
Rename `head_shard_root` to `shard_head_root` 2020-05-28 21:38:11 +08:00
Hsiao-Wei Wang c437578280
Add `shard` field to `ShardBlock` 2020-05-28 21:32:27 +08:00
Danny Ryan 8eb1d2e940
Merge pull request #1844 from ericsson49/ericsson49/fix_shard_state_transition
`compute_shard_transition_digest` expects `Root` as a fourth parameter
2020-05-26 10:17:55 -06:00
Danny Ryan 753a25e5db
Merge pull request #1843 from terencechain/patch-99
Use `compute_previous_slot` for `slot - 1` occurrences
2020-05-26 10:02:14 -06:00
Ali Atiia 75787d92a8
broken link
broken link to custory-game.md
2020-05-25 16:45:44 -04:00
ericsson d3c26d6b8b `compute_shard_transition_digest` expects `Root` as a fourth parameter 2020-05-25 18:45:38 +03:00
terence tsao ce1d22d71c
Use helper `compute_previous_slot` 2020-05-23 15:22:49 -07:00
Danny Ryan 095b87c2a2
Merge branch 'dev' into v012x 2020-05-19 10:02:18 -06:00
Danny Ryan de03ebb143
many custody game formatting cleanups 2020-05-19 09:58:33 -06:00
Danny Ryan 78947548e6
add process_challenge_deadlines to process_epoch 2020-05-19 08:31:01 -06:00
Danny Ryan 1623086088
make get_validator_from_deposit for better code reuse across phase 0 and 1 2020-05-19 08:14:04 -06:00
Danny Ryan 7fc9dbf297
clarify comment for ShardTransition.shard_data_roots 2020-05-19 07:52:26 -06:00
Danny Ryan 3f0e58a8ed
add chunk challenge and response to block and operations 2020-05-19 07:50:05 -06:00
Danny Ryan 3851a26a0f
add phase 1 custody objects to custody-game.md 2020-05-19 07:34:06 -06:00
Danny Ryan 665538253a
Merge pull request #1807 from ericsson49/ericcson49/fix_is_valid_fraud_proof
is_valid_fraud_proof bug fixes
2020-05-18 13:37:13 -06:00
Danny Ryan 6f685a97e2
Merge branch 'dev' into v012x 2020-05-18 09:29:47 -06:00
Danny Ryan 7daa6c0039
Merge pull request #1810 from terencechain/patch-97
Make obvious that  `source_epoch` does not underflow
2020-05-18 08:12:50 -06:00
terence tsao 6f5cbe6182
Update shard-transition.md 2020-05-14 14:55:29 -07:00
Hsiao-Wei Wang f0c4623871
Apply PR feedback: add docstring 2020-05-15 01:05:32 +08:00
Hsiao-Wei Wang aa436d91b2
Use NO_SIGNATURE (0x00...) approach 2020-05-14 22:25:55 +08:00
Hsiao-Wei Wang 183b197888
Update specs/phase1/beacon-chain.md 2020-05-14 21:25:36 +08:00
terence tsao 23e2b83e20
Update specs/phase1/beacon-chain.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-05-14 06:21:44 -07:00
terence tsao f3448e51dd
Update specs/phase1/beacon-chain.md
Co-authored-by: Hsiao-Wei Wang <hwwang156@gmail.com>
2020-05-14 06:21:36 -07:00
terence tsao aef564733a
Update beacon-chain.md 2020-05-13 10:56:52 -07:00
ericsson b41410eade lint problem fixed 2020-05-13 16:25:16 +03:00
ericsson 4431e399b1 Fix bugs:
- `range(len(col))`` instead of `range(col)`
- `beacon_parent_block.body.shard_transitions` instead of `beacon_parent_block.shard_transitions`
- `shard_states[len(shard_states)-1]` instead of `shard_states[-1]`
2020-05-13 16:13:33 +03:00
Hsiao-Wei Wang cdd0ed0f7b
Update to IETF BLS draft-irtf-cfrg-bls-signature-02 2020-05-09 11:48:48 +08:00
Danny Ryan 08652f543b
Merge branch 'v012x' into empty-bits-case 2020-05-07 10:17:26 -06:00
Danny Ryan 38f29ba0a8
remove PERSISTENT_COMMITTEE_PERIOD in favor of SHARD_COMMITTEE_PERIOD 2020-05-05 11:44:53 -06:00
Hsiao-Wei Wang 79b1b4bdbe
Add `(shard, shard_root)` to `LatestMessage` 2020-05-05 21:42:18 +08:00
Hsiao-Wei Wang fca1bbccb9
Remove `get_filtered_shard_block_tree` 2020-05-05 21:42:13 +08:00
Hsiao-Wei Wang 8fafb6a9e5
Make `ShardStore` an independent object 2020-05-05 21:42:06 +08:00
Hsiao-Wei Wang cddf9cf114
Refactor 2020-05-05 21:42:00 +08:00
Hsiao-Wei Wang dab5a936c4
wip shard fork choice rule 2020-05-05 21:41:46 +08:00
Hsiao-Wei Wang ee4c866575
Merge branch 'dev' into dankrad-custody-256bit-merging 2020-05-05 15:22:36 +08:00
Hsiao-Wei Wang 7a770186b5
Reorg beacon-chain spec a bit 2020-05-02 02:32:37 +08:00
Hsiao-Wei Wang 4558c7db4e
Reorg the file structure 2020-05-02 02:32:37 +08:00
Hsiao-Wei Wang b43e24acb6
specs/phase1/fraud-proofs.md -> specs/phase1/shard-transition.md 2020-05-02 02:32:37 +08:00
Hsiao-Wei Wang ff85025113
PR feedback from terence 2020-05-02 02:32:37 +08:00
Hsiao-Wei Wang e758fb76c2
Check `head_shard_root` of all `transition_attestations` 2020-05-02 02:32:36 +08:00
Hsiao-Wei Wang 524ba166d1
[squashed] shard chain updates wip
Fix wrong field names

Fix `build_attestation_data` and other PR feedback from Danny and
Terence

1. Rename `get_previous_slot` to `compute_previous_slot`
2. Break down `build_empty_block` into
`get_state_and_beacon_parent_root_at_slot`, use it in
`build_shard_block`
3. Set defult `slot` to `shard_state.slot + 1` in `build_shard_block`

Update `verify_shard_block_message`: check beacon_parent_root at fork
choice rule stage instead of state transition

Fix  `beacon-chain.md`

1. Fix typo `attestation.slot == state.slot` -> `attestation.data.slot == state.slot` in `is_winning_attestation`
2. Check `verify_shard_transition_false_positives` **after** `process_operations`
3. Fix `shard_attestations` filter in `process_crosslinks`: since attestations come from block, should use `attestation.data.slot + MIN_ATTESTATION_INCLUSION_DELAY == state.slot`
4. [TBD] Allow empty `light_client_signature` to make the tests pass
5. [TBD] Add `is_shard_attestation`, filter out empty `ShardTransition()`

Rework `test_process_crosslink`

Add basic phase 1 `test_blocks`

Add more test cases

Revert `is_shard_attestation` and fix test cases backward compatibility.

Remove `test_process_beacon_block_no_shard_transition` and consider it as invalid case.
2020-05-02 02:32:31 +08:00
Hsiao-Wei Wang c8a473ba24
Apply suggestions from code review
Co-Authored-By: Danny Ryan <dannyjryan@gmail.com>
2020-05-02 02:32:30 +08:00
Hsiao-Wei Wang 40483b587b
[squashed] shard chain updates wip
Use `ShardBlock` in `shard_state_transition`

PR feedback

1. Rename `ShardState.data` -> `ShardState.transition_digest`
2. Rename `compute_shard_transition_data` to `compute_shard_transition_digest`
3. Add `assert state.slot > PHASE_1_GENESIS_SLOT` just in case, may move it later

Add `get_post_shard_state` as a pure function wrapper
2020-05-02 02:32:24 +08:00
Hsiao-Wei Wang 85d5a9abaf
[squashed] shard chain updates wip
PR feedback from Danny and some refactor

1. Add stub `PHASE_1_GENESIS_SLOT`
2. Rename `get_updated_gasprice`  to `compute_updated_gasprice`
3. Rename `compute_shard_data_roots` to `compute_shard_body_roots`

Apply shard transition for the skipped slots

Refactor `shard_state_transition`

Get `beacon_parent_root` from offset slot

Add more test

Add `verify_shard_block_message`

Add `> 0`

Keep `beacon_parent_block` unchanged in `is_valid_fraud_proof`

Remove some lines

Fix type

Refactor + simplify skipped slot processing
2020-05-02 02:31:54 +08:00
Hsiao-Wei Wang 9724cb832d
Apply suggestions from code review from @djrtwo
Co-Authored-By: Danny Ryan <dannyjryan@gmail.com>
2020-05-02 02:31:53 +08:00
Hsiao-Wei Wang afa12caf1f
Refactor `get_shard_state_transition_result` 2020-05-02 02:31:53 +08:00
Hsiao-Wei Wang 4e8a7ff115
[squashed] shard transition wip
Fix the wrong `get_shard_proposer_index` parameters order

Phase 1 WIP

Add shard transition basic test

Fix lint error

Fix
2020-05-02 02:31:10 +08:00
Hsiao-Wei Wang 849d3f83bf
Apply @terencechain 's review feedback
Co-Authored-By: terence tsao <terence@prysmaticlabs.com>
2020-05-02 02:31:09 +08:00
Hsiao-Wei Wang 247a6c8fca
Add `verify_fraud_proof` function 2020-05-02 02:31:09 +08:00
Hsiao-Wei Wang be50020bf8
Refactor `get_light_client_committee` to similar to
`get_shard_committee`
2020-05-02 02:31:08 +08:00
Hsiao-Wei Wang 5f69afea38
Make `shard_state_transition` more like beacon state_transition function 2020-05-02 02:31:08 +08:00
Hsiao-Wei Wang e9f1e4186d
Add `proposer_index` to shard block 2020-05-02 02:31:08 +08:00
Hsiao-Wei Wang feb27a14be
beacon-chain.md: Replace block wrapper with signable pattern 2020-05-02 02:31:08 +08:00
protolambda 09cae4b3cc
Handle empty-aggregation-bits case, and add tests. See #1713 2020-05-01 15:17:41 +02:00
Dankrad Feist 964bf42335
Fix type 2020-05-01 00:32:02 +01:00
Dankrad Feist d30f11a781
Fix lint 2020-05-01 00:16:00 +01:00