Skip to content

Releases: ethereum/consensus-specs

Astrophotography

13 Jul 22:50
8270224
Compare
Choose a tag to compare
Astrophotography Pre-release
Pre-release

Release

v1.1.0-beta.1 -- Astrophotography -- marks the shift from Altair alpha to beta pre-releases. This follows the launch of the first devnet including all mainnet clients, a milestone that means all client teams have worked through the entirety of the Altair specs, provided technical feedback, and managed to interoperate.

Now that we have reached a beta release of Altair, there will be no more breaking changes made to Altair consensus specs unless critical security issues are found.

In addition to the symbolic beta release, this release greatly increases test coverage of Altair. Huge shout-out to @hwwhww and @ralexstokes on this front.

Finally, @mcdee did some analysis on the choice of 4 for target sync committee aggregators and showed that this number was insufficient for there to be a high probability of at least one aggregator per subnet per slot. This configuration value was bumped to 16. See #2514 for more details and analysis. (Note: this is the only substantive change within beta.1)

PR showing full diff can be found here: #2513

Altair

Networking

  • Set number of target sync committee aggregators to 16 (#2514)
  • [non-substantive] Rename a few instances of signature to message (#2509)

Testing, repo, etc

Only 9096

24 Jun 19:37
5567478
Compare
Choose a tag to compare
Only 9096 Pre-release
Pre-release

Release

v1.1.0-alpha.8 pre-release -- Only 9096 -- fixes a race condition in sync committee gossip identified by @ajsutton in early devnets. See #2491 for a more complete description of the issue and the fix.

In addition to this critical fix for Altair, there has been some continued refinement of The Merge and Sharding and a few additional consensus vectors added to the mix.

PR showing full diff can be found here: #2493

Altair

Networking

  • Eliminate sync committee message race condition (#2491)

R&D

  • Add randao to execution payload (#2479)
  • General merge cleanups (#2472)
  • Continued refinement of Sharding specs (#2482, #2483, #2484)

Testing, repo, etc

  • Add a few missing slashing tests (#2478)
  • Encode, decodem and randomize ssz Union types in test vector generation (#2497)

Blue Loop

08 Jun 20:17
34fc0a5
Compare
Choose a tag to compare
Blue Loop Pre-release
Pre-release

Release

v1.1.0-alpha.7 pre-release -- Blue Loop -- fixes an issue identified by @potuz that led to high variance in validator rewards due to the magnitude and structure of sync committee rewards. Additionally, it makes a number of non-substantive cleanups as well as a couple of small bug patches.

Both Merge and Sharding progress continue! The first full specification of the PoW -> PoS transition process is contained in this release (#2462), and there is plenty of continued iteration and refinement of the R&D sharding specs.

PR showing full diff can be found here: #2468

Altair

Beacon chain

  • Modify sync committee logic and parameters to reduce variance (#2453)
  • [Non-substantive] Minor Altair cosmetic polishing (#2464)
  • [Non-substantive] Move BLS extensions to new file in Altair (#2438)
  • [Non-substantive] Sync Committee vs Aggregate naming consistencies (#2469)

Networking

  • Add clock disparity tolerance for sync subnets (#2451)
  • Add message.topic to gossipsub message-id in Altair (#2475)
  • Clarify p2p validation conditions for Altair sync committees (#2474)

Validator

  • [Bugfix] Add missing block_root in SyncCommitteeSignature (#2466)
  • [Non-substantive] Rename SyncCommitteeSignature to SyncCommitteeMessages (#2446)

R&D

  • Merge transition process with computed transition total difficulty (#2462)
  • Continued refinement of Sharding specs (#2449, #2436, #2455, #2452)

Simple Serialize

  • Reduce Union-type selector to 1 byte and other union type cleanups (#2445, #2456, #2458)

Testing, repo, etc

  • Fix bug in Altair transition tests with missing state root [already built into alpha.6 test vectors] (#2443)
  • Bump mypy to v0.812 (#2467)
  • Inactivity updates test generation, implement new participation flag updates testing [already built into alpha.6 vectors] (#2435)
  • Add some invariant checks to pyspec unit tests (#2444)

Protostellar Evolution

21 May 21:26
0347c52
Compare
Choose a tag to compare
Pre-release

Release

v1.1.0-alpha.6 pre-release -- Protostellar Evolution -- cleans up client configuration through the further separation of "constants", "presets", and "configuration" (#2390). This effort, spearheaded by @protolambda, will allow for stricter typing for better compile-time guarantees as well as simpler network configurations.

Additionally, we've added some more Altair test coverage (#2426) as well as the ResourceUnavailable error code for BlocksByRange requests (#2430).

PR showing full diff can be found here: #2431

Altair

Beacon chain

  • More Altair fork transition tests (#2426)

Phase 0

Networking

  • Add ResourceUnavailable error code with more guidance (#2430)

Testing, repo, etc

  • Seperation of Constant, Preset, and Configuration variables (#2390)

The Broken Star

18 May 22:31
4a27f85
Compare
Choose a tag to compare
The Broken Star Pre-release
Pre-release

Release

v1.1.0-alpha.5 pre-release -- The Broken Star -- fixes a critical error in the definition of PARTICIPATION_FLAG_WEIGHTS identified by @terencechain (#2419) during alpha.4 testing.

PR showing full diff can be found here: #2424

Altair

Beacon chain

  • [Bugfix] Fix head weight in PARTICIPATION_FLAG_WEIGHTS (#2419)

R&D

Alpha Aquilae

14 May 17:39
cfba8f5
Compare
Choose a tag to compare
Alpha Aquilae Pre-release
Pre-release

Release

v1.1.0-alpha.4 pre-release enhances a few features and cleans up a number of issues identified since alpha.3 while greatly expanding test coverage.

This is expected to be the final pre-release before a spec freeze in one week. To that end, there was much deep review and enhanced testing. This should be the last, large Altair release diff.

Make sure you note the new fork transition spec test type (#2363) that tests a series of block transitions across the fork boundary. Shoutout to @ralexstokes for putting that together!

On the R&D front, much refinement continues in the Merge and Sharding specs. Merge is increasingly stable and tested with a few known items left to tackle, while the Sharding spec is still in heavy refinement (thanks to all the sharding implementers for the many spec fixes and enhancements!).

PR showing full diff can be found here: #2410

Altair

Beacon chain

  • Use ALTAIR_FORK_EPOCH instead of ALTAIR_FORK_SLOT (#2342)
  • Provide function for starting cleanly from Altair specification (#2323)
  • Altair comments and minor logic cleanups (#2374)
  • Remove sync committee aggregates list in favor if a single aggregate (#2370)
  • Adjust sync committee size and duration (#2371)
  • [Bugfix] Use stable sync committee indices when processing block rewards (#2394)
  • Clarify fork upgrade conditions for Altair (#2404)
  • Restrict sync committee period calculation boundaries (#2406)
  • Participation flag and incentive review (#2399)
  • Update inactivity penalty deltas processing (#2395)
  • Ensure indices are ordered [source, target, head] everywhere (#2411)
  • Map attestation participation to flag deltas in fork transition (#2373, #2408)
  • Enhanced Altair testing (#2334, #2363)

Validator

  • Adjust subnet count to reflect smaller sync committees (#2376)
  • Add logic for handling sync committee assignment off by one issue (#2400)
  • Update validator guide with restricted sync committee computation (#2407)
  • Return non-duplicated sync committee subnets (#2409)

Network

  • Respect subcommittees in gossip validations for Altair (#2329)
  • Add syncnets data to Altair MetaData (#2352)
  • Minor naming cleanup (#2362)
  • Add logic for handling sync committee assignment off by one issue (#2400)
  • BlocksByRange under weak subjectivity (#2131)
  • Remove ResourceUnavailable error code for more discussion (#2413)

Sync Protocol

  • Updates to Altair light client sync protocol (#2378)

R&D

Testing, Repo, etc

  • Add note for ByteList and ByteVector SSZ aliases (#2340)
  • Refactor pyspec builder with SpecBuilder classes (#2321)
  • Update pyspec dev usage docs, improve makefile (#2346)
  • Use markdown parser for literate pyspec (#2345)
  • Add fork transition spec test type (#2363)

Beige Gorgon

06 Apr 21:50
0d22e08
Compare
Choose a tag to compare
Beige Gorgon Pre-release
Pre-release

Release

v1.1.0-alpha.3 pre-release cleans up some outstanding issues found in in alpha.2.

Other than a number of minor fixes and cleanups (thank you for all of the feedback!), the primary change in this pre-release is the fixing of incentives to preserve the intended base_reward invariant (#2266). Huge shout-out to @barnabemonnot for modeling the incentives and identifying a minor error in the specification.

PR showing full diff can be found here: #2306

Altair

Beacon chain

  • Fix incentives to preserve intended base_reward invariant (#2276)
  • [non-substantive] Add missing signature domains to config files (#2266)
  • [non-substantive] Simplify balance calculation in process_sync_committee (#2294)
  • [non-substantive] Set temporary ALTAIR_FORK_SLOT to max int value (#2287)

Validator

  • Fix selection proof copy (#2299)
  • [non-substantive] Fix incorrect use of block root (#2277)
  • [non-substantive] Fix aggregation bit example (#2279)

Network

  • [non-substantive] Optimize order of Altair gossip validation conditions (#2293)

R&D

  • Core of Merge specs merged into dev (#2257, #2281)
  • Modularize sharding features: Sharding, Custody Game, and Data Availability Sampling (#2254)
  • Update ShardBlob header structure to accommodate slashing (#2302)

Testing, Repo, etc

  • Fix test_filtered_block_tree test generator (#2272)

Half of 'em just look like dots

22 Mar 22:04
c284078
Compare
Choose a tag to compare
Pre-release

Release

v1.1.0-alpha.2 is a small iteration on last week's alpha.1.

This release fixes some issues in the test generators and makes some minor, non-substantive cleanups.

PR showing full diff can be found here: #2262

Phase 0

Beacon chain

Stable!

Note: process_justification_and_finalization was refactored to utilize a weigh_justification_and_finalization helper to facilitate cleaner spec writing in subsequent phases (#2258)

Altair

Beacon chain

  • Utilize weigh_justification_and_finalization to reduce code duplication (#2258)
  • Rename in-state sync sub-committee to avoid name collision with aggregation sub-committees (#2255)

Validator

Ensure Altair validator guide is executable (#2256)

Testing, Repo, etc

  • Fix Altair test fork version generator issue (#2259)
  • Fix test generator file output mix-ups (#2261)

Stargazer

17 Mar 03:16
3ce090f
Compare
Choose a tag to compare
Stargazer Pre-release
Pre-release

Release

v1.1.0-alpha.1 is the first pre-release for the upcoming Altair upgrade.

Although all core features are in place, we expect some iteration as client teams begin to implement.

PR showing full diff can be found here: #2230

Phase 0

Beacon chain

Stable with respect to features!

Note: process_final_updates was removed and replaced with sub-functions mapping to the different components of prior functionality. This non-substantive change facilitates cleaner spec writing in subsequent phases.

Networking

Stable other than one minor gossip validation added -- require gossip blocks to have a higher slot than their parent (#2196).

Weak subjectivity

Updated with extended weak subjectivity period calculations and sample values.

Altair

Beacon chain

All features for Altair upgrade in place. Features include:

  • Sync committees to support light clients
  • Incentive accounting reform to reduce spec complexity
  • Modified attestation rewards to increase incentive compatibility
  • Per validator inactivity leak
  • Penalty parameter updates toward maximally punitive parameters

Note: No major additions nor subtractions to this feature-set are expected unless unless unexpected security or engineering issues are uncovered. That said, minor adjustments based on engineering feedback should be expected.

Fork

Provides a function for upgrading the Phase 0 BeaconState to an Altair BeaconState.

ALTAIR_FORK_SLOT TBD.

Validator

Core Altair features in place, including:

  • Including sync committee aggregates in beacon blocks
  • Handling new validator sync committee assignments

Networking

Core Altair features in place, including:

  • Upgraded beacon_block gossip topic for new Altair type
  • Added gossip topics and validations for sync committee messages
  • Upgrade path for Req/Resp domain to handle cross-fork types

Note: Some of the particulars of the sync aggregation protocol might still be refined before the main release of v1.1.0 specs.

Sync protocol

Describes a minimal version of the light client sync protocol that leverages the new Altair sync committees.

This protocol is illustrative of how to build light clients using this new feature, but this should not be considered exhaustive with respect to viable designs.

Phase 1 (sharding)

Sharding spec is considered unstable and should only be used for educational purposes. Expect deep changes.

Testing, Repo, etc

  • Add Altair test vectors along with new fork function unit tests (#2220)
  • Compress tests with snappy, remove YAML duplicates (#2097)
  • Bump py_ecc to v5.2.0 (#2223)
  • Disable phase 1 tests from CI and generators

Contractual Control

24 Feb 17:44
d5d0d75
Compare
Choose a tag to compare

Release

v1.0.1 release adds support for the 0x01 withdrawal prefix -- ETH1_ADDRESS_WITHDRAWAL_PREFIX -- enabling a new withdrawal credential type that is a 20-byte eth1 address.

Note: This is entirely non-substantive with respect to eth2 consensus and clients today. Instead (similar to the 0x00 prefix) it is a commitment to support withdrawals of a particular type in the future. A few additional deposit consensus tests were added to ensure clients can process the 0x01 prefix as well as "malformed" prefixes/credentials.

PR showing full diff can be found here: #2211

Feature original spec'd and discussed in this PR then cherry-picked to master: #2149