Commit Graph

1556 Commits

Author SHA1 Message Date
Danny Ryan 0737494694
Merge branch 'dev' into vbuterin-patch-16 2019-03-19 11:04:11 -06:00
vbuterin c5ee74d5e0
Justin fixes 2019-03-19 11:21:17 -05:00
Danny Ryan 9e3079854f
Merge pull request #809 from ethereum/master
Backport CI testing into dev
2019-03-19 10:16:46 -06:00
vbuterin db92235d9e
Removed some no-longer-necessary functions 2019-03-19 09:34:37 -05:00
vbuterin dd39d25c86
Replace committee exponential backoff with max progress
Removes the mechanism that only rotates committees if blocks have been finalized and every shard has been crosslinked or at exponentially decreasing intervals, and replaces it with a rule that shard committees can only progress a maximum of 64 epochs at a time to preserve the invariant that maximum possible work required per epoch for a validator is O(1).
2019-03-19 09:32:06 -05:00
Justin 78f47f2069
Avoid underflow in voluntary exits 2019-03-19 12:23:17 +00:00
Justin e91036cfc9
Update 0_beacon-chain.md 2019-03-19 11:12:50 +00:00
Justin 0c383ce4a1
Update 0_beacon-chain.md 2019-03-19 11:11:18 +00:00
Justin 2b454d57f1
Update 0_beacon-chain.md 2019-03-19 11:08:17 +00:00
Justin dc4b652f72
Only slash active validators
This is to prevent a spam/DoS attack where validators with zero balance get "slashed" but no validator loses any balance.
2019-03-19 11:03:42 +00:00
Justin 0039613628
Simplify exit_validator
Minor cleanup
2019-03-18 19:08:41 +00:00
Justin d25c18b320
Update 0_beacon-chain.md 2019-03-17 11:48:47 +00:00
vbuterin 91a0c1ba5f Persistent committee size per slot reduced to max 128 (#734)
* Persistent committee size per slot target 128 max 256

Cuts down the cost of verifying a shard chain and aggregating signatures for a shard chain, and also makes the shard chain signatures more usable by light clients for verification as they would only need to keep track of a max 256-sized committee.
2019-03-17 11:44:19 +00:00
Hsiao-Wei Wang 6b82f5e999 Set `GENESIS_FORK_VERSION` to a `bytes4` constant (#792)
* Set `GENESIS_FORK_VERSION` to a `bytes4` constant

* Update 0_beacon-chain.md
2019-03-17 11:33:42 +00:00
Justin 390ece7fbe
Rename "vector" to "tuple" in SSZ spec (#794)
To be done in combination with #777.

Also:

* Define "fixed-size" and "variable-size" more rigorously
* Use `"` vs `'` consistently
* Add missing `"`
2019-03-17 11:33:29 +00:00
vbuterin 506fdf4042 Added FixedSizeList wrappers (#777)
* Added FixedSizeList wrappers

Requires corresponding changes to the spec pythonizer.

* FixedSizeList -> Vector
2019-03-17 11:33:19 +00:00
Sören Steiger 65162e0371 Update 0_beacon-chain.md (#791) 2019-03-16 20:56:10 +00:00
Sören Steiger 919b99e0ae Add missing word (#788) 2019-03-16 12:46:45 +00:00
NIC Lin 1a0938169b Fix `get_split_offset` (#790) 2019-03-16 12:45:39 +00:00
Justin e5ff0d59ad
Update 0_beacon-chain.md 2019-03-16 11:23:41 +00:00
Sören Steiger 6b118d2398 Add trailing comma (#789) 2019-03-16 12:16:47 +08:00
Justin 3944fd4b15
Clarify empty sums in BLS spec (#782)
Fix #775.
2019-03-15 18:18:37 +00:00
Justin 709e0df39f
Update 0_beacon-chain.md 2019-03-15 13:54:33 +00:00
Justin 1236e8e1fa
Update 0_beacon-chain.md 2019-03-15 13:53:24 +00:00
Justin 4b461838d2
`GENESIS_EPOCH - 1` for `previous_shuffling_epoch` and `previous_justified_epoch`
See item 26 in #675.
2019-03-15 13:32:24 +00:00
Justin e912ed7fca
Include recently slashed churn in churn queue
Addresses #527 in combination with #784.
2019-03-15 13:12:03 +00:00
Justin 4a8d748c55
Milder ejections
See item 22 in https://github.com/ethereum/eth2.0-specs/issues/675. Also partially addresses https://github.com/ethereum/eth2.0-specs/issues/527.
2019-03-15 13:05:46 +00:00
Justin d8d653dd94
Update 0_beacon-chain.md 2019-03-15 12:51:46 +00:00
Justin 96ab535704
Simplify and cleanup process_attestation
Improve readability and testability (by avoiding untriggerable `assert`). Fix #753.
2019-03-15 12:40:52 +00:00
Justin 58603f276e
Update 0_beacon-chain.md 2019-03-15 11:28:55 +00:00
Justin dac43eb564
Simplify deposits
Fix #760
2019-03-15 11:18:06 +00:00
Justin 4a5ef98813
Move to SHA256
SHA256 is de facto blockchain standard. Standardisation of the hash function is a prerequisite for [full standardisation of BLS12-381 signatures](https://github.com/ethereum/eth2.0-specs/issues/605). Blockchain projects are likely to provide a cheap SHA256 opcods/precompile, and unlikely to provide a Keccak256 equivelent. (Even WASM-enabled blockchains are likely to provide a SHA256 opcode/precompile since WASM does *not* natively support optimised SHA256 CPU instructions.) With Ethereum 2.0 embracing SHA256 the wider industry is more likely to converge towards a unified cross-blockchain communication scheme via Merkle receipts.

There are no security blockers with SHA256 (see comments by Dan Boneh [here](https://github.com/ethereum/eth2.0-specs/issues/612#issuecomment-470452562)).
2019-03-15 10:51:08 +00:00
Justin 68d1c74784
Update 0_beacon-chain.md 2019-03-15 09:45:20 +00:00
Justin 5d327b6364
Update 0_beacon-chain.md 2019-03-15 09:43:38 +00:00
Hsiao-Wei Wang 16123685af
Merge branch 'dev' into vbuterin-patch-3 2019-03-15 11:22:15 +08:00
vbuterin 24468de23b
Change get_shuffling to compute_committee
See #729 and #774 

The behavior now is that the first committee will consist of `get_permuted_index(0..n-1)`, the second committee `get_permuted_index(n....2n-1)`, etc.
2019-03-14 20:28:44 -05:00
Danny Ryan aeb5bb9b11
Merge pull request #755 from ethereum/dev
v0.5.0 release
2019-03-14 15:49:49 -06:00
Justin bbc5139115
Update 0_beacon-chain.md
Assuming `epoch % i` is a bug, and you meant `epoch + i`. @vbuterin
2019-03-14 19:01:32 +00:00
Justin 23d15f51a7
Update 0_beacon-chain.md 2019-03-14 18:57:17 +00:00
vbuterin 4442dfffb9
Fair proposer selection probability
Note that as a side effect, proposer selection becomes less predictable, but I don't feel like this is a large downside.
2019-03-13 21:42:49 -05:00
terence tsao c30018a716
Update 0_beacon-chain-validator.md 2019-03-13 18:45:52 -07:00
Alex Stokes 9774a3d581
Helper function returns correct type of `Gwei` instead of indices 2019-03-13 17:01:47 -07:00
Danny Ryan 15263c4e06
Merge pull request #769 from ethereum/v0.5-val-guide
update v-guide to v0.5.0
2019-03-13 13:53:15 -06:00
Danny Ryan 0e837c3386
update v-guide to v0.5.0 2019-03-13 12:17:21 -06:00
Hsiao-Wei Wang cdd59ae230
add return types to phase 1 functions
Co-Authored-By: djrtwo <dannyjryan@gmail.com>
2019-03-13 09:11:35 -06:00
Danny Ryan b40236685c
phase 1 nitpicks 2019-03-13 09:04:12 -06:00
Vitalik Buterin 34cd96be54 Added light client related files 2019-03-13 02:47:29 -05:00
Danny Ryan e8a5cd0747
fix up for tests 2019-03-12 12:32:11 -06:00
Danny Ryan 6e04b2118c
Merge branch 'dev' into store-justified-root 2019-03-12 12:08:59 -06:00
Danny Ryan acf0f76d60
Merge branch 'dev' into JustinDrake-patch-1 2019-03-12 11:48:05 -06:00
Danny Ryan a68b050053
set fork values in genesis as bytes4 2019-03-12 11:35:59 -06:00
Danny Ryan 7b829227ee
Merge branch 'dev' into JustinDrake-patch-4 2019-03-12 11:28:33 -06:00
Danny Ryan 25f6647ef2
minor formatting 2019-03-12 11:07:20 -06:00
Danny Ryan bdaba00a58
Merge branch 'dev' into JustinDrake-patch-7 2019-03-12 10:56:22 -06:00
Justin 0a349f8bdc
Update 0_beacon-chain.md 2019-03-12 15:58:31 +00:00
Hsiao-Wei Wang 0f120415b5
Update specs/core/0_beacon-chain.md
Co-Authored-By: JustinDrake <drakefjustin@gmail.com>
2019-03-12 16:49:04 +01:00
Justin d8a3048f2c
Update 0_beacon-chain.md 2019-03-12 12:36:09 +00:00
Justin 64ba3a3107
Epoch-based proposer slashing
See #675 item 25.
2019-03-12 12:24:37 +00:00
Justin 6c35934060
Update 0_beacon-chain.md 2019-03-12 10:34:24 +00:00
Justin addf7b77ab
Update 0_beacon-chain.md 2019-03-12 10:26:34 +00:00
Justin 578bf02b6f
Update 0_beacon-chain.md 2019-03-12 10:17:34 +00:00
Justin a7544864d5
Update 0_beacon-chain.md 2019-03-12 10:02:52 +00:00
vbuterin 5266bbd378
Honest validator doc update for mandatory deposits
Co-requisite with #758.
2019-03-11 23:38:22 -05:00
vbuterin 4410a55c4d
Mandatory deposits
Resolves #675 point 5.
2019-03-11 23:30:08 -05:00
Danny Ryan 3916643ef6
only update justified epoch/root if changed 2019-03-11 18:23:17 -06:00
Justin 3459ea0838
Check proposer is not slashed 2019-03-11 22:07:34 +00:00
Danny Ryan f06a3b82e7
cache current and previous justified root in state 2019-03-11 14:38:10 -06:00
Danny Ryan bf6bdbb021
cleanup minor var errors 2019-03-11 12:38:11 -06:00
Danny Ryan 36efb4498f
Merge branch 'dev' into vbuterin-patch-3 2019-03-11 10:44:18 -06:00
Justin 0704297480
Update 0_beacon-chain.md 2019-03-11 17:28:39 +01:00
Danny Ryan 9c2d34d876
Merge branch 'dev' into min-time-to-exit 2019-03-11 09:45:39 -06:00
Danny Ryan 2c7c48a4e0
Merge pull request #751 from ethereum/JustinDrake-patch-8
Disallow duplicate voluntary exits
2019-03-11 09:09:53 -06:00
Justin 2d3d7e33b3
Weaken criterion for attestation inclusion
The invariant that `get_current_epoch(state) in [get_current_epoch(state), get_previous_epoch(state)]` is preserved, as well as symmetry/fairness across blocks.
2019-03-10 21:58:32 +01:00
Danny Ryan 641bfc2f2c
Merge pull request #744 from ethereum/empty-attestation-bug
minor execution bugs
2019-03-10 08:26:21 -06:00
Justin d425ea26e2
Update 0_beacon-chain.md 2019-03-10 13:50:28 +01:00
Justin b7376aea5c
Disallow duplicate voluntary exits
Stricter processing of voluntary exits to remove an edge case
2019-03-10 13:49:37 +01:00
Justin 02428ec252
Do not check withdrawal credentials for existing validators
We should not invalidate blocks that contain a deposit with an inconsistent withdrawal credential as that would stall the chain.
2019-03-10 13:25:57 +01:00
Danny Ryan 902e65e072
add min persistent committee period resitriction on exits 2019-03-08 15:16:06 -07:00
Danny Ryan 0f3e0ef2ad
Merge pull request #743 from ethereum/JustinDrake-patch-9
Minor cleanups
2019-03-08 14:59:39 -07:00
Danny Ryan 30e64d7de6
fix get_inactivity_penalty function signature 2019-03-08 12:14:21 -07:00
Danny Ryan f88db44e81
skip proposer bonus if no attestation for v index 2019-03-08 12:07:57 -07:00
Danny Ryan f72e856620
Merge branch 'dev' into JustinDrake-patch-7 2019-03-08 10:46:36 -07:00
Danny Ryan 29014d554e
Merge branch 'dev' into JustinDrake-patch-9 2019-03-08 10:39:26 -07:00
Justin f253feeacf
Update 0_beacon-chain.md 2019-03-08 18:34:51 +01:00
Justin f180eb5e9e
Update 0_beacon-chain.md 2019-03-08 18:14:00 +01:00
Justin de60533d72
Update 0_beacon-chain.md 2019-03-08 18:13:05 +01:00
Danny Ryan f081f23c31
cache more than just state root at start of state transition 2019-03-08 09:48:46 -07:00
Justin ecd93468a2
Update 0_beacon-chain.md 2019-03-08 17:38:19 +01:00
Justin 3aedf1226a
Update 0_beacon-chain.md
Did I get the type casting OK @hwwhww?
2019-03-08 17:36:58 +01:00
Justin 1141467349
Update 0_beacon-chain.md 2019-03-08 17:28:00 +01:00
Danny Ryan 9b598c91b7
Merge branch 'dev' into JustinDrake-patch-7 2019-03-08 09:10:08 -07:00
Danny Ryan 7dc61c6126
Merge branch 'dev' into epoch-start 2019-03-08 08:51:19 -07:00
Justin a51d7d5db5
Update 0_beacon-chain.md 2019-03-08 10:50:45 +01:00
Justin 12695425c9
Use hash_tree_root everywhere
And get rid of merkle_root. This is possible because of SSZ tuples.
2019-03-08 10:32:40 +01:00
vbuterin 8dcc1ba930 Break LMD GHOST ties in favor of higher hash tree roots (#737) 2019-03-08 09:58:38 +01:00
Justin 1f147486fc
Semantic fork versions and signature domains
Fix #706
2019-03-08 09:57:09 +01:00
Justin e74c79e353
Update 0_beacon-chain.md 2019-03-08 09:08:30 +01:00
Justin 33a05109ea
Fair proposer sampling
I think we want `first_committee[epoch % len(first_committee)]` as opposed to `first_committee[slot % len(first_committee)]`. The reason is that if the shuffling happens infrequently and `len(first_committee)` is a multiple of `SLOTS_PER_EPOCH` then the proposers will not be sampled fairly.

Taking this logic further, we may want to avoiding always picking the proposer from `first_committee`, e.g.:

```
    validators_at_slot = []
    for crosslink_committee, _ in get_crosslink_committees_at_slot(state, slot, registry_change):
        validators_at_slot.append(crosslink_committee)

    return validators_at_slot[epoch % len(validators_at_slot)]
```
2019-03-07 23:56:03 +01:00
Justin 339a7fb63b
Update 0_beacon-chain.md 2019-03-07 23:14:47 +01:00
Justin 2d9724dbfc
Update 0_beacon-chain.md 2019-03-07 23:13:06 +01:00