This PR aligns some of the types we use with this spec to simplify comparisons and cross-referencing.
Using a distinct type is a tradeoff between nim ergonomics, type safety and the ability to work around nim quirks and stdlib weaknesses.
In particular, it allows us to overload common functions such as hash with correct and performant versions as well as maintain control over string conversions etc at the cost of a little bit of ceremony when instantiating them.
Apart from distinct byte types, Hash32, is introduced in lieu of the existing Hash256, again aligning this commonly used type with the spec which picks bytes rather than bits in the name.
Since these types were written, we've gained an executable spec:
https://github.com/ethereum/execution-specs
This PR aligns some of the types we use with this spec to simplify comparisons and cross-referencing.
Using a
distinct
type is a tradeoff between nim ergonomics, type safety and the ability to work around nim quirks and stdlib weaknesses.In particular, it allows us to overload common functions such as
hash
with correct and performant versions as well as maintain control over string conversions etc at the cost of a little bit of ceremony when instantiating them.Apart from distinct byte types,
Hash32
, is introduced in lieu of the existingHash256
, again aligning this commonly used type with the spec which picks bytes rather than bits in the name.