espresso-sequencer
espresso-sequencer copied to clipboard
dynamic versioning
This PR:
- Adds both base and upgrade versions to the genesis.toml file and deserializes them from string format into the Version struct.
- Initializes the base and upgrade versions in binaries from the genesis.toml file.
- separates the API version from the protocol versions. The
SequencerApiVersion
is currently hardcoded as V0.1 for all APIs. - Renames the
main
function torun
in binaries that require a protocol version, run() accepts a generic parameter V that implements the Versions trait. This allows matching and initializing versions from the genesis.toml file using the appropriate type. This can be replaced with a macro - adds message compat test for each version
Files to review: all files mostly but primary focus on genesis.toml config, SequencerVersions type and main functions in all binaries.
test: Run the demo native locally to ensure everything functions as expected.