Hey! I’m from Lumina team. We started implementing versioned consts from appconsts and we encounter some issues while incorporating them in our celestia-types
crate.
These are the issues:
SubtreeRootThreshold
is used whenBlob.Commitment
is computed, howeverAppVersion
is only present inExtendedHeader
. So if a user requests aBlob
, they need first to requestExtendedHeader
, thenBlob
and then pass theAppVersion
in order to get theCommitment
. In celestia-node you workaround this by having a fixed version of constants, which we believe it is going to be an issue later on.ExtendedDataSquare
has a theoreticalMAX_EXTENDED_SQUARE_WIDTH
, which isSquareSizeUpperBound * 2
. We use this value to validate EDS, but now this check can not be really done. We are unsure what to do about it. In order to keep this check then we need to apply restrictions on type-level and force user to give us theExtendedHeader
on validation.DataAvailabilityHeader
has also a theoreticalMAX_EXTENDED_SQUARE_WIDTH
, howeverDataAvailabilityHeader
exists inExtendedHeader
and you can not retrieve it independently. Because of that we can passExtendedHeader.Header.Version.App
when we do the validation.
We believe AppVersion
should be added in all structs that need versioned consts and can be fetched on independently with an API call.