`exec beacon_chain`
Pre-releaseRelease
The phase 0 beacon chain specification is now executable. This was handled in a number of refactoring PRs (#708, #709, #711). The first set of "sanity check" tests have been created against the executable spec and exist as state test vectors in the tests repo. As we increase testing with the executable spec, we expect to continue to find minor bugs. These will be released frequently via minor version updates to the spec.
As usual, this release also includes a number of feature additions/modifications, clarifications, and minor bug fixes. Things of note include: [1] epoch transition at start of epoch (#732), [2] SSZ refactored and simplified (#696), and [3] parent-root reconstruction + body/header segregation (#649).
Changelog
PR showing full diff can be found here: #755
Phase 0 spec
- pythonize refactors
- convert transaction sections to python code (#708) [contains no substantive changes]
- unify deposit processing between genesis and transaction (#709) [contains no substantive changes]
- pythonize epoch transitions (#711)
- warning: this PR contains both a pythonizing refactor plus some substantive changes and bug fixes
- see PR for detailed changelog
- reorder SSZ types topologically (#731) [contains no substantive changes]
- features
- make
get_beacon_proposer_index
safe for next epoch (#694) - utilize updated version of ssz
signed_root
(#725) - modify
BeaconState
andDeposit
fields to utilize new ssz fixed length tuples (#723) - break LMD GHOST ties in favor of higher hash tree roots (#737)
- epoch transition at start of epoch (#732, #741)
- remove
merkle_root
and instead usehash_tree_root
everywhere (#739) - weaken criterion for attestation inclusion (#752)
- disallow duplicate voluntary exits (#751)
- validator cannot exit until 2048 epochs (#746)
- proposer slashing based upon epoch rather than slot (#762)
- fair proposer selection by using epoch (#733)
- improve fork version/signature domain semantics (#738)
- make
- bugs
- fix previous epoch committee near genesis (#672)
- fix the "ready to exit" condition in
update_validator_registry
(#705) - fix
latest_randao_mixes
initialization value (#713) - fix committee assignment bugs (#699)
- handle when no attestations available for crosslinking (#717)
- handle
get_base_reward
when no previous balance (#718) - only attempt to reward proposer if attestation exists for validator index (#744)
- do not check
withdrawal_credentials
for existing validators (#750) - cache justified/finalized roots in state for use in state transition (#756)
- minor bugs related to ordering/typos/var-mismatch/etc ()
- misc
Phase 0 validator
- a number of updates getting v-guide in sync with v0.5.0 (#769) [see PR for changelog]
- minor bugs related to ordering/typos/var-mismatch/etc (#689)
- minor formatting/typos/etc PRs (#720, #711)
Deposit contract
- Both the
Deposit
andEth2Genesis
log have received updates to their interface (ethereum/deposit_contract#21, ethereum/deposit_contract#22)
Simple Serialize
BLS
No changes, but we expect some coming as we standardize BLS12-381 across blockchains