Skip to content

Releases: ethereum/consensus-specs

LAN party

11 Mar 22:55
e2bd8c7
Compare
Choose a tag to compare

Release

This one has been a long time coming. This release represents a "post-audit" Phase 0 spec, ready for long-standing multi-client testnets.

💻 <-> 🖥 <-> 💻 <-> 🖥 <-> 💻 <-> 🖥 <-> 💻 <-> 🖥 <-> 💻 <-> 🖥 <-> 💻 <-> 🖥 <-> 💻

The bulk of this release is centered on networking -- adding some features (#1606, #1607, #1614, #1652), DoS protections (#1615, #1616, #1617), and simplifications (#1604).

The state transition saw a few modifications as well -- fixing a bug or two (#1627, #1635), adding a couple fields for enhanced usability (#1626, #1614), and making sure rewards are lock tight (#1653).

The state transition will no longer see changes unless critical bugs emerge (e.g. something like this overflow), but we do expect the network spec to see some additions, modifications, and clarifications based on this month of multi-client experimentation.

PR showing full diff can be found here: #1645

Phase 0

Beacon chain

  • Adjust hysteresis to avoid initial over-deposit incentive (#1627)
  • Add proposer_index to BeaconBlock (#1626)
  • Handle rewards overflow (#1635)
  • Add genesis_validators_root to BeaconState to support better fork separation (#1614, #1652)
  • Denominate Eth1 voting period in epochs (#1649)
  • Attestation must match target to match head for rewards (#1653)
  • Minor fixes -- typos, formatting, etc (#1568, #1567, #1619)

Fork choice

  • Pull out some helper functions for better code reuse across forks [No Substantive Change] (#1504)
  • Minor fixes -- typos, formatting, etc (#1603, #1651, #1655, #1645)

Validator

  • BeaconBlock slashing is per-slot (reflect this in v-guide) (#1612)
  • Minor fixes -- typos, formatting, etc (#1588, #1602, #1605, #1611)

Networking

  • Add libp2p-noise specification (#1607)
  • Remove head_block_root from BeaconBlocksByRange (#1604)
  • Add subnet validations for DoS resistance (#1615)
  • Add lower bound slot condition on block gossip (#1616)
  • Add DoS prevention validation conditions to additional gossipsub topics (#1617)
  • Use snappy frames to support streaming (#1606)
  • Add eth2 key/value to ENR (#1614)
  • Add fork digest to gossipsub topics for simple fork versioning of messages and to Status message (#1652)
  • Minor fixes -- typos, formatting, etc (#1569, #1648)

Deposit contract

Stable!

Simple Serialize

BLS

Stable! Although it looks like there will be a final set of minor changes introduced into the IETF spec soon

Phase 1 spec (warning: not stable)

  • Major refactor of Phase 1 to handle full shard crosslinking per slot (#1504)
  • Remove shard block chunking (#1560)

Warning The Custody Game challenge-response is currently missing, but will be reintroduced soon when the core Phase 1 shard chain design stabilizes. Client teams looking to prototype Phase 1 should first focus on shard data mechanics, while stubbing out custody game logic.

Light client spec (warning: not stable)

Light client sync spec is under redesign in the context of the phase 1 redesign. The current light client spec can be used for general educational purposes to understand the approach we are considering, but will see heavy redesign after phase 1 stabilizes.

Testing, Repo, etc

  • Package the pyspec (#1584)
  • Deposit contract testing cleanup and better management of python versions (#1587)
  • BLS testing nitpicks (#1610)
  • Bump in-repo version to 0.11.0 for release (#1647)
  • Minor fixes -- typos, formatting, etc (#1623, #1622, #1646, #1654)

418 I'm a teapot

23 Jan 20:18
b74dd67
Compare
Choose a tag to compare

Release

Quick bump on v0.10.0 release to fix some broken test generators (#1575), a couple of fork choice bugs (#1579, #1580), and a couple of other minor bugs.

Considering the broken test generators in v0.10.0 and the couple of bugs introduced, I fully recommend just targeting v0.10.1 on your releases.

PR showing full diff can be found here: #1589

Phase 0

Beacon chain

  • Fix accidental error introduced into the exit queue at last release (#1581)
  • Ensure that GENESIS_FORK_VERSION can be properly configured for default signature domain (#1583)
  • Minor fixes -- typos, formatting, etc (#1590)

Fork choice

  • Properly handle skip slots in fork choice (#1579)
  • Ensure justified checkpoint in store remains coherent with finalized checkpoint (#1580)

Validator

Stable!

Networking

Stable!

Deposit contract

Stable!

Simple Serialize

  • Fix ssz_generic test generator (#1575)

BLS

  • Fix and modify test generators to represent the utilized BLS APIs (#1575)

Phase 1 spec (warning: not stable)

The Phase 1 spec is currently being redesigned in accordance with the new sharding proposal. You can monitor the latest progress in #1504. Because of this redesign, the spec is highly in flux and not currently executable, thus the Phase 1 tests are currently disabled in CI.

Light client spec (warning: not stable)

Light client sync spec is under redesign in the context of the phase 1 redesign. The current light client spec can be used for general educational purposes to understand the approach we are considering, but will see heavy redesign after phase 1 stabilizes.

404 Not Found

11 Jan 00:48
2e3fcc1
Compare
Choose a tag to compare

Release

Major release centered on the integration of the IETF BLS standards into the eth2 spec (#1532). Thank you to everyone across many teams that worked on formalizing these standards, and special thanks to @CarlBeek and @kirk-baird for representing Ethereum's interests in the process.

This release also contains a deep and much needed reorganization of files/directories. The previous spec file groupings using phase number prefixes was unsustainable. Now files are nicely grouped into fork-based directories. Although the spec is internally consistent, we do expect this to break some links found in external resources. Sorry! If you find one, be a good citizen and patch it or contact the maintainer. You can read more about this change and the new directory organization here: #1564

The rest of the changes are some minor optimizations and cleanups
Most of these are generally backward compatible, and all should be very straight forward to integrate.

v0.10.0 marks a stable target for Phase 0 for multi-client testnets and security reviews. We expect some revisions in February/March pending the results from each.

PR showing full diff can be found here: #1561

Phase 0

Beacon chain

  • Be more explicit with some bytes-type constants (#1551)
  • Allow configuration of genesis fork version to more easily separate testnets (#1554 [note two bugs to this feature fixed in #1556 and #1562])
  • Make genesis delay configurable for ease of setting up testnets (#1557)
  • Move GENESIS_SLOT/GENESIS_EPOCH to constants as they were not truly configurable in the first place (#1556)
  • Add additional Deposit test cases (#1558)
  • Very minor cosmetic cleanups. No breaking changes and no renamings! (#1525)

Fork choice

Stable!

Validator

  • Use timestamp instead of block height in eth1 voting to allow for simpler caching (#1553)
  • Add eager attestation broadcasting to optimize attestation propagation in the normal case (#1555)

Networking

  • Allow empty lists in streamed responses (#1549)
  • Validate block not from future slot (and add a small clock disparity allowance) (#1563)

Deposit contract

  • Version bump to integrate a recent fix in the vyper compiler (#1539)

Simple Serialize

  • Rename BytesN to ByteVector and Bytes to ByteList to conform to naming conventions and avoid confusion (#1480)

BLS

  • Integrate IETF BLS standards and use in spec throughout (#1532)

Phase 1 spec (warning: not stable)

The Phase 1 spec is currently being redesigned in accordance with the new sharding proposal. You can monitor the latest progress in #1504. Because of this redesign, the spec is highly in flux and not currently executable, thus the Phase 1 tests are currently disabled in CI.

Light client spec (warning: not stable)

Light client sync spec is under redesign in the context of the phase 1 redesign. The current light client spec can be used for general educational purposes to understand the approach we are considering, but will see heavy redesign after phase 1 stabilizes.

Jólakötturinn

20 Dec 00:26
542e39b
Compare
Choose a tag to compare

Release

This release is centered around some network enhancements -- one to aid in finding peers on attestation subnets (#1534) and the other to prevent redundant gossip message delivery (#1538).

In addition to these core enhancements, we also fixed a couple of generated tests (#1544), added spelling checks to CI (#1527), and clarified when a client might need to send STATUS messages (#1540)

The core system logic remained stable and this release is backwards compatible with v0.9.3. That said, the network layer will run smoother if all clients update to v0.9.4 :)

Changelog

PR showing full diff can be found here: #1545

Phase 0

Beacon chain

Stable!

Fork choice

Stable!

Validator

  • modifications to support new ENR attesation subnet bitfield (#1534)

Networking

  • add ENR attestation subnet (attnets) bitfield (#1534)
  • override default libp2p pubsub message-id to be content-addressed (#1538)
  • add quick clarifying note on STATUS message (#1540)

Deposit contract

Stable!

Simple Serialize

Stable!

BLS

Warning: Bug exists in BLS hash to G2 in the current spec. The hash and increment approach will be deprecated after standardization so the bug is to be untouched for now_

Significant changes are to be released in January. The proposed standard has moved forward in the IETF process and is deemed stable. A PR updating to this version of the BLS spec is under review in #1532.

Phase 1 spec (warning: not stable)

The Phase 1 spec is currently being redesigned in accordance with the new sharding proposal. You can monitor the latest progress in #1504. Because of this redesign, the spec is highly in flux and not currently executable, thus the Phase 1 tests are currently disabled in CI.

Light client spec (warning: not stable)

Light client sync spec is under redesign in the context of the phase 1 redesign. The current light client spec can be used for general educational purposes to understand the approach we are considering, but will see heavy redesign after phase 1 stabilizes.

rm `signing_root`

12 Dec 19:44
e7c5d64
Compare
Choose a tag to compare

Release

This release handles some structural cleanups, fork choice fixes/enhancements, some minor bugs, and increased test coverage. v0.9.3 is intended to be the stable target for clients and testnets until BLS updates are released in January.

The deepest and most exciting change here was led by @protolambda to completely remove signing_root (#1491) from SSZ and the rest of the spec. This removal allows for better caching of objects, no need for ZERO (invalid) signatures in consensus, and a generally cleaner representation of objects and signatures.

Changelog

PR showing full diff can be found here: #1507

Phase 0

Beacon chain

  • remove signing_root and add explicit signed message containers (#1491)
  • ensure attestation slot and target epoch are coherent (#1509)
  • fix activation queue rate and enforce only activate upon finality (#1514)
  • disallow duplicate indices in indexed attestation (#1516)
  • additional proposer tests for increased coverage (#1518)

Fork choice

  • remove duplicate validation in on_attestation (#1492)
  • filter out non-viable branches when call to get_head (#1495)
  • clean up handle of slots (#1510)
  • ensure best_justified_checkpoint updates to the best available (#1508)
  • ensure attestation slot and target epoch are coherent (#1509)

Validator

Stable other than some changes made to signing_root and wrapper objects

Networking

Stable other than some changes made to signing_root and wrapper objects

Deposit contract

  • bump vyper compiler to b13 to match formal verification effort (#1491)

Simple Serialize

  • remove signing_root (#1491)

BLS

Warning: Bug exists in BLS hash to G2 in the current spec. The hash and increment approach will be deprecated after standardization so the bug is to be untouched for now_

Significant changes are to be released in January. The proposed standard has moved forward in the IETF process and is deemed stable. A PR updating to this version of the BLS spec is under review in #1499.

Phase 1 spec (warning: not stable)

The Phase 1 spec is currently being redesigned in accordance with the new sharding proposal. You can monitor the latest progress in #1504. Because of this redesign, the spec is highly in flux and not currently executable, thus the Phase 1 tests are currently disabled in CI.

Light client spec (warning: not stable)

Light client sync spec is under redesign in the context of the phase 1 redesign. The current light client spec can be used for general educational purposes to understand the approach we are considering, but will see heavy redesign after phase 1 stabilizes.

Directed Chatter

21 Nov 21:02
aafbe1f
Compare
Choose a tag to compare

Release

As we near re-freezing the Phase 0 specification, this PR tightens things up a bit. Other than generally cleaning up and adding clarifications, the meat of this release lies in #1476 and #1477.

#1476 provides explicit instructions to validators on which attestation subnets to join and when. The concept of RANDOM_SUBNETS_PER_VALIDATOR was introduced to provide subnet stability during Phase 0 before this is more naturally provided by shard duty assignments in subsequent phases.

#1477 does an additional round of hardening of the fork choice. The fork choice now requires that the attestation target is known as well as the attestation beacon block. The PR also prevents attestations from voting on blocks from future slots (thanks @paulhauner and @nrryuya for discussions regarding this scenario).

Changelog

PR showing full diff can be found here: #1488

Phase 0

Beacon chain

  • remove Hash alias and add Root alias for Bytes32 (#1478)
  • minor refactor to some vars and functions in aggregation strategy to meet repo standards (#1484)
  • reduce minimum genesis validator count in mainnet config (#1467)

Fork choice

  • harden fork choice to a few scenarios (#1477)

Validator

  • provide explicit directives to validators on which attestation topics to join and when (#1476)

Networking

Some minor changes due to the above PRs (naming, etc)

Deposit contract

Stable

Simple Serialize

Stable

BLS

Warning: Bug exists in BLS hash to G2 in the current spec. The hash and increment approach will be deprecated after standardization so the bug is to be untouched for now_

Significant changes still expected as we standardize BLS12-381 across blockchains. The proposed standard has moved forward in the IETF process and is deemed stable. A PR updating to this version of the BLS spec is under review in #1398.

Phase 1 spec (warning: not stable)

The Phase 1 spec is currently being redesigned in accordance with the new sharding proposal. Because of this redesign, the spec is highly in flux and not currently executable, thus the Phase 1 tests are currently disabled in CI.

Light client spec (warning: not stable)

Light client sync spec is under redesign in the context of the phase 1 redesign. The current light client spec can be used for general educational purposes to understand the approach we are considering, but will see heavy redesign after phase 1 stabilizes.

Decoy and Bounce

08 Nov 21:43
03fb097
Compare
Choose a tag to compare

Release

This release is primarily focused on a further simplification to Phase 0 (#1462) as a final cleanup of any shard-related items. Specifically this removes the custody bit construct from Attestations and related data structures in Phase 0.

In addition to these state transition changes, two modifications (#1465, #1466) were made to the fork choice rule to harden its defenses against two known attack vectors (bounce-attack and flip-flop-decoy). @paulhauner also led the charge on cleaning up and clarifying some components of the eth1data voting mechanism in the validator guide (#1460, #1468, #1469)

Work is continuing on (#1427) with the redesign of Phase 1 and the light client specs, but these specs are considered highly unstable and will be subject to large/breaking changes in the coming weeks. The Phase 1 tests are still disabled in CI as they cannot be run in their current form.

Changelog

PR showing full diff can be found here: #1470

Phase 0

Beacon chain

  • remove custody_bits from Phase 0 (#1462)

Fork choice

  • add "bounce-attack" resistance (#1465)
  • add "decoy-flip-flop" resistance (#1466)

Validator

  • minor clarification for range of included deposits in genesis (#1460)
  • fix period_tail in get_eth1_vote (#1468)
  • clarify previous_eth1_distance for get_eth1_vote (#1469)

Networking

  • clarify roots for blocks in network spec (#1457, #1459)

Deposit contract

Stable

Simple Serialize

Stable

BLS

Warning: Bug exists in BLS hash to G2 in the current spec. The hash and increment approach will be deprecated after standardization so the bug is to be untouched for now_

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

Phase 1 spec (warning: not stable)

The Phase 1 spec is currently being redesigned in accordance with the new sharding proposal. Because of this redesign, the spec is highly in flux and not currently executable, thus the Phase 1 tests are currently disabled in CI.

Light client spec (warning: not stable)

Light client sync spec is under redesign in the context of the phase 1 redesign. The current light client spec can be used for general educational purposes to understand the approach we are considering, but will see heavy redesign after phase 1 stabilizes.

Tonkatsu

28 Oct 14:21
0642ff2
Compare
Choose a tag to compare

Release

Simple, yet delicious.

This release is primarily focused on simplifications to Phase 0 (#1329, #1428, #1443) in an effort to create an unbiased slate for the coming Phase 1 specifications. Specifically this cleans up Phase 0 in a minimally invasive way to ensure that the new sharding proposal can easily be built on top.

In addition to these state transition changes, a simple attestation aggregation strategy (#1440) has been added the validator and networking spec. This strategy specifies gossipsub subnets on which singular attestations are sent, and specifies which set of validators are selected as "aggregators" to broadcast to a global channel.

There has been a lot of work done on the Phase 1 and light client specs, but these specs are considered highly unstable and will be subject to large/breaking changes in the coming weeks. Currently, the Phase 1 tests have been removed from CI as they cannot be run in their current form.

Changelog

PR showing full diff can be found here: #1453

Phase 0

Beacon chain

  • feature
    • alter beacon proposer selection logic (#1413)
    • add seed domains (#1415)
    • fix delay-based attestation inclusion reward (#1434)
    • use eth1_block_hash for initial randao_mix (#1447)
  • simplifications
    • remove active active_index_roots and compact_committees_roots from phase 0 (#1329)
    • remove shards/crosslinks from phase 0 (#1428)
    • remove transfers from phase 0 (#1443)

Fork choice

  • verify state root in fork choice tests and other minor fixes (#1454)

Validator

Networking

  • add simple attestation aggregation strategy (#1440)

Deposit contract

The Deposit Contract has undergone a number of small alterations (#1362) as well as formal verification since the latest release. It is stable and ready for production.

Simple Serialize

  • define summaries and expansions (#1360)
  • add clarifications on deserialization (#1381)

BLS

Warning: Bug exists in BLS hash to G2 in the current spec. The hash and increment approach will be deprecated after standardization so the bug is to be untouched for now_

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

Phase 1 spec (warning: not stable)

The Phase 1 spec is currently being redesigned in accordance with the new sharding proposal. Because of this redesign, the spec is highly in flux and not currently executable, thus the Phase 1 tests are currently disabled in CI.

Light client spec (warning: not stable)

While the core of the light client spec was put in place, this hinges upon components of the Phase 1 spec which is currently under redesign. The current light client spec can be used for general educational purposes to understand the approach we are considering, but will see heavy redesign after phase 1 stabilizes.

Chunks

24 Oct 11:31
88b7215
Compare
Choose a tag to compare

Release

Minor release containing some enhanced test coverage and some updates to the network spec.

This release contains no substantive spec changes wrt the state transition, fork choice, validator guide, and SSZ.

Changelog

A full diff can be found in PR #1444

Networking

  • network spec update from discussions had at interop -- primarily updates to sync with some additional general clarifications (#1404)

Testing

  • add tests to enhance coverage based upon consensus errors found at interop (#1411)
  • add tests base on K-spec coverage analysis (#1442)
  • reduce BLS test name lengths (#1405)

chitchat

23 Aug 16:49
db34ee1
Compare
Choose a tag to compare

Release

Minor release prior to initial client interop efforts. As discussed on the latest eth2.0 implementers call this is the selected spec release target for client interop work going on in September.

This release contains no substantive spec changes wrt the state transition, fork choice, validator guide, and SSZ. It does contain some test-coverage fixes, spec clarifications, and a port of the updated network spec from dev.

Changelog

A full diff can be found in PR #1375

Non-substantive

  • clarify SSZ default values (#1346)

Networking

  • network spec for interop and mainnet (#1338)
  • minor network spec corrections/clarificatons (#1350)
  • clarify note on aggregation during interop (#1377)
  • doc standardization (#1334)

Testing

  • make nil-count randomization work for lists (#1347)
  • fix ssz-generic bitvector tests (#1374)