Commit Graph

1132 Commits

Author SHA1 Message Date
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
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
Alex Stokes 9774a3d581
Helper function returns correct type of `Gwei` instead of indices 2019-03-13 17:01:47 -07: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 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
Danny Ryan e57bfaab7c
clean up state transition notes 2019-03-07 13:36:22 -07:00
Danny Ryan d00353534d
Merge branch 'dev' into epoch-start 2019-03-07 13:32:15 -07:00
Danny Ryan 6cf14884a8
epoch transition at start of epoch 2019-03-07 12:05:34 -07:00
Danny Ryan 8dec7d805c
reorder ssz types topologically 2019-03-07 11:02:13 -07:00
Hsiao-Wei Wang 250455a67e
Apply suggestions from code review
Co-Authored-By: djrtwo <dannyjryan@gmail.com>
2019-03-07 10:03:25 -07:00
Danny Ryan 987c741bea
fix state types 2019-03-07 09:44:55 -07:00
Danny Ryan b1baea2d28
Merge branch 'dev' into vbuterin-patch-7 2019-03-07 08:56:29 -07:00
vbuterin f9a07f7653
Fixed MIN_DEPOSIT_AMOUNT 2019-03-07 04:04:05 -06:00
vbuterin be4b912373
Added underflow checking to decrease_balance 2019-03-07 04:02:53 -06:00
vbuterin 0759e170a7
High/low balance separation
See #685 for reasoning
2019-03-07 01:38:03 -06:00
vbuterin ec12460b8b
Make wthdrawn validators immune to inactivity leak 2019-03-07 01:21:17 -06:00
vbuterin 663bc489b6
Added lexicographic tiebreaking 2019-03-06 22:54:52 -06:00
Danny Ryan 175dde7cf7
Merge branch 'dev' into patch-1 2019-03-06 15:56:35 -07:00
Danny Ryan 2f6e560e30
Merge branch 'dev' into vbuterin-patch-7 2019-03-06 15:07:20 -07:00
Alex Stokes ee2fbd0df7
Fix calls of `signed_root` 2019-03-06 13:48:06 -08:00
Dankrad Feist 81f48ea1c3 Also fix length of Deposit.proof 2019-03-06 21:11:50 +01:00
Dankrad Feist 9d175c9dc9 Merge branch 'dev' into patch-1 2019-03-06 17:28:09 +01:00
Carl Beekhuizen b4779cd83d
Apply suggestions from code review
Co-Authored-By: djrtwo <dannyjryan@gmail.com>
2019-03-06 08:55:39 -07:00
Carl Beekhuizen c9e06d31f3
Apply suggestions from code review
base_reward -> get_base_reward

Co-Authored-By: djrtwo <dannyjryan@gmail.com>
2019-03-06 07:29:06 -07:00
dankrad 776196e66d
Add tuple lengths
Adding tuple lengths in BeaconState objects (this changes merkleization/serialization as no length mixin required)
2019-03-06 14:46:52 +01:00
Danny Ryan b36e70040b
fix call to union 2019-03-05 16:18:41 -07:00
Danny Ryan b5f0509595
fix proposal slashing minor bugs 2019-03-05 11:29:40 -07:00
Danny Ryan be1cb4a850
Merge pull request #718 from ethereum/empty-base-reward
handle get_base_reward when no previous balance
2019-03-05 09:24:12 -07:00
Danny Ryan 0eacabc273
fix minor typo 2019-03-05 08:51:34 -07:00
Danny Ryan 99da6fe141
fix advance_slot ordering issue 2019-03-05 08:50:51 -07:00
Danny Ryan e2a0452108 fix previous root (#716) 2019-03-05 14:07:00 +01:00
Hsiao-Wei Wang ecb76420ec
`1e9` is float in Python, change it to `10**9`. 2019-03-05 17:30:42 +08:00
Danny Ryan d2f7fa9a7e
fix call to get_current_epoch 2019-03-04 19:09:31 -07:00
Danny Ryan bd936fa6ab
add missing return for justification/finalization reward deltas 2019-03-04 19:07:24 -07:00
Danny Ryan 02e8e89740
handle get_base_reward when no previous balance 2019-03-04 19:05:00 -07:00
Danny Ryan 0fdfbc473e
minor variable issues in helpers 2019-03-04 18:53:31 -07:00
Danny Ryan 0f274a906c
Merge branch 'vbuterin-patch-7' of github.com:ethereum/eth2.0-specs into vbuterin-patch-7 2019-03-04 18:02:46 -07:00
Danny Ryan 738acf0e05
fix calls for get_total_balance 2019-03-04 18:00:38 -07:00
Danny Ryan 47cca60148 handle when no attestations availble for crosslinking (#717) 2019-03-04 18:56:50 -06:00
Danny Ryan 66105b01e4
previous epoch uses -1 in all cases 2019-03-04 17:27:53 -07:00
Danny Ryan d4a4c73599
fix calls to get_attesting_indices 2019-03-04 17:17:31 -07:00
Danny Ryan 8802f57790
add missing var to get_attesting_balance calls 2019-03-04 17:11:38 -07:00
Danny Ryan f7397a5970
add xor def 2019-03-04 15:49:21 -07:00
Danny Ryan a561656b68
add get_state_root helper 2019-03-04 11:45:41 -07:00
Danny Ryan 5ac30fdf77
Merge branch 'dev' into vbuterin-patch-7 2019-03-04 09:50:07 -07:00
Danny Ryan c4c1903460
Merge pull request #709 from ethereum/vbuterin-patch-6
Unified deposit processing between genesis and transaction
2019-03-04 09:49:38 -07:00
Danny Ryan 831f04e3ea
separate our rewards/penalty deltas 2019-03-04 09:45:55 -07:00
Danny Ryan 908d7c42ad
pr feedback 2019-03-04 09:17:43 -07:00
terence tsao e2ce0d9583
Update 0_beacon-chain.md 2019-03-04 06:45:55 -08:00
vbuterin 5282b289cf
exits -> voluntary_exits 2019-03-04 04:49:24 -06:00
vbuterin 044c87fe39
fix State -> BeaconState 2019-03-03 22:41:23 -06:00
Danny Ryan 1444687798
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 20:14:03 -06:00
Danny Ryan cc146475d9
Merge pull request #694 from ethereum/proposer-next-epoch
make get_beacon_proposer_index safe for next epoch
2019-03-03 17:01:20 -07:00
Danny Ryan 0444c2e05e
Merge branch 'dev' into vbuterin-patch-7 2019-03-03 16:58:54 -07:00
Danny Ryan 146aef313e
Merge pull request #699 from ethereum/start_shard_bug
fix committee assignment bugs
2019-03-03 16:53:57 -07:00
vbuterin 38e166d4a3
More python typos! 2019-03-03 06:01:03 -06:00
vbuterin 805ea5dad5
Transfer from -> sender
Needed to avoid triggering errors in python
2019-03-03 05:59:11 -06:00
vbuterin 68bc91bb3a
Fixed custody bit participants typo 2019-03-03 05:56:57 -06:00
vbuterin 73f9ad0512
Added missing colon 2019-03-03 05:54:58 -06:00
vbuterin d0fc455a1f
Assimilated #649 2019-03-03 05:04:28 -06:00
vbuterin dcb0205adc
Merge branch 'dev' into vbuterin-patch-7 2019-03-03 04:30:51 -06:00
vbuterin 46b1d4eef5
Assimilated #697 2019-03-03 04:28:13 -06:00
Hsiao-Wei Wang 868359a674
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 04:00:09 -06:00
Hsiao-Wei Wang cd7c7228c9
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 03:59:12 -06:00
Hsiao-Wei Wang 72c28bc59a
Refactor `process_slashings` 2019-03-03 17:58:45 +08:00
Hsiao-Wei Wang 19924f3148
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 03:58:18 -06:00
Hsiao-Wei Wang 07599b3a45
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 03:57:48 -06:00
Hsiao-Wei Wang 1103fd1ee8
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 03:57:27 -06:00
Hsiao-Wei Wang fa613b401f
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 03:56:54 -06:00
Hsiao-Wei Wang 2d6697eb62
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 03:56:12 -06:00
Hsiao-Wei Wang c42cab87a7
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-03 03:55:20 -06:00
vbuterin fde66a7105
Update to make CC happy 2019-03-02 20:11:33 -06:00
protolambda f137f1ce90
fix randao mixes type, bytes32 like in function and state spec 2019-03-02 18:02:50 +01:00
vbuterin ce5599db2f
Made crosslink processing a function 2019-03-02 00:42:20 -06:00
vbuterin 0134e56010
Fixed table of contents 2019-03-02 00:40:43 -06:00
Hsiao-Wei Wang fa327a18ea
Add docstring 2019-03-02 13:51:48 +08:00
Hsiao-Wei Wang 00804da13e
Fix type hinting 2019-03-02 13:48:46 +08:00
vbuterin 4ad3529e4e
Finished epoch transition 2019-03-01 19:49:28 -06:00
vbuterin 2d4c8af489
Split up big function into two smaller functions 2019-03-01 19:34:26 -06:00
vbuterin 7c6232a602
Update 0_beacon-chain.md 2019-03-01 19:22:24 -06:00
vbuterin 4cc738dc53
Apply suggestions from code review
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 19:17:07 -06:00
Hsiao-Wei Wang e0b8eea7d6
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 19:12:31 -06:00
Hsiao-Wei Wang 46269310ee
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 19:12:21 -06:00
Hsiao-Wei Wang 6c1abbc2fc
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 19:12:11 -06:00
vbuterin b8d1003c2c
Updates to make HW and Danny happy 2019-03-01 19:11:13 -06:00
Hsiao-Wei Wang ec20edb80e
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 19:05:02 -06:00
Hsiao-Wei Wang 3d8e0f1920
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 19:04:55 -06:00
Hsiao-Wei Wang ff88d22f9a
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 19:04:49 -06:00
vbuterin 26179ede5f
branch -> proof 2019-03-01 19:01:40 -06:00
Hsiao-Wei Wang 0c24ca9bb0
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 18:59:55 -06:00
vbuterin 5ceec70dd3
Pythonize epoch transitions (in progress) 2019-03-01 07:59:52 -06:00
vbuterin 236298a8e4
Hard assert that the Merkle branch is valid 2019-03-01 03:58:18 -06:00
Danny Ryan 19665e4ca5
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-01 00:16:05 -06:00