Eth2.0-specs: 1000—Phase 0 spec freeze

Created on 26 Apr 2019  Â·  5Comments  Â·  Source: ethereum/eth2.0-specs

â„– 1000 :tada: Congratz everyone!

This issue will track the progress towards phase 0 spec-freeze, a big milestone towards launch of phase 0.


The Phase 0 spec freeze

The idea of the spec-freeze is to enable client implementers to settle on a stable version of the spec, and prepare for launch. It is crucial to scrutinize the spec before this freeze, and find & fix any remaining bugs.

To be frozen for Phase 0:

  • core/

    • 0_beacon-chain.md

    • 0_deposit-contract.md

    • 0_fork-choice.md

  • validator/

    • 0_beacon-chain-validator.md

  • networking

    • TBD

Timeline

  • April 9 - Sydney workshop
  • April 18 - Impl call #16
  • April 24 - Release v0.6.0
  • May 2 - Impl call #17
  • May 4 - Release v0.6.1
  • May 6-12: generalized test case setup: complete state-transition tests.
  • May 13-15: Many in NY, prepare workshop
  • May 16 - New York workshop, hosted by Pegasys: focus on client interop.
  • May 17-19: EthNY hackathon, opportunity to implement new workshop ideas
  • May 20 - May 31: more v0.6.x work
  • June 1: possible date for v0.7.0 (if we do one)
  • June 1-30: finalize things & make sure spec is ready to freeze
  • June 30: FREEZE (as per this tweet)
  • July 1 and later: implement frozen spec, testnets, etc. Launch target date TBD.

Action points for freeze

  • Testing:

    • [x] complete state-transition tests

    • [x] unify "case setup" part of pytests and state-transition yaml-tests. (It is rather painful to duplicate effort between testing of the spec itself, and generation of test-vectors for clients. We're looking to unify where possible)



      • [x] implement block-operation test cases described in #927



    • [x] generate tests covering larger transitions, similar to chain-tests

    • [x] Higher coverage with state-transition tests. From a client (yaml consuming) view. Spec already has good coverage. (See #1200) Note: rewards/penalties epoch processing tests are postponed. All other tests made it in :tada:

    • [x] fork-choice test vectors (See #1185)

    • Note; some were implemented. To be extended some time in after freeze.

    • [x] fuzzing

    • [x] differential fuzzing between pyspec and ZRNT

    • [x] fuzz ZRNT, look for panics / broken invariants

    • invariants testing, cc @JustinDrake part of fuzzing

  • Experimentation:

    • network spec (if included) needs testing too

    • implement & iterate on pain points, don't wait till after spec freeze.

  • Improve & simplify phase 0 spec where possible.

    • TODO: document things to be improved / changed (or added, if any) See #1054

  • Standardize constant presets.

    • [x] minimal: constants for fast testing, may not be reliable enough for a testnet.

    • testnet: minimum viable reduced constants for a testnet. Minimal for now, will experiment more during interop testing.

    • [x] mainnet: spec costants

discussion June 30 freeze 🥶

Most helpful comment

Updated issue with spec-freeze tracking suggestion from @JustinDrake

All 5 comments

I suggest keeping track of this. We need to find about one bug a day to squash them all before freeze.

Tracking issue for first public testnet

I suggest that could be in https://github.com/ethereum/eth2.0-pm/ repo 😄

Updated issue with spec-freeze tracking suggestion from @JustinDrake

Some personal notes to set the right expectations for the spec freeze:

1) The main purpose for a spec freeze is to see the emergence of long-lived cross-client testnets by halting master releases.
2) We reserve the right to do cosmetic changes (e.g. any state transition change that doesn't affect hash_tree_root(state)) to the phase 0 spec after the freeze, especially on the dev branch.
3) BLS standardisation is unlikely to be finalised by June 30, although significant progress will have been made. Any inconsistency with the final BLS standard will have to be reflected in the launch release.
4) Bug fixes will obviously have to be incorporated in the launch release. If the bug impedes the formation of cross-client testnets (e.g. causes the state transition to stall) then an "emergency point release" will likely be warranted. Fixes to not-too-bothersome bugs can accumulate (unreleased) in the dev branch until much closer to launch.
5) Simplifications and cleanups found between July 1 and the actual launch date will not warrant a master release. Such simplifications and cleanups will have to be assessed on an ad-hoc basis for incorporation in the final phase 0 release or a future release (e.g. the phase 1 release).

This issue is more or less complete (See #1231 for last tiny testing update). We will be polishing and pushing the last feature PR for freeze now. Closing this to focus on the remaining freeze issues/PR.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

JustinDrake picture JustinDrake  Â·  12Comments

paulhauner picture paulhauner  Â·  12Comments

protolambda picture protolambda  Â·  32Comments

hwwhww picture hwwhww  Â·  14Comments

prestonvanloon picture prestonvanloon  Â·  17Comments