Commit Graph

2053 Commits

Author SHA1 Message Date
Carl Beekhuizen d804cb307b
Removes defaults from Store to try get CI to pass 2019-06-18 21:50:40 +02:00
Carl Beekhuizen 3bcddf5e49
Removes defaults from Store to try get CI to pass 2019-06-18 20:59:17 +02:00
Hsiao-Wei Wang dd79a0edb5
Merge branch 'dev' into mypy 2019-06-18 08:24:23 -06:00
Carl Beekhuizen 28a3e54db0
Actually resolve some merge conflicts 2019-06-18 15:13:04 +02:00
Carl Beekhuizen 31a4700223
Merge conflicts on `dev` 2019-06-17 22:09:43 -04:00
Danny Ryan 02954e84fe
Merge branch 'dev' into JustinDrake-patch-14 2019-06-17 16:33:59 -06:00
Danny Ryan e80d363eed
Merge pull request #1157 from ethereum/JustinDrake-patch-13
Set MIN_ATTESTATION_INCLUSION_DELAY to 1
2019-06-17 16:29:55 -06:00
Danny Ryan 89d9d80b1c
move BASE_REWARDS_PER_EPOCH to constants 2019-06-17 16:12:47 -06:00
Hsiao-Wei Wang 9af9bbf42b
Merge branch 'dev' into mypy 2019-06-17 17:51:00 -04:00
Hsiao-Wei Wang 18ebd2aa90
Bytes32 -> Hash 2019-06-17 17:21:45 -04:00
Danny Ryan 207eb808a0
split constants vs configuration 2019-06-17 15:19:44 -06:00
Carl Beekhuizen 2ea6cede3e
Moves fork-choice objects away from SSZ 2019-06-17 10:48:33 -04:00
Carl Beekhuizen 20d8156f46
Merge branch 'dev' into executable_fork_choice
* dev:
  Fix #1173
  attestations: check shard, and check epoch earlier
2019-06-16 16:03:37 -04:00
Carl Beekhuizen 9f2d06b2e7
Somehow I had indented with 5 spaces everywhere. 2019-06-16 16:02:56 -04:00
Carl Beekhuizen f421850dc9
Fixes tests! Thanks @hwwhww! 2019-06-16 15:53:42 -04:00
Carl Beekhuizen 4deb311b71
Debugging 1st test 2019-06-16 12:17:31 -04:00
Carl Beekhuizen 5d10cd63c7
SSZ (partially) handles Dicts 2019-06-16 09:52:52 -04:00
Carl Beekhuizen 11edda64ed
Adds fork-choice to spec builder 2019-06-15 18:42:03 -04:00
Hsiao-Wei Wang e93ba51ef8
More clean up 2019-06-15 18:25:37 -04:00
Hsiao-Wei Wang 9b77ec11f8
Version: Bytes4 2019-06-15 17:32:52 -04:00
Hsiao-Wei Wang b772b03847
Handle `BLSPubkey` and `BLSSignature` 2019-06-15 17:23:44 -04:00
Hsiao-Wei Wang 00a68e28b5
Define Custom Types via function_puller 2019-06-15 16:57:50 -04:00
protolambda 75b469281e
fix linting issue 2019-06-15 18:05:01 +02:00
Justin Drake 7cd7659a4b Add comments to non-obvious container fields 2019-06-15 15:51:17 +01:00
Justin Drake ed748a7d76 Address Danny's comments 2019-06-15 15:09:50 +01:00
Danny Ryan a6230425b8
Merge branch 'dev' into container-cleanup 2019-06-14 10:36:41 -06:00
Justin 67d2585ec0
Fix #1173
The bug is that it's possible to include a participating validator which has custody bit one *without* specifying that validator in `attestation.aggregation_bitfield`. In other words, we want to check that every bit in `custody_bitfield` is zero whenever the corresponding bit in `aggregation_bitfield` is zero. Well spotted @protolambda
2019-06-13 21:01:10 +01:00
protolambda aabd2b08ad
attestations: check shard, and check epoch earlier 2019-06-13 15:51:22 +02:00
Alex Stokes f095ab43bb Update 0_beacon-chain.md (#1170)
minor typo fix
2019-06-13 10:40:02 +01:00
Hsiao-Wei Wang 48e8164e28
Add phase1 type hinting checks and fix many bugs 2019-06-12 20:08:19 -04:00
Hsiao-Wei Wang 7a366828ba
Make phase0 pass 2019-06-12 14:54:00 -04:00
Justin Drake 6a83205420 Minor copy edit 2019-06-11 15:29:34 +01:00
Hsiao-Wei Wang 6f526add79
flake8 length 2019-06-11 00:45:00 -04:00
Hsiao-Wei Wang 9f454185f8
WIP!
1. Use custom types in SSZ declaration
2. Casting
2019-06-11 00:44:54 -04:00
Justin Drake dc56d87eef Revert a couple of renamings 2019-06-10 21:16:51 +01:00
Justin Drake b60314e892 Merge branch 'deposit-contract-justin' of github.com:ethereum/eth2.0-specs into deposit-contract-justin 2019-06-10 16:03:08 +01:00
Justin Drake ef91ee5698 Address Danny's comments 2019-06-10 15:55:08 +01:00
Justin 05a35c7228
Tweak inclusion delay rewards and set BASE_REWARD_FACTOR
Substantive changes:

1) Split the inclusion delay reward between attester and proposer to add up to at most one base reward. This is analogous to the reward logic in `slash_validator`, and makes the `BASE_REWARDS_PER_EPOCH` constant include proposer rewards.
2) Double `BASE_REWARD_FACTOR` to 2^6 (addressing item 4 in #1054). When the total effective balance is 2^17 ETH then maximum annual issuance is a bit below 2^21 ETH. Maximum annual issuance happens when a) all validators make perfect attestations (matching source, target, head, as well as consistent crosslink data), b) all attestations are included as fast as possible (in particular, no skip blocks), and c) there are no slashings.

```python
BASE_REWARD_FACTOR = 2**6
SLOTS_PER_EPOCH = 2**6
SECONDS_PER_SLOT = 6
BASE_REWARDS_PER_EPOCH = 5
GWEI_PER_ETH = 10**9
MAX_TOTAL_EFFECTIVE_BALANCE = 2**27 * GWEI_PER_ETH
TARGET_MAX_ISSUANCE = 2**21 * GWEI_PER_ETH

def integer_squareroot(n: int) -> int:
    """
    The largest integer ``x`` such that ``x**2`` is less than or equal to ``n``.
    """
    assert n >= 0
    x = n
    y = (x + 1) // 2
    while y < x:
        x = y
        y = (x + n // x) // 2
    return x

MAX_REWARDS_PER_EPOCH = MAX_TOTAL_EFFECTIVE_BALANCE * BASE_REWARD_FACTOR // integer_squareroot(MAX_TOTAL_EFFECTIVE_BALANCE) // BASE_REWARDS_PER_EPOCH
EPOCHS_PER_YEAR = 365.25*24*60*60 / (SECONDS_PER_SLOT * SLOTS_PER_EPOCH)
MAX_REWARDS_PER_YEAR = EPOCHS_PER_YEAR * MAX_REWARDS_PER_EPOCH * BASE_REWARDS_PER_EPOCH

print(MAX_REWARDS_PER_YEAR / TARGET_MAX_ISSUANCE)
```
2019-06-10 15:14:32 +01:00
Justin 9bb0f25f18
Update specs/core/0_beacon-chain.md
Co-Authored-By: NIC Lin <twedusuck@gmail.com>
2019-06-10 13:41:28 +01:00
Justin 36a6c1bf1f
Set MIN_ATTESTATION_INCLUSION_DELAY to 1
See item 7 of #1054. We should consider increasing the slot duration as well.
2019-06-09 21:30:42 +01:00
Justin Drake 565f61dfaa Cleanup containers 2019-06-09 20:41:21 +01:00
Justin Drake 4ee00c9cbd Address HW's comments 2019-06-09 11:03:38 +01:00
Hsiao-Wei Wang 11f2cd189a Fix the Vyper contract link (#1154) 2019-06-08 23:48:34 +01:00
Justin Drake d1e589f11f Remove eth2 genesis in favour of genesis trigger 2019-06-08 19:00:50 +01:00
Carl Beekhuizen 35c03c5f3e
Adds review suggestions I missed 2019-06-06 11:45:22 +02:00
Carl Beekhuizen 60d9dc68c4
Apply suggestions from @djrtwo's code review 2019-06-05 21:49:30 +02:00
Carl Beekhuizen 38414c2e4e
Merge branch 'dev' into dankrad-patch-7
* dev:
  add  beaconblockheader back to toc
  Move crosslink above attestation data
  Change data structure to match beacon state order
  Reorganize data structures to mirror beacon state order
  Update 0_beacon-chain.md
2019-06-05 20:28:14 +02:00
Danny Ryan 1daff359ba
Merge pull request #1139 from terencechain/patch-76
Use get_total_balance for get_attestation_deltas
2019-06-05 10:14:28 -06:00
Danny Ryan 853c34eb60
add beaconblockheader back to toc 2019-06-05 09:50:15 -06:00
Carl Beekhuizen d761b6f041
Implements new SSZ types 2019-06-05 15:29:26 +02:00
Ivan Martinez c250296d8a
Move crosslink above attestation data 2019-06-05 15:07:50 +09:00
Ivan Martinez 65d2a50219
Change data structure to match beacon state order 2019-06-05 14:57:54 +09:00
Ivan Martinez e83500cef8
Reorganize data structures to mirror beacon state order 2019-06-05 14:52:09 +09:00
protolambda 9bdb18245e
remove tautological type definition 2019-06-04 18:22:42 +02:00
Diederik Loerakker fe9c708d83
Fix whitespace
Co-Authored-By: Danny Ryan <dannyjryan@gmail.com>
2019-06-04 15:31:20 +02:00
terence tsao 2246f1b934
Update 0_beacon-chain.md 2019-06-02 13:13:52 -07:00
protolambda e044305457
Merge branch 'dev' into ssz-impl-rework 2019-06-01 01:34:49 +02:00
Carl Beekhuizen 5155bc6c4f
Makes everything pass around 2019-05-30 22:57:18 +02:00
Danny Ryan f0314bec52
Merge branch 'dev' into JustinDrake-patch-13 2019-05-29 20:15:17 -06:00
Danny Ryan 2aea4b93d0
Merge pull request #1123 from ethereum/JustinDrake-patch-14
Avoid divisions by zero
2019-05-29 20:14:23 -06:00
Hsiao-Wei Wang 6ec59867ef
Fix linter errors 2019-05-30 09:53:46 +08:00
Justin 1c416541e1
Update 0_beacon-chain.md 2019-05-29 23:40:46 +03:00
Danny Ryan 6286fb3fb5
Merge branch 'dev' into JustinDrake-patch-13 2019-05-28 18:15:33 -06:00
protolambda 8737984e19
introduce back assert, modified to allow valid but non-effective calls 2019-05-28 16:05:25 +02:00
Carl Beekhuizen bfa45e06f0
merge dev -> d-p-7 2019-05-28 11:15:17 +02:00
Carl Beekhuizen fd05b6e364
Minor bugfixes 2019-05-28 09:58:51 +02:00
protolambda 0e9a047b1d
Merge branch 'dev' into ssz-impl-rework 2019-05-28 00:42:35 +02:00
protolambda f3088884b3
Minor adjustments + getting the beacon spec doc ready 2019-05-27 20:29:53 +02:00
Danny Ryan d3d8b36365
Merge branch 'dev' into v06x-to-dev 2019-05-27 11:09:52 -06:00
Danny Ryan 31c02ebcab
Merge pull request #1116 from ethereum/hwwhww/phase1_withdrawable
Clean up `process_penalties_and_exits` and fix ToC
2019-05-27 09:33:43 -06:00
Michael Sproul a82a6f9a1a
Sort attester slashing indices to avoid arbitrary ordering
Closes #1125
2019-05-27 17:36:20 +10:00
Carl Beekhuizen f7f069d6b5
Bug fixes and cleanup of 2_shard-data-chains 2019-05-26 19:41:36 +02:00
Justin cdfb886c22
Avoid divisions by zero
Possible fix to avoid four cases of divisions by zero:

* `return state.validator_registry[index].effective_balance // adjusted_quotient // BASE_REWARDS_PER_EPOCH`
* `rewards[index] += get_base_reward(state, index) * attesting_balance // total_balance`
* `validator.effective_balance * min(total_penalties * 3, total_balance) // total_balance`
* `rewards[index] += base_reward * attesting_balance // committee_balance`

See also #1107.
2019-05-26 18:42:37 +03:00
Carl Beekhuizen a7dbbafc92
Integrates shard-data-chains 2019-05-26 14:14:48 +02:00
vbuterin 3b4d9b7a85
Class-ified the type definitions 2019-05-25 16:14:52 -04:00
Carl Beekhuizen f6ce817f24
merge dev->dankrad-patch-7 2019-05-25 15:57:28 +02:00
protolambda 81cb4a23b3
update some common usage of SSZ types, as a start 2019-05-25 00:10:06 +02:00
Justin d805fb5084
Simplify deposits 2019-05-25 00:35:17 +03:00
Danny Ryan 28b76bcd4c
a number of minor fixes in phsae 1 2019-05-24 11:59:22 -06:00
Carl Beekhuizen ac9564c2b7
Adds Insert-into-label functionality 2019-05-24 16:51:21 +02:00
Carl Beekhuizen d41bc67ec8
merge dev -> dankrad-patch-7 2019-05-24 14:56:10 +02:00
Hsiao-Wei Wang 0f7abfa4ce
Update specs/core/1_custody-game.md
Co-Authored-By: Carl Beekhuizen <carl.beek@gmail.com>
2019-05-24 02:54:41 +08:00
Hsiao-Wei Wang 650c4244bd
Things are different after rebasing #1035 2019-05-24 01:35:51 +08:00
Danny Ryan c13421a9a7
type hinting for fork version
Co-Authored-By: Hsiao-Wei Wang <hwwang156@gmail.com>
2019-05-22 16:52:44 -04:00
Carl Beekhuizen 9058647b67
flake8v3.7->flake8v3.5 2019-05-22 10:28:03 +02:00
protolambda 6b5f4b44ea
avoid zero constant for deposits fork-version, just default to it 2019-05-22 01:39:20 +02:00
protolambda b919d08ab2
comment on the deposit signature being soft-rejected 2019-05-22 00:07:52 +02:00
Danny Ryan b075a7a0ab
add bls_domain to toc 2019-05-21 11:33:52 -06:00
Danny Ryan 847fcf52cc
utilize bls_domain directly for deposits 2019-05-21 11:30:38 -06:00
Danny Ryan 7a9097ec23
Merge branch 'dev' into fix-deposit-forkv 2019-05-21 11:04:13 -06:00
Carl Beekhuizen 24c4d21d5e
Minor edits + PEP8 2019-05-21 12:41:24 +02:00
Carl Beekhuizen 6b062405c9
merge dev -> carl-exec-phase1 2019-05-20 20:59:08 +02:00
Danny Ryan c0e15f14cc
Merge pull request #1099 from ethereum/vbuterin-patch-4
Updated get_custody_chunk_count
2019-05-20 09:53:33 -04:00
Danny Ryan 14c4d63f2a
Merge pull request #1097 from ethereum/vbuterin-patch-3
Crosslinks store start and end epoch
2019-05-20 09:53:24 -04:00
Hsiao-Wei Wang 83123a33da
Set genesis_state.latest_block_header with `body_root` of empty BeaconBlockBody (#1098) 2019-05-20 17:16:20 +08:00
Carl Beekhuizen cfed4bb41c
Adds missing functions 2019-05-20 10:50:07 +02:00
Justin 2018dd83f5
Update 1_custody-game.md 2019-05-20 09:29:09 +01:00
Carl Beekhuizen 725dcf27f5
Hella bug-fixes and PEP8 2019-05-20 09:47:44 +02:00
vbuterin c14452bcf4
Updated get_custody_chunk_count
Co-requisite with #1097
2019-05-19 19:44:12 -04:00
vbuterin 85c1654456
Crosslinks store start and end epoch
Solves #1034
2019-05-19 09:33:01 -04:00
Danny Ryan 46d30048a6
Merge pull request #1035 from ethereum/vbuterin-patch-2
Allow multiple bit challenges, and recover withdrawability
2019-05-17 13:56:10 -04:00
vbuterin 24edca3456
Fix to make Danny and hww happy 2019-05-17 13:52:23 -04:00
Justin 694b31b934
Update 0_beacon-chain.md 2019-05-17 06:11:39 -04:00
Justin f19188816b
Update 0_beacon-chain.md 2019-05-17 06:07:38 -04:00
Justin 05f9dc7baa
Fix #1090
Avoid signed integer
2019-05-17 05:59:01 -04:00
Carl Beekhuizen c10fb92776
Merge dev -> dankrad-p-7 2019-05-15 10:36:01 +02:00
Justin c60635d2c9
Update 0_beacon-chain.md 2019-05-14 06:15:03 +01:00
Danny Ryan 5ba90d68e1
add flag for validate state root 2019-05-13 16:53:28 -04:00
Danny Ryan a0a2aa90de
lint 2019-05-13 16:40:45 -04:00
Danny Ryan 27c8e41b32
Merge branch 'dev' into JustinDrake-patch-14 2019-05-13 16:29:29 -04:00
protolambda 08faa86d70
POC ssz types spec build + update spec defs, typing still needs work 2019-05-12 23:56:53 +02:00
terence tsao ba1949b2bc
Update 1_custody-game.md 2019-05-12 13:46:17 -07:00
Danny Ryan 9bd771f787
Merge pull request #1075 from jrhea/patch-1
get_genesis_beacon_state is not defined in the deposit contract
2019-05-12 08:56:37 -06:00
Danny Ryan e85847719f
use relative path for beacon chain link 2019-05-12 08:50:46 -06:00
Jonny Rhea 36514d1c38
Update 0_deposit-contract.md
get_genesis_beacon_state is not defined here.  i modified the spec to link to the function.
2019-05-11 16:49:46 -05:00
Diederik Loerakker acf07892bb
Merge pull request #1065 from ethereum/linter
Add linter
2019-05-11 16:31:45 +02:00
Ryuya Nakamura ae19521ea8 Update the docstring of initiate_validator_exit (#1072) 2019-05-11 19:41:05 +08:00
Hsiao-Wei Wang 4db4d87930
Refactor `process_final_updates` 2019-05-09 14:57:36 +08:00
Hsiao-Wei Wang 3203e4f7d7
Merge branch 'dev' into vbuterin-patch-2 2019-05-09 14:52:56 +08:00
Hsiao-Wei Wang a4ba283d67
Limit to 120 characters per line
Limit to 120 characters per line
2019-05-09 14:34:23 +08:00
Dankrad Feist ec230f443a
Merge branch 'dev' into dankrad-patch-7
# Conflicts:
#	specs/core/1_custody-game.md
#	specs/core/1_shard-data-chains.md
2019-05-09 01:00:25 +01:00
Dankrad Feist 6ab55efd3d
Phase 0 tests work on phase 1, yay :) 2019-05-08 23:30:08 +01:00
Justin Drake c37157ead1 Revert exception handling 2019-05-08 19:15:23 +01:00
Danny Ryan 33e5b98f17
Merge branch 'dev' into JustinDrake-patch-10 2019-05-08 08:42:47 -06:00
Danny Ryan af2bb7d6f6
Merge pull request #1044 from ethereum/JustinDrake-patch-21
Crosslink in AttestationData
2019-05-08 08:35:06 -06:00
Justin Drake 62c44ffce3 Refactor to validate_indexed_attestation 2019-05-07 17:34:19 +01:00
Justin Drake ecc6429b9e Address Danny's comment 2019-05-07 15:01:23 +01:00
Dankrad Feist 4ad92a0989
Fix typing 2019-05-07 13:23:28 +01:00
Dankrad Feist 1db49f4c98
Merge branch 'dev' into dankrad-patch-7
# Conflicts:
#	specs/core/1_custody-game.md
2019-05-07 12:27:24 +01:00
Dankrad Feist a604d03dff
Basic phase 1 pulling + correcting syntax errors in phase 1 2019-05-07 12:13:22 +01:00
Justin Drake 22b06d581d Update instances of int_to_bytes 2019-05-07 10:57:41 +01:00
Justin b1520ea967
Update 0_beacon-chain.md 2019-05-07 10:33:51 +01:00
Justin 9eeca0cdbd
Merge branch 'dev' into JustinDrake-patch-14 2019-05-07 10:16:38 +01:00
Justin Drake 50009ea85b Implement HW's exception-handling suggestion 2019-05-07 10:12:33 +01:00
Hsiao-Wei Wang f371daeb20
Update specs/core/0_beacon-chain.md
Co-Authored-By: JustinDrake <drakefjustin@gmail.com>
2019-05-07 09:01:07 +01:00
Justin Drake 964e55cd4a block_body_root => body_root 2019-05-07 08:52:56 +01:00
protolambda 3a309155aa
fix deposit domain: forks are ignored for deposit validity, deposits are always accepted, if coming from the correct contract(s). 2019-05-06 22:06:00 +02:00
Justin Drake ea60fb632c More renaming 2019-05-06 20:49:46 +01:00
Justin Drake f4db9ebae0 Renamings triggered by HW comment 2019-05-06 18:26:14 +01:00
Justin Drake 8b1a2edb7c Fix genesis bug 2019-05-06 17:53:49 +01:00
Justin 7ba13aa4c5
Merge branch 'dev' into JustinDrake-patch-21 2019-05-06 17:48:09 +01:00
Justin Drake b15105e1cb Address Danny's comment 2019-05-06 17:34:03 +01:00
Danny Ryan 5c2bca4a0d
Merge pull request #1051 from ethereum/JustinDrake-patch-22
Fix #1050
2019-05-06 10:12:13 -06:00
Danny Ryan 4367a9bb0d
Merge pull request #1049 from ethereum/JustinDrake-patch-20
Cosmetic genesis cleanups
2019-05-06 10:06:15 -06:00
JSON d1c96c1e0d Doc standardization (#1039) 2019-05-06 16:30:32 +01:00
Danny Ryan 148f18c5fd
Merge pull request #1023 from ethereum/ralexstokes-patch-1
Add notes to compute fork choice at genesis
2019-05-06 09:11:25 -06:00
Danny Ryan 7d0a6191ed
simplify justificatio/finality notes at genesis 2019-05-06 09:09:37 -06:00
Justin 2c3bbac803
Fix #1050 2019-05-05 19:30:55 +01:00
Justin 6aff277b1a
Update 0_beacon-chain.md 2019-05-05 17:20:25 +01:00
Justin a3bbf20bf7
Update 0_beacon-chain.md 2019-05-05 17:17:18 +01:00
Justin bf20031755
Cosmetic genesis cleanups 2019-05-05 17:15:05 +01:00
Justin Drake 5fb32fd19b Fix tests 2019-05-05 12:10:39 +01:00
Justin a6e825d460
Update 0_beacon-chain.md 2019-05-05 12:04:34 +01:00
vbuterin d5d2f7835a
Rearranging one >= statement to make it more non-underflow-friendly 2019-05-03 22:51:59 -05:00
Danny Ryan f57d6fa28e
Merge pull request #1038 from ethereum/master
backport v0.6.1 into dev
2019-05-03 16:28:24 -06:00
Justin 4c1073fa2f
Update 0_beacon-chain.md 2019-05-03 22:22:19 +01:00
Justin Drake 197a7200ef Add HW and Danny comments 2019-05-03 21:21:42 +01:00
Danny Ryan 6318a21ca6
fix minor typo in attestation rewards 2019-05-03 10:37:39 -06:00
Danny Ryan c24002bb1e
Merge pull request #1025 from terencechain/patch-70
Add comment for `get_churn_limit`
2019-05-03 09:16:39 -06:00
Hsiao-Wei Wang 2ccd357f0e
Update specs/core/1_custody-game.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-05-03 21:05:54 +08:00
vbuterin 66b152f79e
Allow multiple bit challenges, and recover withdrawability
Resolves #864 items 4, 7, 14
2019-05-03 05:07:11 -05:00
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
Justin Drake e184f0b3fe Fix 2019-04-20 16:35:02 +10:00
Justin Drake 06f475a844 Fixes 2019-04-20 16:32:41 +10:00
Justin Drake d700ea4406 Fixes 2019-04-20 16:10:25 +10:00
Justin Drake f07b94e77c Fixes 2019-04-20 15:37:12 +10:00
Justin Drake 356ef15166 Merge branch 'JustinDrake-patch-14' of github.com:ethereum/eth2.0-specs into JustinDrake-patch-14 2019-04-20 15:31:19 +10:00
Justin Drake 4d26ae255a Bug fix 2019-04-20 15:31:15 +10:00
Justin d067a9fcf2
Merge branch 'dev' into JustinDrake-patch-14 2019-04-20 15:19:21 +10:00
Justin Drake f908c8d3e0 Revamped balances and incentivisation 2019-04-20 15:17:33 +10:00
Justin 39d0822602
Sane SSZ object default values (#963) 2019-04-19 18:26:54 +10:00
Justin fad9b4672a
Disallow transfers
As discussed in yesterday's call, temporarily disable transfers until the network is deemed stable enough. We can consider doing a "test-run hard fork" changing this constant prior to the phase 1 hard fork.
2019-04-19 18:09:29 +10:00
Hsiao-Wei Wang 408ef7e6eb
Merge branch 'dev' into carl-patch-1 2019-04-19 14:50:48 +08:00
Danny Ryan 523800819b
Merge branch 'dev' into vbuterin-patch-2 2019-04-18 21:17:29 -06:00
Hsiao-Wei Wang 7a435d2e1a
Merge branch 'dev' into JustinDrake-patch-14 2019-04-19 09:37:11 +08:00
Carl Beekhuizen 26afa077fd Resolves conflicts and merges in dev 2019-04-18 23:17:53 +02:00
Danny Ryan faa6a46f15
Merge branch 'dev' into JustinDrake-patch-11 2019-04-18 11:45:45 -06:00
Danny Ryan 741a74a02c
re-add crosslink tests and ensure pass 2019-04-18 11:16:50 -06:00
Carl Beekhuizen d6e616d4fe Merge branch 'dev' into carl-patch-1
* dev:
  Cleanup per-epoch processing presentation (#959)
2019-04-18 12:02:10 +02:00
Justin fb641bc05f
Merge branch 'dev' into JustinDrake-patch-14 2019-04-18 19:51:17 +10:00
Justin Drake 7a016489c1 Moar 2019-04-18 19:33:38 +10:00
Justin 857d9b2ed9
Merge branch 'dev' into prev-cur-crosslinks 2019-04-18 19:09:41 +10:00
Justin d4ce0d20a0
Cleanup per-epoch processing presentation (#959) 2019-04-18 19:08:34 +10:00
Justin Drake 172e106b48 merge 2019-04-18 18:59:44 +10:00
Justin Drake 4244db92ad More cleanups 2019-04-18 18:53:22 +10:00
Hsiao-Wei Wang 743193aa7d
nitpicks 2019-04-18 16:53:02 +08:00
Justin Drake cae5c22718 Simplify get_crosslink_committee_for_attestation and move to test helpers 2019-04-18 18:15:20 +10:00
Justin 6975288254
Merge branch 'dev' into carl-patch-1 2019-04-18 17:52:56 +10:00
Justin 72f4e2d3b6
Update 0_beacon-chain.md 2019-04-18 17:51:50 +10:00
Justin 40a898f125
Update 0_beacon-chain.md 2019-04-18 17:46:31 +10:00
Justin d9afb67e29
Update 0_beacon-chain.md 2019-04-18 17:45:28 +10:00
Alex Stokes 4bca7f984d Add the prefix `state` when accessing the latest deposit count (#961) 2019-04-18 17:43:22 +10:00
Justin Drake 40b55cf433 More fixes 2019-04-18 14:43:24 +10:00
Justin 9ecafb2a1c
Update 0_beacon-chain.md 2019-04-18 14:33:45 +10:00
Justin fbaf771b1a
Update 0_beacon-chain.md 2019-04-18 14:20:34 +10:00
Justin 443786017f
Further decouple justification and finalisation (#958)
Addresses @djrtwo's comment [here](https://github.com/ethereum/eth2.0-specs/pull/925#issuecomment-484123950).
2019-04-18 13:31:19 +10:00
Danny Ryan 8c5f7a571d
Merge branch 'dev' into prev-cur-crosslinks 2019-04-17 20:27:25 -06:00
Justin 91921d8e86
Update 0_beacon-chain.md 2019-04-18 11:52:14 +10:00
Justin 71e1a598d2
Update 0_beacon-chain.md 2019-04-18 11:09:30 +10:00
Justin 3f9a65f1c8
Update 0_beacon-chain.md 2019-04-18 10:59:15 +10:00
Justin 0f8b1c5f3a
Update 0_beacon-chain.md 2019-04-18 10:56:15 +10:00
Hsiao-Wei Wang 5f9e625774
Merge branch 'dev' into start-at-zero 2019-04-18 08:50:50 +08:00
Hsiao-Wei Wang 02cbb35c8a
Merge pull request #957 from ethereum/finality-bug
fix finalization bug
2019-04-18 08:49:08 +08:00
Justin 9c14900c77
Update 0_beacon-chain.md 2019-04-18 10:45:22 +10:00
Danny Ryan 00a40d037d
Merge pull request #955 from ethereum/JustinDrake-patch-15
Remove custody_bitfield from PendingAttestation
2019-04-17 16:25:39 -06:00
Danny Ryan ca8bc77f96
Merge pull request #858 from ralexstokes/update-get-block-root-text
Update the descriptive text to refer to the correct type of root
2019-04-18 04:56:16 +10:00
Danny Ryan c783cdb2f4
fix bug and add transfer tests 2019-04-17 12:31:00 -06:00
Danny Ryan d118eb03c9
Merge branch 'dev' into carl-patch-1 2019-04-17 11:18:29 -06:00
Danny Ryan 5531adcdd1
remove old assertion in get_beacon_proposer_index 2019-04-17 09:41:23 -06:00
Danny Ryan af4d06c8bf
only run justification/finalization after 2 epochs 2019-04-17 09:38:10 -06:00
Danny Ryan 73bd821417
bug fix 2019-04-17 09:26:23 -06:00
Danny Ryan 4bffa87646
fix finalization bug 2019-04-17 08:57:23 -06:00
Danny Ryan 2cb8f1c520
Merge branch 'dev' into start-at-zero 2019-04-17 08:39:25 -06:00
Danny Ryan ef14396532
Merge branch 'dev' into prev-cur-crosslinks 2019-04-17 08:33:13 -06:00
Justin a4d87d44fb
Remove custody_bitfield from PendingAttestation
I don't think we need it :)
2019-04-17 22:22:53 +10:00
Justin cc92ee9f67
Update 0_beacon-chain.md 2019-04-17 15:53:24 +10:00
Hsiao-Wei Wang a93d34b8e4
Merge branch 'dev' into start-at-zero 2019-04-17 12:32:46 +08:00
Justin 57e5409383
Simplify Eth1Data voting (#938)
Remove `Eth1DataVote` object and simplify logic throughout.
2019-04-17 14:30:03 +10:00
Justin 6f56c379d6
Simplify get_justification_and_finalization_deltas
Cosmetic changes related to `get_justification_and_finalization_deltas`:

* Review naming of misc helper functions and variables
* Abstract away common logic and rework for readability
* Add `MAX_FINALITY_LOOKBACK` and `BASE_REWARDS_PER_EPOCH` constants
* Rescale `INACTIVITY_PENALTY_QUOTIENT`

Substantive changes:

* Make logic relative to `previous_epoch` throughout (as opposed to mixing `current_epoch` and `previous_epoch`)
* Replace inclusion delay bonus by an inclusion delay penalty
2019-04-17 14:06:28 +10:00
Hsiao-Wei Wang cc68df8346
Merge branch 'dev' into prev-cur-crosslinks 2019-04-17 12:01:40 +08:00
Hsiao-Wei Wang 587193076e Minor adjustments (#948)
1. Rename `earliest_attestation` to `get_earliest_attestation` to
avoiding conflicting to variable name
2. Extract `proposer_index` out of
`process_proposer_attestation_rewards` loops
2019-04-17 13:35:37 +10:00
Danny Ryan 882937b537 attesation proposer rewards to block processing (#920) 2019-04-17 12:32:50 +10:00
Justin 24492aa36f
Update 0_beacon-chain.md 2019-04-17 10:16:01 +10:00
JSON eeedea2d8c
Update 1_shard-data-chains.md 2019-04-16 12:03:22 -05:00
Carl Beekhuizen ae0afe389f
Cleaner assertion 2019-04-16 20:11:51 +10:00
Carl Beekhuizen ed28515a95 Enables transferes of BAL > 32 ETH 2019-04-16 16:16:13 +10:00
Justin f84818f19c
Decouple justification and finalization processing (#925) 2019-04-16 14:59:35 +10:00
Justin b6b82ae494
Update 0_beacon-chain.md 2019-04-15 08:15:20 +10:00
Justin a25c436b78
Update 0_beacon-chain.md 2019-04-15 08:14:33 +10:00
Justin 9eba123e2e
Remove serialization from consensus
Consensus now only cares about Merkleisation (i.e. `hash_tree_root`), not about serialization (i.e. `serialize`). This simplifies consensus code by a few tens of lines, is conceptually cleaner, and is more future proof.

A corresponding change is required in the deposit contract.
2019-04-15 07:54:08 +10:00
Alex Stokes 40d6a2635a Update 0_beacon-chain.md (#923)
Fix another typo w/ the withdrawal ~> exit queue PR
2019-04-15 07:03:47 +10:00
Diederik Loerakker 2a88dff2be
Merge pull request #919 from ethereum/JustinDrake-patch-10
Cleaner dust checking in transfers
2019-04-14 23:04:12 +10:00
Alex Stokes c01fb1eea6 Update 0_beacon-chain.md (#922)
More clean up on recent switch to exit queue
2019-04-14 22:56:01 +10:00
Alex Stokes bcf10ecf11 Update 0_beacon-chain.md (#921)
Fix typo to set the right property on the correct object
2019-04-14 22:55:38 +10:00
Hsiao-Wei Wang 3c8d1b23a5 Update specs/core/0_beacon-chain.md
Co-Authored-By: djrtwo <dannyjryan@gmail.com>
2019-04-14 22:12:39 +10:00
Justin a376b6607f
Cleaner dust checking in transfers
Inspired by [this](https://github.com/ethereum/eth2.0-specs/pull/916#commitcomment-33170877).
2019-04-14 21:53:32 +10:00
Danny Ryan 3555ab8c36
Merge branch 'dev' into prev-cur-crosslinks 2019-04-14 20:05:35 +10:00
Danny Ryan 0656817346
Merge branch 'dev' into start-at-zero 2019-04-14 19:46:21 +10:00
Danny Ryan 7840d29f2d
Merge pull request #850 from ethereum/vbuterin-patch-13
Withdrawal queue -> exit queue
2019-04-14 19:21:52 +10:00
Diederik Loerakker be86f966f8 fix transfer invariant, credits to @holiman for finding the edge case (#916) 2019-04-14 19:18:00 +10:00
Justin 3394368a66
Update 0_beacon-chain.md 2019-04-14 19:14:27 +10:00
Justin 875b2ba00d
Update 0_beacon-chain.md 2019-04-14 19:11:40 +10:00
Justin 0908ffa653
Update 0_beacon-chain.md 2019-04-14 19:01:53 +10:00
Danny Ryan 704ea7c301
Merge branch 'vbuterin-patch-13' of github.com:ethereum/eth2.0-specs into vbuterin-patch-13 2019-04-14 18:52:19 +10:00
Danny Ryan 06807cf520
fix tests and off by one error 2019-04-14 18:50:05 +10:00
Justin 0b770121fe
Update 0_beacon-chain.md 2019-04-14 18:23:30 +10:00
Justin 229af3deda
Update 0_beacon-chain.md 2019-04-14 18:10:44 +10:00
Justin 7705ecf89c
Update 0_beacon-chain.md 2019-04-14 17:28:45 +10:00
Justin 15bb9676d5
Update 0_beacon-chain.md 2019-04-14 17:04:36 +10:00
Justin d01fb80fd4
Update 0_beacon-chain.md 2019-04-14 17:02:04 +10:00
Justin 0d6448303d
Update 0_beacon-chain.md 2019-04-14 16:49:17 +10:00
vbuterin f85e7ac447
Added churn limit logic 2019-04-13 22:14:05 -05:00
Alex Stokes 5466a4875d
Update 1_shard-data-chains.md
Fix some typos
2019-04-14 09:54:35 +10:00
Danny Ryan 37004404d0
add exit queue test 2019-04-14 09:13:53 +10:00
Danny Ryan f7c5b0a1c6
set activation_eligibility_epoch during process_deposit 2019-04-14 08:30:13 +10:00
Danny Ryan eafcab7e58
check crosslinks validity root against previous 2019-04-14 08:24:54 +10:00
Justin 30fe6f5657
Update 0_beacon-chain.md 2019-04-14 00:47:14 +10:00
vbuterin cc2d005917
Merge branch 'dev' into vbuterin-patch-13 2019-04-13 06:18:54 -05:00
Danny Ryan a6b3b11356
ensure no reward for crosslinks taht can't form a chain 2019-04-13 17:49:25 +10:00
Danny Ryan 0a5a5b77d5
Merge branch 'dev' into prev-cur-crosslinks 2019-04-13 15:40:05 +10:00
terence tsao 710bacad75
Update 0_beacon-chain.md 2019-04-13 11:56:55 +10:00
Alex Stokes b34c41c525 Update 0_beacon-chain.md (#911)
Fix prose around state transition functionality
2019-04-13 09:56:19 +10:00
JSON ee1578d22a Update 0_beacon-chain.md (#908) 2019-04-13 09:33:53 +10:00
Danny Ryan a3b020384f
add tests for finality through the first few epochs 2019-04-12 23:17:57 +10:00
Danny Ryan 3c55854072
clean up 2019-04-12 21:16:34 +10:00
Justin 1e32661c4f
Remove references and copyright
Licensing is done at the repo level. The listed references are awkwardly incomplete (only the Python implementation was listed when we have ~10 implementations, and only the Casper paper was listed where we could add many ethresear.ch posts).
2019-04-12 19:54:33 +10:00
Danny Ryan a374e29184
Merge pull request #902 from ralexstokes/fix-ordering-of-process-deposits
Move the ordering of the definition of `process_deposit`.
2019-04-12 19:26:30 +10:00
Danny Ryan c119565d8b
Merge pull request #903 from ralexstokes/update-verify-indexed-attestation
Avoid materializing the merged list.
2019-04-12 19:07:01 +10:00
Alex Stokes 4824b34df3
Avoid materializing the merged list.
Fixes #901.
2019-04-12 19:02:16 +10:00
Danny Ryan ce0f52b52d
Merge pull request #890 from ethereum/proto-fix-justification-bitfield
limit bit-length of justification bitfield to strict 64
2019-04-12 18:59:42 +10:00
Alex Stokes c954eab96d
Move the ordering of the definition of `process_deposit`.
This move matches the symmetry of the other operation processing definitions.
2019-04-12 18:57:55 +10:00
Alex Stokes b966041ddb formatting fix (#899) 2019-04-12 18:56:55 +10:00
terence tsao 38b6e71bd5
Update 0_beacon-chain.md 2019-04-12 15:06:23 +10:00
Justin e9a44545be
Update 0_beacon-chain.md 2019-04-12 13:38:58 +10:00
Justin 47b9cdbb36
Update 0_beacon-chain.md 2019-04-12 13:18:10 +10:00
protolambda 7ffcdcfd7c
bitfield length limit style improvement 2019-04-12 09:12:37 +10:00
Danny Ryan 6ca550489e
prevent underflow of previous epoch in all cases 2019-04-11 22:48:27 +10:00
Danny Ryan 8c32128ffb
initial pass on genesis slot == 0 2019-04-11 22:28:42 +10:00
Danny Ryan 2468f9fc99
Merge pull request #868 from ethereum/vbuterin-patch-7
Separate out get_switchover_epoch
2019-04-11 18:55:39 +10:00
Danny Ryan 9c662ec4c3
fix shard delta for latest shard change 2019-04-11 18:48:05 +10:00
Danny Ryan b6158e080a
Merge branch 'dev' into vbuterin-patch-17 2019-04-11 18:36:15 +10:00
Hsiao-Wei Wang e2dc12e9f6 Update specs/core/0_beacon-chain.md
Co-Authored-By: ChihChengLiang <chihchengliang@gmail.com>
2019-04-10 16:24:05 +08:00
protolambda 509354582c
limit bit-length of justification bitfield to strict 64, prevent SSZ encoding crash due to too large integer size 2019-04-10 11:14:22 +10:00
vbuterin 9dde3a2661
Update replace_empty_or_append
Requires adding definitions of `empty` and `typeof` to the function puller.
2019-04-09 05:59:00 -05:00
vbuterin 7a1b38a6ad
Homogenised start shard
Alternative presentation to #884, should be substantively equivalent
2019-04-09 05:52:32 -05:00
Danny Ryan e246c3fb04
source_crosslink_root to previous_crosslink_root 2019-04-08 12:59:42 +10:00
Chih Cheng Liang ffccf742bd
replace signed_root with signing_root 2019-04-08 09:57:04 +08:00
Danny Ryan 42dc003e91
add previous_crosslink_root and enforce crosslinks form a chain 2019-04-07 17:55:38 +10:00
Danny Ryan 26df4f4bc8
Merge branch 'dev' into prev-cur-crosslinks 2019-04-07 16:26:42 +10:00
Danny Ryan 2baa242ac0
Merge pull request #877 from ethereum/sydney-test-format
A new more complete test format for ETH 2.0 testing
2019-04-07 16:23:04 +10:00
protolambda 117e157f29
update comment, fix net naming 2019-04-07 16:21:50 +10:00
Justin 47464f28dc
Update 0_beacon-chain.md 2019-04-07 08:45:43 +10:00
Hsiao-Wei Wang ebba3f5891
Fix typo 2019-04-07 01:59:10 +11:00
Hsiao-Wei Wang 8958cf86bb
Merge branch 'dev' into vbuterin-patch-13 2019-04-06 22:27:35 +08:00
Hsiao-Wei Wang 5ea5746fdd
Fix `get_genesis_beacon_state` and minor refactoring 2019-04-07 01:24:50 +11:00
Justin 63412d9b9e
Update 0_beacon-chain.md 2019-04-06 22:13:56 +11:00
Justin 7f0a93fc3e
Update 0_beacon-chain.md 2019-04-06 21:07:03 +11:00
Justin 169579ce3b
Update 0_beacon-chain.md 2019-04-06 20:45:11 +11:00
vbuterin 199e7849da Clarify lexicographic hash favoring (#881) 2019-04-06 13:07:26 +04:00
Danny Ryan f677af2179
Merge branch 'dev' into prev-cur-crosslinks 2019-04-05 19:55:47 +11:00
Danny Ryan dc325f7682
clean up a few things from PR 2019-04-05 19:39:03 +11:00
terence tsao 5a77e61160
Update 0_beacon-chain.md 2019-04-04 08:11:12 -07:00
Justin a790afa891
Update 0_beacon-chain.md 2019-04-04 08:23:48 +04:00
Justin d1af9144bc
Update 0_beacon-chain.md 2019-04-03 23:40:54 +04:00
Justin 6ca3c64526
Update 0_beacon-chain.md 2019-04-03 23:24:46 +04:00
Justin 76893cafaa
Missing typehint for `convert_to_indexed`
And some minor cleanups
2019-04-03 23:22:27 +04:00
Justin 2529cb1d74
Update 0_beacon-chain.md 2019-04-03 22:53:41 +04:00
Danny Ryan 1fa88fb6d1
remove previous crosslink check from process_crosslinks 2019-04-03 16:56:13 +11:00
protolambda 96ab5a334d
Add note on configuration of constants 2019-04-03 13:35:40 +11:00
Danny Ryan 39b4ef3892
Merge branch 'dev' into prev-cur-crosslinks 2019-04-03 11:57:07 +11:00
Danny Ryan 2f1ab491f9
Merge branch 'dev' into vbuterin-patch-2 2019-04-03 11:15:58 +11:00
Danny Ryan 75f0af45bb
Merge pull request #873 from ethereum/validator-indices-bug
minor bug `process_attester_slashings`
2019-04-02 18:07:30 -06:00
Danny Ryan 014138baab
pr feedback 2019-04-03 11:04:12 +11:00
Danny Ryan d8df789a70
simplify get_winning_root logic 2019-04-03 10:13:05 +11:00
Justin 37fc79cb94
Update 0_beacon-chain.md 2019-04-02 22:30:26 +04:00
Justin c4321c7cc7
Update 1_shard-data-chains.md 2019-04-02 22:17:55 +04:00
Danny Ryan 529cf4223e
add previous and current crosslinks 2019-04-02 16:00:36 +11:00
Danny Ryan 06d005999a
fix validator_indicies issue in process_attester_slashing 2019-04-02 13:50:06 +11:00
vbuterin 3fc24f3d41
Replace with empty instead of popping finished challenges 2019-03-31 21:20:43 -05:00
vbuterin bb990e9892
Separate out get_switchover_epoch
So that we can use it in for subkey reveals as well.
2019-03-31 17:49:02 -05:00
Justin c2edcebee3
Update 0_beacon-chain.md 2019-03-31 20:48:44 +04:00
Justin 79d1f9fb76
Update 0_beacon-chain.md 2019-03-31 20:45:57 +04:00
Hsiao-Wei Wang 77b0a4188b
Update `1_custody-game.md` as well 2019-03-31 22:54:46 +08:00
vbuterin b6be9e1830
Possible aesthetic rework to get_domain
In general I dislike how domains, which should be an unobtrusive out-of-the-way thing that we don't think about much, are taking up so much space in code to express, to the point of them being the single thing preventing `bls_verify` from being expressed in one line of code. Here I reorder arguments and add a default, and make `bls_verify` a one-liner.

Not necessarily convinced that exactly this approach is the way to go, but IMO it's worth considering.
2019-03-31 04:55:24 -05:00
Justin e4c3c556d5
Rename "transaction" to "operation"
Fix #822.
2019-03-31 09:02:10 +04:00
vbuterin 15498f22ef
Fixed exit epoch conditional 2019-03-30 19:26:44 -05:00
Alex Stokes 6f0f2a8f53
Update the descriptive text to refer to the correct type of root 2019-03-30 16:21:09 -07:00
Hsiao-Wei Wang a2dae9a8e0
Fix after merging 2019-03-29 15:26:26 +08:00
Hsiao-Wei Wang 9c4e034bed
Merge branch 'dev' into vbuterin-patch-13 2019-03-29 13:36:00 +08:00
vbuterin f5c5c166af Replace custody challenge game with JABS (#812)
See also #818.

===

* Replace custody challenge game with JABS

Replace the existing proof of custody game with a new game ("Justin's Awesome Bit Sum" or JABS) that works as follows:

* The data `D` is split up into 512-byte chunks `D[0] .... D[n-1]`, and use a mix function `mix(subkey, data) -> {0,1}` (currently the first bit of the hash of `subkey+data`). We calculate `M[i] = (mix(D[0]) + ... + mix(D[i-1])) % 2`, and set the custody bit to `M[n-1]`
* Anyone can challenge by providing the full `M` where `M[n-1]` is not equal to the custody bit
* Anyone can respond to a challenge by providing a specific position in `M` along with a branch of the data where `M[i-1] ^ mix(D[i]) != M[i]`

The maximum size of data is now `2**6` epochs *  `2**6` blocks * `2**14` bytes = `2**26` bytes, so assuming 512-byte mix chunks the maximum mix size is `2**17` bits or `2**14` bytes. The average mix size is `2**8` bytes.
2019-03-28 22:56:43 +00:00
Justin 1082c68fef
Separate document for phase 1 custody game (#818)
The 1-round custody game has been implemented. Many bugs squashed, and a bunch of polishing done. Miscellaneous known issues (~8 of them) to be resolved in separate, smaller, PRs.
2019-03-28 22:54:39 +00:00
Danny Ryan bad03ba554
Merge pull request #848 from wmpea/patch-1
Minor copyedits to 0_beacon-chain.md
2019-03-28 13:16:01 -06:00
Danny Ryan 66d5026ffe
minor copy edit 2019-03-28 13:15:38 -06:00
Danny Ryan 901478e148
Merge branch 'dev' into JustinDrake-patch-11 2019-03-28 12:14:13 -06:00
Danny Ryan 30e29324e9
Merge pull request #831 from ethereum/vbuterin-patch-3
Merge attestation verification logic
2019-03-28 11:33:34 -06:00
Danny Ryan ba47a8f4c4
remove unused set_bitfield_bit hlper 2019-03-28 11:29:45 -06:00
Danny Ryan 1f657cfec5
remove custody_bitfield from indexedattestation. add two separate arrays for 0 and 1 bit 2019-03-28 11:26:04 -06:00
Hsiao-Wei Wang aa4bbcc1c8
Bugfix 2019-03-29 00:43:28 +08:00
vbuterin deb0e32590
Fixes to make Justin happy 2019-03-28 10:51:36 -05:00
vbuterin 1aaa0030fc
Withdrawal queue -> exit queue 2019-03-28 08:58:18 -05:00
William M Peaster 458eb99133
Minor copyedits to 0_beacon-chain.md
Approximately a dozen minor copyediting fixes of non-code text for improved clarity, consistency, and accuracy.
2019-03-27 14:15:50 -05:00
William M Peaster b5bf56376b
Minor copyediting corrections to 0_beacon-chain.md
A handful of minor editing changes made to non-code text for the purposes of improved clarity, consistency, and accuracy.
2019-03-27 14:00:28 -05:00
Danny Ryan fbb09795ed
fix convert_to_indexed custody bitfield bug 2019-03-27 08:31:56 -06:00
Danny Ryan e9cdcac29e
Merge branch 'dev' into JustinDrake-patch-11 2019-03-26 14:09:07 -06:00
Danny Ryan 63e7346cfb
standaline -> indexed 2019-03-26 13:40:19 -06:00
Danny Ryan 81e0e494a8
Merge branch 'dev' into vbuterin-patch-3 2019-03-26 13:30:33 -06:00
Danny Ryan 654351faea
Merge branch 'dev' into vbuterin-patch-16 2019-03-26 13:04:18 -06:00
Danny Ryan 2c5a68b5b5
remove registry_change options from shuffling functions 2019-03-26 12:32:24 -06:00
Danny Ryan a8410b8b84
add some attestation tests. fix genesi crosslink bug 2019-03-26 11:27:07 -06:00
Danny Ryan 2c8e9a11e7
Merge branch 'dev' into vbuterin-patch-18 2019-03-26 10:13:17 -06:00
Danny Ryan c5f1db27f5
Merge branch 'dev' into JustinDrake-patch-7 2019-03-26 07:38:39 -06:00
Justin 87d2618a49
Update 0_beacon-chain.md 2019-03-26 13:21:49 +00:00
Danny Ryan 7f53f257cd
Merge branch 'dev' into JustinDrake-patch-4 2019-03-26 07:14:34 -06:00
Danny Ryan 0121adea38
fix beacon proposer function and mod v-guide to not have lookahead for proposing 2019-03-26 07:09:48 -06:00
Danny Ryan fcc1c64acb
Merge branch 'dev' into vbuterin-patch-13 2019-03-26 06:45:40 -06:00
Danny Ryan fceebeec4e
backport 839 into dev 2019-03-25 11:25:33 -06:00
Justin acc5f314ac
Update 0_beacon-chain.md 2019-03-25 14:54:43 +00:00
Justin fb837400b2
Can't spell (thanks continuous integration!) 2019-03-25 14:49:35 +00:00
Justin b7441e8ab7
Generalise `slash_validator` for phase 1
Make `slash_validator` friendly to phase 1. This is a cosmetic change in the context of phase 0.
2019-03-25 14:30:59 +00:00
Hsiao-Wei Wang 80e2553afd
Update specs/core/0_beacon-chain.md
Co-Authored-By: vbuterin <v@buterin.com>
2019-03-22 09:32:21 -04:00
vbuterin ce18bde5c9
Simplified sorted index check 2019-03-22 06:20:38 -05:00
vbuterin 3ee9fc0cc7
Merge attestation verification logic
Also rename slashable attestation to standalone attestation to reflect its broader functionality in phase 1.
2019-03-22 06:10:44 -05:00
vbuterin e8257db320
Removed hanging min 2019-03-22 05:40:41 -05:00
Hsiao-Wei Wang b34858c67b
Refactor `get_justification_and_finalization_deltas` 2019-03-22 14:21:33 +08:00
Hsiao-Wei Wang ae67e9513b
Fix type hinting and add docstrings 2019-03-22 12:56:54 +08:00
Hsiao-Wei Wang 512ceff1bb
Merge branch 'dev' into vbuterin-patch-20 2019-03-22 11:58:32 +08:00
Danny Ryan 64e3db09d4
Merge branch 'dev' into JustinDrake-patch-19 2019-03-21 16:25:31 -06:00
Danny Ryan d8ad56f759
Merge pull request #828 from ethereum/vbuterin-patch-20-1
Small cosmetic change to slashable attestations
2019-03-21 15:50:08 -06:00
vbuterin 3ece05ccc1
Small cosmetic change to slashable attestations 2019-03-21 16:36:31 -05:00
vbuterin 3b403909e8
Cosmetic improvement to reward/penalty functions 2019-03-21 16:29:14 -05:00
vbuterin 38a5c3640b
Re-added some penalization in case of failure to finalize 2019-03-21 15:13:13 -05:00
vbuterin d1d1b73fb1
Simplify justification and finalization accounting logic
Much of the simplification is cosmetic. The following changes are substantive:

* Inactivity leak penalty specifically on missing the target, not both the target and the source
* Even outside of quadratic leak scenarios, slashing victims suffer offline penalties
2019-03-21 15:11:05 -05:00
Danny Ryan f6da42ffb3
fix markdown issues 2019-03-21 10:04:20 -06:00
Danny Ryan c99fe3fb38
Merge branch 'dev' into vbuterin-patch-3 2019-03-21 08:47:19 -06:00
Danny Ryan fd6d80fcb6
remove get_split_offset from phase 1 doc 2019-03-21 08:24:26 -06:00
vbuterin fdcfc91008
Add docstring into get_split_offset 2019-03-21 07:38:25 -05:00
Hsiao-Wei Wang 2215988415
Merge branch 'dev' into JustinDrake-patch-19 2019-03-20 21:59:40 +08:00
vbuterin fff76749d2
Merge branch 'dev' into vbuterin-patch-3 2019-03-20 08:05:22 -04:00
Justin 833691b8af
Update 0_beacon-chain.md 2019-03-20 08:16:39 +00:00
Danny Ryan a8e2b8cd1d
Merge branch 'dev' into vbuterin-patch-11 2019-03-19 16:06:33 -06:00
Danny Ryan acd7fdd762
add a few voluntary exit tests 2019-03-19 16:00:27 -06:00
Danny Ryan 9d7c2b264e
Merge branch 'dev' into JustinDrake-patch-20 2019-03-19 15:06:36 -06:00
Danny Ryan 2afbd8a02d
Merge branch 'dev' into JustinDrake-patch-8 2019-03-19 14:44:25 -06:00
Justin b664453a34
Update 0_beacon-chain.md 2019-03-19 20:43:05 +00:00
Danny Ryan ef0b3d2948
Merge branch 'dev' into JustinDrake-patch-20 2019-03-19 14:26:38 -06:00
Danny Ryan be13fa8ec3
Merge branch 'dev' into JustinDrake-patch-14 2019-03-19 14:20:12 -06:00
Danny Ryan 574fd8d63c
Merge branch 'dev' into JustinDrake-patch-18 2019-03-19 14:14:35 -06:00
Danny Ryan 23ef802da5
fix small bug in sytax 2019-03-19 13:25:34 -06:00
Danny Ryan cf06cb59c3
Merge branch 'dev' into JustinDrake-patch-13 2019-03-19 12:40:58 -06:00
Danny Ryan 054a1e3126
Merge branch 'dev' into JustinDrake-patch-12 2019-03-19 12:25:50 -06:00
Danny Ryan bdfc01cf93
Merge branch 'dev' into JustinDrake-patch-11 2019-03-19 12:13:42 -06:00
Danny Ryan f7fab30772
minor adjustment to not repeat committe count calc 2019-03-19 11:40:24 -06:00
Danny Ryan f5826e7f1c
small lint 2019-03-19 11:34:49 -06:00
Danny Ryan c8e9073414
define get_split_offset and squash a couple of bugs 2019-03-19 11:24:36 -06:00
Danny Ryan 009563b2c3
fix a few bugs in testing compute_committee 2019-03-19 11:15:51 -06:00
Justin b50e148642
Update 0_beacon-chain.md 2019-03-19 17:13:25 +00:00
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
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