Closed nielstron closed 11 months ago
More useful links for this topic: https://book.world.dev.cardano.org/cost-model.html https://aiken-lang.org/resources/plutus-core-specification.pdf https://github.com/input-output-hk/plutus/blob/d22a17ff52bb335a2fe8097bc5f92f5b05dc524a/plutus-core/cost-model/CostModelGeneration.md https://github.com/input-output-hk/plutus/blob/43ecfc3403cf908c55af57c8461e96e8b131b97c/plutus-core/cost-model/data/builtinCostModel.json
Resolved by #30
The proper execution step/memory consumption evaluation currently relies on aiken. This removes some responsibilites but essentially pulls Rust into the build chain. To improve accessibility, we should remove aiken from the dependencies.
This means we would need to re-implement the complete evaluation of UPLC properly in python. Reference implementations can be found in helios, aiken and Plutus.
Currently uplc supports a generous approximation of whether code evaluates (no check for execution steps, not always type checking) which is enough for some high level testing but not sufficient for proper tooling. However, this issue is less pressing than #11 because #11 is what currently pulls pyaiken into the dependency chain of opshin.