Skip to content

Transition SSZ out of Eth2 specs repo, introduce new SSZ specs repo. #1901

@protolambda

Description

@protolambda

First of all: this does not change any existing SSZ functionality, this is a proposal to extend the information available, and move it out of the Eth2 specs repository.

The current SSZ specification in this repository is very dense, prune to bugs because of it, and most of all, incomplete with regards to the more advanced features.

There is a lot I want the SSZ spec to describe: principles, ideas, advanced topics, and more description for hardening certain decoding features. However, this seems like too much to fit into the Eth2 specs.

So instead, I have this draft up for an SSZ specs repository:

https://github.com/protolambda/eth2.0-ssz/ (yes, moving it out of a personal GitHub repo once we have a transition plan).

I also plan to include ssz-specific testing in this new repository as well, to better cover invalid SSZ data, and help SSZ implementations embed just the tests they need, as opposed to the full Eth2 suite of tests. (fastssz as standalone Go library being a good example)

Additionally, I am looking to do versioning differently, where features grow in stages, and feedback on style and wording can be merged into the specs more quickly for unstable stages.

Hopefully this also enables the formal verification team (cc @franck44, @booleanfunction) to express their findings better. I feel like any change in the current SSZ spec here confuses implementers more than it helps them, since the functionality is there, but the way it is written is difficult to follow, and having a debate whether or not something is a bug, or how/when something breaks, shows how limiting the spec format is.

So this is an open call for others involved in SSZ to give the draft repo a look, help iterate on it now that it's still an early draft and friction is lower, and to plan on a transition to this separate SSZ repository.

CC @wemeetagain @zah - since you have both spent a lot of time on more advanced SSZ implementations, you may be interested.

Metadata

Metadata

Assignees

Labels

sszSimple Serialize

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions