After the holidays I continued work on my ETHSingapore project: an ETH 2.0 client, with all the research into further development towards the ETH 2.0 spec. Familiarizing yourself with the spec is important to get things right, and so I started updating the classes, package structure and “flow” in the codebase, to match the specification better.
It occurred to me that it’s actually pretty nice to have an overview of the different categories in the spec, and so I started drawing the architecture on draw.io. And after categorization, and layering it into “data”, “block”, and “state”, I went further: what if you can define the whole specification, not just the names, in a visual way? This way everyone can read it, make sense of it, with or without developer background.
This was easier said than done: reverse-engineering the ever-changing spec was not a pretty process, but everything made sense eventually.
The complete visual, or “schematic” as I like to call it, is available on GitHub.
After every tagged spec release, I will update the visual, to keep it up to date with all the changes. If you see an inconsistency you can submit an issue on GitHub, and I’ll try to fix it in the next release.
GitHub repo here: GH/protolambda/beacon-schematic
The current roadmap to improve the schematic itself is:
- Include field-names / details about the Data objects. The spec needs to be more stable first.
- Add any missing functionality based on suggestions.
- Make it look less like the “Rube Goldberg machine” it is. It’s not just the drawing, the spec itself is really complex. Vitalik commented that he’s looking to reduce the complexity by about 1/4th.
Link to the latest SVG edition: HERE