SPARK rounds vs MERidian rounds

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