Stages was removed in M4 for number of reasons.
API wise:
- Turns out timing constraints can depend on state, so
Stages cannot be used to implement for example vesting
- They complicate CEMScript class and in conversations it seem to be an issue for understanding API
Implementation wise:
- Plutus has problems with nested type families, needs hacks to work with that
- Without
Stages now user can completely remove Plutus compilation step (if they want to).
- Probably would increase script size and in general bring different compilation path/API from all other constraints
Proposed solution:
- Create new
CheckInterval constraint. Enforce single such constraint per transition.
- One could add
String names to them, to discover "Stage of Transition"-like labels on state graph , if one wants to.
Stageswas removed in M4 for number of reasons.API wise:
Stagescannot be used to implement for example vestingImplementation wise:
Stagesnow user can completely remove Plutus compilation step (if they want to).Proposed solution:
CheckIntervalconstraint. Enforce single such constraint per transition.Stringnames to them, to discover "StageofTransition"-like labels on state graph , if one wants to.