Use non-zero costmodels in Imp tests #4766
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
At the moment, Imp tests are using zeroCostModels with Plutus scripts, which, in essence means that the way we are setting the budget in the redeemers has no impact on script execution.
In this PR, I have switched to using the cost models provided by Plutus for testing.
Making the switch revealed that we weren't computing the budget correctly, but because of the zero cost models, the problem hasn't manifested.
Specifically, the budget (set in the redeemers) depends on the value of the fee, which in turn depends on the value of the redeemers (I think via the size of the transaction).
In master, the order of the fixup is: fixupRedeemers >=> fixupFees ... With non-zero cost models, tests are failing because of unsufficient budget (that doesn't take the fee into account).
In this PR, I'm first computing the fee, maximizing it with respect to the budget (so assuming the maximum budget), then computing the real budget, with a previously computed more realistic fee.
I also added 10% to the fee as a margin, because in some cases it would still go over.
Any suggestions for a more elegant solution are welcome!
Closes #4404
Checklist
CHANGELOG.md
for the affected packages.New section is never added with the code changes. (See RELEASING.md)
.cabal
andCHANGELOG.md
files according to theversioning process.
.cabal
files for all affected packages are updated.If you change the bounds in a cabal file, that package itself must have a version increase. (See RELEASING.md)
fourmolu
(usescripts/fourmolize.sh
)scripts/cabal-format.sh
)hie.yaml
has been updated (usescripts/gen-hie.sh
)