Closed rvagg closed 3 years ago
Looks correct overall. A few nits since this is the first time I am reading this in depth:
s/final/initial/
I went with "terminal", I'm uncomfortable with "initial" because this is viewing the chain backward, you can't start from the "initial", you have to work back to it (hence the original "final"). Reasonable?
OK, I'm scrapping that entirely and going a different direction:
# The type hint here, `BlockHeader`, holds true **except** for the case of the
# Genesis block, which is a different format entirely. Note there is a
# `BlockHeader` "bootstrap genesis" but its `Parents` is a single CID pointing
# to the actual Genesis block which is described by the `Genesis` type.
So we have this "bootstrap genesis" which is what the specs are going to refer to as the "genesis". I'm going to merge this but seek further clarification on how core folks talk about this quirk.
@ribasushi @willscott would you mind checking that I've done this appropriately? The main thing to look at is how I've taken the huge chain.md and extracted state.md from it. So chain.md is quite small now and points to both state.md and messages.md where those two come in to play. So the "main chain" should be fully described in chain.md according to how I understand how people describe the "main chain".
There's no data structure changes in here, just splitting docs and adding some new text to link it all together.