mlabs-haskell / mlabs-haskell/cem-script

Make time checks work again

Open
#92 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

cem-interfaces enhancement
Dominant language
Haskell
Stars
2
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Stages was removed in M4 for number of reasons.

API wise:

  1. Turns out timing constraints can depend on state, so Stages cannot be used to implement for example vesting
  2. They complicate CEMScript class and in conversations it seem to be an issue for understanding API

Implementation wise:

  1. Plutus has problems with nested type families, needs hacks to work with that
  2. Without Stages now user can completely remove Plutus compilation step (if they want to).
  3. Probably would increase script size and in general bring different compilation path/API from all other constraints

Proposed solution:

  1. Create new CheckInterval constraint. Enforce single such constraint per transition.
  2. One could add String names to them, to discover "Stage of Transition"-like labels on state graph , if one wants to.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files or tests; start by locating the current transition-constraint and time-check handling. Review how constraints are represented and enforced, then define completion as a single CheckInterval per transition, with optional names if that remains in scope, covered by tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
blockchain, compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.