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.