Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create separate directories for v1 and v2 plutus scripts #486

Merged
merged 5 commits into from
Jun 13, 2022

Conversation

Jimbo4350
Copy link
Collaborator

@Jimbo4350 Jimbo4350 commented May 27, 2022

Refactor plutus-example to make it easier to add future versions of plutus
Add an example plutus v2

@Jimbo4350 Jimbo4350 force-pushed the jordan/next-node-update-plutus-example branch 2 times, most recently from 0ed613e to f264084 Compare May 27, 2022 20:13
@Jimbo4350 Jimbo4350 marked this pull request as ready for review May 27, 2022 20:13
@catch-21
Copy link
Contributor

What do we do about existing Alonzo scripts that we want to compile as V2? I made this comment on #482: It would be good to be able to compile all existing V1 scripts as V2 without so much code repetition. Perhaps it would be better to keep just V2 functionality in the V2 dir and add V2 serialisation to the existing scripts? To make it less confusing, directories could be named after era and export multiple versions where supported.

@newhoggy newhoggy self-requested a review May 30, 2022 21:45
scriptContextTextPayingScript = PlutusScriptSerialised pv1RedeemerContextTestScriptBs


-- Minting script that checks the minting value, validty interval and
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/validty/validity

@catch-21
Copy link
Contributor

Following on from my previous comment, this is what I mean: b69dfff

@Jimbo4350 Jimbo4350 added the WIP The issue is currently being worked on label May 31, 2022
@Jimbo4350 Jimbo4350 force-pushed the jordan/next-node-update-plutus-example branch from 658ce64 to 504074e Compare June 6, 2022 19:30
@catch-21
Copy link
Contributor

catch-21 commented Jun 6, 2022

It'd be good to keep the serialised scripts stored in the repo at plutus-example/plutus/scripts up to date, is useful for node end-to-end tests.

@Jimbo4350 Jimbo4350 force-pushed the jordan/next-node-update-plutus-example branch from 504074e to 78f36ea Compare June 7, 2022 15:35
@Jimbo4350
Copy link
Collaborator Author

It would be good to be able to compile all existing V1 scripts as V2 without so much code repetition.

I agree however I say lets keep the repetition for now because I would prefer to make the difference between v1 and v2 scripts as obvious as possible.

To make it less confusing, directories could be named after era

Building on this idea what we can do is have a directory structure like the following: Alonzo.V1 and Babbage.V2 to give some indication as to which versions "belong" to which era.

@Jimbo4350 Jimbo4350 force-pushed the jordan/next-node-update-plutus-example branch from 78f36ea to 03d9a78 Compare June 7, 2022 16:50
@@ -16,8 +16,9 @@ import Cardano.Ledger.Era qualified as Ledger
import Cardano.Ledger.Shelley.UTxO qualified as Ledger
import Cardano.Ledger.TxIn qualified as Ledger
import Gen.Cardano.Api.Typed
import Plutus.V1.Ledger.Api qualified as Plutus hiding (singleton)
import Plutus.V1.Ledger.Interval qualified as Plutus
import Ledger qualified as Plutus
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't seem to need this.

@@ -77,6 +82,7 @@ library
, containers
, ouroboros-consensus
, ouroboros-network
, plutus-ledger
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You shouldn't need this if I'm not mistaken.

@Jimbo4350 Jimbo4350 removed the WIP The issue is currently being worked on label Jun 8, 2022
@Jimbo4350 Jimbo4350 force-pushed the jordan/next-node-update-plutus-example branch from 03d9a78 to 024088f Compare June 8, 2022 18:08
and to check for an inline datum of 42 in the reference inputs
@Jimbo4350 Jimbo4350 force-pushed the jordan/next-node-update-plutus-example branch from 024088f to 971809d Compare June 13, 2022 17:27
@Jimbo4350 Jimbo4350 merged commit 50cd370 into next-node Jun 13, 2022
@Jimbo4350 Jimbo4350 deleted the jordan/next-node-update-plutus-example branch June 13, 2022 17:56
berewt added a commit that referenced this pull request Oct 11, 2022
* SCP-3855: update node dep (#449)

* Update Cardano node et al. dependencies for the Vasil HF

* The Cardano node version will only work on a network with the Vasil release.

* Solve some compile issues

* wip: recovering instances for types from plutus-ledger-api

* wip

* plutus-ledger compiles

* plutus-ledger-constraints compiles

* Fixed warnings in Ledger.Tx.CardanoAPI for fields introduced by the Babbage era. Also adapted hashing functions for PlutusV1 scripts to work on PlutusV2

* Fixed warnings in Ledger.Tx.CardanoAPITemp and added implementation to undefined value

* plutus-contract compiles

* Added alonzoGenesisDefaults implementation (copied from cardano-node because it was deleted over there) to Ledger.Validation

* plutus-chain-index-core compiles

* Fixed compilation errors in playground-common and plutus-contract

* Fix compile errors in plutus-example

* Fix compile errors in plutus-pab

* Fix compile errors in plutus-playground-server

* WIP on plutus-use-cases

* Split Tx.Orphans into multiple Orphans

* Fix compilation errors on plutus-use-cases

* fix compilation issues

* Update nix

* fix formatting

* Remove wrongly commited files

* Update purescript modules

* Commented test on plutus-ledger temporarely until cardano-node is updated

* Update cardano-wallet with fixes for haddock

* Fix plutus-playground-client purescript imports

* Fix warnings in plutus-example

* Fix plutus-uniswap cabal

* Try to turn-off haddock for cardano-wallet

* [plutus-contract]: fix golden tests and commented test until cardano-node is updated

* Add cardano-cli/.../genesis.alonzo.spec.json to fix plutus-example

* Fix comment link to PR

* Comment out the test properly

* Update scripts/protocol-parameters with fresh plutusV1 cost parameters

Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>

* [chain-index]: export all servant client functions (#492)

* Fix playground client

* Fix streaming

* Fix purescript

* Create separate directories for v1 and v2 plutus scripts (#486)

* Reorganize the plutus-example library to distinguish clearly between V1
and V2 scripts.

* plutus-example reorganization
create v2 example script

* Modify the ScriptContextChecker module to be more generic

* Propagate the changes to the plutus-example apps and tests

* Update required-redeemer.plutus to also check for an inline datum of 42
and to check for an inline datum of 42 in the reference inputs

* Add PlutusV2 minting and staking scripts (#528)

* [chain-index]: add inline datums support and update cardano-node (#488)

* PLT-484 Upgraded cardano-node version to the official 1.35.0 release. (#551)

* Also upgraded cardano-wallet, plutus et al. versions that work with v1.35.0 of the node.

* Updated golden tests in plutus-use-cases and plutus-contract

* Updated version of components to 1.0.0 with cardano-node (#560)

* Updated the cardano-node bundled with plutus-apps to v1.35.0

* Updated version of all components in their respective cabal files to 1.0.0

* Update cardano-node dependency to 1.35.1

* Updated cardano-wallet, plutus and cardano-ledger to match the node
  version.

* Add script equivalence context test for the V2 context. (#588)

* Remove withIsCardanoEra workaround. (#607)

* BlockInMode now carries a IsCardanoEra constraint

* Increase the delay of awaiting in plutus-pab-executables tests (#565)

Set slot's length to 1s for awaiting tx/out status tests to make them stable

* [PLT-81] plutus-chain-index: support inline scripts when querying TxOut of a TxOutRef (#613)

* Make plutus-ledger-api version explicit in Ledger.Tx

* Make pattern match explicit

* Reorder ScriptChainIndexTxOut fields

To highlight they are the same as PublicKeyChainIndexTxOut.

* Add datum to both branches of ChainIndexTxOut

- Unfortunately we need to rename the fields because they have now
  different types.
- In the PublicKeyChainIndexTxOut case, the output datum is optional and
  we can use plutus-ledger-api OutputDatum type.
- In the ScriptChainIndexTxOut case, the output datum is required,
  nothing changes here but the name.

* Add ReferenceScript to ChainIndexTxOut

* Remove old comment

* Rename _ciTxOutDatumPublicKey and _ciTxOutDatumScript into _ciTxOutPublicKeyDatum and _ciTxOutScriptDatum

* Introduce fromReferenceScript

* Add comments to ChainIndexTxOut

* Add minting context equivalent test plutus script (#631)

* Add missing record field `localTxMonitoringClient` (#617)

* PLT-568: Switch to Babbage era (#614)

* Make Babbage the default era for the emulator

* Clean up

* Accept changes in test output

* Workaround for parseBabbageEraInCardanoModeTx

* Fix minAda calculation

* [next-node]: Bump wallet, plutus, ledger, node (#616)

* Bump cardano-node to 1.35.2 and rest of dependencies based on cardano-wallet

* Use '[TxIn]' instead of 'Set TxIn' in 'data Tx' (#623)

* [plutus-ledger]: Use '[TxIn]' instead of 'Set TxIn' in 'data Tx'.
* Add a property test to check Ord instances of TxIn.
* Sort the inputs in fromOnChainTx
* Sort the inputs in `Emulator.Wallet`
* Fix the review notes and the problem with getInput in StateMachine tests

* PLT-445 Add `mustReferencePubKeyOutput` in constraints library (#640)

* PLT-445 Add mustReferencePubKeyOutput in constraints library

* Added the mustReferencePubKeyOutput constraint in
  plutus-ledger-constraints

* Added a test case for the mustReferencePubKeyOutput

* Refactored Ledger.Tx.CardanoAPI to work with PlutusV2 alongside PlutusV1 scripts in the tx inputs.

* Use existing unitRedeemer

* Move TxIn and TxInType to Ledger.Tx

* Add plutus version to ConsumeScriptAddress constructor

* Add costModelParams for PlutusScriptV2

* Fix error codes.

* Renamed mkTxInfo to mkPV1TxInfo, added test for plutus-tx-constraints without implementation and commented for now the off-chain validation in Ledger.Index

* Implement reference inputs in makeTransactionBody'

* Fixed failing test cases for Ledger.Constraints.mustReferencePubKeyOutput

* Add MustUseOutputAsCollateral

* Fix V2 tests. But issues with V1 tests.

* Disable tests

* WIP

* Remove unused code

* PR feedback

* Remove unused code.

* Clean up

* Added additional info in TODO

* Add Arbitrary instances

* Convert plutus-ledger-constraint tests to PV2

* Fixed test in plutus-ledger-constraints

* Fixed PS generator error in playground

* Fix build

* Fix PS

* Fix PS

* More support of plutus version in constraints libs

* Default to PlutusV1 for now

Co-authored-by: Sjoerd Visscher <sjoerd.visscher@tweag.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@iohk.io>

* Update cardano-node to 1.35.3-rc1 with deps (#647)

* Upgraded to a cardano-wallet compatible with node 1.35.3-rc1 (#657)

* Reorganized dependencies based on cardano-wallet's cabal.project

* Added the new 'protocolParamUTxOCostPerByte' in 'Ledger.Params' which replaces 'protocolParamUTxOCostPerWord'

* Fixed the `Plutus.Contract.Wallet.mkMintingRedeemers` which triggered an error if the redeemers in the tx contained spending redeemers.

* Simplify MustReferencePubKeyOutput to MustReferenceOutput (#661)

* Replace LedgerPlutusVersion with Language type (#662)

* PLT-494: PlutusV2 TypedValidators (#666)

* Move common code to Plutus.Script.Utils.Typed

* Enable V2 TypedValidators

* Enable and fix reference output tests

* Update cardano-node 1.35.3-rc1 -> 1.35.3 (#669)

* PLT-448: inline scripts in constraint libraries (#678)

* Add inline script support to plutus-tx-constraints.

* Add mustOutputInlineValidator and mustOutputInlineMintingPolicy

* Add documentation

* Check there's no inline script in V1

* Fix wrong minAdaTxOut use

* Update renderGuess.txt

* Naming

* PLT-738: Include plutus language versions with scripts (#681)

* Store Plutus language versions in chain-index

* Introduce Versioned scripts

Remove openapi3 as a dependency of plutus-script-utils

* Add hashing for versioned scripts

* PLT-454: mustUseOutputAsCollateral (#690)

* Finish mustUseOutputAsCollateral implementation

* Add testcase

* Add documentation

* Add missing fields to Ledger.Tx.Internal.Tx (#468)

Add missing fields to Ledger.Tx.Internal.Tx.

  * Add certificates and withdrawals to Tx.

  * Move script witnesses to txScripts.

  * Modify TxIn type, rename to TxInput.

  * Put redeemers together with minting scripts.

  * Translate withdrawals in toCardanoTxBody.

  * Export redeemers for signing with wallet.

* Add tests for mustIncludeDatum tx constraint (#700)

* Add tests for mustIncludeDatum tx constraint (3 failing tests need fix)

* run checks

* Add tests for MustPayToPubKeyAddress tx constraint (#701)

* Add tests for mustSpendScriptOutput and mustSpendScriptOutputWithMatchingDatumAndValue tx constraints (#706)

* Add tests for mustSpendScriptOutput and mustSpendScriptOutputWithMatchingDatumAndValue tx constraints

* Fixed the 'Ledger.Constraints.OffChain.typedValidatorLookups' lookup
function so that it adds the validator inside the 'TypedValidator' in
the 'slOtherScripts' lookup value.

Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>

* plutus-contract emulator: Change the tx output representation of EmulatorTx to use Cardano.Api.TxOut (#698)

* First draft done for plutus-ledger

* plutus-ledger-constraints use Cardano.Tx

* use C.Tx in plutus-tx-constraints

* plutus-chain-index uses C.TxOut

* Forgot to add file

* Fixing my mess with CardanoAPI

* encoding via plutus.TxOut (can't work, no NetworkId)

* Fix code for the use cases

* Fix a bug in balanceTx

* Fix 0 ada outputs error

* Dirty fix for the uniswap check

* Use Cardano.Tx txId

* fix uniswap test

* Fix double satisfaction

* Fix Marconi

* Add TxOut typeclasses

* Remove unused imports

* Fix failing tests

* Clean import

* Fix pab

* Fix golden values

* Fix golden test

* Fix more plutus packages

* Rmove useless param from ChainIndex.Lib

* Fik playground

* Remove commented code

* Include several fixes following Konstantinos' review

* Add a Pretty TxOut and clean uniswap

* Remove useless stuff in playground

* error in generators display the original cause

* Fix imports

* prettier pretty

* Fix golden tests

* Fix uniswap

* Fix golden tests

* Restore deleted constraints

* Integrate more Sjoerd's comments

* Add tests for mustPayToOtherScript tx constraint (#710)

* Add tests for mustPayToOtherScript tx constraint and 2 more for mustPayToPubKeyAddress

* Fix failing test and reference two PLT tickets

* Refactored MustMint tests to use minting policies and added tests for token burning (#719)

* MustSpendScriptOutput and MustSpendScriptOutputWithMatchingDatumAndValue check the redeemer's presence (#723)

* Add inline datum supports for mustPayToPubKey and mustPayToOtherScript (#721)

* Incremental change for datum

* Work but no inlining

* First working inline datum with V2

* Add tests for inline datum

* add smart constructors for inline datum

* fix PAB

* fixing tx-constraints

* clean up tests

* Address some of Konstantinos' comments

* Separate test group for plutus v2

* Refactor tests in MustPayToPubKeyAddress to ease version handling

* Code clean up

* Code clean up

* Fix unused imports

* Add a way to switch to cardano constraints in MustPayToOtherAddress tests

* more clean up

* PR feedbacks

* Remove dead code

* Add refactoring for MustPayToOtherScript tests

* typo

* clean test suites

* Clean up imports

* Fix some false-positives MustSpendScriptOutput tests using versioned minting policies (#725)

* Fix some false-positives MustSpendScriptOutput tests and refactor to use minting policies

* Use Versioned MintingPolicy and add tests for V2 scripts for MustSpendScriptOutput

* Further refactoring

* Improve onchain check for MustSpendScriptOutput and MustSpendScriptOutputWithMatchingDatumAndValue constraints

* tidy up onchain check

* PLT-448: must spend script output with reference (#716)

* Add ownAddress (singular)

* Support reference scripts in TxIn

* Add mustSpendScriptOutputWithReference

* Test using reference scripts

* Fix merge issues

* Direct conversion from ChainIndexTxOut to the new TxOut

* Push Versioned inside Either

* Accept test outputs

* Fix reference script support in ledger-constraints

* Fix comments

* Add ownAddress (singular)

* Support reference scripts in TxIn

* Add mustSpendScriptOutputWithReference

* Test using reference scripts

* Fix merge issues

* Direct conversion from ChainIndexTxOut to the new TxOut

* Push Versioned inside Either

* Accept test outputs

* Fix reference script support in ledger-constraints

* Fix comments

* PR feedback

* More PR feedback

* Fix merge issues

* PLT-807 Change behavior of MustPayToPubKeyAddress and MustPayToOtherScript w.r.t datum in transaction body (#705)

* Changed `MustPayToPubKeyAddress` and `MustPayToOtherScript` so that
  the user needs to explicitly specify if he wants:
    * the datum to only be included as a hash in the transaction
      output
    * the datum to be included as a hash in the transaction output
      as well as in the transaction body
    * the datum to be inlined in the transaction output

* Changed the name of the constraint `MustIncludeDatum` to
  `MustIncludeDatumInTx` and `MustHashDatum` to
  `MustIncludeDatumInTxWithHash`. These constraint don't modify the
  transaction anymore, but simply check that the datum is part of the
  transaction body.

* Added a note on the 'Plutus.Contract.Oracle' module explaining why it
  doesn't work in it's current form.

* Commented out failing test cases in `plutus-use-cases` that use the
  'Plutus.Contract.Oracle' module.

* PLT-511: collateral output in chain index (#730)

* Add collateral output support to chain index

* Generate invalid transactions in tests too

* PR feedback

* PLT-990 Removed Plutus.Contract.Wallet.finalize as we instead set the validity range of a transaction directly in `plutus-ledger-constraints` (since we now have access to the `SlotConfig`) (#741)

* Update the contributing guide (#729)

Co-authored-by: Evgenii Akentev <i@ak3n.com>
Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>
Co-authored-by: Jordan Millar <jordan.millar@iohk.io>
Co-authored-by: Andrea Bedini <andrea@andreabedini.com>
Co-authored-by: Markus Läll <markus.lall@iohk.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@tweag.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@iohk.io>
Co-authored-by: Jamie Bertram <jamie.bertram@tweag.io>
Co-authored-by: Karol Ochman-Milarski <46135727+zmrocze@users.noreply.github.com>
Co-authored-by: James <74595920+james-iohk@users.noreply.github.com>
Co-authored-by: Ziyang Liu <unsafeFixIO@gmail.com>
sjoerdvisscher added a commit that referenced this pull request Oct 13, 2022
* Update the contributing guide (#729)

* next-node is the new merge (ends PLT-558) (#745)

* SCP-3855: update node dep (#449)

* Update Cardano node et al. dependencies for the Vasil HF

* The Cardano node version will only work on a network with the Vasil release.

* Solve some compile issues

* wip: recovering instances for types from plutus-ledger-api

* wip

* plutus-ledger compiles

* plutus-ledger-constraints compiles

* Fixed warnings in Ledger.Tx.CardanoAPI for fields introduced by the Babbage era. Also adapted hashing functions for PlutusV1 scripts to work on PlutusV2

* Fixed warnings in Ledger.Tx.CardanoAPITemp and added implementation to undefined value

* plutus-contract compiles

* Added alonzoGenesisDefaults implementation (copied from cardano-node because it was deleted over there) to Ledger.Validation

* plutus-chain-index-core compiles

* Fixed compilation errors in playground-common and plutus-contract

* Fix compile errors in plutus-example

* Fix compile errors in plutus-pab

* Fix compile errors in plutus-playground-server

* WIP on plutus-use-cases

* Split Tx.Orphans into multiple Orphans

* Fix compilation errors on plutus-use-cases

* fix compilation issues

* Update nix

* fix formatting

* Remove wrongly commited files

* Update purescript modules

* Commented test on plutus-ledger temporarely until cardano-node is updated

* Update cardano-wallet with fixes for haddock

* Fix plutus-playground-client purescript imports

* Fix warnings in plutus-example

* Fix plutus-uniswap cabal

* Try to turn-off haddock for cardano-wallet

* [plutus-contract]: fix golden tests and commented test until cardano-node is updated

* Add cardano-cli/.../genesis.alonzo.spec.json to fix plutus-example

* Fix comment link to PR

* Comment out the test properly

* Update scripts/protocol-parameters with fresh plutusV1 cost parameters

Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>

* [chain-index]: export all servant client functions (#492)

* Fix playground client

* Fix streaming

* Fix purescript

* Create separate directories for v1 and v2 plutus scripts (#486)

* Reorganize the plutus-example library to distinguish clearly between V1
and V2 scripts.

* plutus-example reorganization
create v2 example script

* Modify the ScriptContextChecker module to be more generic

* Propagate the changes to the plutus-example apps and tests

* Update required-redeemer.plutus to also check for an inline datum of 42
and to check for an inline datum of 42 in the reference inputs

* Add PlutusV2 minting and staking scripts (#528)

* [chain-index]: add inline datums support and update cardano-node (#488)

* PLT-484 Upgraded cardano-node version to the official 1.35.0 release. (#551)

* Also upgraded cardano-wallet, plutus et al. versions that work with v1.35.0 of the node.

* Updated golden tests in plutus-use-cases and plutus-contract

* Updated version of components to 1.0.0 with cardano-node (#560)

* Updated the cardano-node bundled with plutus-apps to v1.35.0

* Updated version of all components in their respective cabal files to 1.0.0

* Update cardano-node dependency to 1.35.1

* Updated cardano-wallet, plutus and cardano-ledger to match the node
  version.

* Add script equivalence context test for the V2 context. (#588)

* Remove withIsCardanoEra workaround. (#607)

* BlockInMode now carries a IsCardanoEra constraint

* Increase the delay of awaiting in plutus-pab-executables tests (#565)

Set slot's length to 1s for awaiting tx/out status tests to make them stable

* [PLT-81] plutus-chain-index: support inline scripts when querying TxOut of a TxOutRef (#613)

* Make plutus-ledger-api version explicit in Ledger.Tx

* Make pattern match explicit

* Reorder ScriptChainIndexTxOut fields

To highlight they are the same as PublicKeyChainIndexTxOut.

* Add datum to both branches of ChainIndexTxOut

- Unfortunately we need to rename the fields because they have now
  different types.
- In the PublicKeyChainIndexTxOut case, the output datum is optional and
  we can use plutus-ledger-api OutputDatum type.
- In the ScriptChainIndexTxOut case, the output datum is required,
  nothing changes here but the name.

* Add ReferenceScript to ChainIndexTxOut

* Remove old comment

* Rename _ciTxOutDatumPublicKey and _ciTxOutDatumScript into _ciTxOutPublicKeyDatum and _ciTxOutScriptDatum

* Introduce fromReferenceScript

* Add comments to ChainIndexTxOut

* Add minting context equivalent test plutus script (#631)

* Add missing record field `localTxMonitoringClient` (#617)

* PLT-568: Switch to Babbage era (#614)

* Make Babbage the default era for the emulator

* Clean up

* Accept changes in test output

* Workaround for parseBabbageEraInCardanoModeTx

* Fix minAda calculation

* [next-node]: Bump wallet, plutus, ledger, node (#616)

* Bump cardano-node to 1.35.2 and rest of dependencies based on cardano-wallet

* Use '[TxIn]' instead of 'Set TxIn' in 'data Tx' (#623)

* [plutus-ledger]: Use '[TxIn]' instead of 'Set TxIn' in 'data Tx'.
* Add a property test to check Ord instances of TxIn.
* Sort the inputs in fromOnChainTx
* Sort the inputs in `Emulator.Wallet`
* Fix the review notes and the problem with getInput in StateMachine tests

* PLT-445 Add `mustReferencePubKeyOutput` in constraints library (#640)

* PLT-445 Add mustReferencePubKeyOutput in constraints library

* Added the mustReferencePubKeyOutput constraint in
  plutus-ledger-constraints

* Added a test case for the mustReferencePubKeyOutput

* Refactored Ledger.Tx.CardanoAPI to work with PlutusV2 alongside PlutusV1 scripts in the tx inputs.

* Use existing unitRedeemer

* Move TxIn and TxInType to Ledger.Tx

* Add plutus version to ConsumeScriptAddress constructor

* Add costModelParams for PlutusScriptV2

* Fix error codes.

* Renamed mkTxInfo to mkPV1TxInfo, added test for plutus-tx-constraints without implementation and commented for now the off-chain validation in Ledger.Index

* Implement reference inputs in makeTransactionBody'

* Fixed failing test cases for Ledger.Constraints.mustReferencePubKeyOutput

* Add MustUseOutputAsCollateral

* Fix V2 tests. But issues with V1 tests.

* Disable tests

* WIP

* Remove unused code

* PR feedback

* Remove unused code.

* Clean up

* Added additional info in TODO

* Add Arbitrary instances

* Convert plutus-ledger-constraint tests to PV2

* Fixed test in plutus-ledger-constraints

* Fixed PS generator error in playground

* Fix build

* Fix PS

* Fix PS

* More support of plutus version in constraints libs

* Default to PlutusV1 for now

Co-authored-by: Sjoerd Visscher <sjoerd.visscher@tweag.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@iohk.io>

* Update cardano-node to 1.35.3-rc1 with deps (#647)

* Upgraded to a cardano-wallet compatible with node 1.35.3-rc1 (#657)

* Reorganized dependencies based on cardano-wallet's cabal.project

* Added the new 'protocolParamUTxOCostPerByte' in 'Ledger.Params' which replaces 'protocolParamUTxOCostPerWord'

* Fixed the `Plutus.Contract.Wallet.mkMintingRedeemers` which triggered an error if the redeemers in the tx contained spending redeemers.

* Simplify MustReferencePubKeyOutput to MustReferenceOutput (#661)

* Replace LedgerPlutusVersion with Language type (#662)

* PLT-494: PlutusV2 TypedValidators (#666)

* Move common code to Plutus.Script.Utils.Typed

* Enable V2 TypedValidators

* Enable and fix reference output tests

* Update cardano-node 1.35.3-rc1 -> 1.35.3 (#669)

* PLT-448: inline scripts in constraint libraries (#678)

* Add inline script support to plutus-tx-constraints.

* Add mustOutputInlineValidator and mustOutputInlineMintingPolicy

* Add documentation

* Check there's no inline script in V1

* Fix wrong minAdaTxOut use

* Update renderGuess.txt

* Naming

* PLT-738: Include plutus language versions with scripts (#681)

* Store Plutus language versions in chain-index

* Introduce Versioned scripts

Remove openapi3 as a dependency of plutus-script-utils

* Add hashing for versioned scripts

* PLT-454: mustUseOutputAsCollateral (#690)

* Finish mustUseOutputAsCollateral implementation

* Add testcase

* Add documentation

* Add missing fields to Ledger.Tx.Internal.Tx (#468)

Add missing fields to Ledger.Tx.Internal.Tx.

  * Add certificates and withdrawals to Tx.

  * Move script witnesses to txScripts.

  * Modify TxIn type, rename to TxInput.

  * Put redeemers together with minting scripts.

  * Translate withdrawals in toCardanoTxBody.

  * Export redeemers for signing with wallet.

* Add tests for mustIncludeDatum tx constraint (#700)

* Add tests for mustIncludeDatum tx constraint (3 failing tests need fix)

* run checks

* Add tests for MustPayToPubKeyAddress tx constraint (#701)

* Add tests for mustSpendScriptOutput and mustSpendScriptOutputWithMatchingDatumAndValue tx constraints (#706)

* Add tests for mustSpendScriptOutput and mustSpendScriptOutputWithMatchingDatumAndValue tx constraints

* Fixed the 'Ledger.Constraints.OffChain.typedValidatorLookups' lookup
function so that it adds the validator inside the 'TypedValidator' in
the 'slOtherScripts' lookup value.

Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>

* plutus-contract emulator: Change the tx output representation of EmulatorTx to use Cardano.Api.TxOut (#698)

* First draft done for plutus-ledger

* plutus-ledger-constraints use Cardano.Tx

* use C.Tx in plutus-tx-constraints

* plutus-chain-index uses C.TxOut

* Forgot to add file

* Fixing my mess with CardanoAPI

* encoding via plutus.TxOut (can't work, no NetworkId)

* Fix code for the use cases

* Fix a bug in balanceTx

* Fix 0 ada outputs error

* Dirty fix for the uniswap check

* Use Cardano.Tx txId

* fix uniswap test

* Fix double satisfaction

* Fix Marconi

* Add TxOut typeclasses

* Remove unused imports

* Fix failing tests

* Clean import

* Fix pab

* Fix golden values

* Fix golden test

* Fix more plutus packages

* Rmove useless param from ChainIndex.Lib

* Fik playground

* Remove commented code

* Include several fixes following Konstantinos' review

* Add a Pretty TxOut and clean uniswap

* Remove useless stuff in playground

* error in generators display the original cause

* Fix imports

* prettier pretty

* Fix golden tests

* Fix uniswap

* Fix golden tests

* Restore deleted constraints

* Integrate more Sjoerd's comments

* Add tests for mustPayToOtherScript tx constraint (#710)

* Add tests for mustPayToOtherScript tx constraint and 2 more for mustPayToPubKeyAddress

* Fix failing test and reference two PLT tickets

* Refactored MustMint tests to use minting policies and added tests for token burning (#719)

* MustSpendScriptOutput and MustSpendScriptOutputWithMatchingDatumAndValue check the redeemer's presence (#723)

* Add inline datum supports for mustPayToPubKey and mustPayToOtherScript (#721)

* Incremental change for datum

* Work but no inlining

* First working inline datum with V2

* Add tests for inline datum

* add smart constructors for inline datum

* fix PAB

* fixing tx-constraints

* clean up tests

* Address some of Konstantinos' comments

* Separate test group for plutus v2

* Refactor tests in MustPayToPubKeyAddress to ease version handling

* Code clean up

* Code clean up

* Fix unused imports

* Add a way to switch to cardano constraints in MustPayToOtherAddress tests

* more clean up

* PR feedbacks

* Remove dead code

* Add refactoring for MustPayToOtherScript tests

* typo

* clean test suites

* Clean up imports

* Fix some false-positives MustSpendScriptOutput tests using versioned minting policies (#725)

* Fix some false-positives MustSpendScriptOutput tests and refactor to use minting policies

* Use Versioned MintingPolicy and add tests for V2 scripts for MustSpendScriptOutput

* Further refactoring

* Improve onchain check for MustSpendScriptOutput and MustSpendScriptOutputWithMatchingDatumAndValue constraints

* tidy up onchain check

* PLT-448: must spend script output with reference (#716)

* Add ownAddress (singular)

* Support reference scripts in TxIn

* Add mustSpendScriptOutputWithReference

* Test using reference scripts

* Fix merge issues

* Direct conversion from ChainIndexTxOut to the new TxOut

* Push Versioned inside Either

* Accept test outputs

* Fix reference script support in ledger-constraints

* Fix comments

* Add ownAddress (singular)

* Support reference scripts in TxIn

* Add mustSpendScriptOutputWithReference

* Test using reference scripts

* Fix merge issues

* Direct conversion from ChainIndexTxOut to the new TxOut

* Push Versioned inside Either

* Accept test outputs

* Fix reference script support in ledger-constraints

* Fix comments

* PR feedback

* More PR feedback

* Fix merge issues

* PLT-807 Change behavior of MustPayToPubKeyAddress and MustPayToOtherScript w.r.t datum in transaction body (#705)

* Changed `MustPayToPubKeyAddress` and `MustPayToOtherScript` so that
  the user needs to explicitly specify if he wants:
    * the datum to only be included as a hash in the transaction
      output
    * the datum to be included as a hash in the transaction output
      as well as in the transaction body
    * the datum to be inlined in the transaction output

* Changed the name of the constraint `MustIncludeDatum` to
  `MustIncludeDatumInTx` and `MustHashDatum` to
  `MustIncludeDatumInTxWithHash`. These constraint don't modify the
  transaction anymore, but simply check that the datum is part of the
  transaction body.

* Added a note on the 'Plutus.Contract.Oracle' module explaining why it
  doesn't work in it's current form.

* Commented out failing test cases in `plutus-use-cases` that use the
  'Plutus.Contract.Oracle' module.

* PLT-511: collateral output in chain index (#730)

* Add collateral output support to chain index

* Generate invalid transactions in tests too

* PR feedback

* PLT-990 Removed Plutus.Contract.Wallet.finalize as we instead set the validity range of a transaction directly in `plutus-ledger-constraints` (since we now have access to the `SlotConfig`) (#741)

* Update the contributing guide (#729)

Co-authored-by: Evgenii Akentev <i@ak3n.com>
Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>
Co-authored-by: Jordan Millar <jordan.millar@iohk.io>
Co-authored-by: Andrea Bedini <andrea@andreabedini.com>
Co-authored-by: Markus Läll <markus.lall@iohk.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@tweag.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@iohk.io>
Co-authored-by: Jamie Bertram <jamie.bertram@tweag.io>
Co-authored-by: Karol Ochman-Milarski <46135727+zmrocze@users.noreply.github.com>
Co-authored-by: James <74595920+james-iohk@users.noreply.github.com>
Co-authored-by: Ziyang Liu <unsafeFixIO@gmail.com>

* Revert "next-node is the new merge (ends PLT-558) (#745)" (#746)

This reverts commit dc3f549.

* chore(deps): bump nixbuild/nix-quick-install-action from 17 to 18 (#743)

Bumps [nixbuild/nix-quick-install-action](https://github.com/nixbuild/nix-quick-install-action) from 17 to 18.
- [Release notes](https://github.com/nixbuild/nix-quick-install-action/releases)
- [Changelog](https://github.com/nixbuild/nix-quick-install-action/blob/master/RELEASE)
- [Commits](nixbuild/nix-quick-install-action@v17...v18)

---
updated-dependencies:
- dependency-name: nixbuild/nix-quick-install-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add proper ToJSON instance for unit test results (#744)

* Add collateral output fields

* Add collateral balancing tests

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Ziyang Liu <unsafeFixIO@gmail.com>
Co-authored-by: Nicolas B <nicolas.biri@iohk.io>
Co-authored-by: Evgenii Akentev <i@ak3n.com>
Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>
Co-authored-by: Jordan Millar <jordan.millar@iohk.io>
Co-authored-by: Andrea Bedini <andrea@andreabedini.com>
Co-authored-by: Markus Läll <markus.lall@iohk.io>
Co-authored-by: Jamie Bertram <jamie.bertram@tweag.io>
Co-authored-by: Karol Ochman-Milarski <46135727+zmrocze@users.noreply.github.com>
Co-authored-by: James <74595920+james-iohk@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ulf Norell <ulf.norell@gmail.com>
ghost pushed a commit that referenced this pull request Nov 8, 2022
* Update the contributing guide (#729)

* next-node is the new merge (ends PLT-558) (#745)

* SCP-3855: update node dep (#449)

* Update Cardano node et al. dependencies for the Vasil HF

* The Cardano node version will only work on a network with the Vasil release.

* Solve some compile issues

* wip: recovering instances for types from plutus-ledger-api

* wip

* plutus-ledger compiles

* plutus-ledger-constraints compiles

* Fixed warnings in Ledger.Tx.CardanoAPI for fields introduced by the Babbage era. Also adapted hashing functions for PlutusV1 scripts to work on PlutusV2

* Fixed warnings in Ledger.Tx.CardanoAPITemp and added implementation to undefined value

* plutus-contract compiles

* Added alonzoGenesisDefaults implementation (copied from cardano-node because it was deleted over there) to Ledger.Validation

* plutus-chain-index-core compiles

* Fixed compilation errors in playground-common and plutus-contract

* Fix compile errors in plutus-example

* Fix compile errors in plutus-pab

* Fix compile errors in plutus-playground-server

* WIP on plutus-use-cases

* Split Tx.Orphans into multiple Orphans

* Fix compilation errors on plutus-use-cases

* fix compilation issues

* Update nix

* fix formatting

* Remove wrongly commited files

* Update purescript modules

* Commented test on plutus-ledger temporarely until cardano-node is updated

* Update cardano-wallet with fixes for haddock

* Fix plutus-playground-client purescript imports

* Fix warnings in plutus-example

* Fix plutus-uniswap cabal

* Try to turn-off haddock for cardano-wallet

* [plutus-contract]: fix golden tests and commented test until cardano-node is updated

* Add cardano-cli/.../genesis.alonzo.spec.json to fix plutus-example

* Fix comment link to PR

* Comment out the test properly

* Update scripts/protocol-parameters with fresh plutusV1 cost parameters

Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>

* [chain-index]: export all servant client functions (#492)

* Fix playground client

* Fix streaming

* Fix purescript

* Create separate directories for v1 and v2 plutus scripts (#486)

* Reorganize the plutus-example library to distinguish clearly between V1
and V2 scripts.

* plutus-example reorganization
create v2 example script

* Modify the ScriptContextChecker module to be more generic

* Propagate the changes to the plutus-example apps and tests

* Update required-redeemer.plutus to also check for an inline datum of 42
and to check for an inline datum of 42 in the reference inputs

* Add PlutusV2 minting and staking scripts (#528)

* [chain-index]: add inline datums support and update cardano-node (#488)

* PLT-484 Upgraded cardano-node version to the official 1.35.0 release. (#551)

* Also upgraded cardano-wallet, plutus et al. versions that work with v1.35.0 of the node.

* Updated golden tests in plutus-use-cases and plutus-contract

* Updated version of components to 1.0.0 with cardano-node (#560)

* Updated the cardano-node bundled with plutus-apps to v1.35.0

* Updated version of all components in their respective cabal files to 1.0.0

* Update cardano-node dependency to 1.35.1

* Updated cardano-wallet, plutus and cardano-ledger to match the node
  version.

* Add script equivalence context test for the V2 context. (#588)

* Remove withIsCardanoEra workaround. (#607)

* BlockInMode now carries a IsCardanoEra constraint

* Increase the delay of awaiting in plutus-pab-executables tests (#565)

Set slot's length to 1s for awaiting tx/out status tests to make them stable

* [PLT-81] plutus-chain-index: support inline scripts when querying TxOut of a TxOutRef (#613)

* Make plutus-ledger-api version explicit in Ledger.Tx

* Make pattern match explicit

* Reorder ScriptChainIndexTxOut fields

To highlight they are the same as PublicKeyChainIndexTxOut.

* Add datum to both branches of ChainIndexTxOut

- Unfortunately we need to rename the fields because they have now
  different types.
- In the PublicKeyChainIndexTxOut case, the output datum is optional and
  we can use plutus-ledger-api OutputDatum type.
- In the ScriptChainIndexTxOut case, the output datum is required,
  nothing changes here but the name.

* Add ReferenceScript to ChainIndexTxOut

* Remove old comment

* Rename _ciTxOutDatumPublicKey and _ciTxOutDatumScript into _ciTxOutPublicKeyDatum and _ciTxOutScriptDatum

* Introduce fromReferenceScript

* Add comments to ChainIndexTxOut

* Add minting context equivalent test plutus script (#631)

* Add missing record field `localTxMonitoringClient` (#617)

* PLT-568: Switch to Babbage era (#614)

* Make Babbage the default era for the emulator

* Clean up

* Accept changes in test output

* Workaround for parseBabbageEraInCardanoModeTx

* Fix minAda calculation

* [next-node]: Bump wallet, plutus, ledger, node (#616)

* Bump cardano-node to 1.35.2 and rest of dependencies based on cardano-wallet

* Use '[TxIn]' instead of 'Set TxIn' in 'data Tx' (#623)

* [plutus-ledger]: Use '[TxIn]' instead of 'Set TxIn' in 'data Tx'.
* Add a property test to check Ord instances of TxIn.
* Sort the inputs in fromOnChainTx
* Sort the inputs in `Emulator.Wallet`
* Fix the review notes and the problem with getInput in StateMachine tests

* PLT-445 Add `mustReferencePubKeyOutput` in constraints library (#640)

* PLT-445 Add mustReferencePubKeyOutput in constraints library

* Added the mustReferencePubKeyOutput constraint in
  plutus-ledger-constraints

* Added a test case for the mustReferencePubKeyOutput

* Refactored Ledger.Tx.CardanoAPI to work with PlutusV2 alongside PlutusV1 scripts in the tx inputs.

* Use existing unitRedeemer

* Move TxIn and TxInType to Ledger.Tx

* Add plutus version to ConsumeScriptAddress constructor

* Add costModelParams for PlutusScriptV2

* Fix error codes.

* Renamed mkTxInfo to mkPV1TxInfo, added test for plutus-tx-constraints without implementation and commented for now the off-chain validation in Ledger.Index

* Implement reference inputs in makeTransactionBody'

* Fixed failing test cases for Ledger.Constraints.mustReferencePubKeyOutput

* Add MustUseOutputAsCollateral

* Fix V2 tests. But issues with V1 tests.

* Disable tests

* WIP

* Remove unused code

* PR feedback

* Remove unused code.

* Clean up

* Added additional info in TODO

* Add Arbitrary instances

* Convert plutus-ledger-constraint tests to PV2

* Fixed test in plutus-ledger-constraints

* Fixed PS generator error in playground

* Fix build

* Fix PS

* Fix PS

* More support of plutus version in constraints libs

* Default to PlutusV1 for now

Co-authored-by: Sjoerd Visscher <sjoerd.visscher@tweag.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@iohk.io>

* Update cardano-node to 1.35.3-rc1 with deps (#647)

* Upgraded to a cardano-wallet compatible with node 1.35.3-rc1 (#657)

* Reorganized dependencies based on cardano-wallet's cabal.project

* Added the new 'protocolParamUTxOCostPerByte' in 'Ledger.Params' which replaces 'protocolParamUTxOCostPerWord'

* Fixed the `Plutus.Contract.Wallet.mkMintingRedeemers` which triggered an error if the redeemers in the tx contained spending redeemers.

* Simplify MustReferencePubKeyOutput to MustReferenceOutput (#661)

* Replace LedgerPlutusVersion with Language type (#662)

* PLT-494: PlutusV2 TypedValidators (#666)

* Move common code to Plutus.Script.Utils.Typed

* Enable V2 TypedValidators

* Enable and fix reference output tests

* Update cardano-node 1.35.3-rc1 -> 1.35.3 (#669)

* PLT-448: inline scripts in constraint libraries (#678)

* Add inline script support to plutus-tx-constraints.

* Add mustOutputInlineValidator and mustOutputInlineMintingPolicy

* Add documentation

* Check there's no inline script in V1

* Fix wrong minAdaTxOut use

* Update renderGuess.txt

* Naming

* PLT-738: Include plutus language versions with scripts (#681)

* Store Plutus language versions in chain-index

* Introduce Versioned scripts

Remove openapi3 as a dependency of plutus-script-utils

* Add hashing for versioned scripts

* PLT-454: mustUseOutputAsCollateral (#690)

* Finish mustUseOutputAsCollateral implementation

* Add testcase

* Add documentation

* Add missing fields to Ledger.Tx.Internal.Tx (#468)

Add missing fields to Ledger.Tx.Internal.Tx.

  * Add certificates and withdrawals to Tx.

  * Move script witnesses to txScripts.

  * Modify TxIn type, rename to TxInput.

  * Put redeemers together with minting scripts.

  * Translate withdrawals in toCardanoTxBody.

  * Export redeemers for signing with wallet.

* Add tests for mustIncludeDatum tx constraint (#700)

* Add tests for mustIncludeDatum tx constraint (3 failing tests need fix)

* run checks

* Add tests for MustPayToPubKeyAddress tx constraint (#701)

* Add tests for mustSpendScriptOutput and mustSpendScriptOutputWithMatchingDatumAndValue tx constraints (#706)

* Add tests for mustSpendScriptOutput and mustSpendScriptOutputWithMatchingDatumAndValue tx constraints

* Fixed the 'Ledger.Constraints.OffChain.typedValidatorLookups' lookup
function so that it adds the validator inside the 'TypedValidator' in
the 'slOtherScripts' lookup value.

Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>

* plutus-contract emulator: Change the tx output representation of EmulatorTx to use Cardano.Api.TxOut (#698)

* First draft done for plutus-ledger

* plutus-ledger-constraints use Cardano.Tx

* use C.Tx in plutus-tx-constraints

* plutus-chain-index uses C.TxOut

* Forgot to add file

* Fixing my mess with CardanoAPI

* encoding via plutus.TxOut (can't work, no NetworkId)

* Fix code for the use cases

* Fix a bug in balanceTx

* Fix 0 ada outputs error

* Dirty fix for the uniswap check

* Use Cardano.Tx txId

* fix uniswap test

* Fix double satisfaction

* Fix Marconi

* Add TxOut typeclasses

* Remove unused imports

* Fix failing tests

* Clean import

* Fix pab

* Fix golden values

* Fix golden test

* Fix more plutus packages

* Rmove useless param from ChainIndex.Lib

* Fik playground

* Remove commented code

* Include several fixes following Konstantinos' review

* Add a Pretty TxOut and clean uniswap

* Remove useless stuff in playground

* error in generators display the original cause

* Fix imports

* prettier pretty

* Fix golden tests

* Fix uniswap

* Fix golden tests

* Restore deleted constraints

* Integrate more Sjoerd's comments

* Add tests for mustPayToOtherScript tx constraint (#710)

* Add tests for mustPayToOtherScript tx constraint and 2 more for mustPayToPubKeyAddress

* Fix failing test and reference two PLT tickets

* Refactored MustMint tests to use minting policies and added tests for token burning (#719)

* MustSpendScriptOutput and MustSpendScriptOutputWithMatchingDatumAndValue check the redeemer's presence (#723)

* Add inline datum supports for mustPayToPubKey and mustPayToOtherScript (#721)

* Incremental change for datum

* Work but no inlining

* First working inline datum with V2

* Add tests for inline datum

* add smart constructors for inline datum

* fix PAB

* fixing tx-constraints

* clean up tests

* Address some of Konstantinos' comments

* Separate test group for plutus v2

* Refactor tests in MustPayToPubKeyAddress to ease version handling

* Code clean up

* Code clean up

* Fix unused imports

* Add a way to switch to cardano constraints in MustPayToOtherAddress tests

* more clean up

* PR feedbacks

* Remove dead code

* Add refactoring for MustPayToOtherScript tests

* typo

* clean test suites

* Clean up imports

* Fix some false-positives MustSpendScriptOutput tests using versioned minting policies (#725)

* Fix some false-positives MustSpendScriptOutput tests and refactor to use minting policies

* Use Versioned MintingPolicy and add tests for V2 scripts for MustSpendScriptOutput

* Further refactoring

* Improve onchain check for MustSpendScriptOutput and MustSpendScriptOutputWithMatchingDatumAndValue constraints

* tidy up onchain check

* PLT-448: must spend script output with reference (#716)

* Add ownAddress (singular)

* Support reference scripts in TxIn

* Add mustSpendScriptOutputWithReference

* Test using reference scripts

* Fix merge issues

* Direct conversion from ChainIndexTxOut to the new TxOut

* Push Versioned inside Either

* Accept test outputs

* Fix reference script support in ledger-constraints

* Fix comments

* Add ownAddress (singular)

* Support reference scripts in TxIn

* Add mustSpendScriptOutputWithReference

* Test using reference scripts

* Fix merge issues

* Direct conversion from ChainIndexTxOut to the new TxOut

* Push Versioned inside Either

* Accept test outputs

* Fix reference script support in ledger-constraints

* Fix comments

* PR feedback

* More PR feedback

* Fix merge issues

* PLT-807 Change behavior of MustPayToPubKeyAddress and MustPayToOtherScript w.r.t datum in transaction body (#705)

* Changed `MustPayToPubKeyAddress` and `MustPayToOtherScript` so that
  the user needs to explicitly specify if he wants:
    * the datum to only be included as a hash in the transaction
      output
    * the datum to be included as a hash in the transaction output
      as well as in the transaction body
    * the datum to be inlined in the transaction output

* Changed the name of the constraint `MustIncludeDatum` to
  `MustIncludeDatumInTx` and `MustHashDatum` to
  `MustIncludeDatumInTxWithHash`. These constraint don't modify the
  transaction anymore, but simply check that the datum is part of the
  transaction body.

* Added a note on the 'Plutus.Contract.Oracle' module explaining why it
  doesn't work in it's current form.

* Commented out failing test cases in `plutus-use-cases` that use the
  'Plutus.Contract.Oracle' module.

* PLT-511: collateral output in chain index (#730)

* Add collateral output support to chain index

* Generate invalid transactions in tests too

* PR feedback

* PLT-990 Removed Plutus.Contract.Wallet.finalize as we instead set the validity range of a transaction directly in `plutus-ledger-constraints` (since we now have access to the `SlotConfig`) (#741)

* Update the contributing guide (#729)

Co-authored-by: Evgenii Akentev <i@ak3n.com>
Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>
Co-authored-by: Jordan Millar <jordan.millar@iohk.io>
Co-authored-by: Andrea Bedini <andrea@andreabedini.com>
Co-authored-by: Markus Läll <markus.lall@iohk.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@tweag.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@iohk.io>
Co-authored-by: Jamie Bertram <jamie.bertram@tweag.io>
Co-authored-by: Karol Ochman-Milarski <46135727+zmrocze@users.noreply.github.com>
Co-authored-by: James <74595920+james-iohk@users.noreply.github.com>
Co-authored-by: Ziyang Liu <unsafeFixIO@gmail.com>

* Revert "next-node is the new merge (ends PLT-558) (#745)" (#746)

This reverts commit dc3f549.

* chore(deps): bump nixbuild/nix-quick-install-action from 17 to 18 (#743)

Bumps [nixbuild/nix-quick-install-action](https://github.com/nixbuild/nix-quick-install-action) from 17 to 18.
- [Release notes](https://github.com/nixbuild/nix-quick-install-action/releases)
- [Changelog](https://github.com/nixbuild/nix-quick-install-action/blob/master/RELEASE)
- [Commits](nixbuild/nix-quick-install-action@v17...v18)

---
updated-dependencies:
- dependency-name: nixbuild/nix-quick-install-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add proper ToJSON instance for unit test results (#744)

* Add collateral output fields

* Add collateral balancing tests

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Ziyang Liu <unsafeFixIO@gmail.com>
Co-authored-by: Nicolas B <nicolas.biri@iohk.io>
Co-authored-by: Evgenii Akentev <i@ak3n.com>
Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>
Co-authored-by: Jordan Millar <jordan.millar@iohk.io>
Co-authored-by: Andrea Bedini <andrea@andreabedini.com>
Co-authored-by: Markus Läll <markus.lall@iohk.io>
Co-authored-by: Jamie Bertram <jamie.bertram@tweag.io>
Co-authored-by: Karol Ochman-Milarski <46135727+zmrocze@users.noreply.github.com>
Co-authored-by: James <74595920+james-iohk@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ulf Norell <ulf.norell@gmail.com>
koslambrou added a commit that referenced this pull request Apr 6, 2023
* SCP-3855: update node dep (#449)

* Update Cardano node et al. dependencies for the Vasil HF

* The Cardano node version will only work on a network with the Vasil release.

* Solve some compile issues

* wip: recovering instances for types from plutus-ledger-api

* wip

* plutus-ledger compiles

* plutus-ledger-constraints compiles

* Fixed warnings in Ledger.Tx.CardanoAPI for fields introduced by the Babbage era. Also adapted hashing functions for PlutusV1 scripts to work on PlutusV2

* Fixed warnings in Ledger.Tx.CardanoAPITemp and added implementation to undefined value

* plutus-contract compiles

* Added alonzoGenesisDefaults implementation (copied from cardano-node because it was deleted over there) to Ledger.Validation

* plutus-chain-index-core compiles

* Fixed compilation errors in playground-common and plutus-contract

* Fix compile errors in plutus-example

* Fix compile errors in plutus-pab

* Fix compile errors in plutus-playground-server

* WIP on plutus-use-cases

* Split Tx.Orphans into multiple Orphans

* Fix compilation errors on plutus-use-cases

* fix compilation issues

* Update nix

* fix formatting

* Remove wrongly commited files

* Update purescript modules

* Commented test on plutus-ledger temporarely until cardano-node is updated

* Update cardano-wallet with fixes for haddock

* Fix plutus-playground-client purescript imports

* Fix warnings in plutus-example

* Fix plutus-uniswap cabal

* Try to turn-off haddock for cardano-wallet

* [plutus-contract]: fix golden tests and commented test until cardano-node is updated

* Add cardano-cli/.../genesis.alonzo.spec.json to fix plutus-example

* Fix comment link to PR

* Comment out the test properly

* Update scripts/protocol-parameters with fresh plutusV1 cost parameters

Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>

* [chain-index]: export all servant client functions (#492)

* Fix playground client

* Fix streaming

* Fix purescript

* Create separate directories for v1 and v2 plutus scripts (#486)

* Reorganize the plutus-example library to distinguish clearly between V1
and V2 scripts.

* plutus-example reorganization
create v2 example script

* Modify the ScriptContextChecker module to be more generic

* Propagate the changes to the plutus-example apps and tests

* Update required-redeemer.plutus to also check for an inline datum of 42
and to check for an inline datum of 42 in the reference inputs

* Add PlutusV2 minting and staking scripts (#528)

* [chain-index]: add inline datums support and update cardano-node (#488)

* PLT-484 Upgraded cardano-node version to the official 1.35.0 release. (#551)

* Also upgraded cardano-wallet, plutus et al. versions that work with v1.35.0 of the node.

* Updated golden tests in plutus-use-cases and plutus-contract

* Updated version of components to 1.0.0 with cardano-node (#560)

* Updated the cardano-node bundled with plutus-apps to v1.35.0

* Updated version of all components in their respective cabal files to 1.0.0

* Update cardano-node dependency to 1.35.1

* Updated cardano-wallet, plutus and cardano-ledger to match the node
  version.

* Add script equivalence context test for the V2 context. (#588)

* Remove withIsCardanoEra workaround. (#607)

* BlockInMode now carries a IsCardanoEra constraint

* Increase the delay of awaiting in plutus-pab-executables tests (#565)

Set slot's length to 1s for awaiting tx/out status tests to make them stable

* [PLT-81] plutus-chain-index: support inline scripts when querying TxOut of a TxOutRef (#613)

* Make plutus-ledger-api version explicit in Ledger.Tx

* Make pattern match explicit

* Reorder ScriptChainIndexTxOut fields

To highlight they are the same as PublicKeyChainIndexTxOut.

* Add datum to both branches of ChainIndexTxOut

- Unfortunately we need to rename the fields because they have now
  different types.
- In the PublicKeyChainIndexTxOut case, the output datum is optional and
  we can use plutus-ledger-api OutputDatum type.
- In the ScriptChainIndexTxOut case, the output datum is required,
  nothing changes here but the name.

* Add ReferenceScript to ChainIndexTxOut

* Remove old comment

* Rename _ciTxOutDatumPublicKey and _ciTxOutDatumScript into _ciTxOutPublicKeyDatum and _ciTxOutScriptDatum

* Introduce fromReferenceScript

* Add comments to ChainIndexTxOut

* Add minting context equivalent test plutus script (#631)

* Add missing record field `localTxMonitoringClient` (#617)

* PLT-568: Switch to Babbage era (#614)

* Make Babbage the default era for the emulator

* Clean up

* Accept changes in test output

* Workaround for parseBabbageEraInCardanoModeTx

* Fix minAda calculation

* [next-node]: Bump wallet, plutus, ledger, node (#616)

* Bump cardano-node to 1.35.2 and rest of dependencies based on cardano-wallet

* Use '[TxIn]' instead of 'Set TxIn' in 'data Tx' (#623)

* [plutus-ledger]: Use '[TxIn]' instead of 'Set TxIn' in 'data Tx'.
* Add a property test to check Ord instances of TxIn.
* Sort the inputs in fromOnChainTx
* Sort the inputs in `Emulator.Wallet`
* Fix the review notes and the problem with getInput in StateMachine tests

* PLT-445 Add `mustReferencePubKeyOutput` in constraints library (#640)

* PLT-445 Add mustReferencePubKeyOutput in constraints library

* Added the mustReferencePubKeyOutput constraint in
  plutus-ledger-constraints

* Added a test case for the mustReferencePubKeyOutput

* Refactored Ledger.Tx.CardanoAPI to work with PlutusV2 alongside PlutusV1 scripts in the tx inputs.

* Use existing unitRedeemer

* Move TxIn and TxInType to Ledger.Tx

* Add plutus version to ConsumeScriptAddress constructor

* Add costModelParams for PlutusScriptV2

* Fix error codes.

* Renamed mkTxInfo to mkPV1TxInfo, added test for plutus-tx-constraints without implementation and commented for now the off-chain validation in Ledger.Index

* Implement reference inputs in makeTransactionBody'

* Fixed failing test cases for Ledger.Constraints.mustReferencePubKeyOutput

* Add MustUseOutputAsCollateral

* Fix V2 tests. But issues with V1 tests.

* Disable tests

* WIP

* Remove unused code

* PR feedback

* Remove unused code.

* Clean up

* Added additional info in TODO

* Add Arbitrary instances

* Convert plutus-ledger-constraint tests to PV2

* Fixed test in plutus-ledger-constraints

* Fixed PS generator error in playground

* Fix build

* Fix PS

* Fix PS

* More support of plutus version in constraints libs

* Default to PlutusV1 for now

Co-authored-by: Sjoerd Visscher <sjoerd.visscher@tweag.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@iohk.io>

* Update cardano-node to 1.35.3-rc1 with deps (#647)

* Upgraded to a cardano-wallet compatible with node 1.35.3-rc1 (#657)

* Reorganized dependencies based on cardano-wallet's cabal.project

* Added the new 'protocolParamUTxOCostPerByte' in 'Ledger.Params' which replaces 'protocolParamUTxOCostPerWord'

* Fixed the `Plutus.Contract.Wallet.mkMintingRedeemers` which triggered an error if the redeemers in the tx contained spending redeemers.

* Simplify MustReferencePubKeyOutput to MustReferenceOutput (#661)

* Replace LedgerPlutusVersion with Language type (#662)

* PLT-494: PlutusV2 TypedValidators (#666)

* Move common code to Plutus.Script.Utils.Typed

* Enable V2 TypedValidators

* Enable and fix reference output tests

* Update cardano-node 1.35.3-rc1 -> 1.35.3 (#669)

* PLT-448: inline scripts in constraint libraries (#678)

* Add inline script support to plutus-tx-constraints.

* Add mustOutputInlineValidator and mustOutputInlineMintingPolicy

* Add documentation

* Check there's no inline script in V1

* Fix wrong minAdaTxOut use

* Update renderGuess.txt

* Naming

* PLT-738: Include plutus language versions with scripts (#681)

* Store Plutus language versions in chain-index

* Introduce Versioned scripts

Remove openapi3 as a dependency of plutus-script-utils

* Add hashing for versioned scripts

* PLT-454: mustUseOutputAsCollateral (#690)

* Finish mustUseOutputAsCollateral implementation

* Add testcase

* Add documentation

* Add missing fields to Ledger.Tx.Internal.Tx (#468)

Add missing fields to Ledger.Tx.Internal.Tx.

  * Add certificates and withdrawals to Tx.

  * Move script witnesses to txScripts.

  * Modify TxIn type, rename to TxInput.

  * Put redeemers together with minting scripts.

  * Translate withdrawals in toCardanoTxBody.

  * Export redeemers for signing with wallet.

* Add tests for mustIncludeDatum tx constraint (#700)

* Add tests for mustIncludeDatum tx constraint (3 failing tests need fix)

* run checks

* Add tests for MustPayToPubKeyAddress tx constraint (#701)

* Add tests for mustSpendScriptOutput and mustSpendScriptOutputWithMatchingDatumAndValue tx constraints (#706)

* Add tests for mustSpendScriptOutput and mustSpendScriptOutputWithMatchingDatumAndValue tx constraints

* Fixed the 'Ledger.Constraints.OffChain.typedValidatorLookups' lookup
function so that it adds the validator inside the 'TypedValidator' in
the 'slOtherScripts' lookup value.

Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>

* plutus-contract emulator: Change the tx output representation of EmulatorTx to use Cardano.Api.TxOut (#698)

* First draft done for plutus-ledger

* plutus-ledger-constraints use Cardano.Tx

* use C.Tx in plutus-tx-constraints

* plutus-chain-index uses C.TxOut

* Forgot to add file

* Fixing my mess with CardanoAPI

* encoding via plutus.TxOut (can't work, no NetworkId)

* Fix code for the use cases

* Fix a bug in balanceTx

* Fix 0 ada outputs error

* Dirty fix for the uniswap check

* Use Cardano.Tx txId

* fix uniswap test

* Fix double satisfaction

* Fix Marconi

* Add TxOut typeclasses

* Remove unused imports

* Fix failing tests

* Clean import

* Fix pab

* Fix golden values

* Fix golden test

* Fix more plutus packages

* Rmove useless param from ChainIndex.Lib

* Fik playground

* Remove commented code

* Include several fixes following Konstantinos' review

* Add a Pretty TxOut and clean uniswap

* Remove useless stuff in playground

* error in generators display the original cause

* Fix imports

* prettier pretty

* Fix golden tests

* Fix uniswap

* Fix golden tests

* Restore deleted constraints

* Integrate more Sjoerd's comments

* Add tests for mustPayToOtherScript tx constraint (#710)

* Add tests for mustPayToOtherScript tx constraint and 2 more for mustPayToPubKeyAddress

* Fix failing test and reference two PLT tickets

* Refactored MustMint tests to use minting policies and added tests for token burning (#719)

* MustSpendScriptOutput and MustSpendScriptOutputWithMatchingDatumAndValue check the redeemer's presence (#723)

* Add inline datum supports for mustPayToPubKey and mustPayToOtherScript (#721)

* Incremental change for datum

* Work but no inlining

* First working inline datum with V2

* Add tests for inline datum

* add smart constructors for inline datum

* fix PAB

* fixing tx-constraints

* clean up tests

* Address some of Konstantinos' comments

* Separate test group for plutus v2

* Refactor tests in MustPayToPubKeyAddress to ease version handling

* Code clean up

* Code clean up

* Fix unused imports

* Add a way to switch to cardano constraints in MustPayToOtherAddress tests

* more clean up

* PR feedbacks

* Remove dead code

* Add refactoring for MustPayToOtherScript tests

* typo

* clean test suites

* Clean up imports

* Fix some false-positives MustSpendScriptOutput tests using versioned minting policies (#725)

* Fix some false-positives MustSpendScriptOutput tests and refactor to use minting policies

* Use Versioned MintingPolicy and add tests for V2 scripts for MustSpendScriptOutput

* Further refactoring

* Improve onchain check for MustSpendScriptOutput and MustSpendScriptOutputWithMatchingDatumAndValue constraints

* tidy up onchain check

* PLT-448: must spend script output with reference (#716)

* Add ownAddress (singular)

* Support reference scripts in TxIn

* Add mustSpendScriptOutputWithReference

* Test using reference scripts

* Fix merge issues

* Direct conversion from ChainIndexTxOut to the new TxOut

* Push Versioned inside Either

* Accept test outputs

* Fix reference script support in ledger-constraints

* Fix comments

* Add ownAddress (singular)

* Support reference scripts in TxIn

* Add mustSpendScriptOutputWithReference

* Test using reference scripts

* Fix merge issues

* Direct conversion from ChainIndexTxOut to the new TxOut

* Push Versioned inside Either

* Accept test outputs

* Fix reference script support in ledger-constraints

* Fix comments

* PR feedback

* More PR feedback

* Fix merge issues

* PLT-807 Change behavior of MustPayToPubKeyAddress and MustPayToOtherScript w.r.t datum in transaction body (#705)

* Changed `MustPayToPubKeyAddress` and `MustPayToOtherScript` so that
  the user needs to explicitly specify if he wants:
    * the datum to only be included as a hash in the transaction
      output
    * the datum to be included as a hash in the transaction output
      as well as in the transaction body
    * the datum to be inlined in the transaction output

* Changed the name of the constraint `MustIncludeDatum` to
  `MustIncludeDatumInTx` and `MustHashDatum` to
  `MustIncludeDatumInTxWithHash`. These constraint don't modify the
  transaction anymore, but simply check that the datum is part of the
  transaction body.

* Added a note on the 'Plutus.Contract.Oracle' module explaining why it
  doesn't work in it's current form.

* Commented out failing test cases in `plutus-use-cases` that use the
  'Plutus.Contract.Oracle' module.

* PLT-511: collateral output in chain index (#730)

* Add collateral output support to chain index

* Generate invalid transactions in tests too

* PR feedback

* PLT-990 Removed Plutus.Contract.Wallet.finalize as we instead set the validity range of a transaction directly in `plutus-ledger-constraints` (since we now have access to the `SlotConfig`) (#741)

* Update the contributing guide (#729)

Co-authored-by: Evgenii Akentev <i@ak3n.com>
Co-authored-by: Konstantinos Lambrou-Latreille <konstantinos.lambrou@iohk.io>
Co-authored-by: Jordan Millar <jordan.millar@iohk.io>
Co-authored-by: Andrea Bedini <andrea@andreabedini.com>
Co-authored-by: Markus Läll <markus.lall@iohk.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@tweag.io>
Co-authored-by: Sjoerd Visscher <sjoerd.visscher@iohk.io>
Co-authored-by: Jamie Bertram <jamie.bertram@tweag.io>
Co-authored-by: Karol Ochman-Milarski <46135727+zmrocze@users.noreply.github.com>
Co-authored-by: James <74595920+james-iohk@users.noreply.github.com>
Co-authored-by: Ziyang Liu <unsafeFixIO@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants