Releases: ethereum/consensus-specs
Tonkatsu
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
- simplifications
Fork choice
- verify state root in fork choice tests and other minor fixes (#1454)
Validator
- add simple attestation aggregation strategy (#1440)
- remove validator API and migrate to eth2 APIs repo (#1366)
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
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
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
chitchat
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
Prototypical Testing
Release
Minor release to that handles a few critical bugs found by client implementers along with a handful of minor cleanups, documentation fixes, etc.
Major work (#1320) was done by @protolambda to clean up test generation and organization based on the feedback of client teams. The schema for the tests themselves stays the same, but the test inputs and outputs are segmented into separate files, in a directory per test case with both .ssz
and .yaml
formats available. This enables readable yaml
diffs between pre
and post
state yaml, while ssz
is there for fast and easy test loading. Tests are organized in a more hierarchical directory structure starting with <config name>
and with the config.yaml
copied into the test repo. There was a lot addressed in this PR, please see #1320 for detailed explanation.
Another notable fix (#1300) was a bugfix related to BLS domain format. With the freeze, the spec changed domains to be defined as bytes8
rather than uint64
. Previously this uint64
had to be changed back into bytes in the BLS libraries, including the one used for the testing infrastructure (py_ecc
). This conversion was still in big-endian, as opposed to the spec'd little-endian behavior.
Changelog
A full diff can be found in PR #1333
Bugs
- correctly use
bytes8
domain in bls in test generation (#1300) - fix start shard for compact committees root (#1319)
- properly check attestation bitlist lengths (#1317)
- ignore latest messages in fork choice prior to latest justified (#1306)
Non-substantive
- test generation refactor (#1320)
- clarify illegal SSZ types [non-substantive for core specs] (#1283)
- clarify length bit for Bitlist merklization (#1314)
- var mismatch in validator guide,
MAX_INDICES_PER_ATTESTATION
->MAX_VALIDATORS_PER_COMMITTEE
(#1308)
Phase 1
Phase 1 is in heavy development. The focus has been on cleaning up the shard chain and light client specs to provide a more stable spec for prototyping. Keep an eye on the dev
branch and related issues for phase 1 conversations and PRs.
Frozen Yogurt
Release
Minor release to sweeten the spec freeze that handles a few critical bugs found by client implementers when working through the v0.8.0
test vectors along with a handful of minor cleanups, documentation fixes, etc.
Changelog
A full diff can be found in PR #1295
Bugs
- fix off-by-one bug in randomness seed lookahead (#1296)
- call
pack
when merkeizing bitlist/vector (#1271) - corrections to merkleization (#1292)
Non-substantive
- define bitlist/vector wrt bytes, not bigints (#1267)
- avoid overflow in slashing penalty calculation (#1286)
- clarify zero hash representation using
Bytes32
(#1297) - update test formats list in readme (#1265)
- fix test generator make command in readme (#1268)
- minor fix to typing (#1263)
- minor fix to headers/toc (#1285)
- minor cosmetic fixes (#1275)
SubZero
Release
This release marks the end-of-june phase 0 spec freeze ❄️. v0.8
is to serve as a stable target as implementers work toward multi-client testnets in addition to on-going efforts in formal verification, fuzzing, and audits.
Thank you to everyone who has put it so much incredible work to get to this point :)
Changelog
PR showing full diff can be found here: #1242
Phase 0
Beacon chain
- features
- simplifications
- bugs
- misc
- set
MIN_ATTESTATION_INCLUSION_DELAY
to 1 in mainnet config (#1157) - make explicit which constants are configurable or not (#1191)
- clarify validity conditions for initiating a transfer (#1213)
- remove bounds check in
compute_shuffled_index
(#1252) - minor formatting/typos/etc PRs (#1203, #1214, #1215, #1212, #1230, #1221, #1235, #1234, #1243, #1245, #1249, #1255, #1256)
- set
Fork choice
Validator
- harden eth1.0 voting against stale block attacks (#1218)
- make bulk of guide executable (#1236)
- minor update to use checkpoints (#1253)
Networking
- no changes
Deposit contract
- make
deposit_root
a valid SSZhash_tree_root
by mixing in length (#1202) - bump Vyper version to
v0.1.0b10
(#1260)
Simple Serialize
- add note on default zero-values (#1208)
List
type requires max length (#1180)- add
Bitlist
andBitvector
types (#1224)
BLS
- minor fix to
hash_to_g2
type-hint (#1222) - 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
Significant changes still expected as we standardize BLS12-381 across blockchains
Phase 1 spec (warning: not stable)
- resolve minor issue in
early_secret_reveal
(#1209) - minor formatting/types/etc PRs ()
Light client spec (warning: not stable)
- no changes
Testing/CI
Fuzzy Sweater
Release
Minor release that handles a few critical bugs found by client implementers when working through the v0.7.0
test vectors. Thank you @sorpaas and @zilm13!
This release also adds some tooling to enabling pyspec fuzzing prior to the spec ❄️freeze❄️.
Changelog
A detailed changelog can be found in PR #1176
Critical testing bugs
- Fix for randao processing (#1169)
- Fix for properly handling
state_root
in blocks in tests (#1146) - Fix for G2 padding in bls tests (#1179)
Additional changes
eth2 and chill
Release
v0.7.0
marks an iterative semi-major release prior to the end-of-june phase 0 spec freeze ❄️ . The focus here is continued clean-up and simplification of phase 0 along with some testing, network, and ssz updates.
The spec implementation of SSZ had a major overhaul to support cleaner and more intuitive typing (thanks @protolambda!).
Phase 1 is now executable and a general framework exists for writing tests across phases (thanks @CarlBeek!).
Progress is being made on the phase 0 networking and RPC specs. This has been majorly a community effort. Thank you for the great work from many sources :)
Lastly, the deposit contract is now back in the specs repo to better handle PR dependencies (thanks @hwwhww!).
Changelog
PR showing full diff can be found here: #1163
Phase 0
Beacon chain
- features
- simplifications
- bugs
- misc
Fork choice
- explicit note on how to compute fork choice near genesis (#1023)
- minor formatting/types/etc PRs (#998)
Validator
- clean up crosslink committee instructions (#1085)
- add initial API between beacon node and validator (#1069)
- minor fix to how eth1 data is tallied (#1108)
- minor formatting/types/etc PRs (#1032, #1033, #1026, #1057, #1071, #1086, #1093, #1164, #1140, #1142, #1155)
Networking
- use ssz union-type in RPC request/response (#974)
- add initial libp2p standardization (#935)
- minor formatting/types/etc PRs ()
Deposit contract
Simple Serialize
- clarity on merklization of a single chunk (#1058)
- Fix union type example (#1073)
- rewrite of SSZ to support more native typing (#1077)
- misc (#1056, #1138, #1144)
BLS
- insert bls spec warning into doc (#1103)
- 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
Significant changes still expected as we standardize BLS12-381 across blockchains
Phase 1 spec (warning: not stable)
- minor changes to custody game (#866)
- RANDAO reveal slashing, custody period staggering (#880)
- allow multiple bit challenges and recovert withdrawability (#1035)
get_custody_chunk_count
usesstart_
andend_epoch
(#1099)- clean up
process_penalties_and_exits
(#1116) - minor formatting/types/etc PRs (#1076, #1120)
Light client spec (warning: not stable)
- no changes
Testing/CI
order matters
Release
Quick bump in v0.6.x
release to fix a bug that emerged when running test vectors in other languages due to undefined ordering of set
s. Also added back in a deposit top-up test that got dropped in the v0.6.2
release.
Thank you @michaelsproul for finding, reporting, and fixing both of these :)
Changelog
The PR showing the full changelog of the v06x
branch being released into master
can be found here: #1137
mic check
Release
The long awaited testing enhancements for v0.6.x
!
This minor release focuses entirely on testing, and contains no substantive changes related to the spec. @protolambda drove the process to unify the python spec tests and the YAML test generators, and in doing so has increased YAML test coverage by an order of magnitude.
Other than test generator work and documentation, bls signatures were updated to utilize the correct (SHA-256) hash function (#1121).
Changelog
The PR showing the full changelog of the v06x
branch being released into master
can be found here: #1130
Tests and generators
- Decorator for pytests to enable usage in test generation (#1052)
- Ensure signatures are correct in test generators. default disable in pytests for speed (#1102)
- Add epoch and sanity test generators and a number of test-format docs (#1114)
- Update
py-ecc
version to use SHA-256 (#1121) ssz_static
test-case format is changed to facilitate more efficient parsing. The SSZ type is specified in the key now. (Commit 3781614)- Minor fix to shuffling generator (#1045)