Skip to content
Choose a tag to compare

`exec beacon_chain`

@djrtwo djrtwo released this
· 5438 commits to master since this release
Choose a tag to compare


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).


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 and Deposit 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 use hash_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)
  • 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
    • clarify "active validator" in reward/penalty calculations (#703)
    • minor refactor to process_slashings to reduce repeated computation (#714)
    • minor formatting/typos/etc PRs (#693, #688, #715, #743, #770)

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

Simple Serialize

  • simplify SSZ spec (#696) [see PR for changelog]
  • clarify basic/non-basic types for bytes (#724)


No changes, but we expect some coming as we standardize BLS12-381 across blockchains

Phase 1 spec (warning: not stable)

  • alter proof of custody game to ensure bound on state size (#682)
  • add developer notice (#684)
  • minor formatting/types/etc PRs (#767)