diff --git a/hydra-plutus/README.md b/hydra-plutus/README.md new file mode 100644 index 00000000000..739bc5ab68a --- /dev/null +++ b/hydra-plutus/README.md @@ -0,0 +1,22 @@ +# Hydra plutus scripts + +Most of our scripts are built using `plutus-tx` which are automatically built +when compiling the whole package. However, some validators are implemented using `aiken` and embedded into the Haskell library from the plutus blueprint in `plutus.json`. + +## Build + +It's important that we keep the traces of the aiken validators with `-t`: + +```sh +aiken build -t compact +cabal build +``` + +The resulting `plutus.json` is deliberately checked in and doubles as a golden +file for our tests. + +## Test + +```sh +cabal test +``` diff --git a/hydra-plutus/plutus.json b/hydra-plutus/plutus.json index 2d364bdd7fc..8d24c666c13 100644 --- a/hydra-plutus/plutus.json +++ b/hydra-plutus/plutus.json @@ -25,16 +25,16 @@ "$ref": "#/definitions/commit~1Redeemer" } }, - "compiledCode": "59026d010100323232323232322533300232323232325332330083001300937540042646464646464a66601c60060022a66602260206ea8024540085854ccc038c01c00454ccc044c040dd50048a8010b0b18071baa0081533300c3001300d37540042646464646464a666024601660266ea80344cc00cc011300103d87980003370e6660026eacc05cc060c060c060c060c050dd50079bae30053014375400c91010b487964726148656164563100480044c94ccc04cc020c050dd50008998021802a6103d87a8000300c333002375660306032602a6ea8c060c054dd50009bae30063015375400e9110b4879647261486561645631001632533301600114c103d87a8000130033301730180014bd701bac30053014375401e44464a66602a601c602c6ea8004520001375a6034602e6ea8004c94ccc054c038c058dd50008a6103d87a8000132330010013756603660306ea8008894ccc068004530103d87a8000132323232533301b337220100042a66603666e3c0200084c02ccc07cdd4000a5eb80530103d87a8000133006006003375a60380066eb8c068008c078008c070004c8cc004004010894ccc0640045300103d87a8000132323232533301a337220100042a66603466e3c0200084c028cc078dd3000a5eb80530103d87a8000133006006003375660360066eb8c064008c074008c06c004dd2a400044a666022002294452812999807980218081baa001149103433031001491034330320023013301430140013011300e37540042c6e1d2000300f3010002300e001300a37540046e1d200216300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", - "hash": "3767add3ba46f9111861d5342a3b3b11fbc44940633c37d6968a7699" + "compiledCode": "5902ae010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35333b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c9201054c34333b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34323b333100165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221" }, { "title": "commit.commit.else", "redeemer": { "schema": {} }, - "compiledCode": "59026d010100323232323232322533300232323232325332330083001300937540042646464646464a66601c60060022a66602260206ea8024540085854ccc038c01c00454ccc044c040dd50048a8010b0b18071baa0081533300c3001300d37540042646464646464a666024601660266ea80344cc00cc011300103d87980003370e6660026eacc05cc060c060c060c060c050dd50079bae30053014375400c91010b487964726148656164563100480044c94ccc04cc020c050dd50008998021802a6103d87a8000300c333002375660306032602a6ea8c060c054dd50009bae30063015375400e9110b4879647261486561645631001632533301600114c103d87a8000130033301730180014bd701bac30053014375401e44464a66602a601c602c6ea8004520001375a6034602e6ea8004c94ccc054c038c058dd50008a6103d87a8000132330010013756603660306ea8008894ccc068004530103d87a8000132323232533301b337220100042a66603666e3c0200084c02ccc07cdd4000a5eb80530103d87a8000133006006003375a60380066eb8c068008c078008c070004c8cc004004010894ccc0640045300103d87a8000132323232533301a337220100042a66603466e3c0200084c028cc078dd3000a5eb80530103d87a8000133006006003375660360066eb8c064008c074008c06c004dd2a400044a666022002294452812999807980218081baa001149103433031001491034330320023013301430140013011300e37540042c6e1d2000300f3010002300e001300a37540046e1d200216300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", - "hash": "3767add3ba46f9111861d5342a3b3b11fbc44940633c37d6968a7699" + "compiledCode": "5902ae010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35333b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c9201054c34333b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34323b333100165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221" } ], "definitions": { diff --git a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs index af26ab97c29..6a62a920452 100644 --- a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs +++ b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs @@ -53,7 +53,7 @@ spec = do -- FIXME: This requires a git working copy, do it differently. -- Run 'aiken build' to re-generate plutus.json file _ <- do - let aikenExec = proc "aiken" ["build"] + let aikenExec = proc "aiken" ["build", "-t", "compact"] aikenProcess = aikenExec (_, _, _, aikenProcessHandle) <- createProcess aikenProcess waitForProcess aikenProcessHandle