From 993ce4b5f6b71786377bd0621237ddfae7d35368 Mon Sep 17 00:00:00 2001 From: John Ky Date: Sun, 3 Apr 2022 13:45:45 +1000 Subject: [PATCH] Enable tests --- cabal.project | 1 + nix/pkgs/haskell/haskell.nix | 1 + .../.plan.nix/cardano-submit-api.nix | 112 ++++++++++++++ .../.plan.nix/plutus-example.nix | 1 + .../haskell/materialized-linux/default.nix | 4 + .../.plan.nix/cardano-submit-api.nix | 112 ++++++++++++++ .../.plan.nix/plutus-example.nix | 1 + .../haskell/materialized-windows/default.nix | 4 + plutus-example/plutus-example.cabal | 1 + .../42.redeemer => plutus/data/42.datum} | 0 plutus-example/plutus/data/42.datum.cbor | 1 + plutus-example/plutus/data/42.redeemer | 1 + plutus-example/plutus/data/42.redeemer.cbor | 1 + plutus-example/plutus/data/typed-42.datum | 1 + .../plutus/data/typed-42.datum.cbor | 1 + plutus-example/plutus/data/typed-42.redeemer | 1 + .../example-txin-locking-plutus-script.sh | 140 ++++++++++++++++++ .../scripts/always-succeeds-spending.plutus | 5 + .../scripts}/anyone-can-mint.plutus | 0 .../scripts/context-equivalance-test.plutus | 5 + .../scripts}/custom-guess-42-datum-42.plutus | 0 .../scripts}/guess-42-stake.plutus | 0 .../minting-context-equivalance-test.plutus | 5 + .../Direct/CertifyingAndWithdrawingPlutus.hs | 4 +- .../Direct/ScriptContextEquality.hs | 9 +- .../Direct/ScriptContextEqualityMint.hs | 7 +- .../PlutusExample/Direct/TxInLockingPlutus.hs | 11 +- .../PlutusExample/Script/TxInLockingPlutus.hs | 2 +- .../SubmitApi/TxInLockingPlutus.hs | 6 +- plutus-example/test/plutus-example-test.hs | 10 +- 30 files changed, 414 insertions(+), 33 deletions(-) create mode 100644 nix/pkgs/haskell/materialized-linux/.plan.nix/cardano-submit-api.nix create mode 100644 nix/pkgs/haskell/materialized-windows/.plan.nix/cardano-submit-api.nix rename plutus-example/{example-scripts/42.redeemer => plutus/data/42.datum} (100%) create mode 100644 plutus-example/plutus/data/42.datum.cbor create mode 100644 plutus-example/plutus/data/42.redeemer create mode 100644 plutus-example/plutus/data/42.redeemer.cbor create mode 100644 plutus-example/plutus/data/typed-42.datum create mode 100644 plutus-example/plutus/data/typed-42.datum.cbor create mode 100644 plutus-example/plutus/data/typed-42.redeemer create mode 100755 plutus-example/plutus/example-txin-locking-plutus-script.sh create mode 100644 plutus-example/plutus/scripts/always-succeeds-spending.plutus rename plutus-example/{example-scripts => plutus/scripts}/anyone-can-mint.plutus (100%) create mode 100644 plutus-example/plutus/scripts/context-equivalance-test.plutus rename plutus-example/{example-scripts => plutus/scripts}/custom-guess-42-datum-42.plutus (100%) rename plutus-example/{example-scripts => plutus/scripts}/guess-42-stake.plutus (100%) create mode 100644 plutus-example/plutus/scripts/minting-context-equivalance-test.plutus diff --git a/cabal.project b/cabal.project index b2e77af45e..3ca29db496 100644 --- a/cabal.project +++ b/cabal.project @@ -158,6 +158,7 @@ source-repository-package cardano-cli cardano-git-rev cardano-node + cardano-submit-api cardano-testnet trace-dispatcher trace-forward diff --git a/nix/pkgs/haskell/haskell.nix b/nix/pkgs/haskell/haskell.nix index 7ed1d073cd..4a1348c068 100644 --- a/nix/pkgs/haskell/haskell.nix +++ b/nix/pkgs/haskell/haskell.nix @@ -128,6 +128,7 @@ let plutus-example.preCheck = " export CARDANO_CLI=${config.hsPkgs.cardano-cli.components.exes.cardano-cli}/bin/cardano-cli${pkgs.stdenv.hostPlatform.extensions.executable} export CARDANO_NODE=${config.hsPkgs.cardano-node.components.exes.cardano-node}/bin/cardano-node${pkgs.stdenv.hostPlatform.extensions.executable} + export CARDANO_SUBMIT_API=${config.hsPkgs.cardano-submit-api.components.exes.cardano-submit-api}/bin/cardano-submit-api${pkgs.stdenv.hostPlatform.extensions.executable} export CARDANO_NODE_SRC=${src} "; diff --git a/nix/pkgs/haskell/materialized-linux/.plan.nix/cardano-submit-api.nix b/nix/pkgs/haskell/materialized-linux/.plan.nix/cardano-submit-api.nix new file mode 100644 index 0000000000..f22ec28d8c --- /dev/null +++ b/nix/pkgs/haskell/materialized-linux/.plan.nix/cardano-submit-api.nix @@ -0,0 +1,112 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "cardano-submit-api"; version = "3.1.2"; }; + license = "Apache-2.0"; + copyright = "(c) 2019-2021 IOHK"; + maintainer = "operations@iohk.io"; + author = "IOHK Engineering Team"; + homepage = "https://github.com/input-output-hk/cardano-node"; + url = ""; + synopsis = "A web server that allows transactions to be POSTed to the cardano chain"; + description = ""; + buildType = "Simple"; + isLocal = true; + detailLevel = "FullDetails"; + licenseFiles = [ "LICENSE" ]; + dataDir = "."; + dataFiles = []; + extraSrcFiles = [ "CHANGELOG.md" ]; + extraTmpFiles = []; + extraDocFiles = []; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) + (hsPkgs."async" or (errorHandler.buildDepError "async")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."cardano-api" or (errorHandler.buildDepError "cardano-api")) + (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) + (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) + (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."formatting" or (errorHandler.buildDepError "formatting")) + (hsPkgs."http-media" or (errorHandler.buildDepError "http-media")) + (hsPkgs."iohk-monitoring" or (errorHandler.buildDepError "iohk-monitoring")) + (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) + (hsPkgs."network" or (errorHandler.buildDepError "network")) + (hsPkgs."optparse-applicative-fork" or (errorHandler.buildDepError "optparse-applicative-fork")) + (hsPkgs."ouroboros-consensus-cardano" or (errorHandler.buildDepError "ouroboros-consensus-cardano")) + (hsPkgs."ouroboros-network" or (errorHandler.buildDepError "ouroboros-network")) + (hsPkgs."prometheus" or (errorHandler.buildDepError "prometheus")) + (hsPkgs."protolude" or (errorHandler.buildDepError "protolude")) + (hsPkgs."servant" or (errorHandler.buildDepError "servant")) + (hsPkgs."servant-server" or (errorHandler.buildDepError "servant-server")) + (hsPkgs."streaming-commons" or (errorHandler.buildDepError "streaming-commons")) + (hsPkgs."text" or (errorHandler.buildDepError "text")) + (hsPkgs."transformers-except" or (errorHandler.buildDepError "transformers-except")) + (hsPkgs."warp" or (errorHandler.buildDepError "warp")) + (hsPkgs."yaml" or (errorHandler.buildDepError "yaml")) + ]; + buildable = true; + modules = [ + "Cardano/TxSubmit/CLI/Parsers" + "Cardano/TxSubmit/CLI/Types" + "Cardano/TxSubmit/Config" + "Cardano/TxSubmit/ErrorRender" + "Cardano/TxSubmit/Metrics" + "Cardano/TxSubmit/Rest/Parsers" + "Cardano/TxSubmit/Rest/Types" + "Cardano/TxSubmit/Rest/Web" + "Cardano/TxSubmit/Tracing/ToObjectOrphans" + "Cardano/TxSubmit/Types" + "Cardano/TxSubmit/Util" + "Cardano/TxSubmit/Web" + "Cardano/TxSubmit" + ]; + hsSourceDirs = [ "src" ]; + }; + exes = { + "cardano-submit-api" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."cardano-submit-api" or (errorHandler.buildDepError "cardano-submit-api")) + (hsPkgs."optparse-applicative-fork" or (errorHandler.buildDepError "optparse-applicative-fork")) + ]; + buildable = true; + hsSourceDirs = [ "app" ]; + mainPath = [ "Main.hs" ]; + }; + }; + tests = { + "unit" = { + depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ]; + buildable = true; + hsSourceDirs = [ "test" ]; + mainPath = [ "test.hs" ]; + }; + }; + }; + } // { + src = (pkgs.lib).mkDefault (pkgs.fetchgit { + url = "7"; + rev = "minimal"; + sha256 = ""; + }) // { + url = "7"; + rev = "minimal"; + sha256 = ""; + }; + postUnpack = "sourceRoot+=/cardano-submit-api; echo source root reset to \$sourceRoot"; + } \ No newline at end of file diff --git a/nix/pkgs/haskell/materialized-linux/.plan.nix/plutus-example.nix b/nix/pkgs/haskell/materialized-linux/.plan.nix/plutus-example.nix index d43807d858..23470ec19c 100644 --- a/nix/pkgs/haskell/materialized-linux/.plan.nix/plutus-example.nix +++ b/nix/pkgs/haskell/materialized-linux/.plan.nix/plutus-example.nix @@ -128,6 +128,7 @@ build-tools = [ (hsPkgs.buildPackages.cardano-node.components.exes.cardano-node or (pkgs.buildPackages.cardano-node or (errorHandler.buildToolDepError "cardano-node:cardano-node"))) (hsPkgs.buildPackages.cardano-cli.components.exes.cardano-cli or (pkgs.buildPackages.cardano-cli or (errorHandler.buildToolDepError "cardano-cli:cardano-cli"))) + (hsPkgs.buildPackages.cardano-submit-api.components.exes.cardano-submit-api or (pkgs.buildPackages.cardano-submit-api or (errorHandler.buildToolDepError "cardano-submit-api:cardano-submit-api"))) ]; buildable = true; modules = [ diff --git a/nix/pkgs/haskell/materialized-linux/default.nix b/nix/pkgs/haskell/materialized-linux/default.nix index e18b1f0b9f..3d2540138f 100644 --- a/nix/pkgs/haskell/materialized-linux/default.nix +++ b/nix/pkgs/haskell/materialized-linux/default.nix @@ -805,6 +805,7 @@ cardano-prelude-test = ./.plan.nix/cardano-prelude-test.nix; lobemo-backend-monitoring = ./.plan.nix/lobemo-backend-monitoring.nix; io-sim = ./.plan.nix/io-sim.nix; + cardano-submit-api = ./.plan.nix/cardano-submit-api.nix; cardano-git-rev = ./.plan.nix/cardano-git-rev.nix; hedgehog-extras = ./.plan.nix/hedgehog-extras.nix; plutus-chain-index = ./.plan.nix/plutus-chain-index.nix; @@ -950,6 +951,7 @@ }; "lobemo-backend-monitoring" = { flags = {}; }; "io-sim" = { flags = { "asserts" = lib.mkOverride 900 false; }; }; + "cardano-submit-api" = { flags = {}; }; "cardano-git-rev" = { flags = { "systemd" = lib.mkOverride 900 true; }; }; @@ -1188,6 +1190,7 @@ "indexed-traversable".components.library.planned = lib.mkOverride 900 true; "network-uri".components.library.planned = lib.mkOverride 900 true; "plutus-chain-index".components.library.planned = lib.mkOverride 900 true; + "cardano-submit-api".components.library.planned = lib.mkOverride 900 true; "katip".components.library.planned = lib.mkOverride 900 true; "lzma".components.library.planned = lib.mkOverride 900 true; "ouroboros-consensus-byron".components.library.planned = lib.mkOverride 900 true; @@ -1541,6 +1544,7 @@ "nothunks".components.library.planned = lib.mkOverride 900 true; "plutus-doc".components.exes."doc-doctests".planned = lib.mkOverride 900 true; "plutus-tx-plugin".components.library.planned = lib.mkOverride 900 true; + "cardano-submit-api".components.exes."cardano-submit-api".planned = lib.mkOverride 900 true; "servant-options".components.library.planned = lib.mkOverride 900 true; "indexed-traversable-instances".components.library.planned = lib.mkOverride 900 true; "servant-openapi3".components.library.planned = lib.mkOverride 900 true; diff --git a/nix/pkgs/haskell/materialized-windows/.plan.nix/cardano-submit-api.nix b/nix/pkgs/haskell/materialized-windows/.plan.nix/cardano-submit-api.nix new file mode 100644 index 0000000000..f22ec28d8c --- /dev/null +++ b/nix/pkgs/haskell/materialized-windows/.plan.nix/cardano-submit-api.nix @@ -0,0 +1,112 @@ +{ system + , compiler + , flags + , pkgs + , hsPkgs + , pkgconfPkgs + , errorHandler + , config + , ... }: + { + flags = {}; + package = { + specVersion = "3.0"; + identifier = { name = "cardano-submit-api"; version = "3.1.2"; }; + license = "Apache-2.0"; + copyright = "(c) 2019-2021 IOHK"; + maintainer = "operations@iohk.io"; + author = "IOHK Engineering Team"; + homepage = "https://github.com/input-output-hk/cardano-node"; + url = ""; + synopsis = "A web server that allows transactions to be POSTed to the cardano chain"; + description = ""; + buildType = "Simple"; + isLocal = true; + detailLevel = "FullDetails"; + licenseFiles = [ "LICENSE" ]; + dataDir = "."; + dataFiles = []; + extraSrcFiles = [ "CHANGELOG.md" ]; + extraTmpFiles = []; + extraDocFiles = []; + }; + components = { + "library" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) + (hsPkgs."async" or (errorHandler.buildDepError "async")) + (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) + (hsPkgs."cardano-api" or (errorHandler.buildDepError "cardano-api")) + (hsPkgs."cardano-binary" or (errorHandler.buildDepError "cardano-binary")) + (hsPkgs."cardano-crypto-class" or (errorHandler.buildDepError "cardano-crypto-class")) + (hsPkgs."cardano-ledger-byron" or (errorHandler.buildDepError "cardano-ledger-byron")) + (hsPkgs."formatting" or (errorHandler.buildDepError "formatting")) + (hsPkgs."http-media" or (errorHandler.buildDepError "http-media")) + (hsPkgs."iohk-monitoring" or (errorHandler.buildDepError "iohk-monitoring")) + (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) + (hsPkgs."network" or (errorHandler.buildDepError "network")) + (hsPkgs."optparse-applicative-fork" or (errorHandler.buildDepError "optparse-applicative-fork")) + (hsPkgs."ouroboros-consensus-cardano" or (errorHandler.buildDepError "ouroboros-consensus-cardano")) + (hsPkgs."ouroboros-network" or (errorHandler.buildDepError "ouroboros-network")) + (hsPkgs."prometheus" or (errorHandler.buildDepError "prometheus")) + (hsPkgs."protolude" or (errorHandler.buildDepError "protolude")) + (hsPkgs."servant" or (errorHandler.buildDepError "servant")) + (hsPkgs."servant-server" or (errorHandler.buildDepError "servant-server")) + (hsPkgs."streaming-commons" or (errorHandler.buildDepError "streaming-commons")) + (hsPkgs."text" or (errorHandler.buildDepError "text")) + (hsPkgs."transformers-except" or (errorHandler.buildDepError "transformers-except")) + (hsPkgs."warp" or (errorHandler.buildDepError "warp")) + (hsPkgs."yaml" or (errorHandler.buildDepError "yaml")) + ]; + buildable = true; + modules = [ + "Cardano/TxSubmit/CLI/Parsers" + "Cardano/TxSubmit/CLI/Types" + "Cardano/TxSubmit/Config" + "Cardano/TxSubmit/ErrorRender" + "Cardano/TxSubmit/Metrics" + "Cardano/TxSubmit/Rest/Parsers" + "Cardano/TxSubmit/Rest/Types" + "Cardano/TxSubmit/Rest/Web" + "Cardano/TxSubmit/Tracing/ToObjectOrphans" + "Cardano/TxSubmit/Types" + "Cardano/TxSubmit/Util" + "Cardano/TxSubmit/Web" + "Cardano/TxSubmit" + ]; + hsSourceDirs = [ "src" ]; + }; + exes = { + "cardano-submit-api" = { + depends = [ + (hsPkgs."base" or (errorHandler.buildDepError "base")) + (hsPkgs."cardano-submit-api" or (errorHandler.buildDepError "cardano-submit-api")) + (hsPkgs."optparse-applicative-fork" or (errorHandler.buildDepError "optparse-applicative-fork")) + ]; + buildable = true; + hsSourceDirs = [ "app" ]; + mainPath = [ "Main.hs" ]; + }; + }; + tests = { + "unit" = { + depends = [ (hsPkgs."base" or (errorHandler.buildDepError "base")) ]; + buildable = true; + hsSourceDirs = [ "test" ]; + mainPath = [ "test.hs" ]; + }; + }; + }; + } // { + src = (pkgs.lib).mkDefault (pkgs.fetchgit { + url = "7"; + rev = "minimal"; + sha256 = ""; + }) // { + url = "7"; + rev = "minimal"; + sha256 = ""; + }; + postUnpack = "sourceRoot+=/cardano-submit-api; echo source root reset to \$sourceRoot"; + } \ No newline at end of file diff --git a/nix/pkgs/haskell/materialized-windows/.plan.nix/plutus-example.nix b/nix/pkgs/haskell/materialized-windows/.plan.nix/plutus-example.nix index d43807d858..23470ec19c 100644 --- a/nix/pkgs/haskell/materialized-windows/.plan.nix/plutus-example.nix +++ b/nix/pkgs/haskell/materialized-windows/.plan.nix/plutus-example.nix @@ -128,6 +128,7 @@ build-tools = [ (hsPkgs.buildPackages.cardano-node.components.exes.cardano-node or (pkgs.buildPackages.cardano-node or (errorHandler.buildToolDepError "cardano-node:cardano-node"))) (hsPkgs.buildPackages.cardano-cli.components.exes.cardano-cli or (pkgs.buildPackages.cardano-cli or (errorHandler.buildToolDepError "cardano-cli:cardano-cli"))) + (hsPkgs.buildPackages.cardano-submit-api.components.exes.cardano-submit-api or (pkgs.buildPackages.cardano-submit-api or (errorHandler.buildToolDepError "cardano-submit-api:cardano-submit-api"))) ]; buildable = true; modules = [ diff --git a/nix/pkgs/haskell/materialized-windows/default.nix b/nix/pkgs/haskell/materialized-windows/default.nix index edc89f093b..9e1d675a28 100644 --- a/nix/pkgs/haskell/materialized-windows/default.nix +++ b/nix/pkgs/haskell/materialized-windows/default.nix @@ -793,6 +793,7 @@ cardano-prelude-test = ./.plan.nix/cardano-prelude-test.nix; lobemo-backend-monitoring = ./.plan.nix/lobemo-backend-monitoring.nix; io-sim = ./.plan.nix/io-sim.nix; + cardano-submit-api = ./.plan.nix/cardano-submit-api.nix; cardano-git-rev = ./.plan.nix/cardano-git-rev.nix; hedgehog-extras = ./.plan.nix/hedgehog-extras.nix; plutus-chain-index = ./.plan.nix/plutus-chain-index.nix; @@ -938,6 +939,7 @@ }; "lobemo-backend-monitoring" = { flags = {}; }; "io-sim" = { flags = { "asserts" = lib.mkOverride 900 false; }; }; + "cardano-submit-api" = { flags = {}; }; "cardano-git-rev" = { flags = { "systemd" = lib.mkOverride 900 true; }; }; @@ -1177,6 +1179,7 @@ "indexed-traversable".components.library.planned = lib.mkOverride 900 true; "network-uri".components.library.planned = lib.mkOverride 900 true; "plutus-chain-index".components.library.planned = lib.mkOverride 900 true; + "cardano-submit-api".components.library.planned = lib.mkOverride 900 true; "katip".components.library.planned = lib.mkOverride 900 true; "lzma".components.library.planned = lib.mkOverride 900 true; "ouroboros-consensus-byron".components.library.planned = lib.mkOverride 900 true; @@ -1525,6 +1528,7 @@ "plutus-chain-index-core".components.tests."plutus-chain-index-test".planned = lib.mkOverride 900 true; "nothunks".components.library.planned = lib.mkOverride 900 true; "plutus-tx-plugin".components.library.planned = lib.mkOverride 900 true; + "cardano-submit-api".components.exes."cardano-submit-api".planned = lib.mkOverride 900 true; "servant-options".components.library.planned = lib.mkOverride 900 true; "indexed-traversable-instances".components.library.planned = lib.mkOverride 900 true; "servant-openapi3".components.library.planned = lib.mkOverride 900 true; diff --git a/plutus-example/plutus-example.cabal b/plutus-example/plutus-example.cabal index 28148a3763..5b3e670401 100644 --- a/plutus-example/plutus-example.cabal +++ b/plutus-example/plutus-example.cabal @@ -158,4 +158,5 @@ test-suite plutus-example-test build-tool-depends: cardano-node:cardano-node , cardano-cli:cardano-cli + , cardano-submit-api:cardano-submit-api \ No newline at end of file diff --git a/plutus-example/example-scripts/42.redeemer b/plutus-example/plutus/data/42.datum similarity index 100% rename from plutus-example/example-scripts/42.redeemer rename to plutus-example/plutus/data/42.datum diff --git a/plutus-example/plutus/data/42.datum.cbor b/plutus-example/plutus/data/42.datum.cbor new file mode 100644 index 0000000000..d9ba7315ac --- /dev/null +++ b/plutus-example/plutus/data/42.datum.cbor @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/plutus-example/plutus/data/42.redeemer b/plutus-example/plutus/data/42.redeemer new file mode 100644 index 0000000000..68ce4d981c --- /dev/null +++ b/plutus-example/plutus/data/42.redeemer @@ -0,0 +1 @@ +{"int":42} \ No newline at end of file diff --git a/plutus-example/plutus/data/42.redeemer.cbor b/plutus-example/plutus/data/42.redeemer.cbor new file mode 100644 index 0000000000..d9ba7315ac --- /dev/null +++ b/plutus-example/plutus/data/42.redeemer.cbor @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/plutus-example/plutus/data/typed-42.datum b/plutus-example/plutus/data/typed-42.datum new file mode 100644 index 0000000000..18ad988c10 --- /dev/null +++ b/plutus-example/plutus/data/typed-42.datum @@ -0,0 +1 @@ +{"constructor":0,"fields":[{"int":42}]} \ No newline at end of file diff --git a/plutus-example/plutus/data/typed-42.datum.cbor b/plutus-example/plutus/data/typed-42.datum.cbor new file mode 100644 index 0000000000..a45f6dd9f7 --- /dev/null +++ b/plutus-example/plutus/data/typed-42.datum.cbor @@ -0,0 +1 @@ +ØyŸ*ÿ \ No newline at end of file diff --git a/plutus-example/plutus/data/typed-42.redeemer b/plutus-example/plutus/data/typed-42.redeemer new file mode 100644 index 0000000000..18ad988c10 --- /dev/null +++ b/plutus-example/plutus/data/typed-42.redeemer @@ -0,0 +1 @@ +{"constructor":0,"fields":[{"int":42}]} \ No newline at end of file diff --git a/plutus-example/plutus/example-txin-locking-plutus-script.sh b/plutus-example/plutus/example-txin-locking-plutus-script.sh new file mode 100755 index 0000000000..e5ce09e6c2 --- /dev/null +++ b/plutus-example/plutus/example-txin-locking-plutus-script.sh @@ -0,0 +1,140 @@ +#!/usr/bin/env bash + +# Unofficial bash strict mode. +# See: http://redsymbol.net/articles/unofficial-bash-strict-mode/ +set -e +set -o pipefail + +export WORK="${WORK:-example/work}" +export BASE="${BASE:-.}" +export CARDANO_CLI="${CARDANO_CLI:-cardano-cli}" +export CARDANO_NODE_SOCKET_PATH="${CARDANO_NODE_SOCKET_PATH:-example/node-bft1/node.sock}" +export TESTNET_MAGIC="${TESTNET_MAGIC:-42}" +export UTXO_VKEY="${UTXO_VKEY:-example/shelley/utxo-keys/utxo1.vkey}" +export UTXO_SKEY="${UTXO_SKEY:-example/shelley/utxo-keys/utxo1.skey}" +export RESULT_FILE="${RESULT_FILE:-$WORK/result.out}" + +echo "Socket path: $CARDANO_NODE_SOCKET_PATH" +echo "Socket path: $(pwd)" + +ls -al "$CARDANO_NODE_SOCKET_PATH" + +if [ "$1" == "guessinggame" ]; then + # NB: This plutus script uses a "typed" redeemer and "typed" datum. + plutusscriptinuse="$BASE/plutus-example/plutus/scripts/custom-guess-42-datum-42.plutus" + # This datum hash is the hash of the typed 42 + scriptdatumhash="fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273" + datumfilepath="$BASE/plutus-example/plutus/data/typed-42.datum" + redeemerfilepath="$BASE/plutus-example/plutus/data/typed-42.redeemer" + echo "Guessing game Plutus script in use. The datum and redeemer must be equal to 42." + echo "Script at: $plutusscriptinuse" + +elif [ "$1" == "" ]; then + plutusscriptinuse="$BASE/plutus-example/plutus/scripts/always-succeeds-spending.plutus" + # This datum hash is the hash of the untyped 42 + scriptdatumhash="9e1199a988ba72ffd6e9c269cadb3b53b5f360ff99f112d9b2ee30c4d74ad88b" + datumfilepath="$BASE/plutus-example/plutus/data/42.datum" + redeemerfilepath="$BASE/plutus-example/plutus/data/42.redeemer" + echo "Always succeeds Plutus script in use. Any datum and redeemer combination will succeed." + echo "Script at: $plutusscriptinuse" +fi + + +# Step 1: Create a tx output with a datum hash at the script address. In order for a tx output to be locked +# by a plutus script, it must have a datahash. We also need collateral tx inputs so we split the utxo +# in order to accommodate this. + + +plutusscriptaddr=$($CARDANO_CLI address build --payment-script-file "$plutusscriptinuse" --testnet-magic "$TESTNET_MAGIC") + +mkdir -p "$WORK" + +utxoaddr=$($CARDANO_CLI address build --testnet-magic "$TESTNET_MAGIC" --payment-verification-key-file "$UTXO_VKEY") + +$CARDANO_CLI query utxo --address "$utxoaddr" --cardano-mode --testnet-magic "$TESTNET_MAGIC" --out-file "$WORK/utxo-1.json" +cat "$WORK/utxo-1.json" + +txin=$(jq -r 'keys[0]' "$WORK/utxo-1.json") +lovelaceattxin=$(jq -r ".[\"$txin\"].value.lovelace" "$WORK/utxo-1.json") +lovelaceattxindiv3="$(("$lovelaceattxin" / 3))" + +$CARDANO_CLI query protocol-parameters --testnet-magic "$TESTNET_MAGIC" --out-file "$WORK/pparams.json" + +$CARDANO_CLI transaction build \ + --alonzo-era \ + --cardano-mode \ + --testnet-magic "$TESTNET_MAGIC" \ + --change-address "$utxoaddr" \ + --tx-in "$txin" \ + --tx-out "$plutusscriptaddr+$lovelaceattxindiv3" \ + --tx-out-datum-hash "$scriptdatumhash" \ + --tx-out "$utxoaddr+$lovelaceattxindiv3" \ + --protocol-params-file "$WORK/pparams.json" \ + --out-file "$WORK/create-datum-output.body" + +$CARDANO_CLI transaction sign \ + --tx-body-file "$WORK/create-datum-output.body" \ + --testnet-magic "$TESTNET_MAGIC" \ + --signing-key-file "$UTXO_SKEY" \ + --out-file "$WORK/create-datum-output.tx" + +# SUBMIT +$CARDANO_CLI transaction submit --tx-file "$WORK/create-datum-output.tx" --testnet-magic "$TESTNET_MAGIC" +echo "Pausing for 5 seconds..." +sleep 5 + +# Step 2 +# After "locking" the tx output at the script address, we can now can attempt to spend +# the "locked" tx output below. + +$CARDANO_CLI query utxo --address "$plutusscriptaddr" --testnet-magic "$TESTNET_MAGIC" --out-file "$WORK/plutusutxo.json" + +plutusutxotxin=$(jq -r 'keys[]' "$WORK/plutusutxo.json") + +$CARDANO_CLI query utxo --address "$utxoaddr" --cardano-mode --testnet-magic "$TESTNET_MAGIC" --out-file "$WORK/utxo-2.json" +cat "$WORK/utxo-2.json" +txinCollateral=$(jq -r 'keys[0]' "$WORK/utxo-2.json") + + +dummyaddress=addr_test1vpqgspvmh6m2m5pwangvdg499srfzre2dd96qq57nlnw6yctpasy4 + +lovelaceatplutusscriptaddr="$(jq -r ".[\"$plutusutxotxin\"].value.lovelace" "$WORK/plutusutxo.json")" + +echo "Plutus script address" +echo "$lovelaceatplutusscriptaddr" + +echo "Plutus txin" +echo "$plutusutxotxin" + +echo "Collateral" +echo "$txinCollateral" + +$CARDANO_CLI transaction build \ + --alonzo-era \ + --cardano-mode \ + --testnet-magic "$TESTNET_MAGIC" \ + --change-address "$utxoaddr" \ + --tx-in "$plutusutxotxin" \ + --tx-in-collateral "$txinCollateral" \ + --tx-out "$dummyaddress+10000000" \ + --tx-in-script-file "$plutusscriptinuse" \ + --tx-in-datum-file "$datumfilepath" \ + --protocol-params-file "$WORK/pparams.json" \ + --tx-in-redeemer-file "$redeemerfilepath" \ + --out-file "$WORK/test-alonzo.body" + +$CARDANO_CLI transaction sign \ + --tx-body-file "$WORK/test-alonzo.body" \ + --testnet-magic "$TESTNET_MAGIC" \ + --signing-key-file "${UTXO_SKEY}" \ + --out-file "$WORK/alonzo.tx" + +# SUBMIT $WORK/alonzo.tx +echo "Submit the tx with plutus script and wait 5 seconds..." +$CARDANO_CLI transaction submit --tx-file "$WORK/alonzo.tx" --testnet-magic "$TESTNET_MAGIC" +sleep 5 +echo "" +echo "Querying UTxO at $dummyaddress. If there is ADA at the address the Plutus script successfully executed!" +echo "" +$CARDANO_CLI query utxo --address "$dummyaddress" --testnet-magic "$TESTNET_MAGIC" \ + | tee "$RESULT_FILE" diff --git a/plutus-example/plutus/scripts/always-succeeds-spending.plutus b/plutus-example/plutus/scripts/always-succeeds-spending.plutus new file mode 100644 index 0000000000..1a19975db6 --- /dev/null +++ b/plutus-example/plutus/scripts/always-succeeds-spending.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "4e4d01000033222220051200120011" +} diff --git a/plutus-example/example-scripts/anyone-can-mint.plutus b/plutus-example/plutus/scripts/anyone-can-mint.plutus similarity index 100% rename from plutus-example/example-scripts/anyone-can-mint.plutus rename to plutus-example/plutus/scripts/anyone-can-mint.plutus diff --git a/plutus-example/plutus/scripts/context-equivalance-test.plutus b/plutus-example/plutus/scripts/context-equivalance-test.plutus new file mode 100644 index 0000000000..9765cb9724 --- /dev/null +++ b/plutus-example/plutus/scripts/context-equivalance-test.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5914d65914d3010000332323233223322333222323232333222333222333333332222222233223333322222333322223332223322332233223332223322332233223322323232323232323232323232323232323232323232323322332232323232335500104c500911222222300733300430060033005002300800125335302f001105213504c3530513357389201025064000524988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266012a002a0042600c6ae8540084c068d5d09aba25001135573ca00226ea80084d412d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e930999999999980d2800a8012801a8022802a8032803a8042804a805099a81400d9aba15012133502701b35742a0202666aa044eb94084d5d0a8070999aa810bae502035742a018266a04804e6ae8540284cd408ccd5408809dd69aba15008133501875a6ae8540184cd4085d71aba150041335020335501f75c03c6ae8540084c098d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d4129262212330010030022001222222222212333333333300100b00a00900800700600500400300220011232323232323232323232323232323232323232323333573466e1cd55cea809a40004a0044a02a930999999999815a800a8012801a8022802a8032803a8042804899a81080a9aba15010133502001335742a01c2666aa036eb94068d5d0a806099a80a3ad35742a0142666aa032eb94060d5d0a804099a80e280c9aba15006133501b01e35742a008266a034eb8d5d0a801099a80d00d9aba135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d41152623232323232323333573466e1cd55cea802a40004a0044a00e9309980f2800a8010980c1aba1500213005357426ae8940044d55cf280089baa0021350444988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666042a002a004a006260106ae8540104ccd54039d728069aba15002133501275c6ae84d5d1280089aba25001135573ca00226ea80084d410d2623232323232323333573466e1cd55cea802a40004a0044a00e930998102800a8010980a9aba150021335010013357426ae8940044d55cf280089baa002135042498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04aa002a004266a00e00c6ae8540084cd401c014d5d09aba25001135573ca00226ea80084d4109261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8142800a801099a8040031aba1500213008357426ae8940044d55cf280089baa002135041498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04aa002a004266a00e00c6ae8540084c01cd5d09aba25001135573ca00226ea80084d410126122323232323232323333573466e1d401520042502e250024984cccd5cd19b8750044800894008940112613502d500113006357426aae79400c4cccd5cd19b87500148000940ac9401126135573aa00226ea80084d40fd2623232323333573466e1d400920022026250024984cccd5cd19b8750014800080909400d26135573a6ea80084d40f5261335500175ceb444888c8c8c004dd58019a80090008918009aa82391191919191919191999aab9f008550482530021200104d350022200135001220023555504e12223300321300a357440124266a096a00aa600624002266aa096a002a004260106aae7540084c018d55cf280089aba10011335500275c0024002224446464646464646666ae68cdc39aab9d500548000940089401d2613355047500150021300735742a0042600a6ae84d5d1280089aab9e50011375400426a07493091191918009bac0033500120011230013550422233335573e0024a080466a07e600c6ae84008c00cd5d10010208911919191919191999ab9a3370ea0089000128011280224c26a030a0022600c6ae84d55cf280189999ab9a3370ea00290011280b1280224c26aae7540044dd500109a81ba4c464646464646464646464646464646666ae68cdc3a8052400c4a0044a00893098182800898071aba135573ca01626666ae68cdc3a803a40084a0044a0089309815a800898061aba135573ca01026666ae68cdc3a802240044a0044a0089309813a800898059aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031302550011375c6ae84d55cf280089baa0021350354988c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b875015480308108940092613333573466e1d4051200a2042250024984cccd5cd19b8750134802094008940192613303c500150021375c6ae8540084dd69aba135744a00226aae7940484cccd5cd19b87500e48018940089401926133038500150021375c6ae8540084dd71aba135744a00226aae7940344cccd5cd19b87500948010940089401926133037500150021300d35742a00426eb8d5d09aba25001135573ca01026666ae68cdc3a802240044a0044a0089309819a800898041aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031302d500113004357426aae7940044dd500109a81a24c46464646464646464646464646666ae68cdc3a804240044a0044a01093099981c2800a801280189bad35742a00826eb4d5d0a80109bad357426ae8940044d5d1280089aab9e500513333573466e1d4005200025003250064984d55cea80189818a800898021aba135573ca00226ea80084d40cd26232323232323232323333573466e1d4011200225002250044984c0d940044dd71aba135573ca00a26666ae68cdc3a800a40004a0064a00c9309aab9d50031303350011375c6ae84d55cf280089baa0021350324988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26604ca002a0042600c6ae8540084dd69aba135744a00226aae7940044dd500109a818a4c46464646666ae68cdc39aab9d5002480009400894011261375c6ae84d55cf280089baa00213503049888888888848ccccccccc00402802402001c01801401000c00880048848cc00400c008800488848ccc00401000c00880048848cc00400c008800448488c00800c44880044800448848cc00400c0084800448848cc00400c0084800448848cc00400c008480044880084880048004484888c00c010448880084488800448004848888c010014848888c00c014848888c008014848888c00401480048848cc00400c0088004848888888c01c0208848888888cc018024020848888888c014020488888880104888888800c8848888888cc0080240208848888888cc00402402080048488c00800c888488ccc00401401000c80048488c00800c8488c00400c80048c8c8c8cccd5cd19b8735573aa0049000128011280224c26eb4d5d09aab9e50011375400426a0049309308928020891001091091198008020018900089000900088910919800801801089000889191800800911980198010010008888919a8011091980091a80191180100191a80191180080180089191918008009119801980100100091091a9802091a98020019a801800800991919191919991119911919991119191919191991191919191919191991191919911919191999911119911919191919191919191919191919191919191919191919191919191919191919191919191919191919190009111a98020011111111111919299a982a9998138291a980e280111111111110038048a99a982a999a8098291a980e280111111111110020040a99a982a999a980809000a80a9a980e280111111111110010030a99a982a999a98080900082a1a980e2801111111111100180209919191919299a982d180099aa980e8900099aa9814090008139a9810a80391111111110049a80f89119801240046600490020008991919299a982ea99a982e9800a804899191919191800a8071a80090008918009aa83711299a9a83480088321109a9aa82f00111299a98339981b801280408348980300189a8311980080a28339a80090008918009aa835911299a9a83380108009109980280099a835001001882f0991919299a9830180099aa9811890009a9813a80691111111110031a81289119801240040022a66a6a0ae01c426603c0026a604e0304400226a0d29308309a80090008918009aa83611299a9a83380088311109a9aa82e00111299a983299830001280408338980300189a830006882f1a80090008918009aa83491299a9a832000882f9109a9aa82c80111299a983119819001280408320980300189a82e807882d9a80090008918009aa83311299a9a830800882e1109a9aa82b00111299a982f99981882e001280408308980300189a82d1980099aa981289000812006a82f9a80090008918009aa831911299a9a82f80108009109980280099a831001001882b082b082b082b099aa980b890009a980da80091111111110051a80c891198012400466004900200089a980c8051100110009a80090008918009aa829110911299a9a8280010a99a9a8280008826110826910a99a9a8290018826910a99a9827198038020010999a9804890008038018008827911999a9808801129999a98090011099821001000908241082410824129999a98090011082410998230010009082410824129999a98090011082410824109982180100090824129999a9809001108241082410824109981d00100089111a9a806801111a9a808801111a9a808802911a9a80a8011119192999a9a80d00410a999a9a80d80290a99a9828998078010008a8018829082888288a999a9a80d002108288a80088280a999a9a80d0021082888280a8008a99a98270030a99a98270010a80088278a99a982700108278a80089a9a80b003911a9a80c002912999a9a80e00210a999a9a80e80190a99a982999808801000899809002801882a082988298a999a9a80e0011082989980800180088290a999a9a80e00110829882909980800180091299a982180108008a99a982180088220822899aa80101f80091199ab9a3375e0040020860842244446a6aa076004446a6aa07a00644a66a608c6601000800426600e006002208e6a00240022460026aa094442244a66a6a08e0042a092442a66a6a0920062a09644266a09866aa07e00800466aa6010240020060022466a002a086a0884002400224002240022400224002400246a60520024440046a00240022460026aa07e442244a66a6a0780022a07c44266a07e600800466aa600c24002008002446a604c004446a605000644a66a606c6605200800426600e006002206e44a66a6062660466a604c0044440066a604c0024440062a66a606266600605c6a604c0044440046a604c00244400426a604c004444a66a6a056002426a605400a444a66a6a05e002426607000a002207226a6052008444a66a6a05c002420722072206420644446660084666a6aa02e00246600a90000009119803001000919802800a400000400244464666aa601c240026a038a03446a6aa05600244666aa602224002a00846a6aa05c0024460140020026600a00600426a036a0324466aa60122400246a6aa0500024466aa056004666a6aa02c002466aa601a2400246a6aa0580024466aa05e0046aa03a00200244666aaa010064004002466aa601a2400246a6aa0580024466aa05e0046aa036002002666aaa00605a004002222444666aa600824002a06a66aa60122400246a6aa0500024466aa0560046aa032002666aa600824002446a6aa05200444a66a6064666aa601e240026a014a02646a6aa058002446601400400a00c2006266a072008006a06c00266aa60122400246a6aa05000244646466aa05a008600200c6a00240022460026aa07e44a66a6a07400226aa0340084426a6aa05e00444a66a60706601a004012266aa03e0100022600c0060046a00240022460026aa06e4422444a66a6a06a00220044426600a004666aa600e2400200a0080022466a02c44666a00a0060040026a004002246a6a01600244002246a6a014002440046a00240022460026aa064442244a66a6a05e0022a06244266a064600800466aa600c240020080026a00240022460026aa060442246444a66a6a05e00226a01000844266a00a6008004666aa60102400200c00800226a00c002246a6a01c00244002246a6a01a00244004266a00600204044a66a60400042044200224424660020060042400222424446006008224424446600400a00822424446002008224002266a01000203244a66a6030004200220322466a00644666a00e0060040026a008002244246600200600424002246a6a00600244002246a6a00400244004244246600200600424002446a600c004446a6010006446466a604200a466a60440084a66a602e666ae68cdc780100080c80c0a801880c100c119a9811002100c1299a980b999ab9a3371e0040020320302a00620302a66a6a01600642a66a6a0180044266024004002202c2a66a6a0160024202c202c44a66a601e666ae68cdc79a9803801110011a9803800910010088080999ab9a3370e6a600e004440026a600e0024400202202020204002400240022400240022244246600200600422400244a6666666a602200442a6666666a6024004426600a0040024420164201420122012442016442016442a6666666a602600642016442a66a60166600e0080042660140060022018420162014201444201844201842a6666666a602400442014442016426600a004002201220124420164420162a6666666a60220024201244201442012201220104420144420142a6666666a6022002420124420144201220102012442014442014442a6666666a6026006420164420184201620142014442a66a6016666ae68cdc78020010068060998050018008806110806110a9999999a9809801908059108061080588050805110806110a99a9805999ab9a3371e00800401a01826601000600220184466a6022004466a602400446600c00400244401644466a60280084016444a66a6018666ae68cdc38030018070068a99a9806199ab9a3370e00a00401c01a266012008002201a201a44666ae68cdc38010008038031119a9808001119a98088011198028010009003919a9808801100391980280100091199ab9a3371e00400200a008244004244002400224a66a6a00800226a00e6a600466ae71241025062000034988840084800480044488008488488cc00401000c48004498800480048004448c8c00400488cc00cc008008005" +} diff --git a/plutus-example/example-scripts/custom-guess-42-datum-42.plutus b/plutus-example/plutus/scripts/custom-guess-42-datum-42.plutus similarity index 100% rename from plutus-example/example-scripts/custom-guess-42-datum-42.plutus rename to plutus-example/plutus/scripts/custom-guess-42-datum-42.plutus diff --git a/plutus-example/example-scripts/guess-42-stake.plutus b/plutus-example/plutus/scripts/guess-42-stake.plutus similarity index 100% rename from plutus-example/example-scripts/guess-42-stake.plutus rename to plutus-example/plutus/scripts/guess-42-stake.plutus diff --git a/plutus-example/plutus/scripts/minting-context-equivalance-test.plutus b/plutus-example/plutus/scripts/minting-context-equivalance-test.plutus new file mode 100644 index 0000000000..d3c98ff566 --- /dev/null +++ b/plutus-example/plutus/scripts/minting-context-equivalance-test.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "591109591106010000323232332233322233223233322233322233333333222222223322333332222233332222333222332233223322333222332233223322332232323232323232323232323232323232323232323232323232332233223232323232323232332232323322323232333322223322323232323232323232323232323232323232323232323232323350015037005122223005330033004002300600125335305e001107c13504c35307b3357389210250640007c4988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26606aa002a0042600c6ae8540084c120d5d09aba25001135573ca00226ea80084d412d262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e93099999999998232800a8012801a8022802a8032803a8042804a805099a82b0249aba15012133505504935742a0202666aa0a0eb9413cd5d0a8070999aa827bae504e35742a018266a0a40aa6ae8540284cd4144cd54140155d69aba15008133504675a6ae8540184cd413dd71aba15004133504e335504d75c0986ae8540084c150d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d4129262235304b002222222222325335306633301003400835303a50012222222222007153353066333503603435303a500122222222220040071323232533530693001335530101200135303d5004222222222200335012122330024800800454cd4d418001484cc0d0004d4c0f003c880044d415d26106a35001200112300135508c012253353508901001106b2213535508e01002225335306e33044002500810701300600313503d00310671067135303700a2200235001200112300135507d22112253353507c0021507e22153353507e00315080012213350810133550840100400233553008120010030011233500150785079222333004233353550170012330054800000488cc0180080048cc01400520000020012223233355300e120013501c501a23535507c0012233355301112001500423535507f00122300a0010013300500300213501b501922335530091200123535507900122335507c002333535501600123355300d1200123535507d0012233550800100235501d0010012233355500803100200123355300d1200123535507d0012233550800100235501b00100133355500302c002001111222333553004120015076335530091200123535507900122335507c00235501900133355300412001223535507a002225335305a33355300f120013500a501323535507d001223300a0020050061003133507a00400350770013355300912001235355079001223232335507e004300100635001200112300135507e2253353507b001135501a004221353550800100222533530603300d0020091335501f00800113006003002350012001123001355076221122253353507600110022213300500233355300712001005004001123350162233350050030020013500200112353500b0012200112353500a00122002350012001123001355071221122533535070001150722213350733004002335530061200100400135001200112300135506f22112322253353507000113500800422133500530040023335530081200100600400113500600112353500e0012200112353500d0012200213350030010482253353048002104a1001122123300100300212001112122230030041122122233002005004112122230010041120011335008001041225335304000210011041123350032233350070030020013500400112212330010030021200112353500300122001123535002001220021221233001003002120012233335303f0022533335304000221330060020012103b2103b2103b253333530400022103b21330100020012103b2103b253333530400022103b2103b21330070020012103b253333530400022103b2103b2103b21330050020012253353037333573466e3cd4c10c00888008d4c10c004880080e40e04ccd5cd19b8735304300222001353043001220010390381038225333333353044002215333333353045002213300500200122103a210391038103822103a22103a22153333333530460032103a2215335303a33007004002133010003001103b2103a1039103922103b22103b2153333333530450022103922103a21330050020011038103822103a22103a153333333530440012103822103921038103810372210392210391533333335304400121038221039210381037103822103922103922153333333530460032103a22103b2103a103910392215335303a333573466e3c0100080f00ec4cc04000c00440ec8840ec8854ccccccd4c11800c840e88840ec840e840e440e48840ec8854cd4c0e8ccd5cd19b8f00400203c03b133008003001103b22335304b0022335304c00223300600200122203a222335304e004203a2225335303b333573466e1c01800c0f40f054cd4c0ecccd5cd19b8700500203d03c133009004001103c103c22333573466e1c0080040d80d488cd4c1300088cd4c1340088cc02c00800480d88cd4c13400880d88cc02c0080044888d4d40b400888d4d40cc00888d4d40c401488d4d40dc00888c8c94ccd4d4100020854ccd4d4104014854cd4c0fccc03c0080045400c410040fc40fc54ccd4d4100010840fc5400440f854ccd4d4100010840fc40f85400454cd4c0f001854cd4c0f00085400440f454cd4c0f000840f4540044d4d40dc01c88d4d40e4014894ccd4d4108010854ccd4d410c00c854cd4c104cc0440080044cc04801400c41084104410454ccd4d4108008841044cc04000c004410054ccd4d41080088410441004cc04000c004894cd4c0c4008400454cd4c0c400440c840cc8848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c008800488ccd5cd19b8f00200102e02d125335350490011350183530473357389210250620004849888400848c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b8735573aa0269000128011280aa4c2666666666058a002a004a006a008a00aa00ca00ea010a012266a04202a6ae8540404cd408004cd5d0a8070999aa80dbae501a35742a018266a028eb4d5d0a8050999aa80cbae501835742a010266a038a0326ae8540184cd406c078d5d0a802099a80d3ae35742a004266a0340366ae84d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa0021350174988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26603ea002a004260306ae8540084c014d5d09aba25001135573ca00226ea80084d405926232323232323232323333573466e1cd55cea803a40004a0044a0129309998112800a8012801898041aba1500413335500e75ca01a6ae8540084cd4049d71aba135744a00226ae8940044d55cf280089baa0021350154988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266042a002a0042602a6ae8540084cd404004cd5d09aba25001135573ca00226ea80084d4051261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8132800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135014498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a052a002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d404d261223232323232323333573466e1cd55cea802a40004a0044a00e93099a8132800a801099a8038031aba1500213007357426ae8940044d55cf280089baa002135012498488c8c8c8c8c8c8c8cccd5cd19b87500548010940bc940092613333573466e1d4011200225002250044984d40b940044c018d5d09aab9e500313333573466e1d400520002502c250044984d55cea80089baa0021350114988c8c8c8cccd5cd19b87500248008809c940092613333573466e1d400520002025250034984d55ce9baa00213500f4984cd54005d73ad112223232300137560066a00240022460026aa08c44646464646464646666aae7c0215411c94c00848004124d400888004d400488008d55541344888cc00c84c028d5d10049099a8262802a980189000899aa8252800a801098041aab9d50021300635573ca00226ae840044cd54009d70009000889111919191919191999ab9a3370e6aae754015200025002250074984cd54119400540084c01cd5d0a801098029aba135744a00226aae7940044dd500109a80624c244646460026eb000cd4004800448c004d5410488cccd55cf80092820919a82018031aba100230033574400407a2446464646464646666ae68cdc3a802240004a0044a0089309a80ca800898031aba135573ca00626666ae68cdc3a800a40044a02e4a0089309aab9d50011375400426a01293119191919191919191919191919191999ab9a3370ea0149003128011280224c26062a0022601c6ae84d55cf280589999ab9a3370ea00e9002128011280224c26058a002260186ae84d55cf280409999ab9a3370ea0089001128011280224c26050a002260166ae84d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c09940044dd71aba135573ca00226ea80084d401d262323232323232323232323232323232323232323232323232323333573466e1d4055200c2043250024984cccd5cd19b87501448028810c940092613333573466e1d404d200825002250064984cc0f5400540084dd71aba150021375a6ae84d5d1280089aab9e501213333573466e1d4039200625002250064984cc0e5400540084dd71aba150021375c6ae84d5d1280089aab9e500d13333573466e1d4025200425002250064984cc0e1400540084c034d5d0a80109bae357426ae8940044d55cf280409999ab9a3370ea0089001128011280224c26068a002260106ae84d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0b940044c010d5d09aab9e50011375400426a00c9311919191919191919191919191999ab9a3370ea0109001128011280424c2666072a002a004a00626eb4d5d0a80209bad35742a00426eb4d5d09aba25001135744a00226aae7940144cccd5cd19b875001480009400c9401926135573aa00626064a002260086ae84d55cf280089baa0021350054988c8c8c8c8c8c8c8c8cccd5cd19b875004480089400894011261303750011375c6ae84d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0d140044dd71aba135573ca00226ea80084d40112623232323232323333573466e1cd55cea802a40004a0044a00e93099813a800a801098031aba150021375a6ae84d5d1280089aab9e50011375400426a0069311919191999ab9a3370e6aae754009200025002250044984dd71aba135573ca00226ea80084d4009261262222222221233333333300100a00900800700600500400300220012212330010030022001222123330010040030022001221233001003002200112122300200311220011200112212330010030021200112212330010030021200112212330010030021200112200212200120011212223003004112220021122200112001212222300400521222230030052122223002005212222300100520012212330010030022001212222222300700822122222223300600900821222222230050081222222200412222222003221222222233002009008221222222233001009008200121223002003222122333001005004003200121223002003212230010032001112500612001200111220021221223300100400312001112212330010030021120011123230010012233003300200200111112335002212330012350032230020032350032230010030011232323001001223300330020020012212353004123530040033500300100101" +} diff --git a/plutus-example/test/Test/PlutusExample/Direct/CertifyingAndWithdrawingPlutus.hs b/plutus-example/test/Test/PlutusExample/Direct/CertifyingAndWithdrawingPlutus.hs index 7e9a7f0b42..fbeaef0006 100644 --- a/plutus-example/test/Test/PlutusExample/Direct/CertifyingAndWithdrawingPlutus.hs +++ b/plutus-example/test/Test/PlutusExample/Direct/CertifyingAndWithdrawingPlutus.hs @@ -131,8 +131,8 @@ hprop_plutus_certifying_withdrawing = H.integration . H.runFinallies . H.workspa ] -- Plutus related - plutusStakingScript <- H.note $ base "plutus-example/example-scripts/guess-42-stake.plutus" - plutusStakingScriptRedeemer <- H.note $ base "plutus-example/example-scripts/42.redeemer" + plutusStakingScript <- H.note $ base "plutus-example/plutus/scripts/guess-42-stake.plutus" + plutusStakingScriptRedeemer <- H.note $ base "plutus-example/plutus/data/42.redeemer" scriptPaymentAddressWithStaking <- H.execCli [ "address", "build" , "--payment-verification-key-file", utxoVKeyFile , "--stake-script-file", plutusStakingScript diff --git a/plutus-example/test/Test/PlutusExample/Direct/ScriptContextEquality.hs b/plutus-example/test/Test/PlutusExample/Direct/ScriptContextEquality.hs index 5b64e1b228..8a77b5fefa 100644 --- a/plutus-example/test/Test/PlutusExample/Direct/ScriptContextEquality.hs +++ b/plutus-example/test/Test/PlutusExample/Direct/ScriptContextEquality.hs @@ -85,12 +85,7 @@ hprop_plutus_script_context_equality = H.integration . H.runFinallies . H.worksp scriptDummyRedeemer <- H.note $ work "script-context-dummy.redeemer" scriptContextRedeemer <- H.note $ work "script-context.redeemer" - plutusContextEqualityScript <- H.note $ base "scripts/plutus/scripts/context-equivalance-test.plutus" - - H.noteEachM_ . H.listDirectory $ base - H.noteEachM_ . H.listDirectory $ base "scripts" - H.noteEachM_ . H.listDirectory $ base "scripts/plutus" - H.noteEachM_ . H.listDirectory $ base "scripts/plutus/scripts" + plutusContextEqualityScript <- H.note $ base "plutus-example/plutus/scripts/context-equivalance-test.plutus" exampleStakeVKey <- H.note $ tempAbsPath "addresses/user1-stake.vkey" exampleCertificate <- H.note $ tempAbsPath "addresses/user1-stake.reg.cert" @@ -104,7 +99,7 @@ hprop_plutus_script_context_equality = H.integration . H.runFinallies . H.worksp -- This datum hash is the hash of the typed 42. TODO: Have the cli create this let scriptDatumHash = "fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273" - typedDatumFile <- H.note $ base "scripts/plutus/data/typed-42.datum" + typedDatumFile <- H.note $ base "plutus-example/plutus/data/typed-42.datum" -- Step 1: Create a tx ouput with a datum hash at the script address. In order for a tx ouput to be locked diff --git a/plutus-example/test/Test/PlutusExample/Direct/ScriptContextEqualityMint.hs b/plutus-example/test/Test/PlutusExample/Direct/ScriptContextEqualityMint.hs index a2c0e29cc4..f808049d06 100644 --- a/plutus-example/test/Test/PlutusExample/Direct/ScriptContextEqualityMint.hs +++ b/plutus-example/test/Test/PlutusExample/Direct/ScriptContextEqualityMint.hs @@ -75,7 +75,7 @@ hprop_plutus_script_context_mint_equality = H.integration . H.runFinallies . H.w scriptDummyRedeemer <- H.note $ work "mint-script-context-dummy.redeemer" scriptContextRedeemer <- H.note $ work "mint-script-context.redeemer" requiredSignerSKey <- H.note $ tempAbsPath "addresses/user1.skey" - plutusContextEqualityMintScript <- H.note $ base "scripts/plutus/scripts/minting-context-equivalance-test.plutus" + plutusContextEqualityMintScript <- H.note $ base "plutus-example/plutus/scripts/minting-context-equivalance-test.plutus" policyId <- filter (/= '\n') <$> H.execCli @@ -85,11 +85,6 @@ hprop_plutus_script_context_mint_equality = H.integration . H.runFinallies . H.w void . H.note $ "Policy ID: " <> policyId - H.noteEachM_ . H.listDirectory $ base - H.noteEachM_ . H.listDirectory $ base "scripts" - H.noteEachM_ . H.listDirectory $ base "scripts/plutus" - H.noteEachM_ . H.listDirectory $ base "scripts/plutus/scripts" - utxoAddr <- H.execCli [ "address", "build" , "--testnet-magic", show @Int testnetMagic diff --git a/plutus-example/test/Test/PlutusExample/Direct/TxInLockingPlutus.hs b/plutus-example/test/Test/PlutusExample/Direct/TxInLockingPlutus.hs index eec69e3e81..3f2f4cdcf3 100644 --- a/plutus-example/test/Test/PlutusExample/Direct/TxInLockingPlutus.hs +++ b/plutus-example/test/Test/PlutusExample/Direct/TxInLockingPlutus.hs @@ -83,18 +83,13 @@ prop_spending_plutus_script = H.integration . H.runFinallies . H.workspace "chai utxoVKeyFile <- H.note $ tempAbsPath "shelley/utxo-keys/utxo1.vkey" utxoSKeyFile <- H.note $ tempAbsPath "shelley/utxo-keys/utxo1.skey" - plutusScriptFileInUse <- H.note $ base "scripts/plutus/scripts/always-succeeds-spending.plutus" - - H.noteEachM_ . H.listDirectory $ base - H.noteEachM_ . H.listDirectory $ base "scripts" - H.noteEachM_ . H.listDirectory $ base "scripts/plutus" - H.noteEachM_ . H.listDirectory $ base "scripts/plutus/scripts" + plutusScriptFileInUse <- H.note $ base "plutus-example/plutus/scripts/always-succeeds-spending.plutus" -- This datum hash is the hash of the untyped 42 let scriptDatumHash = "9e1199a988ba72ffd6e9c269cadb3b53b5f360ff99f112d9b2ee30c4d74ad88b" - datumFile <- H.note $ base "scripts/plutus/data/42.datum" - redeemerFile <- H.note $ base "plutus-example/example-scripts/42.redeemer" + datumFile <- H.note $ base "plutus-example/plutus/data/42.datum" + redeemerFile <- H.note $ base "plutus-example/plutus/data/42.redeemer" -- Always succeeds Plutus script in use. Any datum and redeemer combination will succeed. -- Script at: $plutusscriptinuse diff --git a/plutus-example/test/Test/PlutusExample/Script/TxInLockingPlutus.hs b/plutus-example/test/Test/PlutusExample/Script/TxInLockingPlutus.hs index 58b2b54088..05bd944f0c 100644 --- a/plutus-example/test/Test/PlutusExample/Script/TxInLockingPlutus.hs +++ b/plutus-example/test/Test/PlutusExample/Script/TxInLockingPlutus.hs @@ -62,7 +62,7 @@ hprop_plutus = H.integration . H.runFinallies . H.workspace "chairman" $ \tempAb , H.execConfigCwd = Last $ Just tempBaseAbsPath } - scriptPath <- H.eval $ projectBase "scripts/plutus/example-txin-locking-plutus-script.sh" + scriptPath <- H.eval $ projectBase "plutus-example/plutus/example-txin-locking-plutus-script.sh" H.exec_ execConfig H.bashPath [ "-x" diff --git a/plutus-example/test/Test/PlutusExample/SubmitApi/TxInLockingPlutus.hs b/plutus-example/test/Test/PlutusExample/SubmitApi/TxInLockingPlutus.hs index 1086bc44dd..efd3991023 100644 --- a/plutus-example/test/Test/PlutusExample/SubmitApi/TxInLockingPlutus.hs +++ b/plutus-example/test/Test/PlutusExample/SubmitApi/TxInLockingPlutus.hs @@ -84,7 +84,7 @@ prop_submit_api_spending_plutus_script = Test.integration . HE.runFinallies . HE utxoVKeyFile <- HE.note $ tempAbsPath "shelley/utxo-keys/utxo1.vkey" utxoSKeyFile <- HE.note $ tempAbsPath "shelley/utxo-keys/utxo1.skey" - plutusScriptFileInUse <- HE.note $ base "scripts/plutus/scripts/always-succeeds-spending.plutus" + plutusScriptFileInUse <- HE.note $ base "plutus-example/plutus/scripts/always-succeeds-spending.plutus" submitApiConfigFile <- HE.note configurationFile submitApiStdoutFile <- HE.note $ tempAbsPath "logs/submit-api.stdout" @@ -105,8 +105,8 @@ prop_submit_api_spending_plutus_script = Test.integration . HE.runFinallies . HE let plutusRequiredSpace = id @Integer 70000000 let plutusRequiredTime = id @Integer 70000000 - datumFile <- HE.note $ base "scripts/plutus/data/42.datum" - redeemerFile <- HE.note $ base "plutus-example/example-scripts/42.redeemer" + datumFile <- HE.note $ base "plutus-example/plutus/data/42.datum" + redeemerFile <- HE.note $ base "plutus-example/plutus/data/42.redeemer" -- Always succeeds Plutus script in use. Any datum and redeemer combination will succeed. -- Script at: $plutusscriptinuse diff --git a/plutus-example/test/plutus-example-test.hs b/plutus-example/test/plutus-example-test.hs index 047ba7426f..fd62ddbd05 100644 --- a/plutus-example/test/plutus-example-test.hs +++ b/plutus-example/test/plutus-example-test.hs @@ -2,10 +2,10 @@ import Cardano.Prelude import GHC.IO.Encoding import Test.PlutusExample.Direct.CertifyingAndWithdrawingPlutus qualified +import Test.PlutusExample.Direct.TxInLockingPlutus qualified import Test.PlutusExample.Plutus import Test.PlutusExample.ScriptData --- import Test.PlutusExample.Direct.TxInLockingPlutus --- import Test.PlutusExample.SubmitApi.TxInLockingPlutus +import Test.PlutusExample.SubmitApi.TxInLockingPlutus qualified import Test.Tasty (TestTree, defaultMain, testGroup) import Test.Tasty.Hedgehog (testProperty) @@ -23,8 +23,6 @@ plutusExampleTests = testGroup "plutus-example" , testProperty "prop_ScriptData_MyCustomRedeemer" Test.PlutusExample.ScriptData.prop_ScriptData_MyCustomRedeemer , testProperty "prop_ScriptData_MyCustomRedeemer_JSON" Test.PlutusExample.ScriptData.prop_ScriptData_MyCustomRedeemer_JSON - -- TODO: Re-enable these when plutus-apps is bumped to the latest cardano-node - -- cardano-testnet needs to parameterize the configuration used to start the testnet. - -- , testProperty "prop_spending_plutus_script" Test.PlutusExample.Direct.TxInLockingPlutus.prop_spending_plutus_script - -- , testProperty "prop_submit_api_spending_plutus_script" Test.PlutusExample.SubmitApi.TxInLockingPlutus.prop_submit_api_spending_plutus_script + , testProperty "prop_spending_plutus_script" Test.PlutusExample.Direct.TxInLockingPlutus.prop_spending_plutus_script + , testProperty "prop_submit_api_spending_plutus_script" Test.PlutusExample.SubmitApi.TxInLockingPlutus.prop_submit_api_spending_plutus_script ]