IntersectMBO / IntersectMBO/plutus

What guarantees do we have about about the internal structure of the things in `ScriptContext`?

Open
#4,509 12 comments 6 reactions 0 assignees View on GitHub
security status: needs triage
Dominant language
Haskell
Stars
1.6k
Forks
508
Avg merge
3d 10h
Merged PRs (30d)
22

Description

### Describe the feature you'd like

I'm specifically wondering about:
- Internal ordering of entries in maps in `ScriptContext`.
+ Both for things like `txInfoData` that don't use the `Map` constructor and also things like `Value` that do use it.
- Is it possible for there to be `0` of a token in a value?
- Is it possible for there to be an empty `CurrencySymbol` entry in a value?
- Internal ordering of entries in sets.
+ E.g. `txInfoDCert`, `txInfoSignatories`, and similar.

I already know that inputs are lexicographically ordered as noted in https://github.com/input-output-hk/plutus/issues/4296#issuecomment-1004723515.

The questions about values are e.g. to know whether a naïve equality check represents "real" equality.
If you could have `0` of a token, then a `Value` with `0` of a token would not be equal to one that is otherwise the same
but does not include the same, even though they represent the same amount.

### Describe alternatives you've considered

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.