Models of computation: selection criteria and candidates

Additional notes:

  • For determinism, the requirement of execution halting as soon as the gas limit has been exceeded can be relaxed a little bit - it merely needs to be the case that execution fails if the gas limit is exceeded in the end - local processing could exceed the gas limit for awhile if it’s cheaper to overshoot slightly than to synchronize all of the time. I don’t think this helps too much, since the primary problem with concurrent execution is potential non-determinism, but it’s worth noting.
  • We’ll need PACK / UNPACK operations for all pairs of finite field types.
  • Would be nice to choose bytecode assignments with some canonical ordering of the set of all finite fields.
    • This could be prime, then power, then operation.
  • A subset of this VM should be equivalent to the “JoeVM” (Sketch of a possible VampIR VM - #15), where segments correspond to sequences of stack operations in between control flow instructions.