Ideally, we want:
- SPARK and MERidian rounds to be aligned
- MERidian evaluates measurements committed within the MERidian round. If SPARK rounds are not aligned, a SPARK round will span across multiple MERidian rounds, which means SPARK evaluator needs measurements from two MERidian rounds, which is not possible in the current MERidian design.
- The MERidian round length is a multiple of SPARK round length and not the other way round.
- If there are multiple MERidian rounds per SPARK round, then we have the problem described above plus many MERidian round will be empty with nothing to reward.
- Alternatively, we can implement overlapping SPARK rounds running in parallel, but that’s way too much complexity.
→ We want the SPARK round to be the same as the MERidian round.
The question: how to sync SPARK and MERidian rounds?
- SPARK rounds are based on time interval (e.g. 30 minutes), aligned with DRAND and Filecoin epochs.
- MERidian rounds are based on block numbers (e.g. every 10 blocks). New blocks are added with a very variable rate. Miroslav thinks this is because each tipset contains a variable number of blocks.
Alternatively, how could a design look that doesn’t require syncing between the two rounds. Without syncing and without adapting the current design, you might have
- IE rounds without any evaluations, because SPARK does not have all measurements
- IE rounds with average measurements
If there’s no synchronization, we lose the measurement - round connection. This means measurements from round 0 can be evaluate in round 1 for example.
Can we make each SPARK round start at the start of each MERidian round, by listening to RoundStart events