Commit Graph

1492 Commits

Author SHA1 Message Date
dankrad c0f3453093 RANDAO reveal slashing, custody period staggering and integration of custody and RANDAO reveals (#880)
* Add RandaoRevealSlashing for early Randao reveals

* add some randao reveal slashing tests

* Unifying RANDAO reveal slashing and Custody reveal slashing; implemented more lenient penalty for not-to-early reveals

* Fix custody reveal domain

* Also test exposed_randao_reveals

* Re-add exposed_randao_reveals to validator initialization

* Fix tests

* Unified Randao Reveal slashing mechanism and Custody Reveal,
CUSTODY_PERIOD_TO_RANDAO_PADDING = EPOCHS_PER_CUSTODY_PERIOD

* Move exposed_randao_reveals into separate data structure to keep validator record clean

* new shiny staggered custody periods

* Fixes style and type hinting

* removes whitespace

* Cleans up multi-line conditionals

* Make RANDAO key reveal penalties proportional to block rewards

* Minor typos

* Minor typos

* Fixes off-by one error

* Removes unnecicary whitepsace

* Clean up comments; add test for key reveal too far in the future

* Reduce the CUSTODY_PERIOD_TO_RANDAO_PADDING again

* Fix max_proposer_slot_reward

* Fix types

* Move test

* Fix RandaoKeyReveal tests

* Move all RANDAO key reveal to phase 1

* Factor out signature checking

* Some fixes

* Update specs/core/1_custody-game.md

Co-Authored-By: dankrad <dankrad@ethereum.org>

* Addressing Vitalik's suggestions: Separate RANDAO and Custody key reveals; append the cleanup of RANDAO reveals instead of adding a new function

* Remove remnants of verify_custody_key

* RandaoKeyReveal -> EarlyDerivedSecretReveal

* Make penalty proportional to number of secrets already exposed

* Update specs/core/1_custody-game.md

Co-Authored-By: dankrad <dankrad@ethereum.org>

* Update specs/core/1_custody-game.md

Co-Authored-By: dankrad <dankrad@ethereum.org>

* Update specs/core/1_custody-game.md

Co-Authored-By: dankrad <dankrad@ethereum.org>
2019-05-03 17:30:55 +08:00
vbuterin 4ca2f11827
Custody game changes (#866)
* Custody game changes

1. Don't store the full chunk bits, instead only store a Merkle root. Increased history size complexity from `N` to `N + log(N)` but with the benefit of decreasing storage requirements from `N` to a single 32 byte hash.
2. `custody_bit` is computed as the first bit of the hash of the custody bits, not the xor. This allows us to more safely use functions with more risky security assumptions for computing the chunk mix.

* Update specs/core/1_custody-game.md

* Update specs/core/1_custody-game.md

* Update specs/core/1_custody-game.md

* Update specs/core/1_custody-game.md

* XOR aggregation before SHA256 to reduce number of hashes

* Simplifed get_chunk_bits_root

* standalone -> indexed

* Fix missing "data" and ToC
2019-05-03 17:20:54 +08:00
Danny Ryan d15ca4c50c
replace asserts in get_active_index_root and get_randao_mix with comment 2019-05-02 18:11:11 -06:00
Justin 9f2cdd9c78
Update 0_beacon-chain.md 2019-05-02 11:07:25 +01:00
Justin c761fbc318
Clean up verify_indexed_attestation
Cosmetic changes:

* Add 4 lines of comments (now every statement has a comment)
* Avoid unnecessary `assert` (the end goal for me is for `assert`s to be exclusive to the operation processing helpers).
* Merge `return`s into one (increase readability, reduce verbosity)
* Use shorter-named `bit_0_indices` and `bit_1_indices` helper variables

Substantive change:

* Remove the condition that `len(0_indices) + len(1_indices) > 0`. This condition is redundant in the context of `process_attester_slashing` because of `slashed_any`. It is largely artificial in `process_attestation` where validators are incentivised to maximise new attestations.
2019-05-02 09:24:24 +01:00
Danny Ryan b169c42339
fix underflows in generate_seed, get_randao_mix, and get_active_index_roots 2019-05-01 17:44:34 -06:00
terence tsao d28e5e4843
Update 0_beacon-chain.md 2019-05-01 16:26:18 -07:00
Alex Stokes faf36e056f
Add notes to compute fork choice at genesis 2019-05-01 16:10:01 -07:00
Danny Ryan 6242e54c0a
Merge branch 'JustinDrake-patch-11' of github.com:ethereum/eth2.0-specs into JustinDrake-patch-11 2019-05-01 17:06:23 -06:00
Danny Ryan 1bb9397b65
Merge pull request #1014 from ethereum/JustinDrake-patch-10
Add 32-byte graffiti
2019-05-01 16:30:02 -06:00
Danny Ryan ef72b7ec20
Merge branch 'master' into vbuterin-patch-2 2019-05-01 16:19:21 -06:00
Danny Ryan 002e27973c
alter get_winning_crosslink.. to have same function signature as get_crosslink_committee 2019-05-01 15:51:43 -06:00
Justin Drake e85678ac15 restore compute_committee 2019-05-01 15:21:38 +01:00
Justin Drake 7980cf3ef7 Fix 2019-05-01 15:07:55 +01:00
Danny Ryan a25103cefd
Merge pull request #1013 from terencechain/patch-69
Generate seed once for get_beacon_proposer_index
2019-05-01 07:56:57 -06:00
Justin Drake 9b24d06b2c Cleanup 2019-05-01 14:16:55 +01:00
Justin Drake 2e63a9b5a0 clean up 2019-05-01 13:29:03 +01:00
Justin Drake 5df79d7565 Get rid of state_transition.py 2019-05-01 13:14:10 +01:00
Justin Drake 591a2b47c8 Simplify state_transition.py 2019-05-01 12:08:15 +01:00
Justin 8b316c6db4
Start moving state_transition.py to state transitition spec
The state transition spec should be reasonably self-contained, limiting the amount of "magic" outside of it. This PR is a first step in this direction, specifically for operation processing.
2019-05-01 12:04:27 +01:00
Justin f62126d5ee
Update 0_beacon-chain.md 2019-05-01 09:34:09 +01:00
Justin 407902763c
Update 0_beacon-chain.md 2019-05-01 09:33:22 +01:00
Justin 427a53cdae
Remove get_state_root from state transition doc
Remove `get_state_root` from the state transition function spec because it is not used by the state transition function.
2019-05-01 09:24:51 +01:00
Justin bbcf5f0daa
Add 32-byte graffiti
Add 32-byte of arbitrary "graffiti" data in beacon blocks, in a similar vein to `extraData` in Eth1. To be used in wonderful and unpredictable ways (permissionless innovation by block proposers).
2019-05-01 09:19:54 +01:00
Justin Drake a0158c606e Expose get_commitee 2019-05-01 09:09:24 +01:00
Justin Drake a6e76ef9c6 Fix 2019-05-01 08:45:29 +01:00
Justin Drake 2e5ab130c1 Simplify presentation 2019-05-01 07:42:49 +01:00
Danny Ryan b3373a2d71
fix up some PR feedback and testing for #1009 2019-04-30 12:55:14 -06:00
terence tsao c5d6c045e6
Update 0_beacon-chain.md 2019-04-30 11:07:58 -07:00
Justin a40f37b9a2
Update 0_beacon-chain.md 2019-04-30 12:31:11 +01:00
Justin 60888c0c48
Update 0_beacon-chain.md 2019-04-30 12:27:45 +01:00
Justin a23c9f712d
Update 0_beacon-chain.md 2019-04-30 11:44:21 +01:00
Justin adfa014a30
Update 0_beacon-chain.md 2019-04-30 11:38:11 +01:00
Justin 73603f4ed6
Update 0_beacon-chain.md 2019-04-30 11:34:57 +01:00
Justin 66403ad853
Update 0_beacon-chain.md 2019-04-30 11:00:23 +01:00
Justin 09ed9aea98
Update 0_beacon-chain.md 2019-04-30 10:55:09 +01:00
Justin b19e7dbf0d
Update 0_beacon-chain.md 2019-04-30 10:44:29 +01:00
Justin 92140d199e
Update 0_beacon-chain.md 2019-04-30 10:41:09 +01:00
Justin bcd7a83af4
Update 0_beacon-chain.md 2019-04-30 10:39:18 +01:00
Hsiao-Wei Wang 59d7be60db
Fix `is_double_vote` and `is_surround_vote` 2019-04-30 15:19:11 +08:00
vbuterin c13c4c5c7b
Calculate historical start shards from state 2019-04-30 02:09:52 -05:00
Danny Ryan dc458bfd2b
Merge pull request #1004 from ethereum/JustinDrake-patch-10
Fix two effective_balance bugs
2019-04-29 12:06:27 -06:00
Danny Ryan 2348595f6d
Merge pull request #1006 from JSON/patch-1
Tidying up the test_gen readme
2019-04-29 11:58:19 -06:00
vbuterin 77d7aa7630
Attestation committee refactor
* Remove `get_crosslink_committees_at_slot` (that function's ugly man...)
* Make the "base" that everything works off instead be `get_crosslink_committee`
* Attestations store epoch, start shard and shard, no longer slot (slot can be calculated from the other three)
* Retaining start shard in attestations allows `get_attesting_indices` to peek much further back into the past, making it useful for slashings (Phase 1)
* Some two-layer-deep nested loops become one-layer-deep loops
2019-04-29 11:02:39 -05:00
Justin 9dd4b2110a
Fix two effective_balance bugs
* Initialisation bug: initial `effective_balance` be not greater than `MAX_EFFECTIVE_BALANCE`
* Hysteresis bug: do not prevent `effective_balance` to go from `MAX_EFFECTIVE_BALANCE - 1` to `MAX_EFFECTIVE_BALANCE`
2019-04-26 18:46:35 +04:00
Danny Ryan b69423f29b
Merge pull request #996 from ethereum/return_tuple
`_deltas` functions should return `Tuple` instead of `List`
2019-04-26 08:44:51 -06:00
Danny Ryan 48bdfd8642
Merge branch 'master' into hwwhww/clean_up 2019-04-26 08:40:50 -06:00
Danny Ryan b31c21b3a7
Merge pull request #1001 from ethereum/registry_test
Fix `process_registry_updates` and add `test_process_registry_updates`
2019-04-26 08:30:57 -06:00
Danny Ryan 02e0118d48
Merge branch 'master' into deposit_contract_description 2019-04-26 07:59:43 -06:00
Danny Ryan 2e79053223
fix minor typo 2019-04-26 07:59:12 -06:00
Danny Ryan 7b7f6414d9
Merge pull request #994 from terencechain/patch-68
Fixed a broken ToC link
2019-04-26 07:52:53 -06:00
Alex Stokes 2787fea5fe Update 0_fork-choice.md (#998)
Fix attribute access; this field has been renamed in the latest version of the phase 0 spec.
2019-04-26 20:50:27 +10:00
Hsiao-Wei Wang 649dbfdf6c
bugfix: missing validator 2019-04-26 14:43:05 +08:00
Hsiao-Wei Wang fc7d57eec6
PEP8-ish clean up 2019-04-25 16:03:02 +08:00
Hsiao-Wei Wang 6a92267527
`_deltas` functions should return tuple instead of list 2019-04-25 15:37:05 +08:00
Hsiao-Wei Wang 343454fe19
Adjust headers 2019-04-25 15:06:21 +08:00
Hsiao-Wei Wang c769eebff7
Modify the description 2019-04-25 15:02:14 +08:00
Hsiao-Wei Wang ff59a3eb77
Copy from ethereum/eth2.0-specs#936 2019-04-25 14:47:44 +08:00
Danny Ryan 768f3ed813
remove validator link refs from fork choice doc 2019-04-24 16:57:44 -06:00
terence tsao 0606689c2b
Update 0_deposit-contract.md 2019-04-24 14:38:58 -07:00
terence tsao 6a5405cccf
Update 0_fork-choice.md 2019-04-24 14:32:16 -07:00
Danny Ryan 777590434b
Merge branch 'dev' into JustinDrake-patch-20 2019-04-24 13:37:50 -06:00
Danny Ryan 2b999a6c7e
fix off by one error for eth1 data voting 2019-04-24 13:15:06 -06:00
Danny Ryan 20d65e040b
pr feedback 2019-04-24 11:31:24 -06:00
Justin b1e1510e21
Update 0_beacon-chain.md 2019-04-24 20:57:31 +10:00
Justin Drake 4734b22883 simplify 2019-04-24 15:32:43 +10:00
Justin Drake b361fdb385 bug 2019-04-24 15:29:46 +10:00
Justin Drake c37789dc5d Tests fixed 2019-04-24 15:27:47 +10:00
Justin Drake 55f042aa71 More fixes 2019-04-24 15:17:25 +10:00
Justin Drake df64eeefa0 Start fixing tests 2019-04-24 14:46:28 +10:00
Justin de01ffd38d
Merge branch 'dev' into JustinDrake-patch-14 2019-04-24 14:35:02 +10:00
Justin f2d885f0d8
Address Danny's comments 2019-04-24 14:23:51 +10:00
Danny Ryan 7b7b867e7d
Merge pull request #936 from ethereum/carl-patch-1
Enables transfers of balance proportions > 32 ETH
2019-04-23 12:24:13 -06:00
JSON cf1c78b241
Update 0_beacon-chain.md 2019-04-23 12:55:15 -05:00
Alex Stokes e26112af37
Update 0_beacon-chain.md
typo fix
2019-04-23 08:36:40 -07:00
Danny Ryan 5619e7df9c
Update 0_beacon-chain.md 2019-04-23 09:21:30 -06:00
terence tsao 2650a2c061
Update 0_beacon-chain.md 2019-04-23 07:16:52 -07:00
Carl Beekhuizen fe01b6f231
Merges dev into carl-patch-1 2019-04-23 13:39:19 +02:00
Danny Ryan 77af610185
Merge pull request #870 from ethereum/vbuterin-patch-10
Replace with empty instead of popping finished challenges
2019-04-22 15:30:18 -06:00
Danny Ryan d4a33dbcaa
add descriptions of typeof and default functions 2019-04-22 15:29:47 -06:00
Danny Ryan 59de05e3e3
Merge pull request #977 from ethereum/JustinDrake-patch-19
Fix activation queue bug
2019-04-22 11:29:42 -06:00
Danny Ryan d9b3021827
Merge pull request #971 from ethereum/vbuterin-patch-2
Signal non-final status of base reward and desired issuance goal
2019-04-22 11:15:10 -06:00
Danny Ryan 706191403c
Merge branch 'dev' into JustinDrake-patch-18 2019-04-22 09:48:43 -06:00
Danny Ryan 0079c635b6
Merge pull request #924 from ethereum/JustinDrake-patch-11
Remove serialization from consensus
2019-04-22 09:41:30 -06:00
Danny Ryan d648b091b5
lint 2019-04-22 09:33:46 -06:00
Danny Ryan 5744fef808
clean up some notes on deposits 2019-04-22 09:18:20 -06:00
Justin Drake 0bdd8e778b Add 0_deposit-contract.md 2019-04-22 23:29:19 +10:00
Justin Drake a103e79e67 Add 0_fork-choice.md 2019-04-22 23:20:48 +10:00
Justin 9404949015
Split off fork choice in a separate document 2019-04-22 23:18:17 +10:00
Hsiao-Wei Wang 1c5cc1299a
Update specs/core/0_beacon-chain.md
Co-Authored-By: JustinDrake <drakefjustin@gmail.com>
2019-04-22 20:49:07 +10:00
Justin 81ee59bca8
Update 0_beacon-chain.md 2019-04-22 16:34:50 +10:00
Justin 6903f2eec7
Update 0_beacon-chain.md 2019-04-22 16:17:14 +10:00
Justin Drake c123fb1b97 Single effective balance per review by Vitalik—significant simplification 2019-04-22 16:13:46 +10:00
Justin dc275f024d
Update 0_beacon-chain.md 2019-04-22 15:16:34 +10:00
Justin 0da60ba90d
Fix activation queue bug
Fix bug [flagged by @NIC619 and @hwwhww](https://github.com/ethereum/eth2.0-specs/pull/850#issuecomment-485275575) whereby the `activation_epoch` of validators dequeued since the finalized epoch was overwritten.

Cosmetic changes:

1) Remove `activate_validator` (there is no overlap between genesis and non-genesis activations)
2) Improve comments related to activation queue
2019-04-22 15:12:30 +10:00
terence tsao 08d921a6c9 Make crosslink_data_root comment more explicit (#973) 2019-04-21 15:48:02 +10:00
Diederik Loerakker 75fae6f311 Change sorted[-1] to max() (#972) 2019-04-20 18:13:45 +10:00
Justin Drake d6644edcc9 Fix test 2019-04-20 17:12:40 +10:00
vbuterin a2a737b728
Signal non-final status of base reward and desired issuance goal 2019-04-20 01:45:18 -05:00
Justin Drake 7642abf114 Fix| 2019-04-20 16:36:34 +10:00