Skip to content

Spring Cleaning

Pre-release
Pre-release
Compare
Choose a tag to compare
@djrtwo djrtwo released this 24 Apr 20:04
· 7336 commits to master since this release
7a06df6

Release

Since the relatively stable and well tested v0.5 release ~6 weeks ago, much of the spec development has been focused on efforts to clean and simplify so that the spec can be more easily understood, built, and audited in the coming months. To this end, much of the below changelog for phase 0 is centered around straight simplifications as well as feature additions/modifications that are also ultimately simplifying.

In the spirit of spring cleaning, we've also pulled out the deposit contract and fork choice into separate documents. The beacon chain spec now solely addresses the beacon chain state transition function.

Although much work has gone into testing, test generators, and CI, new YAML test vectors are not to be released immediately with v0.6.0, but instead will follow next week. Stay tuned!

Changelog

PR showing full diff can be found here: #987

Phase 0 spec

  • features
    • swap get_shuffling for compute_committee (#776)
    • milder ejections (#784)
    • include recently slashed in exit churn queue (#785)
    • do not allow slashed validator to propose (#757)
    • require mandatory deposits in blocks (#758)
    • separate out effective balance from actual balance (#728)
    • create is_slashable_validator for stricter criteria (#806)
    • Move to SHA256 (#779)
    • probability selected as proposer proportional to balance (#772)
    • remove committee exponential backoff (#808)
    • homogenised start shard (#889)
    • enable transfers of balance proportions > MAX_EFFECTIVE_BALANCE (#936)
  • simplifications
    • simplify and cleanup process_attestation (#783)
    • simplify exit_validator (#801)
    • simplify justification and finalization accounting logic (#826)
    • merge attestation verification logic with indexed attestations (#831)
    • cosmetic improvement to reward/penalty functions (#827)
    • cleaner dust checking in transfers (#919)
    • simplify Eth1Data voting (#938)
    • decouple justification and finalization processing (#925, #957, #958)
    • remove custody_bitfield from PendingAttestation (#955)
    • genesis slot/epoch back to 0 (#896)
    • cleanup per-epoch processing presentation (#959)
    • add SSZ object default values (#963)
    • change withdrawal queue to exit queue (#850, #977)
    • remove serialization from consensus (#924)
    • revamp and cleanup incentivization (#949)
  • bugs
    • fix get_split_offset (#790)
    • ensure validator active for voluntary exit (#807)
    • limit bit-length of justification bitfield to strict 64 (#890)
    • fix transfer invariant by disallowing
    • add previous and current crosslinks to fix a few crosslink bugs (#874)
    • fix off by one error for eth1 data voting (#992)
    • minor bugs related to ordering/typos/var-mismatch/etc (#873, #921, #922, #923, #961)
  • misc

Phase 0 validator

  • mandatory deposits (#759)
  • committees deterministic for next epoch (#808)
  • minor formatting/types/etc PRs (#847, #912)

Phase 0 networking

  • mega networking PR (#763)
  • minor formatting/types/etc PRs (#910, #907)

Deposit contract

Simple Serialize

  • update to SOS style offset layout (#787) [changes not yet reflected in minimal_ssz.py]
  • rename "tuple" to "vector" for fixed sized lists (#794, #777)
  • a few fixes to minimal_ssz implementation (#960)
  • misc (#894, #929, #969)

BLS

  • clarify empty sums in BLS spec (#782)
  • Warning: Bug exists in BLS hash to G2 in the current spec. The hash and increment approach will likely be deprecated after standardization so the bug is to be untouched for now (#898)

Significant changes still expected as we standardize BLS12-381 across blockchains

Phase 1 spec (warning: not stable)

  • replace custody game with JABs (#812)
  • persistent committee size per slot reduced to max 128 (#734)
  • replace with empty instead of popping finished challenges (#870)
  • minor formatting/types/etc PRs (#818, #868, #915)

Light client spec (warning: not stable)

  • add initial pass on light client spec (#766)
  • minor formatting/typos/etc PRs (#825, #829, #930, #895)

Testing/CI

  • integrate CI testing (#800, #809)
  • fix vector implementation in minimal_ssz (#810)
  • increase test coverage (#814, #989)
  • new more complete test format for ETH 2.0 testing (#877)
  • combine specs and test-generators (#851)
  • SSZ static testing (#962)
  • update CI config: caching of repo, venv, split test install/run (#967)
  • generators workflow (#968)
  • use configuration system in pytest (#979)
  • misc (#839, #892, #897, #888, #933, #951, #952, #953, #978, #990)