From dbe9b268b2a7c4071ea85556357283db61895452 Mon Sep 17 00:00:00 2001 From: Daniel Firth Date: Thu, 31 Oct 2024 14:51:53 +0000 Subject: [PATCH 01/24] Use default ScriptContext from plutus-ledger-api everywhere --- hydra-plutus/hydra-plutus.cabal | 1 - hydra-plutus/scripts/mHead.plutus | 4 +- hydra-plutus/scripts/vDeposit.plutus | 2 +- hydra-plutus/scripts/vHead.plutus | 2 +- hydra-plutus/scripts/vInitial.plutus | 4 +- hydra-plutus/src/Hydra/Contract/HeadTokens.hs | 5 +- hydra-plutus/src/Hydra/Contract/Initial.hs | 12 +- hydra-plutus/src/Hydra/Contract/Util.hs | 46 +++++++- hydra-plutus/src/Hydra/ScriptContext.hs | 111 ------------------ 9 files changed, 57 insertions(+), 130 deletions(-) delete mode 100644 hydra-plutus/src/Hydra/ScriptContext.hs diff --git a/hydra-plutus/hydra-plutus.cabal b/hydra-plutus/hydra-plutus.cabal index eab74fdcb58..a0a26bc92cd 100644 --- a/hydra-plutus/hydra-plutus.cabal +++ b/hydra-plutus/hydra-plutus.cabal @@ -61,7 +61,6 @@ library Hydra.Data.ContestationPeriod Hydra.Data.Party Hydra.Plutus - Hydra.ScriptContext hs-source-dirs: src build-depends: diff --git a/hydra-plutus/scripts/mHead.plutus b/hydra-plutus/scripts/mHead.plutus index 06db58fe4de..05a233b8958 100644 --- a/hydra-plutus/scripts/mHead.plutus +++ b/hydra-plutus/scripts/mHead.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV2", - "description": "hydra-mHead-0.19.0-96-g4d48208d28", - "cborHex": "5911635911600100003332323233223322323233223232323232323232323232222225335325335323232325335333573400203a0382244002264a66a666ae6800407807444880084c07d24103505431003370e900100199b8748000008d55cf0011aab9d0013754006266014921034d30360053353330082232333573400203803666e3c008004c024004c02cd40048800884cc074894cd40044070884d4008894cd4c8ccd5cd00081081019b88001480004c01800c407c004406054cc8d4cc02d241034d303100323301e225335001101c22153353500a2235004223253353335734002048046264666ae68004094090cdc3802001081199b8f004002101f130040010013301d225335001101a22133501b350022200230040013500122222222222200c15332323232323235330114901034d30320032333573400204204066e1cc94cd4ccc04088c8ccd5cd00081201199b8f00200150073013008213002001148000c8cc88c88c008004c098894cd4004400c884d400888cc020004c01800cc00488008c004880048cc00488cdc0001000a400066e0000520021325335330124901034d3033003302422533500110222213500222325335333573400205004e2602c0042600e00866e3c00801cd54014880044c94cd54cc8d4cc0512401034d30340032333573400204804666e1c010cc0184488c88c008004c0a0894cd4004400c884cc018008c0100040044cc06494cd4ccc04c88c8ccd5cd00081381319b8f002001004001215335001130264901034d303800221350022253350031533532333573400205405266e1c005200210291302a491034d303800221302c491034d30380013025491034d303700001330252253350011022221335023350022200130040010011021153353301825333500115016215335301b00121330164901034d31320032333573400204c04a66e3c0040144c0952401034d31320021501733025225335001102222133502335002220023004001001133013491034d303500533532333573400204604466e3cc01088800c0084d4c01088800888d403c88c94cd4ccd5cd000813813099199ab9a0010280273370e008004204c66e3c010008408440844084cc01803802040814018c00488800554ccd4d54008880085404c854cd4cccccc05c00488c94c8c8c8c8c8cd4ccd5cd0030138130a99a9999aab9f0072502123232302433025002001357440126ae840200a484d4004894cd4c014008854cd4cccd55cf80112812919191814198148010009aba20043574200605a426a00244a66a66a01601800442a66a6666aae7c008940a48c8c8c0b0cc0b4008004d5d10021aba10030312135001225335302900221533533335573e0044a05a4646460600046ae88010d5d080181a90a99a9999998160009119299a999ab9a0010370361533533335573e0044a0624646460686606a0040026ae88010d5d080181c909a80091299a9999998190011119299a999ab9a00103d03c1533533335573e0044a06e4646460740046ae88010d5d080181f90a99a981a80090981c8008a81b8a81b0a81b19b8748000008940d0940d0940d0940d0854cd4cccd55cf8011281a91919181c0011aba20043574200607a42a66a603000242606e660720060022a06a2a0682a0662a0602a06066e1d20000022502e2502e2502e2502e21302f12222333300200f00b0070051300e4984c035261300c4984c02526130084984c01526130044984c00526130014988c94c8cd4ccd5cd0010148140a99a9999aab9f00925023232323026002357440166ae840280ac854cd4cccccc08800488c94cd4ccd5cd0008168160a99a9999aab9f0022502723232302a3302b002001357440086ae8400c0bc84d4004894cd4c09c008854cd4cccd55cf80112815919191817198178010009aba200435742006066426a00244a66a66a02202400442a66a6666aae7c008940bc8c8c8c0c8cc0cc008004d5d10021aba10030372135001225335301300221533533335573e0044a06646464606c6606e0040026ae88010d5d080181d909a80091299a980c00110a99a9999aab9f0022503723232303a002357440086ae8400c0fc854cd4c0d400484c0e448ccccc004040030020010008540dc540d8540d4540c8540c4540b8540b4540a8540a45409854098cdc3a40000044a0484a0484a0484a04842604a24444600200a260049309800a4c260029311929919a999ab9a00202b02a1533533335573e0164a04a4646460500046ae88034d5d080601690a99a9999998120009119299a999ab9a00102f02e1533533335573e0044a0524646460586605a0040026ae88010d5d0801818909a80091299a981480110a99a9999aab9f0022502d23232303033031002001357440086ae8400c0d484d400488c94cd4cc00405400c854cd4cccd55cf8019281911919181a9981b0010009aba200535742008074426a00244a66a602c00442a66a6666aae7c008940d88c8c8c0e4cc0e8008004d5d10021aba100303e2135001225335301b00221533533335573e0044a07446464607a6607c0040026ae88010d5d0801821109a80091299a980f80110a99a9999aab9f0022503e23232304133042002001357440086ae8400c11884d4004894cd4c0f8008854cd4cccd55cf80112821119191822998230010009aba200435742006094426a00244a66a608400442a66a6666aae7c008941188c8c8c124cc128008004d5d10021aba100304e21350012253353301904600221533533335573e0044a09446464609a0046ae88010d5d080182910a99a98168009098260919999999980081080e00c00a0080060040020010a8250a8248a8240a8228a8220a8208a8200a81e8a81e0a81c8a81c0a81a8a81a0a8188a81828098a8160a8158a8140a81419b87480000089409894098940989409884c09c48888c0100144c00926130014984c00526232533533357340020580562604c244440062a04a66e1d200600c3370e900200519b87480080208cccccc07800488c94cd4ccd5cd0008148140a99a9999aab9f00225023232323026002357440086ae8400c0ac854cd4c01800484c0940045408c5408854088cdc3a40000044a0404a0404a0404a040466666603a00244a0404a03e4a03e460400024a03e264464466666603e00244a0444a0420044a0424a0426050446666aae7c004801494cd4c010d5d080110a99a98021aba2003213024335027002001150221325022300335744004052603a0424a66a603400242603c0022a03866e1d2000002250192501925019250192153333500121501515014222213212333001004003002330071122322300200130292253350011003221330060023004001003215015130204901034d3039002150142335500122337000029001240002a66a660020100062603a9201034d313100221533500110022213021491034d3131002233020225335001101d22132533535003222235004223350022502223253353335734002054052260486604a00c00e2a04666e3c00403884cd40800040084004c010004d40048888888888880284c0280084064d4004880084060c8c8c8c94cd4ccd5cd00080e00d89919191991091980080180119191919299a999ab9a001023022132323232323232323232332333233333233323332222222222221233333333333300100d00c00b00a009008007006005004003002330032323232325335333573400206c06a26644246600200600460306ae84008c018d5d09aba200213037490103505431003370e90000011aab9e00235573a0026ea8004d5d08081aba100e330030013574201a464646464a66a666ae680040d40d04c8c8c8cccc888848cccc00401401000c008c8c8c8c94cd4ccd5cd00081e01d89991091980080180118101aba10023300501f357426ae880084c0f5240103505431003370e90000011aab9e00235573a0026ea8d5d080298049aba1003323232325335333573400207807622444006264a66a666ae680040f40f04c84888c004010dd71aba10031325335333573400207c07a264244460040086ae840104c0fd24103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa3574200466002eb8d5d09aba200222323232325335333573400207a0782a06c264a66a666ae680040f80f44c0e0c01cd5d08018981fa4903505431003370e900000199b8748008008d55cf0011aab9d00137540026ae88004d5d10010981b24903505431003370e90000011aab9e00235573a0026ea8004c004d5d080598009aba100a3002300275a6ae84020d5d08039aba10063300175c6ae840148c88c008dd60009819111999aab9f0012030233502f30043574200460066ae880080ccd5d08019980090009aba10022322300237560026062446666aae7c00480bc8c8cd40bccc0b4dd71aab9d001300535573c00260086ae8800cd5d08010191aba1357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10010981224903505431003370e90000011aab9e00235573a0026ea8d5d080299191919299a999ab9a001023022132122223003005375c6ae840084c94cd4ccd5cd00081201189909111180080298031aba10031325335333573400204a04826424444600400a60106ae840104c94cd4ccd5cd00081301289909111180200299191919299a999ab9a00102a029132122222223005008300d35742004264a66a666ae680040ac0a84c848888888c01c020c038d5d0801899299a999ab9a00102c02b133221222222233006009008300f357420086eb8d5d09aba20041325335333573400205a0582664424444444660040120106eb8d5d08029bae357426ae880144c94cd4ccd5cd0008170168999109111111198008048041bae3574200c6eb4d5d09aba20061325335333573400205e05c224444444008264a66a666ae680040c00bc44888888800c4c0c524103505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa3574200a2604e920103505431003370e900300299b8748010010cdc3a400400666e1d200000235573c0046aae74004dd51aba13574400a464646464a66a666ae6800408c0884cc07cc8c8c8c94cd4ccd5cd00081381309bae357420042605092103505431003370e90000011aab9e00235573a0026ea8d5d08011bad357426ae880084c09124103505431003370e90000011aab9e00235573a0026ea80048c8c8c8c94cd4ccd5cd000811010899091180100198031aba10021325335333573400204604426466644424466600200a0080066eb4d5d08021bad357420026eb4d5d09aba20013574400626048920103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464a66a666ae680040840804c8488c00800cdd71aba10021325335333573400204404226424460020066eb8d5d080189811a48103505431003370e900100199b8748000008d55cf0011aab9d00137540022603a920103505431003370e90000011aab9e00235573a0026ea80045261301949103505435003015225335001101322135002223253353335734002032030264666ae68004068064cdc3801240042600e00866e3c00922010b48796472614865616456310022322300200130162253350011500e22135002225335330080020071301300113006003235001223233335002250022001250022500213263357389201024c68000152253350011011133573800402046a0024444444444440102601c921034d3132001300d491034d3039001300c491034d31300023223002001300e225335001100d2215335300500213004001100e2333333002001225005250042500425004230050012222223333333574800c4646600e6aae74004d55cf0009baa00723005375600e460086eb001c8c00cdd6803918011bae007010212230020031122001221233001003002221233001003002122002122122330010040031220021220012326335738002004240024646002002460044660040040029111cb512161ccb0652d7e9a0b540e4a3c808f73d6558a4bcabf374d858800048811c2253ddd95837c7aacc8635a971caaea743434152dd8dd2849bdf41620001" + "description": "hydra-mHead-0.19.0-278-g357ed0364", + "cborHex": "5912f05912ed010000333232323322323322323322323232323232323232323232222225335325335323232325335333573400203c03a2244002264a66a666ae6800407c07844880084c08124103505431003370e900100199b8748000008d55cf0011aab9d0013754006266014921034d30360053353330082232333573400203a03866e3c008004c024004c02cd40048800884cc078894cd40044074884d4008894cd4c8ccd5cd00081101099b88001480004c01800c4080004406454cc8d4cc02d241034d303100323301f225335001101d22153353500a223500422325335333573400204a048264666ae68004098094cdc3802001081219b8f0040021020130040010013301e225335001101a22133501b350022200230040013500122222222222200c15332323232323235330114901034d30320032333573400204404266e1cc94cd4ccc04088c8ccd5cd00081281219b8f00200150073013008213002001148000c8cc88c88c008004c09c894cd4004400c884d400888cc020004c01800cc00488008c004880048cc00488cdc0001000a400066e0000520021325335330124901034d303300330252253350011023221350022232533533357340020520502602c0042600e00866e3c00801cd54014880044c94cd54cc8d4cc0512401034d30340032333573400204a04866e1c010cc0184488c88c008004c0a4894cd4004400c884cc018008c0100040044cc06494cd4ccc04c88c8ccd5cd00081401399b8f002001004001215335001130274901034d303800221350022253350031533532333573400205605466e1c0052002102a1302b491034d303800221302d491034d30380013026491034d303700001330262253350011022221335023350022200130040010011022153353301825333500115016215335301b00121330164901034d31320032333573400204e04c66e3c0040144c0992401034d31320021501733026225335001102222133502335002220023004001001133013491034d303500533532333573400204804666e3cc01088800c0084d4c01088800888d403c88c94cd4ccd5cd000814013899199ab9a0010290283370e008004204e66e3c010008408840884088cc01803802040854018c00488800554ccd4d54008880085404c854cd4cccccc05c00488c94c8c8c8c8c8cd4ccd5cd0030140138a99a9999aab9f0072502223232302533026002001357440126ae840200a884d4004894cd4c014008854cd4cccd55cf80112813119191814998150010009aba20043574200605c426a00244a66a66a01601800442a66a6666aae7c008940a88c8c8c0b4cc0b8008004d5d10021aba10030322135001225335302900221533533335573e0044a05c4646460620046ae88010d5d080181b10a99a9999998160009119299a999ab9a0010380371533533335573e0044a06446464606a6606c0040026ae88010d5d080181d109a80091299a9999998190011119299a999ab9a00103e03d1533533335573e0044a0704646460760046ae88010d5d080182010a99a981a80090981d0008a81c0a81b8a81b99b8748000008940d4940d4940d4940d4854cd4cccd55cf8011281b11919181c8011aba20043574200607c42a66a60300024260706606c0060022a06c2a06a2a0682a0622a06266e1d20000022502f2502f2502f2502f21303012222333300200f00b0070051300e4984c035261300c4984c02526130084984c01526130044984c00526130014988c94c8cd4ccd5cd0010150148a99a9999aab9f00925024232323027002357440166ae840280b0854cd4cccccc08800488c94cd4ccd5cd0008170168a99a9999aab9f0022502823232302b3302c002001357440086ae8400c0c084d4004894cd4c09c008854cd4cccd55cf80112816119191817998180010009aba200435742006068426a00244a66a66a02202400442a66a6666aae7c008940c08c8c8c0cccc0d0008004d5d10021aba10030382135001225335301300221533533335573e0044a06846464606e660700040026ae88010d5d080181e109a80091299a980c00110a99a9999aab9f0022503823232303b002357440086ae8400c100854cd4c0d400484c0e848ccccc004040030020010008540e0540dc540d8540cc540c8540bc540b8540ac540a85409c5409ccdc3a40000044a04a4a04a4a04a4a04a42604c24444600200a260049309800a4c260029311929919a999ab9a00202c02b1533533335573e0164a04c4646460520046ae88034d5d080601710a99a9999998120009119299a999ab9a00103002f1533533335573e0044a05446464605a6605c0040026ae88010d5d0801819109a80091299a981480110a99a9999aab9f0022502e23232303133032002001357440086ae8400c0d884d400488c94cd4cc00405400c854cd4cccd55cf8019281991919181b1981b8010009aba200535742008076426a00244a66a602c00442a66a6666aae7c008940dc8c8c8c0e8cc0ec008004d5d10021aba100303f2135001225335301b00221533533335573e0044a07646464607c6607e0040026ae88010d5d0801821909a80091299a980f80110a99a9999aab9f0022503f23232304233043002001357440086ae8400c11c84d4004894cd4c0f8008854cd4cccd55cf80112821919191823198238010009aba200435742006096426a00244a66a608400442a66a6666aae7c0089411c8c8c8c128cc12c008004d5d10021aba100304f21350012253353301904600221533533335573e0044a09646464609c0046ae88010d5d080182990a99a98168009098268919999999980081080e00c00a0080060040020010a8258a8250a8248a8230a8228a8210a8208a81f0a81e8a81d0a81c8a81b0a81a8a8190a818a8098a8168a8160a8148a81499b87480000089409c9409c9409c9409c84c0a048888c0100144c00926130014984c005262325335333573400205a0582604e244440062a04c66e1d200600c3370e900200519b87480080208cccccc07800488c94cd4ccd5cd0008150148a99a9999aab9f00225024232323027002357440086ae8400c0b0854cd4c01800484c098004540905408c5408ccdc3a40000044a0424a0424a0424a042466666603a00244a0424a0404a040460420024a040264464466666603e00244a0464a0440044a0444a0446052446666aae7c004801494cd4c010d5d080110a99a98021aba2003213025335027002001150231325023300335744004054603c0424a66a603400242603e0022a03a66e1d20000022501a2501a2501a2501a21533335001215015150142222132123330010040030023300711223223002001302a2253350011003221330060023004001003215015130214901034d3039002150142335500122337000029001240002a66a660020100062603c9201034d313100221533500110022213022491034d3131002233021225335001101d221325335350032222350042233500225023232533533357340020560542604a6604c00c00e2a04866e3c00403884cd40800040084004c010004d40048888888888880284c0280084068d4004880084064c8c8c8c94cd4ccd5cd00080e80e09919191919191991091980080180119191919299a999ab9a0010270261323232323232323232323323233323333323332332332222222222221233333333333300100d00c00b00a00900800700600500400300230013574202460026ae84040c00c8c8c8c8c94cd4ccd5cd00081d81d099910919800801801180e9aba10023006357426ae880084c0f124103505431003370e90000011aab9e00235573a0026ea8004cc00c004d5d0807119191919299a999ab9a00103a039132323233332222123333001005004003002323232325335333573400208208026644246600200600460446ae84008cc014084d5d09aba200213042490103505431003370e90000011aab9e00235573a0026ea8d5d080298049aba1003323232325335333573400208208022444006264a66a666ae680041081044c84888c004010dd71aba100313253353335734002086084264244460040086ae840104c11124103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa3574200466002eb8d5d09aba20022232323232533533357340020840822a076264a66a666ae6800410c1084c0f4c01cd5d08018982224903505431003370e900000199b8748008008d55cf0011aab9d00137540026ae88004d5d10010981da4903505431003370e90000011aab9e00235573a0026ea8004c004d5d080618009aba100b3002300275a660020266ae84024ccc00c051d69aba1008323232325335333573400207006e264646644246600200600464646464a66a666ae680040f80f44cc8848cc00400c008cc019d69aba10023005357426ae880084c0fd24103505431003370e90000011aab9e00235573a0026ea8d5d080219191919299a999ab9a00103e03d1332212330010030023300675a6ae84008c014d5d09aba20021303f490103505431003370e90000011aab9e00235573a0026ea8d5d09aba20042323232325335333573400207c07a207a264a66a666ae680040fc0f840fc4c10124103505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464a66a666ae680040f80f4448880084c94cd4ccd5cd00081f81f0990911180180218039aba10031325335333573400208007e224440022608292103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00113039490103505431003370e90000011aab9e00235573a0026ea8d5d080399800bae3574200c464460046eb0004c0dc88cccd55cf800901a119a81998021aba10023003357440040706660040220626ae84010cc0040c4d5d08019800bae2232230023756002606c446666aae7c00480cc8c8cd40cccc0c8c018d55ce80098029aab9e0013004357440066ae840080dcc050d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880084c0a1240103505431003370e90000011aab9e00235573a0026ea8d5d080418009aba135744010464646464a66a666ae6800409c0984c848888c00c014dd71aba10021325335333573400205004e26424444600200a60146ae8400c4c94cd4ccd5cd00081481409909111180100298049aba10041325335333573400205405226424444600800a60126ae840144c0ad24103505431003370e900300299b8748010010cdc3a400400666e1d200000235573c0046aae74004dd5000919191919299a999ab9a001026025132122222223005008300635742004264a66a666ae6800409c0984c848888888c01c020c01cd5d0801899299a999ab9a0010280271332212222222330060090083008357420086eb8d5d09aba2004132533533357340020520502664424444444660040120106eb8d5d08029bae357426ae880144c94cd4ccd5cd0008150148999109111111198008048041bae3574200c6eb4d5d09aba200613253353335734002056054224444444008264a66a666ae680040b00ac44888888800c4c0b524103505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0012323232325335333573400204a0482642446004006600c6ae840084c94cd4ccd5cd0008130128991999110911998008028020019bad357420086eb4d5d08009bad357426ae88004d5d100189813a4903505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464a66a666ae6800409008c4c8488c00800cdd71aba10021325335333573400204a04826424460020066eb8d5d080189813248103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464a66a666ae6800408c0884cc06cc018d5d08011bad357426ae880084c09124103505431003370e90000011aab9e00235573a0026ea80048c8c8c8c94cd4ccd5cd00081101089bae357420042604692103505431003370e90000011aab9e00235573a0026ea80044c079240103505431003370e90000011aab9e00235573a0026ea80045261301a49103505435003016225335001101422135002223253353335734002034032264666ae6800406c068cdc3801240042600e00866e3c00922010b48796472614865616456310022322300200130172253350011500f22135002225335330080020071301400113006003235001223233335002250022001250022500213263357389201024c68000162253350011012133573800402246a0024444444444440102601e921034d3132001300e491034d3039001300d491034d31300023223002001300f225335001100e2215335300500213004001100f2333333002001225006250052500525005230060012222223333333574800c4646600e6aae74004d55cf0009baa00723005375600e460086eb001c8c00cdd6803918011bae0070112212330010030022122300200311220012212330010030021220021221223300100400320011220021220012326335738002004240024646002002460044660040040029111c82f573e178979d107bbbdb65a44e8b22ec1798606a6e35c85d3db0d70048811c2253ddd95837c7aacc8635a971caaea743434152dd8dd2849bdf41620001" } diff --git a/hydra-plutus/scripts/vDeposit.plutus b/hydra-plutus/scripts/vDeposit.plutus index 6889dc04e5b..ac4fce2e5c9 100644 --- a/hydra-plutus/scripts/vDeposit.plutus +++ b/hydra-plutus/scripts/vDeposit.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV2", - "description": "hydra-vDeposit-0.19.0-231-gc73175bbd", + "description": "hydra-vDeposit-0.19.0-278-g357ed0364", "cborHex": "590c15590c12010000323322333222323322323232323232323232323232323232323232323232323232323232323232323232222533533332322223233500325335353530075002220012253335002213300949010344303100333573466e24004d40208880080d80d44c06924103443032001301a4910344303200133006490103443036003301d00135005222003103225335353530075002220022253335002213300949010344303400333573466e24004d40208880080d40d84c06924103443033001301a4910344303300133006490103443035003301d3724603c66a0160026aa0044444444444440146e48c098c08cc0a8d401488800440c84d400488008894cd400440bc4cd5ce00101711a800911111111111002991919299a999ab9a3370e9000001017817099191919299a999ab9a3370e9000001019819099199911091998008020018011bae357420046eb4d5d080098029aba1357440026ae880044c060064d55cf0011aab9d00137546ae84008c02c8c8c8c94cd4ccd5cd19b87480000080cc0c84cc8848cc00400c008c04cd5d08009bae357426ae880044c060064d55cf0011aab9d00137540022602802a6aae78008d55ce8009baa0033232325335333573466e1d200000202f02e1321223002003375c6ae8400454cd4ccd5cd19b87480080080bc0b84c8488c00400cdd69aba10011301401535573c0046aae74004dd5001191919299a999ab9a3370e9000001017817099910919800801801191919299a999ab9a3370e9000001019018899191919191919191919199999999999911111111111091999999999998008068060058050048040038030028020018011980c00d9aba100b3301801b357420146603003c6ae84024ccc091d728119aba100833302475ca0466ae8401ccc060068d5d080319981200fbad3574200a646464a66a666ae68cdc3a400000407e07c266442466002006004646464a66a666ae68cdc3a40000040840822664424660020060046603aeb4d5d0800980e1aba1357440022604e0506aae78008d55ce8009baa35742002646464a66a666ae68cdc3a40000040840822664424660020060046603aeb4d5d0800980e1aba1357440022604e0506aae78008d55ce8009baa357426ae880044c090094d55cf0011aab9d00137546ae84010cc061d71aba100333302401901535742004666048eb8054d5d0800980e9aba1357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10008980b80c1aab9e00235573a0026ea8d5d080098061aba1357440022602802a6aae78008d55ce8009baa001101a13011491035054350033029221225335333573466e24009200002c02b10261533500110262213350270023353006120013370200890010008900090009191919299a999ab9a3370e900000101501488148a99a999ab9a3370e90010010150148815098078081aab9e00235573a0026ea800488c8c8c94cd4ccd5cd19b87480000080a80a44488800854cd4ccd5cd19b87480080080a80a44c84888c00c010c014d5d08008a99a999ab9a3370e900200101501488911000898078081aab9e00235573a0026ea80048c88c008dd60009813111999aab9f0012022233502130043574200460066ae880080408c8c8c94cd4ccd5cd19b874800000809c0984c848888c00c014dd71aba100115335333573466e1d20020020270261321222230010053007357420022a66a666ae68cdc3a400800404e04c26424444600400a60146ae8400454cd4ccd5cd19b874801800809c0984c848888c010014c014d5d0800898060069aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080980944c848888888c014020c024d5d08008a99a999ab9a3370e900100101301289909111111180380418049aba100115335333573466e1d20040020260251332212222222330060090083009357420026eb8d5d09aba200115335333573466e1d2006002026025133221222222233002009008375c6ae84004dd71aba1357440022a66a666ae68cdc3a401000404c04a2664424444444660020120106eb8d5d08009bad357426ae8800454cd4ccd5cd19b874802800809809444888888801054cd4ccd5cd19b874803000809809444888888800c4c02c030d55cf0011aab9d00137540024646464a66a666ae68cdc3a400000404a048266442466002006004600a6ae84004c01cd5d09aba20011300a00b35573c0046aae74004dd50009191919299a999ab9a3370e900000101201189991091980080180118029aba1001375a6ae84d5d1000898048051aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b874800000808c0884dd71aba10011300800935573c0046aae74004dd5000991191919299a999ab9a3370e90000010118110991919999111091999800802802001801191919299a999ab9a3370e900000101401389991091980080180118061aba10013300a00b357426ae880044c034038d55cf0011aab9d00137546ae8400cccc035d728061aba10023232325335333573466e1d20000020280271122200315335333573466e1d200200202802713212223001004375c6ae8400454cd4ccd5cd19b87480100080a009c4c84888c008010d5d0800898068071aab9e00235573a0026ea8d5d080099803bae357426ae88004d5d10009aba20011300800935573c0046aae74004dd500091191919299a999ab9a3370e900100101181108910008a99a999ab9a3370e9000001011811099091180100198029aba10011300800935573c0046aae74004dd50009191919299a999ab9a3370e9000001010810099091180100198029aba100115335333573466e1d2002002021020132333222122333001005004003375a6ae84008dd69aba1001375a6ae84d5d10009aba20011300600735573c0046aae74004dd50009191919299a999ab9a3370e900000101000f89909118010019bae357420022a66a666ae68cdc3a400400404003e26424460020066eb8d5d0800898028031aab9e00235573a0026ea80048c98cd5ce000802a49035054310013300175ceb488c88c008dd5800980d911999aab9f001201723233501733221233001003002300635573a002600a6aae78004c010d5d10019aba10020051200122333573466e3c00800406005cc058894cd4004402c884cdc51bb33500222223374a900019aba035004223374a900019aba0300b00233574066018466a002466e952000335740601a0026ec403c888cdd2a400466ae80dd400199aba0375000466ae80dd40009bb1011001376201a66ae80ccc031d4998063a92375000200666ae814ccd40084cdd2a40006ec402c84cdd2a400866ae80004dd88061099ba548008cd5d01ba9001376201866ae80cc029d48009bb100b3004001233500123374a900019aba037520026ec40108cdd2a400466ae80dd48009bb1004225335001213374a900019aba030030013762008266e952002376200693111911ba630020013014223350014bd6f7b630111a8011119aba0337606010004600e002600c006602244a66a002260046006018442a66a0022004442600c600e00a602044a66a0022016442a66a002200644266a01c6600e008004600c002601e444a66a0042002442a66a006200864442a666a6602200a0042a006266a01e0046601000e0022a006266a0180046600a002006601c44a66a00220064426a0044466e28004c01800d22010035003222001350022220023500122200333230010012212323330022300222230030042300222230020042300222230010042353300400400335003001122223330042533500113350060070072215335001133500800300922153233353300d00500315001133300800333500b00500c002150011333006002233500b00500100122253350011335008335008003002300600932221533353300d00600215003133300800233500b0060050011500313350083350080030023006001222532335002130014988854c8ccd4cc03801c00c540044c011261500113330070022300633500c0070010012335009300333500900400a30070021220021221223300100400332223500222350022235005223500222533353300b00600215335333573466e1c01400404003c403854cd4ccd5cd19b8900500101000f100c100d13300b00600213300b006002225335333573466e3c00800401c018401454cd4ccd5cd19b91002001007006100310041222003122200212220011220021220012323001001230022330020020011" } diff --git a/hydra-plutus/scripts/vHead.plutus b/hydra-plutus/scripts/vHead.plutus index 4e1ba156abd..f64903b91c6 100644 --- a/hydra-plutus/scripts/vHead.plutus +++ b/hydra-plutus/scripts/vHead.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV2", - "description": "hydra-vHead-0.19.0-96-g4d48208d28", + "description": "hydra-vHead-0.19.0-278-g357ed0364", "cborHex": "592a2a592a2701000032323322333222323322323232323233223232323232332232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323333222232323232323232323232323232323232323232323232323232323232322225335323232532333350043232323232215333333350091306a49884c1ad261306a498c8c8c8c8c8c8854cd4c069403454cd54cd4ccd5cd19b8735302f00f222222222006500208c0108b01108c0113357389201034831330008b01153355335333573466e25402cd402088888888801422c04230044230044cd5ce249034833310008b01153353350012533533300f500633333301750045003500c353030010222222222004302a08701353030010222222222003001108d011335738921034833390008c012253355335333573466e3cd4c0c404488888888800cc0ac2200423804234044ccc041401ccccccc0614014cdc0a80224004a01a6a6062022444444444008605611002002004211a02211c02266ae71241034834300008d01153353302100f50031533553353323223002001308f01225335001108f012215335333573466e3c01400824404240044240044c010005403140104230044cd5ce2481034833380008b0115335353535500d222222222222005220012253335002215335333573466e24005402823c0423804423c044cd5ce249034833320008e011505515055153355335333501d07a500933508501500c5004108c011335738921034833360008b01153355335333573466e1cc19d4024c1a140282300422c0454cd4ccd5cd19b8735302f00f222222222001500708c0108b01108c0113357389201034833340008b0115335333573466e1cd4c0bc03c888888888004cdc02803a8030460084580884600899ab9c4901034833350008b011533533301c3308001500a5005330800135302f00f2222222220075006330800135302f00f2222222220095003153353302c5335303c00f21353500122001222200310860135533535500d22222222222200a130640272210022222003108c01133573892010248340008b01108b01108b01108b01108b01108b01108b01108b01108b01108b01108b0113500622222222200613500522222222200913500422222222200213500322222222200813500222222222200713500122222222200121306b498884d4028894cd4ccc06cd4008888888888888020d4014888888888024d4014888888888020c854cd54cd4ccd5cd19b8f302733501700550013500622222222200408a0108901108a011335738921034834310008901153355335333573466e3cd401888888888800cc09cc8cd4060014004cd408c015400422804224044228044cd5ce24810348343200089011353535003222222222222005220022253335002215335333573466e24004d402488888888800423004234044234044cd5ce249034834330008c01150691506910890110890113500222222222222200a10880121306b4984d4c0980188888888880084d4c0940148888888880204d4c09001088888888801454cd4d540048888888888880104c1212622153350011002221304c4984d4008880084c19126222323232215323333333500b1500121500213500a225332355335333573466e3cd4c0b803488888004c0a4d5400488800c22804224044228044cd5ce249034831370008901153355335333573466e1d200035302e00d2222200208a0108901108a01133573892010348323000089011533533301a3307e35302e00d2222200400a3307e35302e00d2222200300b3307e35302e00d222220050091533553353302453353500322222222222200a108401221306b0013232333074076002305200135004222222222222009355001222001108a01133573892103483139000890115335533530085335303a00d213535001220012222003108401108a011335738921034831360008901153355335333573466e1cd54004888008c1ac02822804224044228044cd5ce249034831380008901153353301f00d00913018003108901108901108901108901108901108901130063500222222222222200c1088012150022150022215003215002153333333500a13500922533533301a3500222222222222200800700832153353301e00c0081533533077302850013026335016306750013500322222222222200a1089011335738921034831350008801108801133004082013500222222222222200c10870121306c4984c1ad2621306c49884c1b126221306d49884c1b1263086012232253350011003221350022253353304500b001133008300630490010031330080070033088012253350011003221335083010023004001308501225335001133304307f480001fc884c8d400c88d400c8c8894cd4cc0ecd40148888010d4d4c0f4044880048888010401c54cd4cc11c0340144ccc130c00cc12c014cdc02400400400226660980080046660ec0f00026a00a4444006611a0244a66a002200644266a110020046008002600800261080244a66a0022106024426a00444a66a666ae68cdc7801003844008438089834000898030019919191910a9999999a80409834a4c6464646442a66a602ea0142a66aa66a666ae68cdc499b81353535500a222222222222005220012253335002210011506f1506f353535500a222222222222005220022253335002210011506e1506e5004089010880110890113357389201034832320008801153355335333573466e1cd4c0b0030888888888004c8d403488d4d4d400888888888888801488004894ccd400884cdc00008030a8380a83828020448084400884480899ab9c4901034832330008801153353301e00c5003153355335333573466e1cd4c0b0030888888888019400822404220044224044cd5ce24810348313300088011533553335001153355335333573466e1d20005002089010880115335333573466e1d200035302c00c22222222200508901088011333573466e3cd4c0b0030888888888010d40188888800422404220044220044220044224044cd5ce248103483238000880121533533300c50063333330145004500335302d00d22222222200535302d00d22222222200430270840135302d00d222222222003001108a011335738920103483239000890122153355335333573466e3cd4c0b803888888888800cc0a02140422c04228044ccc035401ccccccc0554014cdc0a802240046a605c01c44444444400a6a605c01c444444444008605010a02002004211402211602266ae71241034833300008a01153355335533535302c00c22222222200210890122108a0110890113357389201034832360008801153355335330295335303900c21353500122001222200310830135533535500a22222222222200a13061024221002222200310890113357389201024834000880113330193307d35302c00c22222222200850053307d35302c00c22222222200750043307d35302c00c2222222220095003108801108801108801108801108801108801108801108801135004222220021350032222200513500222222003135001222220041306949884c1a92632322153353330173307b350042222200450063307b350042222200335302b00a222220033307b5003500532153355335333573466e1cd4c0b002c88888008cdc024004a0061100210e02211002266ae7124010348323100087011533533300a5007333333012500650033500222200235302c00b222220013025082013025500135002222003153355335330225335303800b2135350012200122220031082013330700723553355008130600232210022222003306f500110880113357389201024834000870113301d00b5004108701108701108701133501435001222001533550071305f49103505439002210011086011350022222200213500122222005221306b49884214044d4c098014888880144d4c094010888880104d4d400c880088888888888880284d40088800888c894cd54cd4ccd5cd19b87300d004300e001082010810113002335500b00400110810110820113357389210348313200081013082012253350011082012215335350022233500722222223335734666e54024cdc51bb3375200e66e28dd99ba8006337146eccdd400299b8a37666ea4010cdc51bb337520066eccdd4801000846808460080089802000884180991919299a999ab9a3370e90000010400083f899910919800801801191919299a999ab9a3370e90000010418084100899191919191919191919199999999999911111111111091999999999998008068060058050048040038030028020018011983302d9aba100b3306605b35742014660cc0bc6ae84024ccc189d728309aba100833306275ca0c26ae8401ccc198168d5d080319983102fbad3574200a646464a66a666ae68cdc3a40000041200211e02266442466002006004646464a66a666ae68cdc3a40000041260212402266442466002006004660bceb4d5d0800982e9aba135744002260d60d46aae78008d55ce8009baa35742002646464a66a666ae68cdc3a40000041260212402266442466002006004660bceb4d5d0800982e9aba135744002260d60d46aae78008d55ce8009baa357426ae880044c1a019cd55cf0011aab9d00137546ae84010cc199d71aba1003333062059056357420046660c4eb8158d5d0800982e9aba1357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10008982d82d1aab9e00235573a0026ea8d5d080098261aba135744002260b00ae6aae78008d55ce8009baa0033232325335333573466e1d200000207f07e11222222200515335333573466e1d200200207f07e1321222222230010083232325335333573466e1d200000208201081011120011305a05935573c0046aae74004dd51aba100115335333573466e1d200400207f07e1321222222230030083232325335333573466e1d20000020820108101132333222123330010040030023305c75c6ae84008dd69aba1001375a6ae84d5d10009aba20011305a05935573c0046aae74004dd51aba100115335333573466e1d200600207f07e1321222222230060083232325335333573466e1d200000208201081011122200315335333573466e1d20020020820108101132122230020043305b75c6ae8400454cd4ccd5cd19b874801000820804204044cc884888cc004014010cc16dd71aba1001375c6ae84d5d10008982d02c9aab9e00235573a0026ea8d5d08008a99a999ab9a3370e900400103f83f099091111111802004191919299a999ab9a3370e9000001041008408089909118010019982dbae357420022a66a666ae68cdc3a400400410402102022664424466002008006660b6eb8d5d08009bae357426ae880044c168164d55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480280081fc1f844888888801c54cd4ccd5cd19b87480300081fc1f84cc8848888888cc008024020dd69aba1001375a6ae84d5d10008982b82b1aab9e00235573a0026ea800cc8c8c94cd4ccd5cd19b87480000081f81f44c8c8cccc09cc158d5d08019982c82d1aba1002375c6ae84004c13cd5d09aba2001357440026ae8800454cd4ccd5cd19b87480080081f81f44c090c8c8c94cd4ccd5cd19b874800000820404200044c8c8c8ccccc0bcdd71aba10043305d05e3574200660b46ae84008dd69aba1001375c6ae84d5d10009aba2001357440026ae880044c164160d55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480100081f81f44c09cc8c8c94cd4ccd5cd19b874800000820404200044c8c8c8c8c8c8c8ccccccccc0c8dd71aba1008330610623574200e60bc6ae84018dd69aba1005375a6ae84010dd71aba1003375c6ae84008cc185d71aba1001375a6ae84d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c164160d55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480180081f81f440984c158154d55cf0011aab9d0013754006205c260a6921035054350033079221122533500210752215335003107722133507833073004002335530081200100300112001222222123333330010070060050040030023077225335001148000884cdc024004600800260ec44a66a0022900011099b8048008c010004cc1d4884894cd4ccd5cd19b89002480001dc1d841c454cd400441c4884cd41c8008cd4c01848004cdc0802240040022400246a002444444444444a66a601c01020fe266ae712401035530310007e30732253350011073223213500322300300130772253350011300600322135002225335333573466e1d200000107b07a13006003107a22235003223500422350052253355335333500a06700600515335330270040031330670020011078107810791335738920102483200078330712212225335002153350011074221075221533500310752215335330070040021333530091200100700300110771200122232330742253350011300348000884d4008894cd4ccd5cd19b8f002009078077130073370201c60180022600c0060084a66a666ae68cdc380099b8048008c0140081c81c441c84cd5ce24810348313400071306f225335001148000884cdc024004600800260dc44a66a00220084426a0044466e00004c01800c88c8d400c894cd4c01cd40088888888888880104c98cd5ce24902483600056232215335001153353002300b30063500522222222222200c10731335738921024835000722213263357389210248370005b30732253350011072221533533063005002107513004001306f225335001106922135002223232330772253350011003221335072002300400100230070043302d00735001222200348000c1ac894cd40044194884cd4198008c010004c1a8894cd40044190884cd4194008c010004cc1a4884894cd4ccd5cd19b89002480001ac1a8400454cd40044194884cd4c01848004cdc080224004002240026444666660060ae4600c0026660060ae4666ae68cdc3a40000020d40d202e004002446464464446600600400260da444a66a0042600a002442a66a006260100084426a00844646a00a44a66a6602200a0042a66a6601a00800226601801000c20ec2a66a6020008266018010014266006a66a602000220e2266a0e000e0e200c60ec444a66a00220ec4426a00444a66a602800226600e00c0062a66a6602a0120042a66a660220100022660200186660fa444a66a00420024426600a00266a0f200400600c00620f426600e66a0e800800c00660d644a66a00220d64426a00444a66a60100022600c00620dc60d444a66a00220d44426a00444a66a600e0022600c00620da92103505438003066225335001106622135002225335333573466e1d200000106a06913006003106923724600400260c844a66a002203e44266e28dd99a801111119ba548000cd5d01a8021119ba548000cd5d0180e80119aba03301e233500123374a900019aba0301f001376204244466e9520023357406ea000ccd5d01ba80023357406ea0004dd88118009bb101f335740666018ea5402c00ccd5d02999a801099ba548000dd880e9099ba548010cd5d00009bb101e213374a900119aba037520026ec4078cd5d01980e3a9001376203a600800246e48c068c05cc16400488ccd5cd19b8f3766666008ea5400c008dd99998023a9500300106206113300175246ea000488c88dd3180100098311119a800a5eb7bdb18088d400888cd5d019bb030080023007001300600332253353004300b00121533335001210011300349888884c01d262130044984c0092623263357389210248330004432253353003300a001215333350012130044984c00d26222213007498840044c00926232633573892010248330004332233333302100122532335333573466e1d200000306005f1533533335573e0044a0984609a660aa6ae8400cd5d1001823109a80091299a980400110a99a9999aab9f002250502305133059357420066ae8800c12884d4004894cd4cc09809c008854cd4cccd55cf8011282a1182a9982e9aba10033574400609c426a00244a66a605a00442a66a6666aae7c008941608c8c8c16c008d5d10021aba1003052215335302e00121305a333301500b0070030011300e4984c035261300c4984c02526130084984c01526130044984c0052613001498c894cd4ccd5cd19b874800801018418054cd4cccd55cf801928269191918280011aba20053574200808e42a66a66666604c00244a66a666ae68cdc3a40000040c80c62a66a6666aae7c004941408c144cc164d5d08011aba200204a2135001225335302900221533533335573e0044a0a8460aa660ba6ae8400cd5d1001827109a80091299a9981501580110a99a9999aab9f002250582305933061357420066ae8800c14884d4004894cd4c050008854cd4cccd55cf8011282e1182e998329aba1003357440060ac426a00244a66a606c00442a66a6666aae7c008941808c8c8c18c008d5d10021aba100305a21533530370012130623333302100f00b007003001150601505f1505e1505b1505a150571505615053150521504f1504f2504e2504e2504e2504e21304f3009001130034984c0092613002498c894cd4ccd5cd19b874801001018418054cd4cccd55cf801928269191918280011aba20053574200808e42a66a66666604c00244a66a666ae68cdc3a40000040c80c62a66a6666aae7c004941408c144cc164d5d08011aba200204a2135001225335302900221533533335573e0044a0a8460aa660ba6ae8400cd5d1001827109a80091299a9981501580110a99a9999aab9f002250582305933061357420066ae8800c14884d4004894cd4c050008854cd4cccd55cf8011282e1182e998329aba1003357440060ac426a00244a66a606c00442a66a6666aae7c008941808c184cc1a4d5d08019aba200305a2135001225335303a00221533533335573e0044a0c8460ca660da6ae8400cd5d100182f109a80091299a981e80110a99a9999aab9f002250682306933071357420066ae8800c18884d4004894cd4c104008854cd4cccd55cf80112836118369983a9aba1003357440060cc426a00244a66a6608408a00442a66a6666aae7c008941c08c8c8c1cc008d5d10021aba100306a215335304800121307233333333303001f01b01701300f00b007003001150701506f1506e1506b1506a150671506615063150621505f1505e1505b1505a150571505615053150521504f1504f2504e2504e2504e2504e21304f300c001130034984c009261300249894cd4ccd5cd19b874801800c18017c4c1300205412c941249412494124941248cccccc080004894cd4ccd5cd19b874800000817817454cd4cccd55cf800928251191918268011aba20033574200408842a66a60440024260980022a0942a0922a0924a0904a0904a0904a090424444600800a24444006444424444666600401000e00c00a424444600200a4444444442466666666600201401201000e00c00a00800600444444246666600200c00a008006004644a66a6a6a002440044444444444440142600493110a99a998029a80111110021a9a98038019100091110020980e8010980224c464c66ae712401034831310003b223500222350032232335005233500425335333573466e3c00800417016c5400c416c816c8cd4010816c94cd4ccd5cd19b8f00200105c05b15003105b153350032153350022133500223350022335002233500223304d002001205e2335002205e23304d00200122205e222335004205e2225335333573466e1c01800c18418054cd4ccd5cd19b8700500206106013300f0040011060106010591533500121059105922333573466e1c00800415014c94cd4c008004840044c98cd5ce24810248380003823500122350022222222222223333500d2014201420142330622253350011504d22135002225335350022235009225335333573466e3c0100081a81a44ccd5cd19b8700300106a0691069130520041300600300d233500123374a900019aba037520026ec40108cdd2a400466ae80dd48009bb1004225335001213374a900019aba030030013762008266e952002376200693281b982691299a800898011801823910a99a800880111098031803802982611299a8008823110a99a800880191099a8249980380200118030009825911299a8010800910a99a801880219110a999a998260028010a801899a825001198040038008a801899a82380119802800801982511299a800880291099a801111b8a001300400122333573466e1d2002300533003002350012222003049048232253355335300200121303600115034213304c225335001104622132533535003225335333573466e1d20020010510501303d0021503c2133504900100210013004001001104330492253350011503422135002225335333573466e3c00801c1341304c0e40044c01800d221003046225335001148000884cdc02400460080024a66a646466666601400444a66a666ae68cdc3a400000409008e2a66a6666aae7c004940d08c0d4cc0f4d5d08011aba200202e2135001225335300b00221533533335573e0044a07046072660826ae8400cd5d1001819109a80091299a980500110a99a9999aab9f0022503c23232303f002357440086ae8400c0d8854cd4c04c00484c0f8ccc04001c00c004540f0540ec540e8540dc540d8540cc540cc940c8940c8940c8940c8c0108cccccc028004894cd4ccd5cd19b874800000812011c54cd4cccd55cf8009281a1181a9981e9aba10023574400405c426a00244a66a601800442a66a6666aae7c008940e08c8c8c0ec008d5d10021aba1003032215335300f00121303a123300100400215038150371503615033150332503225032250322503230090012135001222002103e22212333001004003002232233333300800122503125030002250302503030442233335573e0024606207e4a66a60086ae84008854cd4c010d5d100190981999a8200010008a818899281898019aba200202a25335300300121302e0011502c2333333004001225335333573466e1d20000020420411533533335573e0024a05c4605e6606e6ae84008d5d1001014109a80091299a99999980480111299a999ab9a3370e90000010238230a99a9999aab9f00125033232323036002357440066ae840080b4854cd4c02800484c0d4004540cc540c8540c8940c4940c4940c4940c4854cd4cccd55cf8011281911919181a8011aba20043574200605842a66a6014002426068660920060022a0642a0622a0602a05a2a05a4a0584a0584a0584a058466666600600244a0584a0564a0564a05646058002466666600400244a0564a0544a054460560024a0544444446666666ae900188c8cc01cd55ce8009aab9e001375400e4600a6eac01c8c010dd6003918019bad00723002375c00e0504a666a6a0024444004264c66ae712410248390002221001213263357389210348313000023303c22533500110362213350373500222330340023302923370490008008009802000899319ab9c4901034833330001f2326335738921034833370001f200123232325335333573466e1d200000203a039103915335333573466e1d200200203a039103a1301201135573c0046aae74004dd500091191919299a999ab9a3370e900000101d01c889110010a99a999ab9a3370e900100101d01c8990911180180218029aba100115335333573466e1d200400203a039112220011301201135573c0046aae74004dd50009191919299a999ab9a3370e900000101c01b8990911118018029bae357420022a66a666ae68cdc3a400400407006e26424444600200a600e6ae8400454cd4ccd5cd19b87480100080e00dc4c848888c008014c028d5d08008a99a999ab9a3370e900300101c01b89909111180200298029aba10011301000f35573c0046aae74004dd50009191919299a999ab9a3370e900000101b81b09909111111180280418049aba100115335333573466e1d20020020370361321222222230070083009357420022a66a666ae68cdc3a400800406e06c26644244444446600c01201060126ae84004dd71aba1357440022a66a666ae68cdc3a400c00406e06c2664424444444660040120106eb8d5d08009bae357426ae8800454cd4ccd5cd19b87480200080dc0d84cc8848888888cc004024020dd71aba1001375a6ae84d5d10008a99a999ab9a3370e900500101b81b0891111110020a99a999ab9a3370e900600101b81b089111111001898078071aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080d80d44cc8848cc00400c008c014d5d080098039aba1357440022601c01a6aae78008d55ce8009baa00123232325335333573466e1d20000020350341330363005357420026eb4d5d09aba20011300d00c35573c0046aae74004dd50009191919299a999ab9a3370e900000101a01989bae35742002260180166aae78008d55ce8009baa0013223232325335333573466e1d200000203403313232333322221233330010050040030023232325335333573466e1d2000002039038133221233001003002300c35742002660140166ae84d5d1000898088081aab9e00235573a0026ea8d5d0801999805bae500a35742004646464a66a666ae68cdc3a4000004072070224440062a66a666ae68cdc3a4004004072070264244460020086eb8d5d08008a99a999ab9a3370e900200101c81c099091118010021aba10011301101035573c0046aae74004dd51aba10013300775c6ae84d5d10009aba200135744002260180166aae78008d55ce8009baa001223232325335333573466e1d20020020340331501f15335333573466e1d200000203403313020300535742002260180166aae78008d55ce8009baa00123232325335333573466e1d200000203203113212230020033005357420022a66a666ae68cdc3a400400406406226466644424466600200a0080066eb4d5d08011bad357420026eb4d5d09aba200135744002260140126aae78008d55ce8009baa00123232325335333573466e1d20000020310301321223002003375c6ae8400454cd4ccd5cd19b87480080080c40c04c8488c00400cdd71aba10011300900835573c0046aae74004dd5000899800bae75a4464460046eac004c0bc88cccd55cf800901511919a8151981298031aab9d001300535573c00260086ae8800cd5d080100a9191919299a999ab9a3370e900000101701689bad357420022600c00a6aae78008d55ce8009baa0014910350543100232633573800201e464460046eb0004c0a888cccd55cf8009012919a81218021aba100230033574400402046eb8004c09c894cd4004520002213370090011802000981311299a8008a400044266e0120023004001132633573892103483434000093024225335001148000884cdc0240046008002604644a66a002203a44266a0044444660220260066008002604444a66a00220424426a00444a66a666ae68cdc7a450b4879647261486561645631000020260251333573466e1d2002001026025130060033021225335001148000884cdc0240046008002264c66ae712410348323700004132633573892103483235000031326335738921034832340000223263357389210248310000212001301b225335001101522133500222223300900b00330040012322230033009333500b00a002001301b225335001101522133501635002223301300233008233350012330094800000488cc0280080048cc0240052000001300400123223002001301a2253350011014221335015350022233012002300700130040012233700004002424460040062244002602a44a66a002201e44266a0206a004446601a004666a0024601400244666a01401200400246016002600800244666ae68cdc780100080a00989911119191980c91299a800880191099a80a0011802000980100218029980c11299a800880911099299a9a80191911801005980f11299a800880f1109a80111299a99808001003881089803001899a80a00180088009802000801180b91299a800880891099a8091a8011119198080019800804180e91299a80089aa8078019109a80111299a998078010040891119801005002098030019802000980991299a800880691099a8071a801111980580118050009802000980911299a800880611099a8069a801111980500118048009802000980891299a800880591099a8061a80111198048011aa8038009802000909111801802089091118008021109198008018011a8019110009a8011110011a800911001999180080091091919980111801111180180211801111180100211801111180080211a998020020019a801800891111998021299a800899a803003803910a99a800899a804001804910a99199a998068028018a800899980400199a8058028060010a8008999803001119a805802800800911299a800899a80419a804001801180300499110a999a998068030010a801899980400119a8058030028008a801899a80419a804001801180300091129919a80109800a4c442a64666a6601c00e0062a00226008930a80089998038011180319a806003800800919a804980199a80480200518038010910010910911980080200199111a9a80111001111a9a80191001112999a998038020010a99a999ab9a3370e00600201801620142a66a666ae68cdc48018008060058804080489980380200109980380200111299a999ab9a3371e00400200e00c200a2a66a666ae68cdc8801000803803080188020911001891100109110008910010910009109198008018011191800800918011198010010009" } diff --git a/hydra-plutus/scripts/vInitial.plutus b/hydra-plutus/scripts/vInitial.plutus index 8751f213599..bad35d6e373 100644 --- a/hydra-plutus/scripts/vInitial.plutus +++ b/hydra-plutus/scripts/vInitial.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV2", - "description": "hydra-vInitial-0.19.0-96-g4d48208d28", - "cborHex": "590f7e590f7b0100003323233223322323233223232323232323232323233223232323232323232323232323232323223323232323232323222225335333004375c006646464a66a666ae68cdc3a400000406406222440042a66a666ae68cdc3a40040040640622642446002006660100126ae840044c090034d55cf0011aab9d0013754004646464a66a666ae68cdc3a4000004064062266442466002006004646464a66a666ae68cdc3a400000406a0682646464646464646464646666666666664444444444442466666666666600201a01801601401201000e00c00a0080060046602a4646464a66a666ae68cdc3a400000408608426644246600200600460346ae84004c06cd5d09aba20011303501e35573c0046aae74004dd50009aba100b357420146602a02e6ae84024ccc071d7280d9aba100833301c75ca0366ae8401cd5d08031aba1005357420086602aeb8d5d08019aba100233301c75c40026ae84004d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c09c040d55cf0011aab9d00137546ae84004c8c8c94cd4ccd5cd19b87480000080d40d04c848888c00c014dd71aba100115335333573466e1d2002002035034132122223001005300c357420022a66a666ae68cdc3a400800406a06826424444600400a601c6ae8400454cd4ccd5cd19b87480180080d40d04c848888c010014c8c8c94cd4ccd5cd19b87480000080e00dc4c848888888c014020c044d5d08008a99a999ab9a3370e900100101c01b89909111111180380418089aba100115335333573466e1d20040020380371332212222222330060090083011357420026eb8d5d09aba200115335333573466e1d2006002038037133221222222233002009008375c6ae84004dd71aba1357440022a66a666ae68cdc3a401000407006e2664424444444660020120106eb8d5d08009bad357426ae8800454cd4ccd5cd19b87480280080e00dc44888888801054cd4ccd5cd19b87480300080e00dc44888888800c4c0a804cd55cf0011aab9d00137546ae840044c09c040d55cf0011aab9d00137546ae84d5d1000898120069aab9e00235573a0026ea800440944c0852410350543500232230023758002605e446666aae7c00480c08cd40bcc010d5d080118019aba200202023232325335333573466e1d200000202d02c1330273232325335333573466e1d200000203002f1375c6ae840044c08802cd55cf0011aab9d00137546ae84004dd69aba1357440022603e0106aae78008d55ce8009baa0013223232325335333573466e1d200000202d02c13232333322221233330010050040030023232325335333573466e1d2000002032031133221233001003002300c35742002660140166ae84d5d1000898120069aab9e00235573a0026ea8d5d08019998063ae500b35742004646464a66a666ae68cdc3a4000004064062224440062a66a666ae68cdc3a4004004064062264244460020086eb8d5d08008a99a999ab9a3370e9002001019018899091118010021aba10011302400d35573c0046aae74004dd51aba10013300775c6ae84d5d10009aba2001357440022603e0106aae78008d55ce8009baa001223232325335333573466e1d200200202d02c1502815335333573466e1d200000202d02c130293005357420022603e0106aae78008d55ce8009baa00123232325335333573466e1d200000202b02a13212230020033005357420022a66a666ae68cdc3a400400405605426466644424466600200a0080066eb4d5d08011bad357420026eb4d5d09aba2001357440022603a00c6aae78008d55ce8009baa00123232325335333573466e1d200000202a0291321223002003375c6ae8400454cd4ccd5cd19b87480080080a80a44c8488c00400cdd71aba10011301c00535573c0046aae74004dd5000a481035054310013300175ceb488c88c008dd58009814911999aab9f001202a23233502a3302c300635573a002600a6aae78004c010d5d10019aba100201a3323232323222322253350021330084910349303100300330093500122002323232215332353300d4910349303300323230213301a00200133301801a5004332323223002001303922533500110032213335006220023013301200230040013500122001321233001002037301801a5002323017301f3301000b0015005153353300d49010349303400302333035500135500422002153353300d490103493133003302b35500422001009153353300d491034930320032323233039225335001103622153353005002103913004001002302d00230303550062222222222220045335330362253350011502f221350022253353303100200f130340011300600350032153350011302549103493036002213500222533500315335333573466e1d200200103703610021302949010349303600221302b491034930360013024491034930350013300d490103493134003030300e50051031103110311330352253350011035221335036325335355009222222222222300d00c210011302849103493135003039225335001150322213500222533533033002008130370041300600330040010011030153353500322350022222222222223333500d2021202120212330422253350011503b221350022253353303c002007130400041300600300d21300a30090011031153353300b006500113020491034931320022135002225335003153335002130244910349303900215335333333015001225335333573466e1d20000020350341533533335573e0024a06246064660726ae84008d5d1001014109a80091299aa99a980c80110981a8008a81990a99a9999aab9f00225035230363303d357420066ae8800c0b084d4004894cd4cccccc0780088940e4940e0070940e0940e0854cd4cccd55cf8011281c91919181e0011aba20043574200606042a66a603e002426076246660020100080042a0722a0702a06e2a0682a0662a0602a0604a05e4a05e4a05e4a05e426a002444660740040022604a92010349313100213025490103493130002213026491034931320013500122002302e225335001102b22135002225335333573466e3c00801c0c00bc4c03c0044c01800c8d4004880048d4004888800c894cd4004409c4cd5ce00101311a800911111111111004111981491299a800881491099299a9a80191111a8021119a801128161299a999ab9a3371e00201c0620602605a6606800a00c2a0584266a058002004200260080026a002444444444444014002604a44a66a00220444426a00444a66a666ae68cdc7a4410b4879647261486561645631000020270261333573466e1d20010010270261300600330242233335573e0024603e04a4a66a66666600a6ae84008894cd4ccd5cd19b874800000809409054cd4cccd55cf8009281091811198149aba100235744004030426a00244a66a66666601400444a66a666ae68cdc3a40000040540522a66a6666aae7c004940988c09ccc0b8d5d08011aba200201d213500122533533333300f002225335333573466e1d200000202f02e1533533335573e0024a05646464605c0046ae8800cd5d080101110a99a98088009098168008a8158a8150a8151281492814928149281490a99a9999aab9f0022502a23232302d002357440086ae8400c084854cd4cccccc0440048940b0940ac940ac8c0b0004940ac84c0b0cc0a800c004540a8540a4540a0540945409494090940909409094090854cd4cccd55cf801128129191918140011aba20043574200603842a66a601600242604e24660020080042a04a2a0482a0462a0402a0404a03e4a03e4a03e4a03e42a66a60086ae8800c84c084cd40980080045407c4c9407cc00cd5d100100a919999980100091280e9280e1280e1280e1180e8009111111999999aba40062323300735573a0026aae78004dd5003918029bab00723004375800e460066eb401c8c008dd700380ba80c181011299a8008810110999802803801180200091911180199802801000981011299a800881011099a8109a80111198128011981311299a800881311099a8139a8011119815801199a80091980724000002446601e00400246601c002900018020008009802000911802199a80280a8010009119b80002001301c225335001101c22133501d3500222330210023335001230090012233350090190020012300a00130040011322223232330212253350011003221335022002300400130020043005330202253350011020221325335350032322300200b302622533500110242213500222533533010002007102713006003133502200300110013004001002301f225335001101f22133502035002223233025003300100830252253350011355012003221350022253353300f002008112223300200a004130060033004001301b225335001101b22133501c350022233020002300d0013004001301a225335001101a22133501b35002223301f002300c00130040013019225335001101922133501a35002223301e00235500a00130040013018225335001101822133501935002220013004001301722533500110152232135003223003001301b2253350011300600322135002225335333500123300c4800000488cc0340080048cc030005200013006003101c22333573466e2000800404c05084888c00c0104484888c004010c04c88d4004894cd400854cd4004404c884c01d2401034930370022153350031300749103493038002213500422350042253353301437666a006444466e9520003357406a0084466e952000335740602a00466ae80cc0588cd40048cdd2a400066ae80c05c004dd880c91119ba548008cd5d01ba80033357406ea0008cd5d01ba800137620360026ec405ccd5d019980b3a93301675246ea000400ccd5d02999a801099ba548000dd880a9099ba548010cd5d00009bb1016213374a900119aba037520026ec4058cd5d01980a3a9001376202a0022a66a66026008004260186603c00e00a20342034464c66ae70004008480048cd40048cdd2a400066ae80dd48009bb100423374a900119aba037520026ec4010894cd400484cdd2a400066ae80c00c004dd8802099ba548008dd8801a4c446446e98c008004c03c88cd40052f5bded8c0446a0044466ae80cdd8180400118038009803001911a801111a80191299a999ab9a3371e00800401c01a2666ae68cdc3801800807006880691199ab9a3371e004002012010442466002006004424460040062244002600e44a66a002200e44266a0100046008002600c44a66a0022008446426a006446006002601444a66a0022600c0064426a00444a66a666ae68cdc3a40000020180162600c00620162440042440022440042442446600200800644246600200600446460020024600446600400400291011cea444d37d226e71eef73ac78d149750da977feb588900135bf9e82210001" + "description": "hydra-vInitial-0.19.0-278-g357ed0364", + "cborHex": "5910da5910d7010000332323322332232323322323232323232323232323322323232323232323232323232323232322332323232323232323232323232323222225335333004375c006646464a66a666ae68cdc3a400000407207022440042a66a666ae68cdc3a400400407207026424460020066601601e6ae840044c0ac050d55cf0011aab9d0013754004646464a66a666ae68cdc3a4000004072070266442466002006004646464a66a666ae68cdc3a40000040780762646464646464646464646666666666664444444444442466666666666600201a01801601401201000e00c00a008006004660300366ae8402ccc06006cd5d08051980c00f1aba100933302375ca0446ae84020ccc08dd728111aba10073301801a3574200c66604603eeb4d5d0802991919299a999ab9a3370e9000001024824099910919800801801191919299a999ab9a3370e90000010260258999109198008018011980ebad3574200260386ae84d5d10008981f0139aab9e00235573a0026ea8d5d0800991919299a999ab9a3370e90000010260258999109198008018011980ebad3574200260386ae84d5d10008981f0139aab9e00235573a0026ea8d5d09aba20011303b02435573c0046aae74004dd51aba10043301875c6ae8400cccc08c064054d5d0801199811bae01535742002603a6ae84d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440022605c02e6aae78008d55ce8009baa3574200260186ae84d5d10008981580a1aab9e00235573a0026ea800440b04c0a12410350543500200123232325335333573466e1d2000002034033103315335333573466e1d200200203403310341302600f35573c0046aae74004dd500091191919299a999ab9a3370e900000101a019889110010a99a999ab9a3370e900100101a0198990911180180218029aba100115335333573466e1d2004002034033112220011302600f35573c0046aae74004dd5000919118011bac00130332233335573e0024068466a06660086ae84008c00cd5d10010121191919299a999ab9a3370e90000010188180990911118018029bae357420022a66a666ae68cdc3a400400406206026424444600200a600e6ae8400454cd4ccd5cd19b87480100080c40c04c848888c008014c028d5d08008a99a999ab9a3370e900300101881809909111180200298029aba10011302300c35573c0046aae74004dd50009191919299a999ab9a3370e900000101801789909111111180280418049aba100115335333573466e1d200200203002f1321222222230070083009357420022a66a666ae68cdc3a400800406005e26644244444446600c01201060126ae84004dd71aba1357440022a66a666ae68cdc3a400c00406005e2664424444444660040120106eb8d5d08009bae357426ae8800454cd4ccd5cd19b87480200080c00bc4cc8848888888cc004024020dd71aba1001375a6ae84d5d10008a99a999ab9a3370e90050010180178891111110020a99a999ab9a3370e9006001018017889111111001898110059aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080bc0b84cc8848cc00400c008c014d5d080098039aba135744002260420146aae78008d55ce8009baa00123232325335333573466e1d200000202e02d1330283005357420026eb4d5d09aba20011302000935573c0046aae74004dd50009191919299a999ab9a3370e900000101681609bae357420022603e0106aae78008d55ce8009baa0013223232325335333573466e1d200000202d02c13232333322221233330010050040030023232325335333573466e1d2000002032031133221233001003002300c35742002660140166ae84d5d1000898120069aab9e00235573a0026ea8d5d08019998063ae500b35742004646464a66a666ae68cdc3a4000004064062224440062a66a666ae68cdc3a4004004064062264244460020086eb8d5d08008a99a999ab9a3370e9002001019018899091118010021aba10011302400d35573c0046aae74004dd51aba10013300775c6ae84d5d10009aba2001357440022603e0106aae78008d55ce8009baa001223232325335333573466e1d200200202d02c1502815335333573466e1d200000202d02c130293005357420022603e0106aae78008d55ce8009baa00123232325335333573466e1d200000202b02a13212230020033005357420022a66a666ae68cdc3a400400405605426466644424466600200a0080066eb4d5d08011bad357420026eb4d5d09aba2001357440022603a00c6aae78008d55ce8009baa00123232325335333573466e1d200000202a0291321223002003375c6ae8400454cd4ccd5cd19b87480080080a80a44c8488c00400cdd71aba10011301c00535573c0046aae74004dd5000a481035054310013300175ceb488c88c008dd58009814911999aab9f001202a23233502a3302c300635573a002600a6aae78004c010d5d10019aba100201a3323232323222322253350021330084910349303100300330093500122002323232215332353300d4910349303300323230213301a00200133301801a5004332323223002001303922533500110032213335006220023013301200230040013500122001321233001002037301801a5002323017301f3301000b0015005153353300d49010349303400302333035500135500422002153353300d490103493133003302b35500422001009153353300d491034930320032323233039225335001103622153353005002103913004001002302d00230303550062222222222220045335330362253350011502f221350022253353303100200f130340011300600350032153350011302549103493036002213500222533500315335333573466e1d200200103703610021302949010349303600221302b491034930360013024491034930350013300d490103493134003030300e50051031103110311330352253350011035221335036325335355009222222222222300d00c210011302849103493135003039225335001150322213500222533533033002008130370041300600330040010011030153353500322350022222222222223333500d2021202120212330422253350011503b221350022253353303c002007130400041300600300d21300a30090011031153353300b006500113020491034931320022135002225335003153335002130244910349303900215335333333015001225335333573466e1d20000020350341533533335573e0024a06246064660726ae84008d5d1001014109a80091299aa99a980c80110981a8008a81990a99a9999aab9f00225035230363303d357420066ae8800c0b084d4004894cd4cccccc0780088940e4940e0070940e0940e0854cd4cccd55cf8011281c91919181e0011aba20043574200606042a66a603e002426076246660020100080042a0722a0702a06e2a0682a0662a0602a0604a05e4a05e4a05e4a05e426a002444660740040022604a92010349313100213025490103493130002213026491034931320013500122002302e225335001102b22135002225335333573466e3c00801c0c00bc4c03c0044c01800c8d4004880048d4004888800c894cd4004409c4cd5ce00101311a800911111111111004111981491299a800881491099299a9a80191111a8021119a801128161299a999ab9a3371e00201c0620602605a6606800a00c2a0584266a058002004200260080026a002444444444444014002604a44a66a00220444426a00444a66a666ae68cdc7a4410b4879647261486561645631000020270261333573466e1d20010010270261300600330242233335573e0024603e04a4a66a66666600a6ae84008894cd4ccd5cd19b874800000809409054cd4cccd55cf8009281091811198149aba100235744004030426a00244a66a66666601400444a66a666ae68cdc3a40000040540522a66a6666aae7c004940988c09ccc0b8d5d08011aba200201d213500122533533333300f002225335333573466e1d200000202f02e1533533335573e0024a05646464605c0046ae8800cd5d080101110a99a98088009098168008a8158a8150a8151281492814928149281490a99a9999aab9f0022502a23232302d002357440086ae8400c084854cd4cccccc0440048940b0940ac940ac8c0b0004940ac84c0b0cc0a800c004540a8540a4540a0540945409494090940909409094090854cd4cccd55cf801128129191918140011aba20043574200603842a66a601600242604e24660020080042a04a2a0482a0462a0402a0404a03e4a03e4a03e4a03e42a66a60086ae8800c84c084cd40980080045407c4c9407cc00cd5d100100a919999980100091280e9280e1280e1280e1180e8009111111999999aba40062323300735573a0026aae78004dd5003918029bab00723004375800e460066eb401c8c008dd700380ba80c181011299a8008810110999802803801180200091911180199802801000981011299a800881011099a8109a80111198128011981311299a800881311099a8139a8011119815801199a80091980724000002446601e00400246601c002900018020008009802000911802199a80280a8010009119b80002001301c225335001101c22133501d3500222330210023335001230090012233350090190020012300a00130040011322223232330212253350011003221335022002300400130020043005330202253350011020221325335350032322300200b302622533500110242213500222533533010002007102713006003133502200300110013004001002301f225335001101f22133502035002223233025003300100830252253350011355012003221350022253353300f002008112223300200a004130060033004001301b225335001101b22133501c350022233020002300d0013004001301a225335001101a22133501b35002223301f002300c00130040013019225335001101922133501a35002223301e00235500a00130040013018225335001101822133501935002220013004001301722533500110152232135003223003001301b2253350011300600322135002225335333500123300c4800000488cc0340080048cc030005200013006003101c22333573466e2000800404c05084888c00c0104484888c004010c04c88d4004894cd400854cd4004404c884c01d2401034930370022153350031300749103493038002213500422350042253353301437666a006444466e9520003357406a0084466e952000335740602a00466ae80cc0588cd40048cdd2a400066ae80c05c004dd880c91119ba548008cd5d01ba80033357406ea0008cd5d01ba800137620360026ec405ccd5d019980b3a93301675246ea000400ccd5d02999a801099ba548000dd880a9099ba548010cd5d00009bb1016213374a900119aba037520026ec4058cd5d01980a3a9001376202a0022a66a66026008004260186603c00e00a20342034464c66ae70004008480048cd40048cdd2a400066ae80dd48009bb100423374a900119aba037520026ec4010894cd400484cdd2a400066ae80c00c004dd8802099ba548008dd8801a4c446446e98c008004c03c88cd40052f5bded8c0446a0044466ae80cdd8180400118038009803001911a801111a80191299a999ab9a3371e00800401c01a2666ae68cdc3801800807006880691199ab9a3371e004002012010442466002006004424460040062244002600e44a66a002200e44266a0100046008002600c44a66a0022008446426a006446006002601444a66a0022600c0064426a00444a66a666ae68cdc3a40000020180162600c00620162440042440022440042442446600200800644246600200600446460020024600446600400400291011cea444d37d226e71eef73ac78d149750da977feb588900135bf9e82210001" } diff --git a/hydra-plutus/src/Hydra/Contract/HeadTokens.hs b/hydra-plutus/src/Hydra/Contract/HeadTokens.hs index 30113a3c2d7..1677ddd6c7e 100644 --- a/hydra-plutus/src/Hydra/Contract/HeadTokens.hs +++ b/hydra-plutus/src/Hydra/Contract/HeadTokens.hs @@ -29,17 +29,18 @@ import Hydra.Contract.HeadState qualified as Head import Hydra.Contract.HeadTokensError (HeadTokensError (..), errorCode) import Hydra.Contract.Initial qualified as Initial import Hydra.Contract.MintAction (MintAction (Burn, Mint)) -import Hydra.Contract.Util (hasST) +import Hydra.Contract.Util (hasST, ownCurrencySymbol, scriptOutputsAt) import Hydra.Plutus.Extras (MintingPolicyType, wrapMintingPolicy) -import Hydra.ScriptContext (ScriptContext (..), TxInfo (txInfoInputs, txInfoMint), ownCurrencySymbol, scriptOutputsAt) import PlutusCore.Core (plcVersion100) import PlutusLedgerApi.V2 ( Datum (getDatum), FromData (fromBuiltinData), OutputDatum (..), + ScriptContext (..), ScriptHash, SerialisedScript, TxInInfo (..), + TxInfo (..), TxOutRef, Value (getValue), serialiseCompiledCode, diff --git a/hydra-plutus/src/Hydra/Contract/Initial.hs b/hydra-plutus/src/Hydra/Contract/Initial.hs index 063686e2b9e..8da1716ea3a 100644 --- a/hydra-plutus/src/Hydra/Contract/Initial.hs +++ b/hydra-plutus/src/Hydra/Contract/Initial.hs @@ -16,17 +16,9 @@ import Hydra.Contract.Commit (Commit (..)) import Hydra.Contract.Commit qualified as Commit import Hydra.Contract.Error (errorCode) import Hydra.Contract.InitialError (InitialError (..)) -import Hydra.Contract.Util (mustBurnST) +import Hydra.Contract.Util (findOwnInput, findTxInByTxOutRef, mustBurnST, scriptOutputsAt, valueLockedBy) import Hydra.Plutus (commitValidatorScript) import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) -import Hydra.ScriptContext ( - ScriptContext (..), - TxInfo (txInfoMint, txInfoSignatories), - findOwnInput, - findTxInByTxOutRef, - scriptOutputsAt, - valueLockedBy, - ) import PlutusCore.Core (plcVersion100) import PlutusLedgerApi.Common (SerialisedScript, serialiseCompiledCode) import PlutusLedgerApi.V1.Value (geq, isZero) @@ -37,10 +29,12 @@ import PlutusLedgerApi.V2 ( OutputDatum (..), PubKeyHash (getPubKeyHash), Redeemer (Redeemer), + ScriptContext (..), ScriptHash, ToData (toBuiltinData), TokenName (unTokenName), TxInInfo (..), + TxInfo (..), TxOut (txOutValue), TxOutRef, Value (getValue), diff --git a/hydra-plutus/src/Hydra/Contract/Util.hs b/hydra-plutus/src/Hydra/Contract/Util.hs index 9dcb528a354..94c83ab2d5f 100644 --- a/hydra-plutus/src/Hydra/Contract/Util.hs +++ b/hydra-plutus/src/Hydra/Contract/Util.hs @@ -9,9 +9,18 @@ import Hydra.Data.Party (Party) import Hydra.Prelude (Show) import PlutusLedgerApi.V1.Value (isZero) import PlutusLedgerApi.V2 ( + Address (..), + Credential (..), CurrencySymbol, + OutputDatum (..), + ScriptContext (..), + ScriptHash (..), + ScriptPurpose (..), TokenName (..), - TxInfo (TxInfo, txInfoMint), + TxInInfo (..), + TxInfo (..), + TxOut (..), + TxOutRef (..), Value (getValue), toBuiltinData, ) @@ -84,3 +93,38 @@ data UtilError instance ToErrorCode UtilError where toErrorCode = \case MintingOrBurningIsForbidden -> "U01" + +-- | Get the list of 'TxOut' outputs of the pending transaction at +-- a given script address. +scriptOutputsAt :: ScriptHash -> TxInfo -> [(OutputDatum, Value)] +scriptOutputsAt h p = + let flt TxOut{txOutDatum = d, txOutAddress = Address (ScriptCredential s) _, txOutValue} | s == h = Just (d, txOutValue) + flt _ = Nothing + in mapMaybe flt (txInfoOutputs p) +{-# INLINEABLE scriptOutputsAt #-} + +-- | Get the total value locked by the given validator in this transaction. +valueLockedBy :: TxInfo -> ScriptHash -> Value +valueLockedBy ptx h = + let outputs = map snd (scriptOutputsAt h ptx) + in mconcat outputs +{-# INLINEABLE valueLockedBy #-} + +-- | Find the input currently being validated. +findOwnInput :: ScriptContext -> Maybe TxInInfo +findOwnInput ScriptContext{scriptContextTxInfo = TxInfo{txInfoInputs}, scriptContextPurpose = Spending txOutRef} = + find (\TxInInfo{txInInfoOutRef} -> txInInfoOutRef == txOutRef) txInfoInputs +findOwnInput _ = Nothing +{-# INLINEABLE findOwnInput #-} + +-- | Given a UTXO reference and a transaction (`TxInfo`), resolve it to one of the transaction's inputs (`TxInInfo`). +findTxInByTxOutRef :: TxOutRef -> TxInfo -> Maybe TxInInfo +findTxInByTxOutRef outRef TxInfo{txInfoInputs} = + find (\TxInInfo{txInInfoOutRef} -> txInInfoOutRef == outRef) txInfoInputs +{-# INLINEABLE findTxInByTxOutRef #-} + +-- | The 'CurrencySymbol' of the current validator script. +ownCurrencySymbol :: ScriptContext -> CurrencySymbol +ownCurrencySymbol ScriptContext{scriptContextPurpose = Minting cs} = cs +ownCurrencySymbol _ = traceError "Lh" -- "Can't get currency symbol of the current validator script" +{-# INLINEABLE ownCurrencySymbol #-} diff --git a/hydra-plutus/src/Hydra/ScriptContext.hs b/hydra-plutus/src/Hydra/ScriptContext.hs deleted file mode 100644 index 009c296fcc4..00000000000 --- a/hydra-plutus/src/Hydra/ScriptContext.hs +++ /dev/null @@ -1,111 +0,0 @@ -{-# LANGUAGE TemplateHaskell #-} -{-# OPTIONS_GHC -Wno-simplifiable-class-constraints #-} -{-# OPTIONS_GHC -fno-omit-interface-pragmas #-} -{-# OPTIONS_GHC -fno-specialise #-} -{-# OPTIONS_GHC -fno-strictness #-} - --- | A custom ScriptContext and TxInfo which only "decodes" the fields we need. -module Hydra.ScriptContext where - -import PlutusLedgerApi.V2.Contexts hiding ( - ScriptContext, - TxInfo (..), - scriptContextPurpose, - scriptContextTxInfo, - ) -import PlutusTx.Prelude - -import PlutusLedgerApi.V2 ( - Address (..), - Credential (..), - CurrencySymbol, - Datum, - DatumHash, - Map, - OutputDatum, - PubKeyHash, - ScriptHash, - Value, - ) -import PlutusTx (makeIsDataIndexed) - --- * Tx info - -data TxInfo = TxInfo - { txInfoInputs :: [TxInInfo] - -- ^ Transaction inputs; cannot be an empty list - , txInfoReferenceInputs :: BuiltinData - -- ^ Transaction reference inputs - , txInfoOutputs :: [TxOut] - -- ^ Transaction outputs - , txInfoFee :: Value - -- ^ The fee paid by this transaction. - , txInfoMint :: Value - -- ^ The 'Value' minted by this transaction. - , txInfoDCert :: BuiltinData - -- ^ Digests of certificates included in this transaction - , txInfoWdrl :: BuiltinData - -- ^ Withdrawals - , -- XXX: using POSIXTimeRange adds ~300 bytes, needed for Head - txInfoValidRange :: BuiltinData - -- ^ The valid range for the transaction. - , txInfoSignatories :: [PubKeyHash] - -- ^ Signatures provided with the transaction, attested that they all signed the tx - , txInfoRedeemers :: BuiltinData - -- ^ A table of redeemers attached to the transaction - , txInfoData :: Map DatumHash Datum - -- ^ The lookup table of datums attached to the transaction - , txInfoId :: BuiltinData - -- ^ Hash of the pending transaction body (i.e. transaction excluding witnesses) - } - -makeIsDataIndexed ''TxInfo [('TxInfo, 0)] - --- * Script context - --- | The context that the currently-executing script can access. -data ScriptContext = ScriptContext - { scriptContextTxInfo :: TxInfo - -- ^ information about the transaction the currently-executing script is included in - , scriptContextPurpose :: ScriptPurpose - -- ^ the purpose of the currently-executing script - } - -makeIsDataIndexed ''ScriptContext [('ScriptContext, 0)] - --- * Utilities - --- | Get the list of 'TxOut' outputs of the pending transaction at --- a given script address. -scriptOutputsAt :: ScriptHash -> TxInfo -> [(OutputDatum, Value)] -scriptOutputsAt h p = - let flt TxOut{txOutDatum = d, txOutAddress = Address (ScriptCredential s) _, txOutValue} | s == h = Just (d, txOutValue) - flt _ = Nothing - in mapMaybe flt (txInfoOutputs p) -{-# INLINEABLE scriptOutputsAt #-} - --- | Get the total value locked by the given validator in this transaction. -valueLockedBy :: TxInfo -> ScriptHash -> Value -valueLockedBy ptx h = - let outputs = map snd (scriptOutputsAt h ptx) - in mconcat outputs -{-# INLINEABLE valueLockedBy #-} - --- | Find the input currently being validated. -findOwnInput :: ScriptContext -> Maybe TxInInfo -findOwnInput ScriptContext{scriptContextTxInfo = TxInfo{txInfoInputs}, scriptContextPurpose = Spending txOutRef} = - find (\TxInInfo{txInInfoOutRef} -> txInInfoOutRef == txOutRef) txInfoInputs -findOwnInput _ = Nothing -{-# INLINEABLE findOwnInput #-} - --- | Given a UTXO reference and a transaction (`TxInfo`), resolve it to one of the transaction's inputs (`TxInInfo`). -findTxInByTxOutRef :: TxOutRef -> TxInfo -> Maybe TxInInfo -findTxInByTxOutRef outRef TxInfo{txInfoInputs} = - find (\TxInInfo{txInInfoOutRef} -> txInInfoOutRef == outRef) txInfoInputs -{-# INLINEABLE findTxInByTxOutRef #-} - --- | The 'CurrencySymbol' of the current validator script. -ownCurrencySymbol :: ScriptContext -> CurrencySymbol -ownCurrencySymbol ScriptContext{scriptContextPurpose = Minting cs} = cs -ownCurrencySymbol _ = traceError "Lh" -- "Can't get currency symbol of the current validator script" -{-# INLINEABLE ownCurrencySymbol #-} From b0e27b29c21efa004fcc8f55f9f99de0db0832ad Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Thu, 31 Oct 2024 16:48:53 +0100 Subject: [PATCH 02/24] Fix finding the correct UTxO in increment mutation --- hydra-tx/test/Hydra/Tx/Contract/Increment.hs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/hydra-tx/test/Hydra/Tx/Contract/Increment.hs b/hydra-tx/test/Hydra/Tx/Contract/Increment.hs index 14a01a6dd3d..909b0d5f84e 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Increment.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Increment.hs @@ -12,8 +12,9 @@ import Test.Hydra.Tx.Mutation ( ) import Cardano.Api.UTxO qualified as UTxO -import Data.List qualified as List +import Data.Maybe (fromJust) import Hydra.Contract.Deposit (DepositDatum (..), DepositRedeemer (Claim)) +import Hydra.Contract.Deposit qualified as Deposit import Hydra.Contract.DepositError (DepositError (..)) import Hydra.Contract.Error (toErrorCode) import Hydra.Contract.HeadState qualified as Head @@ -156,7 +157,6 @@ genIncrementMutation :: (Tx, UTxO) -> Gen SomeMutation genIncrementMutation (tx, utxo) = oneof [ SomeMutation (pure $ toErrorCode DepositDeadlineSurpassed) DepositMutateDepositDeadline <$> do - let (depositIn, depositOut@(TxOut addr val _ rscript)) = UTxO.pairs (resolveInputsUTxO utxo tx) List.!! 1 let datum = txOutDatum $ flip modifyInlineDatum (toTxContext depositOut) $ \case @@ -166,7 +166,6 @@ genIncrementMutation (tx, utxo) = pure $ ChangeInput depositIn newOutput (Just $ toScriptData $ Claim (headIdToCurrencySymbol testHeadId)) , SomeMutation (pure $ toErrorCode WrongHeadIdInDepositDatum) DepositMutateHeadId <$> do otherHeadId <- arbitrary - let (depositIn, depositOut@(TxOut addr val _ rscript)) = UTxO.pairs (resolveInputsUTxO utxo tx) List.!! 1 let datum = txOutDatum $ flip modifyInlineDatum (toTxContext depositOut) $ \case @@ -175,3 +174,13 @@ genIncrementMutation (tx, utxo) = let newOutput = toCtxUTxOTxOut $ TxOut addr val datum rscript pure $ ChangeInput depositIn newOutput (Just $ toScriptData $ Claim (headIdToCurrencySymbol testHeadId)) ] + where + depositScript = fromPlutusScript @PlutusScriptV2 Deposit.validatorScript + + depositAddress = mkScriptAddress @PlutusScriptV2 testNetworkId depositScript + + (depositIn, depositOut@(TxOut addr val _ rscript)) = + fromJust $ + find + (\(_, TxOut address _ _ _) -> address == depositAddress) + (UTxO.pairs (resolveInputsUTxO utxo tx)) From 627b6ed1754b99846cf9dc7a36e6cb6f8331defc Mon Sep 17 00:00:00 2001 From: Daniel Firth Date: Thu, 31 Oct 2024 16:19:13 +0000 Subject: [PATCH 03/24] PlutusScriptV2 -> PlutusScriptV3 --- hydra-cardano-api/src/Hydra/Cardano/Api.hs | 16 +++--- .../src/Hydra/Cardano/Api/AddressInEra.hs | 4 +- .../src/Hydra/Cardano/Api/Hash.hs | 2 +- .../src/Hydra/Cardano/Api/PolicyId.hs | 2 +- .../src/Hydra/Cardano/Api/ReferenceScript.hs | 6 +-- .../src/Hydra/Cardano/Api/ScriptData.hs | 2 +- .../src/Hydra/Cardano/Api/ScriptHash.hs | 2 +- .../src/Hydra/Cardano/Api/TxBody.hs | 2 +- .../src/Hydra/Cardano/Api/TxIn.hs | 10 ++-- .../src/Hydra/Cardano/Api/TxOut.hs | 4 +- .../src/Hydra/Cardano/Api/Value.hs | 4 +- hydra-node/bench/tx-cost/TxCost.hs | 2 +- hydra-node/src/Hydra/Chain/Direct/State.hs | 21 ++++---- hydra-node/src/Hydra/Chain/Direct/Tx.hs | 36 ++++++------- hydra-node/src/Hydra/Chain/ScriptRegistry.hs | 4 +- .../test/Hydra/Chain/Direct/StateSpec.hs | 8 +-- .../src/Hydra/Plutus/Extras.hs | 52 ++++++++++++------- .../src/Hydra/Plutus/Orphans.hs | 2 +- hydra-plutus/exe/inspect-script/Main.hs | 4 +- hydra-plutus/scripts/mHead.plutus | 6 +-- hydra-plutus/scripts/vDeposit.plutus | 6 +-- hydra-plutus/scripts/vHead.plutus | 6 +-- hydra-plutus/scripts/vInitial.plutus | 6 +-- hydra-plutus/src/Hydra/Contract.hs | 2 +- hydra-plutus/src/Hydra/Contract/Commit.hs | 2 +- hydra-plutus/src/Hydra/Contract/Deposit.hs | 6 +-- hydra-plutus/src/Hydra/Contract/Head.hs | 11 ++-- hydra-plutus/src/Hydra/Contract/HeadState.hs | 2 +- hydra-plutus/src/Hydra/Contract/HeadTokens.hs | 19 +++---- hydra-plutus/src/Hydra/Contract/Initial.hs | 13 ++--- hydra-plutus/src/Hydra/Contract/Util.hs | 17 +----- .../src/Hydra/Data/ContestationPeriod.hs | 2 +- hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs | 8 +-- hydra-test-utils/src/Test/Plutus/Validator.hs | 6 +-- hydra-tx/src/Hydra/Tx/Abort.hs | 4 +- hydra-tx/src/Hydra/Tx/Close.hs | 4 +- hydra-tx/src/Hydra/Tx/CollectCom.hs | 6 +-- hydra-tx/src/Hydra/Tx/Commit.hs | 4 +- hydra-tx/src/Hydra/Tx/Contest.hs | 6 +-- hydra-tx/src/Hydra/Tx/Crypto.hs | 2 +- hydra-tx/src/Hydra/Tx/Decrement.hs | 4 +- hydra-tx/src/Hydra/Tx/Deposit.hs | 8 +-- hydra-tx/src/Hydra/Tx/Fanout.hs | 2 +- hydra-tx/src/Hydra/Tx/HeadId.hs | 2 +- hydra-tx/src/Hydra/Tx/Increment.hs | 6 +-- hydra-tx/src/Hydra/Tx/Init.hs | 4 +- hydra-tx/src/Hydra/Tx/IsTx.hs | 2 +- hydra-tx/src/Hydra/Tx/Recover.hs | 4 +- hydra-tx/src/Hydra/Tx/Snapshot.hs | 2 +- hydra-tx/src/Hydra/Tx/Utils.hs | 2 +- hydra-tx/test/Hydra/Tx/Contract/Abort.hs | 4 +- .../Hydra/Tx/Contract/Close/CloseInitial.hs | 2 +- .../Hydra/Tx/Contract/Close/CloseUnused.hs | 2 +- .../test/Hydra/Tx/Contract/Close/CloseUsed.hs | 2 +- .../test/Hydra/Tx/Contract/Close/Healthy.hs | 2 +- .../Tx/Contract/Contest/ContestCurrent.hs | 4 +- .../test/Hydra/Tx/Contract/ContractSpec.hs | 2 +- hydra-tx/test/Hydra/Tx/Contract/Increment.hs | 6 +-- hydra-tx/test/Hydra/Tx/Contract/Recover.hs | 2 +- hydra-tx/testlib/Test/Hydra/Tx/Mutation.hs | 6 +-- 60 files changed, 198 insertions(+), 191 deletions(-) diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api.hs b/hydra-cardano-api/src/Hydra/Cardano/Api.hs index 685237a7b8f..3311853452b 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api.hs @@ -11,7 +11,7 @@ -- also get rid of era witnesses. -- -- NOTE: This module also uses the **latest plutus version** available --- (currently 'PlutusScriptV2'). So make sure that you give it a plutus script +-- (currently 'PlutusScriptV3'). So make sure that you give it a plutus script -- of the right version (e.g. when compiling and serializing plutus-tx). module Hydra.Cardano.Api ( -- * Common type-alias @@ -232,7 +232,7 @@ pattern ShelleyKeyWitness{shelleyKeyWitness} <- -- ** PlutusScript -type PlutusScript = Cardano.Api.PlutusScript PlutusScriptV2 +type PlutusScript = Cardano.Api.PlutusScript PlutusScriptV3 {-# COMPLETE PlutusScriptSerialised #-} pattern PlutusScriptSerialised :: ShortByteString -> PlutusScript @@ -244,7 +244,7 @@ pattern PlutusScriptSerialised{plutusScriptSerialised} <- -- ** Script -type Script = Cardano.Api.Script PlutusScriptV2 +type Script = Cardano.Api.Script PlutusScriptV3 {-# COMPLETE PlutusScript #-} pattern PlutusScript :: PlutusScript -> Script @@ -252,7 +252,7 @@ pattern PlutusScript{plutusScript} <- Cardano.Api.Shelley.PlutusScript _ plutusScript where PlutusScript = - Cardano.Api.Shelley.PlutusScript PlutusScriptV2 + Cardano.Api.Shelley.PlutusScript PlutusScriptV3 -- ** ScriptInEra @@ -260,7 +260,7 @@ type ScriptInEra = Cardano.Api.ScriptInEra Era -- ** ScriptLanguage -type ScriptLanguage = Cardano.Api.ScriptLanguage PlutusScriptV2 +type ScriptLanguage = Cardano.Api.ScriptLanguage PlutusScriptV3 {-# COMPLETE PlutusScriptLanguage #-} pattern PlutusScriptLanguage :: ScriptLanguage @@ -268,7 +268,7 @@ pattern PlutusScriptLanguage <- Cardano.Api.Shelley.PlutusScriptLanguage _ where PlutusScriptLanguage = - Cardano.Api.Shelley.PlutusScriptLanguage PlutusScriptV2 + Cardano.Api.Shelley.PlutusScriptLanguage PlutusScriptV3 -- ** ScriptWitness @@ -289,7 +289,7 @@ pattern PlutusScriptWitness } <- Cardano.Api.PlutusScriptWitness _ - PlutusScriptV2 + PlutusScriptV3 (PScript plutusScriptWitnessScript) plutusScriptWitnessDatum plutusScriptWitnessRedeemer @@ -298,7 +298,7 @@ pattern PlutusScriptWitness PlutusScriptWitness = Cardano.Api.PlutusScriptWitness scriptLanguageInEra - PlutusScriptV2 + PlutusScriptV3 . PScript -- ** Tx diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/AddressInEra.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/AddressInEra.hs index 5e9c78c5abd..6f43fcd765f 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/AddressInEra.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/AddressInEra.hs @@ -8,13 +8,13 @@ import Cardano.Ledger.Credential qualified as Ledger import Cardano.Ledger.Hashes qualified as Ledger import Cardano.Ledger.Keys qualified as Ledger import Hydra.Cardano.Api.Network (Network) -import PlutusLedgerApi.V2 ( +import PlutusLedgerApi.V3 ( Address (..), Credential (..), StakingCredential (StakingHash, StakingPtr), fromBuiltin, ) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus -- * Extras diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/Hash.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/Hash.hs index c65af934b9b..d0cf74f01a1 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/Hash.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/Hash.hs @@ -7,7 +7,7 @@ import Cardano.Ledger.Plutus.TxInfo (transKeyHash) import Cardano.Ledger.SafeHash (unsafeMakeSafeHash) import Cardano.Ledger.Shelley.Scripts qualified as Ledger import Data.ByteString qualified as BS -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus -- * Type conversions diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/PolicyId.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/PolicyId.hs index 0e9b19c2b21..d4a0b8a5088 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/PolicyId.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/PolicyId.hs @@ -8,7 +8,7 @@ import Cardano.Ledger.Alonzo.Plutus.TxInfo qualified as Ledger import Cardano.Ledger.Hashes qualified as Ledger import Cardano.Ledger.Mary.Value qualified as Ledger import Hydra.Cardano.Api.ScriptHash () -import PlutusLedgerApi.V2 (CurrencySymbol, fromBuiltin, unCurrencySymbol) +import PlutusLedgerApi.V3 (CurrencySymbol, fromBuiltin, unCurrencySymbol) -- * Orphans diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/ReferenceScript.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/ReferenceScript.hs index 62da0c28a00..ecea1773f36 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/ReferenceScript.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/ReferenceScript.hs @@ -3,16 +3,16 @@ module Hydra.Cardano.Api.ReferenceScript where import Hydra.Cardano.Api.Prelude import Hydra.Cardano.Api.PlutusScript (fromPlutusScript) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus -- | Construct a 'ReferenceScript' from any given Plutus script. -- --- NOTE: The script is treated as a 'PlutusScriptV2' +-- NOTE: The script is treated as a 'PlutusScriptV3' mkScriptRef :: Plutus.SerialisedScript -> ReferenceScript Era mkScriptRef = ReferenceScript babbageBasedEra . toScriptInAnyLang - . PlutusScript PlutusScriptV2 + . PlutusScript PlutusScriptV3 . fromPlutusScript -- | Construct a PlutusV3 'ReferenceScript' from any given Plutus script. diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/ScriptData.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/ScriptData.hs index 40410d7a9eb..653addc62ba 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/ScriptData.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/ScriptData.hs @@ -13,7 +13,7 @@ import Data.Aeson (Value (String), withText) import Data.ByteString qualified as BS import Data.ByteString.Base16 qualified as Base16 import Data.Map qualified as Map -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus import Test.QuickCheck (arbitrarySizedNatural, choose, oneof, scale, sized, vector) -- * Extras diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/ScriptHash.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/ScriptHash.hs index fb13a6ba8e9..2477fb351b4 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/ScriptHash.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/ScriptHash.hs @@ -26,4 +26,4 @@ hashScriptInAnyLang (ScriptInAnyLang _ script) = instance Arbitrary ScriptHash where arbitrary = do - hashScript . PlutusScript PlutusScriptV2 <$> arbitrary + hashScript . PlutusScript PlutusScriptV3 <$> arbitrary diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/TxBody.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/TxBody.hs index c04c9e5743b..5e6284fadb0 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/TxBody.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/TxBody.hs @@ -18,7 +18,7 @@ import Data.Map qualified as Map import Hydra.Cardano.Api.PlutusScript (fromLedgerScript) import Hydra.Cardano.Api.PolicyId (toLedgerPolicyID, toLedgerScriptHash) import Hydra.Cardano.Api.TxIn (toLedgerTxIn) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus -- | Find and deserialise from 'ScriptData', a redeemer from the transaction -- associated to the given input. diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/TxIn.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/TxIn.hs index d2eda5c3026..0d2243b3241 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/TxIn.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/TxIn.hs @@ -6,11 +6,11 @@ import Hydra.Cardano.Api.Prelude import Cardano.Ledger.BaseTypes qualified as Ledger import Cardano.Ledger.Binary qualified as Ledger -import Cardano.Ledger.Plutus (transTxIn) +import Cardano.Ledger.Plutus (transSafeHash) import Cardano.Ledger.TxIn qualified as Ledger import Data.ByteString qualified as BS import Data.Set qualified as Set -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus import Test.QuickCheck (choose, vectorOf) -- * Extras @@ -54,7 +54,11 @@ fromPlutusTxOutRef (Plutus.TxOutRef (Plutus.TxId bytes) ix) = -- | Convert a cardano-api 'TxIn' into a plutus 'TxOutRef'. toPlutusTxOutRef :: TxIn -> Plutus.TxOutRef -toPlutusTxOutRef = transTxIn . toLedgerTxIn +toPlutusTxOutRef txIn = + -- XXX: The upstream 'transTxIn' works only with the the PlutusV1 type, so we + -- needed to vendor its definition here. + let (Ledger.TxIn (Ledger.TxId safe) txIx) = toLedgerTxIn txIn + in Plutus.TxOutRef (Plutus.TxId $ transSafeHash safe) (toInteger $ Ledger.txIxToInt txIx) -- * Arbitrary values diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/TxOut.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/TxOut.hs index 934ef3bf545..92454d5d79c 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/TxOut.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/TxOut.hs @@ -14,8 +14,8 @@ import Hydra.Cardano.Api.Hash (unsafeScriptDataHashFromBytes) import Hydra.Cardano.Api.Network (Network) import Hydra.Cardano.Api.ScriptData (toScriptData) import Hydra.Cardano.Api.Value (fromPlutusValue, minUTxOValue) -import PlutusLedgerApi.V2 (OutputDatum (..), fromBuiltin) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 (OutputDatum (..), fromBuiltin) +import PlutusLedgerApi.V3 qualified as Plutus -- * Extras diff --git a/hydra-cardano-api/src/Hydra/Cardano/Api/Value.hs b/hydra-cardano-api/src/Hydra/Cardano/Api/Value.hs index e5adf0f93ee..af4bc1a2c35 100644 --- a/hydra-cardano-api/src/Hydra/Cardano/Api/Value.hs +++ b/hydra-cardano-api/src/Hydra/Cardano/Api/Value.hs @@ -11,8 +11,8 @@ import GHC.IsList (IsList (..)) import Hydra.Cardano.Api.CtxUTxO (ToUTxOContext (..)) import Hydra.Cardano.Api.PolicyId (fromPlutusCurrencySymbol) import PlutusLedgerApi.V1.Value (flattenValue) -import PlutusLedgerApi.V2 (adaSymbol, adaToken, fromBuiltin, unTokenName) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 (adaSymbol, adaToken, fromBuiltin, unTokenName) +import PlutusLedgerApi.V3 qualified as Plutus -- * Extras diff --git a/hydra-node/bench/tx-cost/TxCost.hs b/hydra-node/bench/tx-cost/TxCost.hs index 22b671e7244..9847e5d7799 100644 --- a/hydra-node/bench/tx-cost/TxCost.hs +++ b/hydra-node/bench/tx-cost/TxCost.hs @@ -60,7 +60,7 @@ import Hydra.Ledger.Cardano.Evaluate ( import Hydra.Ledger.Cardano.Time (slotNoFromUTCTime) import Hydra.Plutus.Orphans () import Hydra.Tx.Snapshot (genConfirmedSnapshot) -import PlutusLedgerApi.V2 (toBuiltinData) +import PlutusLedgerApi.V3 (toBuiltinData) import PlutusTx.Builtins (lengthOfByteString, serialiseData) import Test.Hydra.Tx.Gen (genOutput, genUTxOAdaOnlyOfSize) diff --git a/hydra-node/src/Hydra/Chain/Direct/State.hs b/hydra-node/src/Hydra/Chain/Direct/State.hs index 796d35b2693..0f1b16f38cd 100644 --- a/hydra-node/src/Hydra/Chain/Direct/State.hs +++ b/hydra-node/src/Hydra/Chain/Direct/State.hs @@ -24,7 +24,6 @@ import Hydra.Cardano.Api ( NetworkId (Mainnet, Testnet), NetworkMagic (NetworkMagic), PaymentKey, - PlutusScriptV2, PlutusScriptV3, PolicyId, Quantity (..), @@ -439,9 +438,9 @@ abort ctx seedTxIn spendableUTxO committedUTxO = do commitScript = fromPlutusScript @PlutusScriptV3 commitValidatorScript - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript - initialScript = fromPlutusScript @PlutusScriptV2 Initial.validatorScript + initialScript = fromPlutusScript @PlutusScriptV3 Initial.validatorScript headTokenScript = mkHeadTokenScript seedTxIn @@ -473,7 +472,7 @@ collect ctx headId headParameters utxoToCollect spendableUTxO = do pure $ collectComTx networkId scriptRegistry ownVerificationKey headId headParameters headUTxO commits utxoToCollect where - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript commitScript = fromPlutusScript @PlutusScriptV3 commitValidatorScript @@ -520,8 +519,8 @@ increment ctx spendableUTxO headId headParameters incrementingSnapshot depositTx Left SnapshotIncrementUTxOIsNull | otherwise -> Right $ incrementTx scriptRegistry ownVerificationKey headId headParameters headUTxO sn (UTxO.singleton (depositedIn, depositedOut)) upperValiditySlot where - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript - depositScript = fromPlutusScript @PlutusScriptV2 Deposit.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript + depositScript = fromPlutusScript @PlutusScriptV3 Deposit.validatorScript Snapshot{utxoToCommit} = sn @@ -560,7 +559,7 @@ decrement ctx spendableUTxO headId headParameters decrementingSnapshot = do Left DecrementValueNegative Right $ decrementTx scriptRegistry ownVerificationKey headId headParameters headUTxO sn sigs where - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript decommitValue = foldMap txOutValue $ fromMaybe mempty $ utxoToDecommit sn @@ -613,7 +612,7 @@ recover ctx headId depositedTxId spendableUTxO lowerValiditySlot = do then Left InvalidHeadIdInRecover{headId} else Right $ recoverTx depositedTxId deposited lowerValiditySlot where - depositScript = fromPlutusScript @PlutusScriptV2 Deposit.validatorScript + depositScript = fromPlutusScript @PlutusScriptV3 Deposit.validatorScript ChainContext{networkId} = ctx -- | Construct a close transaction spending the head output in given 'UTxO', @@ -652,7 +651,7 @@ close ctx spendableUTxO headId HeadParameters{parties, contestationPeriod} openV } pure $ closeTx scriptRegistry ownVerificationKey headId openVersion confirmedSnapshot startSlotNo pointInTime openThreadOutput where - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript ChainContext{ownVerificationKey, scriptRegistry} = ctx @@ -721,7 +720,7 @@ contest ctx spendableUTxO headId contestationPeriod openVersion contestingSnapsh ChainContext{ownVerificationKey, scriptRegistry} = ctx - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript data FanoutTxError = CannotFindHeadOutputToFanout @@ -758,7 +757,7 @@ fanout ctx spendableUTxO seedTxIn utxo utxoToDecommit deadlineSlotNo = do ChainContext{scriptRegistry} = ctx - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript checkHeadDatum headUTxO@(_, headOutput) = do headDatum <- diff --git a/hydra-node/src/Hydra/Chain/Direct/Tx.hs b/hydra-node/src/Hydra/Chain/Direct/Tx.hs index 4d36e92edb7..49e31ed9b5f 100644 --- a/hydra-node/src/Hydra/Chain/Direct/Tx.hs +++ b/hydra-node/src/Hydra/Chain/Direct/Tx.hs @@ -50,8 +50,8 @@ import Hydra.Tx.Deposit (DepositObservation (..), observeDepositTx) import Hydra.Tx.OnChainId (OnChainId (..)) import Hydra.Tx.Recover (RecoverObservation (..), observeRecoverTx) import Hydra.Tx.Utils (assetNameToOnChainId, findFirst, hydraHeadV1AssetName, hydraMetadataLabel) -import PlutusLedgerApi.V2 (CurrencySymbol, fromBuiltin) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 (CurrencySymbol, fromBuiltin) +import PlutusLedgerApi.V3 qualified as Plutus import Test.Hydra.Tx.Gen () import Test.QuickCheck (vectorOf) @@ -212,7 +212,7 @@ observeInitTx tx = do guard $ isScriptTxOut headScript out (ix,out,) <$> (fromScriptData =<< txOutScriptData out) - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript indexedOutputs = zip [0 ..] (txOuts' tx) @@ -225,7 +225,7 @@ observeInitTx tx = do isInitial = isScriptTxOut initialScript - initialScript = fromPlutusScript @PlutusScriptV2 Initial.validatorScript + initialScript = fromPlutusScript @PlutusScriptV3 Initial.validatorScript mintedTokenNames pid = [ assetName @@ -304,7 +304,7 @@ observeCommitTx networkId utxo tx = do isSpendingFromInitial = any (\o -> txOutAddress o == initialAddress) (resolveInputsUTxO utxo tx) - initialAddress = mkScriptAddress @PlutusScriptV2 networkId initialScript + initialAddress = mkScriptAddress @PlutusScriptV3 networkId initialScript initialScript = fromPlutusScript Initial.validatorScript @@ -331,14 +331,14 @@ observeCollectComTx :: Maybe CollectComObservation observeCollectComTx utxo tx = do let inputUTxO = resolveInputsUTxO utxo tx - (headInput, headOutput) <- findTxOutByScript @PlutusScriptV2 inputUTxO headScript + (headInput, headOutput) <- findTxOutByScript @PlutusScriptV3 inputUTxO headScript redeemer <- findRedeemerSpending tx headInput oldHeadDatum <- txOutScriptData $ toTxContext headOutput datum <- fromScriptData oldHeadDatum headId <- findStateToken headOutput case (datum, redeemer) of (Head.Initial{parties, contestationPeriod}, Head.CollectCom) -> do - (newHeadInput, newHeadOutput) <- findTxOutByScript @PlutusScriptV2 (utxoFromTx tx) headScript + (newHeadInput, newHeadOutput) <- findTxOutByScript @PlutusScriptV3 (utxoFromTx tx) headScript newHeadDatum <- txOutScriptData $ toTxContext newHeadOutput utxoHash <- UTxOHash <$> decodeUtxoHash newHeadDatum pure @@ -376,8 +376,8 @@ observeIncrementTx :: Maybe IncrementObservation observeIncrementTx utxo tx = do let inputUTxO = resolveInputsUTxO utxo tx - (headInput, headOutput) <- findTxOutByScript @PlutusScriptV2 inputUTxO headScript - (TxIn depositTxId _, depositOutput) <- findTxOutByScript @PlutusScriptV2 utxo depositScript + (headInput, headOutput) <- findTxOutByScript @PlutusScriptV3 inputUTxO headScript + (TxIn depositTxId _, depositOutput) <- findTxOutByScript @PlutusScriptV3 utxo depositScript dat <- txOutScriptData $ toTxContext depositOutput Deposit.DepositDatum _ <- fromScriptData dat redeemer <- findRedeemerSpending tx headInput @@ -386,7 +386,7 @@ observeIncrementTx utxo tx = do headId <- findStateToken headOutput case (datum, redeemer) of (Head.Open{}, Head.Increment Head.IncrementRedeemer{}) -> do - (_, newHeadOutput) <- findTxOutByScript @PlutusScriptV2 (utxoFromTx tx) headScript + (_, newHeadOutput) <- findTxOutByScript @PlutusScriptV3 (utxoFromTx tx) headScript newHeadDatum <- txOutScriptData $ toTxContext newHeadOutput case fromScriptData newHeadDatum of Just (Head.Open Head.OpenDatum{version}) -> @@ -418,14 +418,14 @@ observeDecrementTx :: Maybe DecrementObservation observeDecrementTx utxo tx = do let inputUTxO = resolveInputsUTxO utxo tx - (headInput, headOutput) <- findTxOutByScript @PlutusScriptV2 inputUTxO headScript + (headInput, headOutput) <- findTxOutByScript @PlutusScriptV3 inputUTxO headScript redeemer <- findRedeemerSpending tx headInput oldHeadDatum <- txOutScriptData $ toTxContext headOutput datum <- fromScriptData oldHeadDatum headId <- findStateToken headOutput case (datum, redeemer) of (Head.Open{}, Head.Decrement Head.DecrementRedeemer{numberOfDecommitOutputs}) -> do - (_, newHeadOutput) <- findTxOutByScript @PlutusScriptV2 (utxoFromTx tx) headScript + (_, newHeadOutput) <- findTxOutByScript @PlutusScriptV3 (utxoFromTx tx) headScript newHeadDatum <- txOutScriptData $ toTxContext newHeadOutput case fromScriptData newHeadDatum of Just (Head.Open Head.OpenDatum{version}) -> @@ -462,14 +462,14 @@ observeCloseTx :: Maybe CloseObservation observeCloseTx utxo tx = do let inputUTxO = resolveInputsUTxO utxo tx - (headInput, headOutput) <- findTxOutByScript @PlutusScriptV2 inputUTxO headScript + (headInput, headOutput) <- findTxOutByScript @PlutusScriptV3 inputUTxO headScript redeemer <- findRedeemerSpending tx headInput oldHeadDatum <- txOutScriptData $ toTxContext headOutput datum <- fromScriptData oldHeadDatum headId <- findStateToken headOutput case (datum, redeemer) of (Head.Open Head.OpenDatum{parties}, Head.Close{}) -> do - (newHeadInput, newHeadOutput) <- findTxOutByScript @PlutusScriptV2 (utxoFromTx tx) headScript + (newHeadInput, newHeadOutput) <- findTxOutByScript @PlutusScriptV3 (utxoFromTx tx) headScript newHeadDatum <- txOutScriptData $ toTxContext newHeadOutput (closeContestationDeadline, onChainSnapshotNumber) <- case fromScriptData newHeadDatum of Just (Head.Closed Head.ClosedDatum{contestationDeadline, snapshotNumber}) -> @@ -512,14 +512,14 @@ observeContestTx :: Maybe ContestObservation observeContestTx utxo tx = do let inputUTxO = resolveInputsUTxO utxo tx - (headInput, headOutput) <- findTxOutByScript @PlutusScriptV2 inputUTxO headScript + (headInput, headOutput) <- findTxOutByScript @PlutusScriptV3 inputUTxO headScript redeemer <- findRedeemerSpending tx headInput oldHeadDatum <- txOutScriptData $ toTxContext headOutput datum <- fromScriptData oldHeadDatum headId <- findStateToken headOutput case (datum, redeemer) of (Head.Closed Head.ClosedDatum{}, Head.Contest{}) -> do - (newHeadInput, newHeadOutput) <- findTxOutByScript @PlutusScriptV2 (utxoFromTx tx) headScript + (newHeadInput, newHeadOutput) <- findTxOutByScript @PlutusScriptV3 (utxoFromTx tx) headScript newHeadDatum <- txOutScriptData $ toTxContext newHeadOutput let (onChainSnapshotNumber, contestationDeadline, contesters) = decodeDatum newHeadDatum pure @@ -554,7 +554,7 @@ observeFanoutTx :: Maybe FanoutObservation observeFanoutTx utxo tx = do let inputUTxO = resolveInputsUTxO utxo tx - (headInput, headOutput) <- findTxOutByScript @PlutusScriptV2 inputUTxO headScript + (headInput, headOutput) <- findTxOutByScript @PlutusScriptV3 inputUTxO headScript headId <- findStateToken headOutput findRedeemerSpending tx headInput >>= \case @@ -577,7 +577,7 @@ observeAbortTx :: Maybe AbortObservation observeAbortTx utxo tx = do let inputUTxO = resolveInputsUTxO utxo tx - (headInput, headOutput) <- findTxOutByScript @PlutusScriptV2 inputUTxO headScript + (headInput, headOutput) <- findTxOutByScript @PlutusScriptV3 inputUTxO headScript headId <- findStateToken headOutput findRedeemerSpending tx headInput >>= \case Head.Abort -> pure $ AbortObservation headId diff --git a/hydra-node/src/Hydra/Chain/ScriptRegistry.hs b/hydra-node/src/Hydra/Chain/ScriptRegistry.hs index 9236d1e46e0..9780f273493 100644 --- a/hydra-node/src/Hydra/Chain/ScriptRegistry.hs +++ b/hydra-node/src/Hydra/Chain/ScriptRegistry.hs @@ -87,9 +87,9 @@ publishHydraScripts networkId socketPath sk = do utxo <- queryUTxOFor networkId socketPath QueryTip vk let outputs = mkScriptTxOut pparams - <$> [ mkScriptRef Initial.validatorScript + <$> [ mkScriptRefV3 Initial.validatorScript , mkScriptRefV3 commitValidatorScript - , mkScriptRef Head.validatorScript + , mkScriptRefV3 Head.validatorScript ] totalDeposit = sum (selectLovelace . txOutValue <$> outputs) someUTxO = diff --git a/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs b/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs index 9e1dd2e009e..283aeb103f0 100644 --- a/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs +++ b/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs @@ -13,7 +13,7 @@ import Data.Set qualified as Set import Hydra.Cardano.Api ( CtxUTxO, NetworkId (Mainnet), - PlutusScriptV2, + PlutusScriptV3, Tx, TxIn, TxOut, @@ -118,7 +118,7 @@ import Hydra.Tx.Snapshot (ConfirmedSnapshot (InitialSnapshot, initialUTxO)) import Hydra.Tx.Snapshot qualified as Snapshot import Hydra.Tx.Utils (splitUTxO) import PlutusLedgerApi.Test.Examples qualified as Plutus -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus import Test.Aeson.GenericSpecs (roundtripAndGoldenSpecs) import Test.Hydra.Tx.Fixture (slotLength, systemStart, testNetworkId) import Test.Hydra.Tx.Gen (genOutput, genTxOut, genTxOutAdaOnly, genTxOutByron, genUTxO1, genUTxOSized) @@ -413,7 +413,7 @@ genCommitTxMutation utxo tx = (initialTxIn, initialTxOut) = fromMaybe (error "not found initial script") $ - UTxO.find (isScriptTxOut @PlutusScriptV2 initialScript) resolvedInputs + UTxO.find (isScriptTxOut @PlutusScriptV3 initialScript) resolvedInputs resolvedInputs = UTxO.fromPairs $ @@ -425,7 +425,7 @@ genCommitTxMutation utxo tx = initialScript = fromPlutusScript Initial.validatorScript - fakeScriptAddress = mkScriptAddress @PlutusScriptV2 testNetworkId fakeScript + fakeScriptAddress = mkScriptAddress @PlutusScriptV3 testNetworkId fakeScript fakeScript = fromPlutusScript $ Plutus.alwaysSucceedingNAryFunction 3 diff --git a/hydra-plutus-extras/src/Hydra/Plutus/Extras.hs b/hydra-plutus-extras/src/Hydra/Plutus/Extras.hs index 3ac01ce0b38..bf0b4de8ddf 100644 --- a/hydra-plutus-extras/src/Hydra/Plutus/Extras.hs +++ b/hydra-plutus-extras/src/Hydra/Plutus/Extras.hs @@ -17,44 +17,60 @@ import Cardano.Api ( ) import Cardano.Api.Shelley (PlutusScript (PlutusScriptSerialised)) import PlutusLedgerApi.Common (SerialisedScript) -import PlutusLedgerApi.V2 (ScriptHash (..)) +import PlutusLedgerApi.V3 ( + Datum (..), + ScriptContext (..), + ScriptHash (..), + ScriptInfo (..), + getRedeemer, + scriptContextRedeemer, + scriptContextScriptInfo, + ) import PlutusTx (BuiltinData, UnsafeFromData (..)) import PlutusTx.Prelude (BuiltinUnit, check, toBuiltin) -- * Vendored from plutus-ledger -- | Signature of an untyped validator script. -type ValidatorType = BuiltinData -> BuiltinData -> BuiltinData -> BuiltinUnit +type ValidatorType = BuiltinData -> BuiltinUnit -- | Wrap a typed validator to get the basic `ValidatorType` signature which can -- be passed to `PlutusTx.compile`. -- REVIEW: There might be better ways to name this than "wrap" wrapValidator :: - (UnsafeFromData datum, UnsafeFromData redeemer, UnsafeFromData context) => - (datum -> redeemer -> context -> Bool) -> + (UnsafeFromData datum, UnsafeFromData redeemer) => + (datum -> redeemer -> ScriptContext -> Bool) -> ValidatorType -wrapValidator f d r c = - check $ f datum redeemer context - where - datum = unsafeFromBuiltinData d - redeemer = unsafeFromBuiltinData r - context = unsafeFromBuiltinData c +wrapValidator f c = + let + context = unsafeFromBuiltinData c + in + check $ case scriptContextScriptInfo context of + SpendingScript _ (Just d) -> + let datum = unsafeFromBuiltinData $ getDatum d + redeemer = unsafeFromBuiltinData $ getRedeemer $ scriptContextRedeemer context + in f datum redeemer context + _ -> False {-# INLINEABLE wrapValidator #-} -- | Signature of an untyped minting policy script. -type MintingPolicyType = BuiltinData -> BuiltinData -> BuiltinUnit +type MintingPolicyType = BuiltinData -> BuiltinUnit -- | Wrap a typed minting policy to get the basic `MintingPolicyType` signature -- which can be passed to `PlutusTx.compile`. wrapMintingPolicy :: - (UnsafeFromData redeemer, UnsafeFromData context) => - (redeemer -> context -> Bool) -> + UnsafeFromData redeemer => + (redeemer -> ScriptContext -> Bool) -> MintingPolicyType -wrapMintingPolicy f r c = - check $ f redeemer context - where - redeemer = unsafeFromBuiltinData r - context = unsafeFromBuiltinData c +wrapMintingPolicy f c = + let + context = unsafeFromBuiltinData c + in + check $ case scriptContextScriptInfo context of + MintingScript _ -> + let redeemer = unsafeFromBuiltinData $ getRedeemer $ scriptContextRedeemer context + in f redeemer context + _ -> False {-# INLINEABLE wrapMintingPolicy #-} -- * Similar utilities as plutus-ledger diff --git a/hydra-plutus-extras/src/Hydra/Plutus/Orphans.hs b/hydra-plutus-extras/src/Hydra/Plutus/Orphans.hs index 95a9faeaec0..bf4d2514fa0 100644 --- a/hydra-plutus-extras/src/Hydra/Plutus/Orphans.hs +++ b/hydra-plutus-extras/src/Hydra/Plutus/Orphans.hs @@ -10,7 +10,7 @@ import Data.Aeson (object, withObject, (.:), (.=)) import Data.Aeson qualified as Aeson import Data.ByteString qualified as BS import Data.ByteString.Base16 qualified as Base16 -import PlutusLedgerApi.V2 (CurrencySymbol, POSIXTime (..), PubKeyHash (..), TokenName, TxId (..), TxOutRef (..), UpperBound, Value, upperBound) +import PlutusLedgerApi.V3 (CurrencySymbol, POSIXTime (..), PubKeyHash (..), TokenName, TxId (..), TxOutRef (..), UpperBound, Value, upperBound) import PlutusTx.AssocMap qualified as AssocMap import PlutusTx.Prelude (BuiltinByteString, Eq, fromBuiltin, toBuiltin) import Test.QuickCheck (choose, vectorOf) diff --git a/hydra-plutus/exe/inspect-script/Main.hs b/hydra-plutus/exe/inspect-script/Main.hs index 4abf1d79423..d4035def468 100644 --- a/hydra-plutus/exe/inspect-script/Main.hs +++ b/hydra-plutus/exe/inspect-script/Main.hs @@ -13,7 +13,7 @@ import Hydra.Contract.Head as Head import Hydra.Contract.HeadState as Head import Hydra.Contract.HeadTokens qualified as HeadTokens import Hydra.Contract.Initial as Initial -import PlutusLedgerApi.V2 (Data, SerialisedScript, toData) +import PlutusLedgerApi.V3 (Data, SerialisedScript, toData) import PlutusTx (getPlc) import PlutusTx.Code (CompiledCode) import Prettyprinter (defaultLayoutOptions, layoutPretty) @@ -54,7 +54,7 @@ main = do serialised = Aeson.encode $ serialiseToTextEnvelope (Just $ fromString itemName) $ - fromPlutusScript @PlutusScriptV2 item + fromPlutusScript @PlutusScriptV3 item BL.writeFile itemFile serialised putTextLn $ " " <> pack itemFile <> ": " <> sizeInKb (serialise item) diff --git a/hydra-plutus/scripts/mHead.plutus b/hydra-plutus/scripts/mHead.plutus index 05a233b8958..ee70e6b1248 100644 --- a/hydra-plutus/scripts/mHead.plutus +++ b/hydra-plutus/scripts/mHead.plutus @@ -1,5 +1,5 @@ { - "type": "PlutusScriptV2", - "description": "hydra-mHead-0.19.0-278-g357ed0364", - "cborHex": "5912f05912ed010000333232323322323322323322323232323232323232323232222225335325335323232325335333573400203c03a2244002264a66a666ae6800407c07844880084c08124103505431003370e900100199b8748000008d55cf0011aab9d0013754006266014921034d30360053353330082232333573400203a03866e3c008004c024004c02cd40048800884cc078894cd40044074884d4008894cd4c8ccd5cd00081101099b88001480004c01800c4080004406454cc8d4cc02d241034d303100323301f225335001101d22153353500a223500422325335333573400204a048264666ae68004098094cdc3802001081219b8f0040021020130040010013301e225335001101a22133501b350022200230040013500122222222222200c15332323232323235330114901034d30320032333573400204404266e1cc94cd4ccc04088c8ccd5cd00081281219b8f00200150073013008213002001148000c8cc88c88c008004c09c894cd4004400c884d400888cc020004c01800cc00488008c004880048cc00488cdc0001000a400066e0000520021325335330124901034d303300330252253350011023221350022232533533357340020520502602c0042600e00866e3c00801cd54014880044c94cd54cc8d4cc0512401034d30340032333573400204a04866e1c010cc0184488c88c008004c0a4894cd4004400c884cc018008c0100040044cc06494cd4ccc04c88c8ccd5cd00081401399b8f002001004001215335001130274901034d303800221350022253350031533532333573400205605466e1c0052002102a1302b491034d303800221302d491034d30380013026491034d303700001330262253350011022221335023350022200130040010011022153353301825333500115016215335301b00121330164901034d31320032333573400204e04c66e3c0040144c0992401034d31320021501733026225335001102222133502335002220023004001001133013491034d303500533532333573400204804666e3cc01088800c0084d4c01088800888d403c88c94cd4ccd5cd000814013899199ab9a0010290283370e008004204e66e3c010008408840884088cc01803802040854018c00488800554ccd4d54008880085404c854cd4cccccc05c00488c94c8c8c8c8c8cd4ccd5cd0030140138a99a9999aab9f0072502223232302533026002001357440126ae840200a884d4004894cd4c014008854cd4cccd55cf80112813119191814998150010009aba20043574200605c426a00244a66a66a01601800442a66a6666aae7c008940a88c8c8c0b4cc0b8008004d5d10021aba10030322135001225335302900221533533335573e0044a05c4646460620046ae88010d5d080181b10a99a9999998160009119299a999ab9a0010380371533533335573e0044a06446464606a6606c0040026ae88010d5d080181d109a80091299a9999998190011119299a999ab9a00103e03d1533533335573e0044a0704646460760046ae88010d5d080182010a99a981a80090981d0008a81c0a81b8a81b99b8748000008940d4940d4940d4940d4854cd4cccd55cf8011281b11919181c8011aba20043574200607c42a66a60300024260706606c0060022a06c2a06a2a0682a0622a06266e1d20000022502f2502f2502f2502f21303012222333300200f00b0070051300e4984c035261300c4984c02526130084984c01526130044984c00526130014988c94c8cd4ccd5cd0010150148a99a9999aab9f00925024232323027002357440166ae840280b0854cd4cccccc08800488c94cd4ccd5cd0008170168a99a9999aab9f0022502823232302b3302c002001357440086ae8400c0c084d4004894cd4c09c008854cd4cccd55cf80112816119191817998180010009aba200435742006068426a00244a66a66a02202400442a66a6666aae7c008940c08c8c8c0cccc0d0008004d5d10021aba10030382135001225335301300221533533335573e0044a06846464606e660700040026ae88010d5d080181e109a80091299a980c00110a99a9999aab9f0022503823232303b002357440086ae8400c100854cd4c0d400484c0e848ccccc004040030020010008540e0540dc540d8540cc540c8540bc540b8540ac540a85409c5409ccdc3a40000044a04a4a04a4a04a4a04a42604c24444600200a260049309800a4c260029311929919a999ab9a00202c02b1533533335573e0164a04c4646460520046ae88034d5d080601710a99a9999998120009119299a999ab9a00103002f1533533335573e0044a05446464605a6605c0040026ae88010d5d0801819109a80091299a981480110a99a9999aab9f0022502e23232303133032002001357440086ae8400c0d884d400488c94cd4cc00405400c854cd4cccd55cf8019281991919181b1981b8010009aba200535742008076426a00244a66a602c00442a66a6666aae7c008940dc8c8c8c0e8cc0ec008004d5d10021aba100303f2135001225335301b00221533533335573e0044a07646464607c6607e0040026ae88010d5d0801821909a80091299a980f80110a99a9999aab9f0022503f23232304233043002001357440086ae8400c11c84d4004894cd4c0f8008854cd4cccd55cf80112821919191823198238010009aba200435742006096426a00244a66a608400442a66a6666aae7c0089411c8c8c8c128cc12c008004d5d10021aba100304f21350012253353301904600221533533335573e0044a09646464609c0046ae88010d5d080182990a99a98168009098268919999999980081080e00c00a0080060040020010a8258a8250a8248a8230a8228a8210a8208a81f0a81e8a81d0a81c8a81b0a81a8a8190a818a8098a8168a8160a8148a81499b87480000089409c9409c9409c9409c84c0a048888c0100144c00926130014984c005262325335333573400205a0582604e244440062a04c66e1d200600c3370e900200519b87480080208cccccc07800488c94cd4ccd5cd0008150148a99a9999aab9f00225024232323027002357440086ae8400c0b0854cd4c01800484c098004540905408c5408ccdc3a40000044a0424a0424a0424a042466666603a00244a0424a0404a040460420024a040264464466666603e00244a0464a0440044a0444a0446052446666aae7c004801494cd4c010d5d080110a99a98021aba2003213025335027002001150231325023300335744004054603c0424a66a603400242603e0022a03a66e1d20000022501a2501a2501a2501a21533335001215015150142222132123330010040030023300711223223002001302a2253350011003221330060023004001003215015130214901034d3039002150142335500122337000029001240002a66a660020100062603c9201034d313100221533500110022213022491034d3131002233021225335001101d221325335350032222350042233500225023232533533357340020560542604a6604c00c00e2a04866e3c00403884cd40800040084004c010004d40048888888888880284c0280084068d4004880084064c8c8c8c94cd4ccd5cd00080e80e09919191919191991091980080180119191919299a999ab9a0010270261323232323232323232323323233323333323332332332222222222221233333333333300100d00c00b00a00900800700600500400300230013574202460026ae84040c00c8c8c8c8c94cd4ccd5cd00081d81d099910919800801801180e9aba10023006357426ae880084c0f124103505431003370e90000011aab9e00235573a0026ea8004cc00c004d5d0807119191919299a999ab9a00103a039132323233332222123333001005004003002323232325335333573400208208026644246600200600460446ae84008cc014084d5d09aba200213042490103505431003370e90000011aab9e00235573a0026ea8d5d080298049aba1003323232325335333573400208208022444006264a66a666ae680041081044c84888c004010dd71aba100313253353335734002086084264244460040086ae840104c11124103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa3574200466002eb8d5d09aba20022232323232533533357340020840822a076264a66a666ae6800410c1084c0f4c01cd5d08018982224903505431003370e900000199b8748008008d55cf0011aab9d00137540026ae88004d5d10010981da4903505431003370e90000011aab9e00235573a0026ea8004c004d5d080618009aba100b3002300275a660020266ae84024ccc00c051d69aba1008323232325335333573400207006e264646644246600200600464646464a66a666ae680040f80f44cc8848cc00400c008cc019d69aba10023005357426ae880084c0fd24103505431003370e90000011aab9e00235573a0026ea8d5d080219191919299a999ab9a00103e03d1332212330010030023300675a6ae84008c014d5d09aba20021303f490103505431003370e90000011aab9e00235573a0026ea8d5d09aba20042323232325335333573400207c07a207a264a66a666ae680040fc0f840fc4c10124103505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464a66a666ae680040f80f4448880084c94cd4ccd5cd00081f81f0990911180180218039aba10031325335333573400208007e224440022608292103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00113039490103505431003370e90000011aab9e00235573a0026ea8d5d080399800bae3574200c464460046eb0004c0dc88cccd55cf800901a119a81998021aba10023003357440040706660040220626ae84010cc0040c4d5d08019800bae2232230023756002606c446666aae7c00480cc8c8cd40cccc0c8c018d55ce80098029aab9e0013004357440066ae840080dcc050d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880084c0a1240103505431003370e90000011aab9e00235573a0026ea8d5d080418009aba135744010464646464a66a666ae6800409c0984c848888c00c014dd71aba10021325335333573400205004e26424444600200a60146ae8400c4c94cd4ccd5cd00081481409909111180100298049aba10041325335333573400205405226424444600800a60126ae840144c0ad24103505431003370e900300299b8748010010cdc3a400400666e1d200000235573c0046aae74004dd5000919191919299a999ab9a001026025132122222223005008300635742004264a66a666ae6800409c0984c848888888c01c020c01cd5d0801899299a999ab9a0010280271332212222222330060090083008357420086eb8d5d09aba2004132533533357340020520502664424444444660040120106eb8d5d08029bae357426ae880144c94cd4ccd5cd0008150148999109111111198008048041bae3574200c6eb4d5d09aba200613253353335734002056054224444444008264a66a666ae680040b00ac44888888800c4c0b524103505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0012323232325335333573400204a0482642446004006600c6ae840084c94cd4ccd5cd0008130128991999110911998008028020019bad357420086eb4d5d08009bad357426ae88004d5d100189813a4903505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464a66a666ae6800409008c4c8488c00800cdd71aba10021325335333573400204a04826424460020066eb8d5d080189813248103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464a66a666ae6800408c0884cc06cc018d5d08011bad357426ae880084c09124103505431003370e90000011aab9e00235573a0026ea80048c8c8c8c94cd4ccd5cd00081101089bae357420042604692103505431003370e90000011aab9e00235573a0026ea80044c079240103505431003370e90000011aab9e00235573a0026ea80045261301a49103505435003016225335001101422135002223253353335734002034032264666ae6800406c068cdc3801240042600e00866e3c00922010b48796472614865616456310022322300200130172253350011500f22135002225335330080020071301400113006003235001223233335002250022001250022500213263357389201024c68000162253350011012133573800402246a0024444444444440102601e921034d3132001300e491034d3039001300d491034d31300023223002001300f225335001100e2215335300500213004001100f2333333002001225006250052500525005230060012222223333333574800c4646600e6aae74004d55cf0009baa00723005375600e460086eb001c8c00cdd6803918011bae0070112212330010030022122300200311220012212330010030021220021221223300100400320011220021220012326335738002004240024646002002460044660040040029111c82f573e178979d107bbbdb65a44e8b22ec1798606a6e35c85d3db0d70048811c2253ddd95837c7aacc8635a971caaea743434152dd8dd2849bdf41620001" + "type": "PlutusScriptV3", + "description": "hydra-mHead-0.19.0-287-g0bd0171da", + "cborHex": "592b2d592b2a0101003332323232323232323232323232323232323232322222932323232553335734002226464646464646500132323232553335734002226464646464646464646464646464646466666666666646664664664444444444444445001010807c03a01b00c805c02a013008803c01a00b004801c00a00230013574202a60026ae8404cc0b08c8c8c8c954ccd5cd00088c004c084d5d08014c018d5d09aba200208981ea4903505431003370e90000011aab9e00235573a0026ea8004cc0b0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981a1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304849103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c109240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089822248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303075c6ae84d5d10008d5d10009aba200211303c490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0a805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089820248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304049103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089820a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae6800446008226084920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303a49103505431003370e90000011aab9e00235573a0026ea8d5d0805198153ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c10124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d001375400204e6ae84020cc00409cd5d08039bae3574200c66602c0306602c052464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022607a92103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605402a6ae84010c008d5d080198011aba135744006602aeb8c099d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422604c92103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980c80c1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302b49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a00111328049980f00f9aba10039aba10019980f3ae357426ae880046ae8800844c954ccd5cd00088c004cc07807cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606092103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093301f75c6ae84d5d1002044c954ccd5cd00088c01ccc080084d5d0802844c954ccd5cd0008899194034cc08c090d5d08044cc094050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0d5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981080100086ae88004d5d100308992a999ab9a00111802998110119aba1007991919192a999ab9a001113302675c6ae8400844c0d1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a00111801089818a4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c099240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009811911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301675a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc05dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089817a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089817248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a00111802089819a48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c09524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c08d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302149103505431003370e90000011aab9e00235573a0026ea8004d5d100108980da48103505431003370e90000011aab9e00235573a0026ea8006445200322500c92c992c991919192a999ab9a0011180108992a999ab9a00111800089810a4903505431003370e900100199b8748000008d55cf0011aab9d0013754009133014491034d303600593330122232333573400300080119b8f002001301300130159001911001a426603c44b200318004886400a44b264666ae6800600100233710002900044c01800e30020003180122b266028921034d303100323301e22590018c00a442b3201922900491192a999ab9a0011132333573400300080119b870040021180119b8f004002230008980200080026603a44b2003180048860072005220024c01000499001911001a44444444444444440208a999191919149980ca49034d30320032333573400300080119b8732593330182232333573400300080119b8f0020015006301b9007911001a4260040031480006466446446004002604a44b20031003910c801488cc020004c01800c90019100124006440028009119b80002001a4000337012b32a0072200245407642b26666660420024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0cc00a42b26666aae7c008a004464650010021aba20043574200700090ac99999981b00091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0ec00a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302c001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981880148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac981f800c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0b800488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26066005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c11c00a42b26666aae7c008a00450018009aba10039aba20032001219001912c982580148564cccd55cf80114008a0030013574200735744006400243200322593302b04f00290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981400091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999813800914008a004500228008008a004464466666605000245002280100114008a0046050446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302400190c00400518010cdc3a40000045002280114008a005215900190a80fc5407a44443001002800ccc0204488c88c008004c0a889640062007221330060023004001001a42a03e89811249034d30390048540792220012400513232593301b4901034d3033003302422590018c00a4432005223255333573400222603e00422600e00866e3c008020900191000a264b2b266038921034d30340032333573400300080119b8795990029100122a04121593333330240012232532323232325333573400c22b26666aae7c01ca00450018009aba10089aba20082001219001912c980280148564cccd55cf80114008a0030013574200735744006400243200322593300b00c00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e0045002232328008010d5d10021aba100380048564cccccc0e400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2607c005215933335573e0045002232328008010d5d10021aba100380048564c06000643001800801c0048c0091801230022300208c008cdc3a40000045002280114008a00521800c01402e00f00380091300e4991300d4991300c49889804a4c8980424c44c0152644c0112622600293044c005262325325333573400422b26666aae7c024a004464650010021aba200b3574201500090ac99999981780091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d000a42b26666aae7c008a00450018009aba10039aba20032001219001912c9980880900148564cccd55cf80114008a003001357420073574400640024320032259301300290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26030005215933335573e0045002232328008010d5d10021aba100380048564c10800643001800807c02e00f003800918012300246004460048c0088c009180111801230022300208c008cdc3a40000045002280114008a00521800c01c0048980124c89800a4c1130014988c94c94ccd5cd00108ac9999aab9f00b28011191940040086ae88034d5d0806400242b26666660620024464aa666ae680044564cccd55cf80114008a003001357420073574400640024320032259303600290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266026028005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c05400a42b26666aae7c008a00450018009aba10039aba20032001219001912c980d00148564cccd55cf80114008a003001357420073574400640024320032259301e00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26094005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c13800a42b26666aae7c008a00450018009aba10039aba20032001219001912c9981582900148564cccd55cf801140088c8ca002004357440086ae8400e0012159302c00190c00600203f01b80bc04e01f00b803c00e002460048c009180111801230022300246004460048c0088c009180111801230022300246004460048c0088c008230023370e900000114008a004500228014860030010012260049322600293044c005262325533357340022300180104600466e1d200600c3370e900200519b87480080208cccccc0ac00488c954ccd5cd00088ac9999aab9f00228011191940040086ae88010d5d0801c00242b2600c00321800800a3002460041180119b8748000008a00450022801140088cccccc0a80048a00450022801140040045002232233333302b0012280114008008a0045002302b2233335573e00250018000964c010d5d080148564c010d5d1001c8600300300280091801226500230033574400480012c9813800c860020028c00866e1d2000002280114008a004500290ac800c85408a2a0432222180080140066601622446446004002605a44b20031003910998030011802000800d21502244c095241034d303900485408522200119802889119118010009813912c800c400e4426600c00460080023302522590018c002443003900291000a60080021800c804c88800d13302125933301b2232333573400300080119b8f00200100400190ac800c4c0992401034d303800910c8014896400e2b264666ae680060010023370e0029001460011302a4901034d3038004884c0b12401034d3038001130254901034d30370019812912c800c6001221801c80148800530040010c00640264440068c009159330212590018a80fc8564c090006426603e9201034d31320032333573400300080119b8f001006898132481034d31320048540806604a44b2003180048860072005220024c01000430019009911001a2646603a9201034d3035005932333573400300080119b8f9001911001801233200322200248a404a4464aa666ae6800444c8ccd5cd000c00200466e1c0100084600466e3c0100088c008b320052200245408242b26666660480024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d800a42b26666aae7c008a004464650010021aba20043574200700090ac99999981c80091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0f800a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302f001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981a00148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac9821000c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0c400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c12800a42b26666aae7c008a00450018009aba10039aba20032001219001912c982700148564cccd55cf80114008a0030013574200735744006400243200322593302b05200290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981580091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999815000914008a004500228008008a004464466666605600245002280100114008a0046056446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302700190c00400518010cdc3a40000045002280114008a005215900190a81145408644443001002800ccc02c4488c88c008004c0b489640062007221330060023004001001a42a04489812a481034d30390048540851801230021803008460045004500580088cd5400488cdc0000a400490000ac998008054801c88800d1301e491034d313100910ac800c400a44260449201034d313100088cc08089640063000910992cc801c888a4012452005280148c954ccd5cd00088c00600200d00704600466e3c0040384860060030024400460080029001911111111111111100704c04c00460051801064646464aa666ae6800444c8c8c8c8c8c8ca00264646464aa666ae6800444c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccccccccccc8ccc8cc8cc888888888888888a00202100f807403601900b80540260110078034016009003801400460026ae84054c004d5d080998181191919192a999ab9a0011180098109aba100298031aba13574400411304149103505431003370e90000011aab9e00235573a0026ea8004cc0c0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981c1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304c49103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c119240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089824248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303475c6ae84d5d10008d5d10009aba2002113040490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0b805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089822248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304449103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089822a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae680044600822608c920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303e49103505431003370e90000011aab9e00235573a0026ea8d5d0805198173ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c11124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137540020566ae84020cc0040acd5d08039bae3574200c66602c0306602c05a464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022608292103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605c02a6ae84010c008d5d080198011aba135744006602aeb8c0a9d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422605492103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980e80e1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302f49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a0011132804998110119aba10039aba1001998113ae357426ae880046ae8800844c954ccd5cd00088c004cc08808cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606892103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093302375c6ae84d5d1002044c954ccd5cd00088c01ccc090094d5d0802844c954ccd5cd0008899194034cc09c0a0d5d08044cc0a4050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0e5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981280100086ae88004d5d100308992a999ab9a00111802998130139aba1007991919192a999ab9a001113302a75c6ae8400844c0e1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a0011180108981aa4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c0a9240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009813911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301a75a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc06dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089819a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089819248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a0011180208981ba48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c0a524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c09d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302549103505431003370e90000011aab9e00235573a0026ea8004d5d100108980fa48103505431003370e90000011aab9e00235573a0026ea801629345402d22500c92805c8940324a0161809911192a999ab9a001113016490103505433001132553335734002226600a66e05200000433702900000188994004cdc2002800ccdc20020008cc01801000ccdc40012400066e1c005200030122223255333573400222006226600800466e1800c008cdc3800a400026020920103505435002001223232323255333573400223002113255333573400223001300735742006113015490103505431003370e900000199b8748008008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411301249103505431003370e90000011aab9e00235573a0026ea80048c88c008dd60009807111999aab9f00128001400cc010d5d08014c00cd5d10012000601844b200318014886400a4464aa666ae6800444c8ccd5cd000c00200466e1c00920021130070043371e0049110b487964726148656164563100088c88c008004c03489640063002910c80148964cc02000801e300100144c01800c14800c888ca400a44a0072001912801c9400a44a00725002099319ab9c491024c6800800089640063000899ab9c0028010a40064444444444444444018130064901034d31320013005491034d30390013004491034d31300023223002001300522590018c002442b2600a005130040018c00823333330020012280114008a004500228008008888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801e000464c66ae7000600046460020024600446600400400291011cc12e89c8838224d72db401ba955e96134b3d7d920fdc33049c0569d80048811c00e0e6aceb51fcb4fcc5dc6032cc524a641163f0723b25d995de3ae80001" } diff --git a/hydra-plutus/scripts/vDeposit.plutus b/hydra-plutus/scripts/vDeposit.plutus index ac4fce2e5c9..907e6d1a7bc 100644 --- a/hydra-plutus/scripts/vDeposit.plutus +++ b/hydra-plutus/scripts/vDeposit.plutus @@ -1,5 +1,5 @@ { - "type": "PlutusScriptV2", - "description": "hydra-vDeposit-0.19.0-278-g357ed0364", - "cborHex": "590c15590c12010000323322333222323322323232323232323232323232323232323232323232323232323232323232323232222533533332322223233500325335353530075002220012253335002213300949010344303100333573466e24004d40208880080d80d44c06924103443032001301a4910344303200133006490103443036003301d00135005222003103225335353530075002220022253335002213300949010344303400333573466e24004d40208880080d40d84c06924103443033001301a4910344303300133006490103443035003301d3724603c66a0160026aa0044444444444440146e48c098c08cc0a8d401488800440c84d400488008894cd400440bc4cd5ce00101711a800911111111111002991919299a999ab9a3370e9000001017817099191919299a999ab9a3370e9000001019819099199911091998008020018011bae357420046eb4d5d080098029aba1357440026ae880044c060064d55cf0011aab9d00137546ae84008c02c8c8c8c94cd4ccd5cd19b87480000080cc0c84cc8848cc00400c008c04cd5d08009bae357426ae880044c060064d55cf0011aab9d00137540022602802a6aae78008d55ce8009baa0033232325335333573466e1d200000202f02e1321223002003375c6ae8400454cd4ccd5cd19b87480080080bc0b84c8488c00400cdd69aba10011301401535573c0046aae74004dd5001191919299a999ab9a3370e9000001017817099910919800801801191919299a999ab9a3370e9000001019018899191919191919191919199999999999911111111111091999999999998008068060058050048040038030028020018011980c00d9aba100b3301801b357420146603003c6ae84024ccc091d728119aba100833302475ca0466ae8401ccc060068d5d080319981200fbad3574200a646464a66a666ae68cdc3a400000407e07c266442466002006004646464a66a666ae68cdc3a40000040840822664424660020060046603aeb4d5d0800980e1aba1357440022604e0506aae78008d55ce8009baa35742002646464a66a666ae68cdc3a40000040840822664424660020060046603aeb4d5d0800980e1aba1357440022604e0506aae78008d55ce8009baa357426ae880044c090094d55cf0011aab9d00137546ae84010cc061d71aba100333302401901535742004666048eb8054d5d0800980e9aba1357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10008980b80c1aab9e00235573a0026ea8d5d080098061aba1357440022602802a6aae78008d55ce8009baa001101a13011491035054350033029221225335333573466e24009200002c02b10261533500110262213350270023353006120013370200890010008900090009191919299a999ab9a3370e900000101501488148a99a999ab9a3370e90010010150148815098078081aab9e00235573a0026ea800488c8c8c94cd4ccd5cd19b87480000080a80a44488800854cd4ccd5cd19b87480080080a80a44c84888c00c010c014d5d08008a99a999ab9a3370e900200101501488911000898078081aab9e00235573a0026ea80048c88c008dd60009813111999aab9f0012022233502130043574200460066ae880080408c8c8c94cd4ccd5cd19b874800000809c0984c848888c00c014dd71aba100115335333573466e1d20020020270261321222230010053007357420022a66a666ae68cdc3a400800404e04c26424444600400a60146ae8400454cd4ccd5cd19b874801800809c0984c848888c010014c014d5d0800898060069aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080980944c848888888c014020c024d5d08008a99a999ab9a3370e900100101301289909111111180380418049aba100115335333573466e1d20040020260251332212222222330060090083009357420026eb8d5d09aba200115335333573466e1d2006002026025133221222222233002009008375c6ae84004dd71aba1357440022a66a666ae68cdc3a401000404c04a2664424444444660020120106eb8d5d08009bad357426ae8800454cd4ccd5cd19b874802800809809444888888801054cd4ccd5cd19b874803000809809444888888800c4c02c030d55cf0011aab9d00137540024646464a66a666ae68cdc3a400000404a048266442466002006004600a6ae84004c01cd5d09aba20011300a00b35573c0046aae74004dd50009191919299a999ab9a3370e900000101201189991091980080180118029aba1001375a6ae84d5d1000898048051aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b874800000808c0884dd71aba10011300800935573c0046aae74004dd5000991191919299a999ab9a3370e90000010118110991919999111091999800802802001801191919299a999ab9a3370e900000101401389991091980080180118061aba10013300a00b357426ae880044c034038d55cf0011aab9d00137546ae8400cccc035d728061aba10023232325335333573466e1d20000020280271122200315335333573466e1d200200202802713212223001004375c6ae8400454cd4ccd5cd19b87480100080a009c4c84888c008010d5d0800898068071aab9e00235573a0026ea8d5d080099803bae357426ae88004d5d10009aba20011300800935573c0046aae74004dd500091191919299a999ab9a3370e900100101181108910008a99a999ab9a3370e9000001011811099091180100198029aba10011300800935573c0046aae74004dd50009191919299a999ab9a3370e9000001010810099091180100198029aba100115335333573466e1d2002002021020132333222122333001005004003375a6ae84008dd69aba1001375a6ae84d5d10009aba20011300600735573c0046aae74004dd50009191919299a999ab9a3370e900000101000f89909118010019bae357420022a66a666ae68cdc3a400400404003e26424460020066eb8d5d0800898028031aab9e00235573a0026ea80048c98cd5ce000802a49035054310013300175ceb488c88c008dd5800980d911999aab9f001201723233501733221233001003002300635573a002600a6aae78004c010d5d10019aba10020051200122333573466e3c00800406005cc058894cd4004402c884cdc51bb33500222223374a900019aba035004223374a900019aba0300b00233574066018466a002466e952000335740601a0026ec403c888cdd2a400466ae80dd400199aba0375000466ae80dd40009bb1011001376201a66ae80ccc031d4998063a92375000200666ae814ccd40084cdd2a40006ec402c84cdd2a400866ae80004dd88061099ba548008cd5d01ba9001376201866ae80cc029d48009bb100b3004001233500123374a900019aba037520026ec40108cdd2a400466ae80dd48009bb1004225335001213374a900019aba030030013762008266e952002376200693111911ba630020013014223350014bd6f7b630111a8011119aba0337606010004600e002600c006602244a66a002260046006018442a66a0022004442600c600e00a602044a66a0022016442a66a002200644266a01c6600e008004600c002601e444a66a0042002442a66a006200864442a666a6602200a0042a006266a01e0046601000e0022a006266a0180046600a002006601c44a66a00220064426a0044466e28004c01800d22010035003222001350022220023500122200333230010012212323330022300222230030042300222230020042300222230010042353300400400335003001122223330042533500113350060070072215335001133500800300922153233353300d00500315001133300800333500b00500c002150011333006002233500b00500100122253350011335008335008003002300600932221533353300d00600215003133300800233500b0060050011500313350083350080030023006001222532335002130014988854c8ccd4cc03801c00c540044c011261500113330070022300633500c0070010012335009300333500900400a30070021220021221223300100400332223500222350022235005223500222533353300b00600215335333573466e1c01400404003c403854cd4ccd5cd19b8900500101000f100c100d13300b00600213300b006002225335333573466e3c00800401c018401454cd4ccd5cd19b91002001007006100310041222003122200212220011220021220012323001001230022330020020011" + "type": "PlutusScriptV3", + "description": "hydra-vDeposit-0.19.0-287-g0bd0171da", + "cborHex": "5912fe5912fb0100003233223332223233223232323232323232323232323232323232323232323232323232323232323223235300100222233333350012230154910350543500230144910350543500223015490103505435002301449103505435002253350012153353322323353232325335333573466e1d20000020350341321223002003375c6ae8400454cd4ccd5cd19b87480080080d40d04c8488c00400cdd69aba10011301c01835573c0046aae74004dd50041299a9a9a9808a80111000912999a8011099809a490344303100333573466e24004d401c8880080d80d44c07124103443032001301c4910344303200133010490103443036003301c00135004222003103225335353530115002220022253335002213301349010344303400333573466e24004d401c8880080d40d84c07124103443033001301c4910344303300133010490103443035003301c3724603a66a0320026aa004444444444444444401c6e48c098c08cc0a8d401088800440c84d400488800cc8c8c94cd4ccd5cd19b87480000080c80c44c8c8c8c94cd4ccd5cd19b87480000080d80d44c8ccc88848ccc00401000c008dd71aba1002375a6ae84004c014d5d09aba2001357440022603a0326aae78008d55ce8009baa35742004602c4646464a66a666ae68cdc3a400000406c06a26644246600200600460206ae84004dd71aba1357440022603a0326aae78008d55ce8009baa0011301901535573c0046aae74004dd50009803804080e0980b249035054350013015491035054350023014491035054350032323232323232323223232325335333573466e1d2000002035034132333222123330010040030023232325335333573466e1d2000002039038132323232323232323232323232323333333333333333222222222222222212333333333333333300101101000f00e00d00c00b00a0090080070060050040030023302b01a3574201e660560346ae84038cc0ac06cd5d08069bad3574201866603eeb94078d5d08059981580c1aba100a33301f01c75a6ae84024c8c8c94cd4ccd5cd19b87480000081281244cc8848cc00400c008c8c8c94cd4ccd5cd19b87480000081341304cc8848cc00400c008cc0b9d69aba1001302d357426ae880044c0d00c0d55cf0011aab9d00137546ae84004c8c8c94cd4ccd5cd19b87480000081341304cc8848cc00400c008cc0b9d69aba1001302d357426ae880044c0d00c0d55cf0011aab9d00137546ae84d5d1000898188169aab9e00235573a0026ea8d5d080419815bae3574200e66603e4646464a66a666ae68cdc3a40000040960942642444444600a00e6eb8d5d08008a99a999ab9a3370e90010010258250990911111180100398129aba100115335333573466e1d200400204b04a132122222230030073020357420022a66a666ae68cdc3a400c0040960942664424444446600c01000e6eb4d5d0800980e1aba1357440022a66a666ae68cdc3a40100040960942642444444600200e603a6ae8400454cd4ccd5cd19b874802800812c1284cc884888888cc01002001cdd69aba1001301b357426ae880044c0c80b8d55cf0011aab9d001375400204c6ae84018ccc07dd70131aba1005375c6ae84010ccc07c064cc07c0a48c8c8c94cd4ccd5cd19b874800000812c1284488800854cd4ccd5cd19b874800800812c1284488800454cd4ccd5cd19b874801000812c1284488800c4c0c80b8d55cf0011aab9d00137540026ae8400ccc0ac05cd5d08011980ebad357420026603aeb4d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c080070d55cf0011aab9d00137546ae84008d5d0800991919299a999ab9a3370e900000101c81c099091111118028039bae357420022a66a666ae68cdc3a40040040720702664424444446600401000e60266ae84004cc03c060d5d09aba200115335333573466e1d200400203903813212222223003007300e357420022a66a666ae68cdc3a400c0040720702664424444446600c01000e6eb4d5d080098051aba1357440022a66a666ae68cdc3a40100040720702642444444600200e60166ae8400454cd4ccd5cd19b87480280080e40e04cc884888888cc01002001cdd69aba10013009357426ae880044c080070d55cf0011aab9d00137546ae84d5d10009aba20011301c01835573c0046aae74004dd50009191919299a999ab9a3370e900000101a019899199911091998008020018011bad3574200460146ae84004c8c8c94cd4ccd5cd19b87480000080e00dc4c8ccc88848888888ccc00c028024020cc03c06cd5d08011aba10013300f75c6ae84d5d10009aba200115335333573466e1d20020020380371332212222222330070090083300e01a35742002646464a66a666ae68cdc3a40000040760742664424660020060046eb4d5d08009bad357426ae880044c088078d55cf0011aab9d00137546ae84d5d10008a99a999ab9a3370e900200101c01b899910911111119801004804199808006bad357420026601ceb8d5d09aba200115335333573466e1d20060020380371321222222230040083300e01a357420022a66a666ae68cdc3a401000407006e2646466664444244444446666002016014012010660200386ae8400ccc07803cd5d0801199809007bad357420026a646464a66a666ae68cdc3a400000407a0782660586eb4d5d08009bad357426ae880044c090080d55cf0011aab9d00137546ae84d5d1000911980b8010009aba2001357440022a66a666ae68cdc3a401400407006e26644244444446600a0120106601c0346ae84004c8c8c94cd4ccd5cd19b87480000080ec0e84cc045d71aba10011302201e35573c0046aae74004dd51aba1357440022a66a666ae68cdc3a401800407006e22444444400c2603e0366aae78008d55ce8009baa357426ae88004d5d10008980d80b9aab9e00235573a0026ea8004c88c8c8c94cd4ccd5cd19b87480000080d00cc4cc88488888888888cc014034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b87480080080d00cc4cc88488888888888cc008034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b87480100080d00cc4cc88488888888888cc028034030c024d5d080098029aba1357440022a66a666ae68cdc3a400c00406806626466644424444444444466600c01c01a01860146ae84008c018d5d08009bad357426ae88004d5d10008a99a999ab9a3370e900400101a019899910911111111111980380680618049aba1001375a6ae84d5d10008a99a999ab9a3370e900500101a019899091111111111180080618049aba100115335333573466e1d200c002034033133221222222222223300300d00c3009357420026eb4d5d09aba200115335333573466e1d200e002034033133221222222222223300900d00c375c6ae84004dd71aba1357440022a66a666ae68cdc3a4020004068066266442444444444446601001a0186eb8d5d08009bad357426ae8800454cd4ccd5cd19b87480480080d00cc4cc88488888888888cc02c034030c024d5d080098049aba1357440022a66a666ae68cdc3a4028004068066264244444444444600801860126ae840044c06c05cd55cf0011aab9d0013754002644646464a66a666ae68cdc3a4000004068066264244460060086eb8d5d08008a99a999ab9a3370e900100101a0198990911180080218029aba100115335333573466e1d200400203403313322122233002005004375c6ae84004c014d5d09aba20011301b01735573c0046aae74004dd50009191919299a999ab9a3370e90000010198190990911180180218041aba100115335333573466e1d20020020330321122200215335333573466e1d2004002033032112220011301a01635573c0046aae74004dd50009191919299a999ab9a3370e90000010190188990911180180218039aba100115335333573466e1d2002002032031132122230020043007357420022a66a666ae68cdc3a4008004064062264244460020086eb8d5d08008980c80a9aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080c40c04cc8848cc00400c008c02cd5d080098029aba135744002260300286aae78008d55ce8009baa00123232325335333573466e1d200000203002f13232333322221233330010050040030023232325335333573466e1d2000002035034133221233001003002300a35742002660164646464a66a666ae68cdc3a40000040720702642446004006601c6ae8400454cd4ccd5cd19b87480080080e40e04c8ccc888488ccc00401401000cdd69aba1002375a6ae84004dd69aba1357440026ae880044c080070d55cf0011aab9d00137540026ae84d5d10008980e00c1aab9e00235573a0026ea8d5d08019998053ae500935742004646464a66a666ae68cdc3a400000406a068224440062a66a666ae68cdc3a400400406a068264244460020086eb8d5d08008a99a999ab9a3370e900200101a81a099091118010021aba10011301c01835573c0046aae74004dd51aba10013300875c6ae84d5d10009aba2001357440022602e0266aae78008d55ce8009baa00123232325335333573466e1d200000202f02e1321223002003375c6ae8400454cd4ccd5cd19b87480080080bc0b84c8488c00400cdd71aba10011301601235573c0046aae74004dd500091191919299a999ab9a3370e900100101781708910008a99a999ab9a3370e9000001017817099091180100198029aba10011301601235573c0046aae74004dd5000899800bae75a4464460046eac004c0ac88cccd55cf800901391919a8139980e98031aab9d001300535573c00260086ae8800cd5d080100a1191919299a999ab9a3370e90000010150148999109198008018011bae357420026eb4d5d09aba20011301100d35573c0046aae74004dd50009813111299a999ab9a3370e00201a05004e2601e9201035054330015335333573466e200040340a009c4cc00ccdc080680119b8100d001132332212330010030023370800600266e10008004cc010008004c0948894cd4ccd5cd19b8700100c02702610021330030013370c00400244a66a002204a266ae700080908d4004888888888888888802480048c8c8c94cd4ccd5cd19b874800000809008c408c54cd4ccd5cd19b874800800809008c40904c02c01cd55cf0011aab9d001375400244646464a66a666ae68cdc3a4000004048046224440042a66a666ae68cdc3a400400404804626424446006008600a6ae8400454cd4ccd5cd19b874801000809008c448880044c02c01cd55cf0011aab9d00137540024646464a66a666ae68cdc3a40000040440422664424660020060046eb8d5d08009bad357426ae880044c024014d55cf0011aab9d00137540029210350543100232230023758002603c446666aae7c00480688cd4064c010d5d080118019aba200200748000cc06c884894cd4ccd5cd19b8900248000078074406054cd40044060884cd4064008cd4c01848004cdc08022400400224002464c66ae700040084800488ccd5cd19b8f0020010190183017225335001100c221337146eccd40088888cdd2a400066ae80d401088cdd2a400066ae80c02c008cd5d019806119a800919ba548000cd5d018068009bb100f2223374a900119aba0375000666ae80dd400119aba037500026ec4044004dd880699aba033300c75266018ea48dd400080199aba05333500213374a90001bb100b213374a900219aba000137620184266e9520023357406ea4004dd880619aba03300a7520026ec402cc0100048cd40048cdd2a400066ae80dd48009bb100423374a900119aba037520026ec4010894cd400484cdd2a400066ae80c00c004dd8802099ba548008dd8801a4c446446e98c008004c05488cd40052f5bded8c0446a0044466ae80cdd8180400118038009803001910919800801801180891299a800898011801806110a99a800880111098031803802980811299a8008805910a99a800880191099a8071980380200118030009807911299a8010800910a99a801880219110a999a998088028010a801899a807801198040038008a801899a80600119802800801980711299a80088019109a8011119b8a00130060034890035003222001350022220023500122200333230010012212323330022300222230030042300222230020042300222230010042353300400400335003001122223330042533500113350060070072215335001133500800300922153233353300d00500315001133300800333500b00500c002150011333006002233500b00500100122253350011335008335008003002300600932221533353300d00600215003133300800233500b0060050011500313350083350080030023006001222532335002130014988854c8ccd4cc03801c00c540044c011261500113330070022300633500c0070010012335009300333500900400a30070021220021221223300100400332223500222350022235005223500222533353300b00600215335333573466e1c01400404003c403854cd4ccd5cd19b8900500101000f100c100d13300b00600213300b006002225335333573466e3c00800401c018401454cd4ccd5cd19b91002001007006100310041222003122200212220011220021220012323001001230022330020020011" } diff --git a/hydra-plutus/scripts/vHead.plutus b/hydra-plutus/scripts/vHead.plutus index f64903b91c6..404966ffc43 100644 --- a/hydra-plutus/scripts/vHead.plutus +++ b/hydra-plutus/scripts/vHead.plutus @@ -1,5 +1,5 @@ { - "type": "PlutusScriptV2", - "description": "hydra-vHead-0.19.0-278-g357ed0364", - "cborHex": "592a2a592a2701000032323322333222323322323232323233223232323232332232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323333222232323232323232323232323232323232323232323232323232323232322225335323232532333350043232323232215333333350091306a49884c1ad261306a498c8c8c8c8c8c8854cd4c069403454cd54cd4ccd5cd19b8735302f00f222222222006500208c0108b01108c0113357389201034831330008b01153355335333573466e25402cd402088888888801422c04230044230044cd5ce249034833310008b01153353350012533533300f500633333301750045003500c353030010222222222004302a08701353030010222222222003001108d011335738921034833390008c012253355335333573466e3cd4c0c404488888888800cc0ac2200423804234044ccc041401ccccccc0614014cdc0a80224004a01a6a6062022444444444008605611002002004211a02211c02266ae71241034834300008d01153353302100f50031533553353323223002001308f01225335001108f012215335333573466e3c01400824404240044240044c010005403140104230044cd5ce2481034833380008b0115335353535500d222222222222005220012253335002215335333573466e24005402823c0423804423c044cd5ce249034833320008e011505515055153355335333501d07a500933508501500c5004108c011335738921034833360008b01153355335333573466e1cc19d4024c1a140282300422c0454cd4ccd5cd19b8735302f00f222222222001500708c0108b01108c0113357389201034833340008b0115335333573466e1cd4c0bc03c888888888004cdc02803a8030460084580884600899ab9c4901034833350008b011533533301c3308001500a5005330800135302f00f2222222220075006330800135302f00f2222222220095003153353302c5335303c00f21353500122001222200310860135533535500d22222222222200a130640272210022222003108c01133573892010248340008b01108b01108b01108b01108b01108b01108b01108b01108b01108b01108b0113500622222222200613500522222222200913500422222222200213500322222222200813500222222222200713500122222222200121306b498884d4028894cd4ccc06cd4008888888888888020d4014888888888024d4014888888888020c854cd54cd4ccd5cd19b8f302733501700550013500622222222200408a0108901108a011335738921034834310008901153355335333573466e3cd401888888888800cc09cc8cd4060014004cd408c015400422804224044228044cd5ce24810348343200089011353535003222222222222005220022253335002215335333573466e24004d402488888888800423004234044234044cd5ce249034834330008c01150691506910890110890113500222222222222200a10880121306b4984d4c0980188888888880084d4c0940148888888880204d4c09001088888888801454cd4d540048888888888880104c1212622153350011002221304c4984d4008880084c19126222323232215323333333500b1500121500213500a225332355335333573466e3cd4c0b803488888004c0a4d5400488800c22804224044228044cd5ce249034831370008901153355335333573466e1d200035302e00d2222200208a0108901108a01133573892010348323000089011533533301a3307e35302e00d2222200400a3307e35302e00d2222200300b3307e35302e00d222220050091533553353302453353500322222222222200a108401221306b0013232333074076002305200135004222222222222009355001222001108a01133573892103483139000890115335533530085335303a00d213535001220012222003108401108a011335738921034831360008901153355335333573466e1cd54004888008c1ac02822804224044228044cd5ce249034831380008901153353301f00d00913018003108901108901108901108901108901108901130063500222222222222200c1088012150022150022215003215002153333333500a13500922533533301a3500222222222222200800700832153353301e00c0081533533077302850013026335016306750013500322222222222200a1089011335738921034831350008801108801133004082013500222222222222200c10870121306c4984c1ad2621306c49884c1b126221306d49884c1b1263086012232253350011003221350022253353304500b001133008300630490010031330080070033088012253350011003221335083010023004001308501225335001133304307f480001fc884c8d400c88d400c8c8894cd4cc0ecd40148888010d4d4c0f4044880048888010401c54cd4cc11c0340144ccc130c00cc12c014cdc02400400400226660980080046660ec0f00026a00a4444006611a0244a66a002200644266a110020046008002600800261080244a66a0022106024426a00444a66a666ae68cdc7801003844008438089834000898030019919191910a9999999a80409834a4c6464646442a66a602ea0142a66aa66a666ae68cdc499b81353535500a222222222222005220012253335002210011506f1506f353535500a222222222222005220022253335002210011506e1506e5004089010880110890113357389201034832320008801153355335333573466e1cd4c0b0030888888888004c8d403488d4d4d400888888888888801488004894ccd400884cdc00008030a8380a83828020448084400884480899ab9c4901034832330008801153353301e00c5003153355335333573466e1cd4c0b0030888888888019400822404220044224044cd5ce24810348313300088011533553335001153355335333573466e1d20005002089010880115335333573466e1d200035302c00c22222222200508901088011333573466e3cd4c0b0030888888888010d40188888800422404220044220044220044224044cd5ce248103483238000880121533533300c50063333330145004500335302d00d22222222200535302d00d22222222200430270840135302d00d222222222003001108a011335738920103483239000890122153355335333573466e3cd4c0b803888888888800cc0a02140422c04228044ccc035401ccccccc0554014cdc0a802240046a605c01c44444444400a6a605c01c444444444008605010a02002004211402211602266ae71241034833300008a01153355335533535302c00c22222222200210890122108a0110890113357389201034832360008801153355335330295335303900c21353500122001222200310830135533535500a22222222222200a13061024221002222200310890113357389201024834000880113330193307d35302c00c22222222200850053307d35302c00c22222222200750043307d35302c00c2222222220095003108801108801108801108801108801108801108801108801135004222220021350032222200513500222222003135001222220041306949884c1a92632322153353330173307b350042222200450063307b350042222200335302b00a222220033307b5003500532153355335333573466e1cd4c0b002c88888008cdc024004a0061100210e02211002266ae7124010348323100087011533533300a5007333333012500650033500222200235302c00b222220013025082013025500135002222003153355335330225335303800b2135350012200122220031082013330700723553355008130600232210022222003306f500110880113357389201024834000870113301d00b5004108701108701108701133501435001222001533550071305f49103505439002210011086011350022222200213500122222005221306b49884214044d4c098014888880144d4c094010888880104d4d400c880088888888888880284d40088800888c894cd54cd4ccd5cd19b87300d004300e001082010810113002335500b00400110810110820113357389210348313200081013082012253350011082012215335350022233500722222223335734666e54024cdc51bb3375200e66e28dd99ba8006337146eccdd400299b8a37666ea4010cdc51bb337520066eccdd4801000846808460080089802000884180991919299a999ab9a3370e90000010400083f899910919800801801191919299a999ab9a3370e90000010418084100899191919191919191919199999999999911111111111091999999999998008068060058050048040038030028020018011983302d9aba100b3306605b35742014660cc0bc6ae84024ccc189d728309aba100833306275ca0c26ae8401ccc198168d5d080319983102fbad3574200a646464a66a666ae68cdc3a40000041200211e02266442466002006004646464a66a666ae68cdc3a40000041260212402266442466002006004660bceb4d5d0800982e9aba135744002260d60d46aae78008d55ce8009baa35742002646464a66a666ae68cdc3a40000041260212402266442466002006004660bceb4d5d0800982e9aba135744002260d60d46aae78008d55ce8009baa357426ae880044c1a019cd55cf0011aab9d00137546ae84010cc199d71aba1003333062059056357420046660c4eb8158d5d0800982e9aba1357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10008982d82d1aab9e00235573a0026ea8d5d080098261aba135744002260b00ae6aae78008d55ce8009baa0033232325335333573466e1d200000207f07e11222222200515335333573466e1d200200207f07e1321222222230010083232325335333573466e1d200000208201081011120011305a05935573c0046aae74004dd51aba100115335333573466e1d200400207f07e1321222222230030083232325335333573466e1d20000020820108101132333222123330010040030023305c75c6ae84008dd69aba1001375a6ae84d5d10009aba20011305a05935573c0046aae74004dd51aba100115335333573466e1d200600207f07e1321222222230060083232325335333573466e1d200000208201081011122200315335333573466e1d20020020820108101132122230020043305b75c6ae8400454cd4ccd5cd19b874801000820804204044cc884888cc004014010cc16dd71aba1001375c6ae84d5d10008982d02c9aab9e00235573a0026ea8d5d08008a99a999ab9a3370e900400103f83f099091111111802004191919299a999ab9a3370e9000001041008408089909118010019982dbae357420022a66a666ae68cdc3a400400410402102022664424466002008006660b6eb8d5d08009bae357426ae880044c168164d55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480280081fc1f844888888801c54cd4ccd5cd19b87480300081fc1f84cc8848888888cc008024020dd69aba1001375a6ae84d5d10008982b82b1aab9e00235573a0026ea800cc8c8c94cd4ccd5cd19b87480000081f81f44c8c8cccc09cc158d5d08019982c82d1aba1002375c6ae84004c13cd5d09aba2001357440026ae8800454cd4ccd5cd19b87480080081f81f44c090c8c8c94cd4ccd5cd19b874800000820404200044c8c8c8ccccc0bcdd71aba10043305d05e3574200660b46ae84008dd69aba1001375c6ae84d5d10009aba2001357440026ae880044c164160d55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480100081f81f44c09cc8c8c94cd4ccd5cd19b874800000820404200044c8c8c8c8c8c8c8ccccccccc0c8dd71aba1008330610623574200e60bc6ae84018dd69aba1005375a6ae84010dd71aba1003375c6ae84008cc185d71aba1001375a6ae84d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c164160d55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480180081f81f440984c158154d55cf0011aab9d0013754006205c260a6921035054350033079221122533500210752215335003107722133507833073004002335530081200100300112001222222123333330010070060050040030023077225335001148000884cdc024004600800260ec44a66a0022900011099b8048008c010004cc1d4884894cd4ccd5cd19b89002480001dc1d841c454cd400441c4884cd41c8008cd4c01848004cdc0802240040022400246a002444444444444a66a601c01020fe266ae712401035530310007e30732253350011073223213500322300300130772253350011300600322135002225335333573466e1d200000107b07a13006003107a22235003223500422350052253355335333500a06700600515335330270040031330670020011078107810791335738920102483200078330712212225335002153350011074221075221533500310752215335330070040021333530091200100700300110771200122232330742253350011300348000884d4008894cd4ccd5cd19b8f002009078077130073370201c60180022600c0060084a66a666ae68cdc380099b8048008c0140081c81c441c84cd5ce24810348313400071306f225335001148000884cdc024004600800260dc44a66a00220084426a0044466e00004c01800c88c8d400c894cd4c01cd40088888888888880104c98cd5ce24902483600056232215335001153353002300b30063500522222222222200c10731335738921024835000722213263357389210248370005b30732253350011072221533533063005002107513004001306f225335001106922135002223232330772253350011003221335072002300400100230070043302d00735001222200348000c1ac894cd40044194884cd4198008c010004c1a8894cd40044190884cd4194008c010004cc1a4884894cd4ccd5cd19b89002480001ac1a8400454cd40044194884cd4c01848004cdc080224004002240026444666660060ae4600c0026660060ae4666ae68cdc3a40000020d40d202e004002446464464446600600400260da444a66a0042600a002442a66a006260100084426a00844646a00a44a66a6602200a0042a66a6601a00800226601801000c20ec2a66a6020008266018010014266006a66a602000220e2266a0e000e0e200c60ec444a66a00220ec4426a00444a66a602800226600e00c0062a66a6602a0120042a66a660220100022660200186660fa444a66a00420024426600a00266a0f200400600c00620f426600e66a0e800800c00660d644a66a00220d64426a00444a66a60100022600c00620dc60d444a66a00220d44426a00444a66a600e0022600c00620da92103505438003066225335001106622135002225335333573466e1d200000106a06913006003106923724600400260c844a66a002203e44266e28dd99a801111119ba548000cd5d01a8021119ba548000cd5d0180e80119aba03301e233500123374a900019aba0301f001376204244466e9520023357406ea000ccd5d01ba80023357406ea0004dd88118009bb101f335740666018ea5402c00ccd5d02999a801099ba548000dd880e9099ba548010cd5d00009bb101e213374a900119aba037520026ec4078cd5d01980e3a9001376203a600800246e48c068c05cc16400488ccd5cd19b8f3766666008ea5400c008dd99998023a9500300106206113300175246ea000488c88dd3180100098311119a800a5eb7bdb18088d400888cd5d019bb030080023007001300600332253353004300b00121533335001210011300349888884c01d262130044984c0092623263357389210248330004432253353003300a001215333350012130044984c00d26222213007498840044c00926232633573892010248330004332233333302100122532335333573466e1d200000306005f1533533335573e0044a0984609a660aa6ae8400cd5d1001823109a80091299a980400110a99a9999aab9f002250502305133059357420066ae8800c12884d4004894cd4cc09809c008854cd4cccd55cf8011282a1182a9982e9aba10033574400609c426a00244a66a605a00442a66a6666aae7c008941608c8c8c16c008d5d10021aba1003052215335302e00121305a333301500b0070030011300e4984c035261300c4984c02526130084984c01526130044984c0052613001498c894cd4ccd5cd19b874800801018418054cd4cccd55cf801928269191918280011aba20053574200808e42a66a66666604c00244a66a666ae68cdc3a40000040c80c62a66a6666aae7c004941408c144cc164d5d08011aba200204a2135001225335302900221533533335573e0044a0a8460aa660ba6ae8400cd5d1001827109a80091299a9981501580110a99a9999aab9f002250582305933061357420066ae8800c14884d4004894cd4c050008854cd4cccd55cf8011282e1182e998329aba1003357440060ac426a00244a66a606c00442a66a6666aae7c008941808c8c8c18c008d5d10021aba100305a21533530370012130623333302100f00b007003001150601505f1505e1505b1505a150571505615053150521504f1504f2504e2504e2504e2504e21304f3009001130034984c0092613002498c894cd4ccd5cd19b874801001018418054cd4cccd55cf801928269191918280011aba20053574200808e42a66a66666604c00244a66a666ae68cdc3a40000040c80c62a66a6666aae7c004941408c144cc164d5d08011aba200204a2135001225335302900221533533335573e0044a0a8460aa660ba6ae8400cd5d1001827109a80091299a9981501580110a99a9999aab9f002250582305933061357420066ae8800c14884d4004894cd4c050008854cd4cccd55cf8011282e1182e998329aba1003357440060ac426a00244a66a606c00442a66a6666aae7c008941808c184cc1a4d5d08019aba200305a2135001225335303a00221533533335573e0044a0c8460ca660da6ae8400cd5d100182f109a80091299a981e80110a99a9999aab9f002250682306933071357420066ae8800c18884d4004894cd4c104008854cd4cccd55cf80112836118369983a9aba1003357440060cc426a00244a66a6608408a00442a66a6666aae7c008941c08c8c8c1cc008d5d10021aba100306a215335304800121307233333333303001f01b01701300f00b007003001150701506f1506e1506b1506a150671506615063150621505f1505e1505b1505a150571505615053150521504f1504f2504e2504e2504e2504e21304f300c001130034984c009261300249894cd4ccd5cd19b874801800c18017c4c1300205412c941249412494124941248cccccc080004894cd4ccd5cd19b874800000817817454cd4cccd55cf800928251191918268011aba20033574200408842a66a60440024260980022a0942a0922a0924a0904a0904a0904a090424444600800a24444006444424444666600401000e00c00a424444600200a4444444442466666666600201401201000e00c00a00800600444444246666600200c00a008006004644a66a6a6a002440044444444444440142600493110a99a998029a80111110021a9a98038019100091110020980e8010980224c464c66ae712401034831310003b223500222350032232335005233500425335333573466e3c00800417016c5400c416c816c8cd4010816c94cd4ccd5cd19b8f00200105c05b15003105b153350032153350022133500223350022335002233500223304d002001205e2335002205e23304d00200122205e222335004205e2225335333573466e1c01800c18418054cd4ccd5cd19b8700500206106013300f0040011060106010591533500121059105922333573466e1c00800415014c94cd4c008004840044c98cd5ce24810248380003823500122350022222222222223333500d2014201420142330622253350011504d22135002225335350022235009225335333573466e3c0100081a81a44ccd5cd19b8700300106a0691069130520041300600300d233500123374a900019aba037520026ec40108cdd2a400466ae80dd48009bb1004225335001213374a900019aba030030013762008266e952002376200693281b982691299a800898011801823910a99a800880111098031803802982611299a8008823110a99a800880191099a8249980380200118030009825911299a8010800910a99a801880219110a999a998260028010a801899a825001198040038008a801899a82380119802800801982511299a800880291099a801111b8a001300400122333573466e1d2002300533003002350012222003049048232253355335300200121303600115034213304c225335001104622132533535003225335333573466e1d20020010510501303d0021503c2133504900100210013004001001104330492253350011503422135002225335333573466e3c00801c1341304c0e40044c01800d221003046225335001148000884cdc02400460080024a66a646466666601400444a66a666ae68cdc3a400000409008e2a66a6666aae7c004940d08c0d4cc0f4d5d08011aba200202e2135001225335300b00221533533335573e0044a07046072660826ae8400cd5d1001819109a80091299a980500110a99a9999aab9f0022503c23232303f002357440086ae8400c0d8854cd4c04c00484c0f8ccc04001c00c004540f0540ec540e8540dc540d8540cc540cc940c8940c8940c8940c8c0108cccccc028004894cd4ccd5cd19b874800000812011c54cd4cccd55cf8009281a1181a9981e9aba10023574400405c426a00244a66a601800442a66a6666aae7c008940e08c8c8c0ec008d5d10021aba1003032215335300f00121303a123300100400215038150371503615033150332503225032250322503230090012135001222002103e22212333001004003002232233333300800122503125030002250302503030442233335573e0024606207e4a66a60086ae84008854cd4c010d5d100190981999a8200010008a818899281898019aba200202a25335300300121302e0011502c2333333004001225335333573466e1d20000020420411533533335573e0024a05c4605e6606e6ae84008d5d1001014109a80091299a99999980480111299a999ab9a3370e90000010238230a99a9999aab9f00125033232323036002357440066ae840080b4854cd4c02800484c0d4004540cc540c8540c8940c4940c4940c4940c4854cd4cccd55cf8011281911919181a8011aba20043574200605842a66a6014002426068660920060022a0642a0622a0602a05a2a05a4a0584a0584a0584a058466666600600244a0584a0564a0564a05646058002466666600400244a0564a0544a054460560024a0544444446666666ae900188c8cc01cd55ce8009aab9e001375400e4600a6eac01c8c010dd6003918019bad00723002375c00e0504a666a6a0024444004264c66ae712410248390002221001213263357389210348313000023303c22533500110362213350373500222330340023302923370490008008009802000899319ab9c4901034833330001f2326335738921034833370001f200123232325335333573466e1d200000203a039103915335333573466e1d200200203a039103a1301201135573c0046aae74004dd500091191919299a999ab9a3370e900000101d01c889110010a99a999ab9a3370e900100101d01c8990911180180218029aba100115335333573466e1d200400203a039112220011301201135573c0046aae74004dd50009191919299a999ab9a3370e900000101c01b8990911118018029bae357420022a66a666ae68cdc3a400400407006e26424444600200a600e6ae8400454cd4ccd5cd19b87480100080e00dc4c848888c008014c028d5d08008a99a999ab9a3370e900300101c01b89909111180200298029aba10011301000f35573c0046aae74004dd50009191919299a999ab9a3370e900000101b81b09909111111180280418049aba100115335333573466e1d20020020370361321222222230070083009357420022a66a666ae68cdc3a400800406e06c26644244444446600c01201060126ae84004dd71aba1357440022a66a666ae68cdc3a400c00406e06c2664424444444660040120106eb8d5d08009bae357426ae8800454cd4ccd5cd19b87480200080dc0d84cc8848888888cc004024020dd71aba1001375a6ae84d5d10008a99a999ab9a3370e900500101b81b0891111110020a99a999ab9a3370e900600101b81b089111111001898078071aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080d80d44cc8848cc00400c008c014d5d080098039aba1357440022601c01a6aae78008d55ce8009baa00123232325335333573466e1d20000020350341330363005357420026eb4d5d09aba20011300d00c35573c0046aae74004dd50009191919299a999ab9a3370e900000101a01989bae35742002260180166aae78008d55ce8009baa0013223232325335333573466e1d200000203403313232333322221233330010050040030023232325335333573466e1d2000002039038133221233001003002300c35742002660140166ae84d5d1000898088081aab9e00235573a0026ea8d5d0801999805bae500a35742004646464a66a666ae68cdc3a4000004072070224440062a66a666ae68cdc3a4004004072070264244460020086eb8d5d08008a99a999ab9a3370e900200101c81c099091118010021aba10011301101035573c0046aae74004dd51aba10013300775c6ae84d5d10009aba200135744002260180166aae78008d55ce8009baa001223232325335333573466e1d20020020340331501f15335333573466e1d200000203403313020300535742002260180166aae78008d55ce8009baa00123232325335333573466e1d200000203203113212230020033005357420022a66a666ae68cdc3a400400406406226466644424466600200a0080066eb4d5d08011bad357420026eb4d5d09aba200135744002260140126aae78008d55ce8009baa00123232325335333573466e1d20000020310301321223002003375c6ae8400454cd4ccd5cd19b87480080080c40c04c8488c00400cdd71aba10011300900835573c0046aae74004dd5000899800bae75a4464460046eac004c0bc88cccd55cf800901511919a8151981298031aab9d001300535573c00260086ae8800cd5d080100a9191919299a999ab9a3370e900000101701689bad357420022600c00a6aae78008d55ce8009baa0014910350543100232633573800201e464460046eb0004c0a888cccd55cf8009012919a81218021aba100230033574400402046eb8004c09c894cd4004520002213370090011802000981311299a8008a400044266e0120023004001132633573892103483434000093024225335001148000884cdc0240046008002604644a66a002203a44266a0044444660220260066008002604444a66a00220424426a00444a66a666ae68cdc7a450b4879647261486561645631000020260251333573466e1d2002001026025130060033021225335001148000884cdc0240046008002264c66ae712410348323700004132633573892103483235000031326335738921034832340000223263357389210248310000212001301b225335001101522133500222223300900b00330040012322230033009333500b00a002001301b225335001101522133501635002223301300233008233350012330094800000488cc0280080048cc0240052000001300400123223002001301a2253350011014221335015350022233012002300700130040012233700004002424460040062244002602a44a66a002201e44266a0206a004446601a004666a0024601400244666a01401200400246016002600800244666ae68cdc780100080a00989911119191980c91299a800880191099a80a0011802000980100218029980c11299a800880911099299a9a80191911801005980f11299a800880f1109a80111299a99808001003881089803001899a80a00180088009802000801180b91299a800880891099a8091a8011119198080019800804180e91299a80089aa8078019109a80111299a998078010040891119801005002098030019802000980991299a800880691099a8071a801111980580118050009802000980911299a800880611099a8069a801111980500118048009802000980891299a800880591099a8061a80111198048011aa8038009802000909111801802089091118008021109198008018011a8019110009a8011110011a800911001999180080091091919980111801111180180211801111180100211801111180080211a998020020019a801800891111998021299a800899a803003803910a99a800899a804001804910a99199a998068028018a800899980400199a8058028060010a8008999803001119a805802800800911299a800899a80419a804001801180300499110a999a998068030010a801899980400119a8058030028008a801899a80419a804001801180300091129919a80109800a4c442a64666a6601c00e0062a00226008930a80089998038011180319a806003800800919a804980199a80480200518038010910010910911980080200199111a9a80111001111a9a80191001112999a998038020010a99a999ab9a3370e00600201801620142a66a666ae68cdc48018008060058804080489980380200109980380200111299a999ab9a3371e00400200e00c200a2a66a666ae68cdc8801000803803080188020911001891100109110008910010910009109198008018011191800800918011198010010009" + "type": "PlutusScriptV3", + "description": "hydra-vHead-0.19.0-287-g0bd0171da", + "cborHex": "59315659315301000032323322333222323322323232323233223232323232332232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323233332222323232323232323232323232323232323232323232323232323232323232323232323232322323235300100322233333350012230524910350543500230514910350543500223052490103505435002305149103505435002253350012153353232325333350033232323232215333333350081306949884c1a92613069498c8c8c8c8c8c8854cd4c09d403454cd54cd4ccd5cd19b8735303c00e222222222006500208b0108a01108b0113357389201034831330008a01153355335333573466e25402cd40208888888880142280422c04422c044cd5ce249034833310008a01153353350012533533301d500633333302450045003500c35303d00f22222222200430370860135303d00f222222222003001108c011335738921034833390008b012253355335333573466e3cd4c0f804088888888800cc0e021c0423404230044ccc079401ccccccc0954014cdc0a80224004a01a6a607c020444444444008607010e02002004211802211a02266ae71241034834300008c01153353302e00e50031533553353323223002001308e01225335001108e012215335333573466e3c0140082400423c04423c044c01000540314010422c044cd5ce2481034833380008a0115335353535500d2222222222222222009220012253335002215335333573466e24005402823804234044238044cd5ce249034833320008d011506215062153355335333502a079500933508401500c5004108b011335738921034833360008a01153355335333573466e1cc1994024c19d402822c042280454cd4ccd5cd19b8735303c00e222222222001500708b0108a01108b0113357389201034833340008a0115335333573466e1cd4c0f0038888888888004cdc02803a8030458084500884580899ab9c4901034833350008a01153353330293307f500a50053307f35303c00e22222222200750063307f35303c00e222222222009500315335330395335304900e21353500122001222200310850135533535500d222222222222222200e130630342210022222003108b01133573892010248340008a01108a01108a01108a01108a01108a01108a01108a01108a01108a01108a0113500622222222200613500522222222200913500422222222200213500322222222200813500222222222200713500122222222200121306a498884d40248894cd4ccc0a4d400c8888888888888888030d4018888888888024d4018888888888020c854cd54cd4ccd5cd19b8f303533502500650013500722222222200408a0108901108a0113357389201034834310008901153355335333573466e3cd401c88888888800cc0d4c8cd4098018004cd40c4019400422804224044228044cd5ce248103483432000890113535350042222222222222222009220022253335002215335333573466e24004d402888888888800423004234044234044cd5ce249034834330008c011506915069108901108901135003222222222222222200e10880121306a4984d4c0cc0148888888880084d4c0c80108888888880204d4c0c400c88888888801454cd4d5400488888888888888880204c155262215335001100222130594984d400488800c4c18d26222323232215323333333500a150012150021350092225332355335333573466e3cd4c0f003488888004c0dcd5400488800c22804224044228044cd5ce249034831370008901153355335333573466e1d200035303c00d2222200208a0108901108a0113357389201034832300008901153353330283307e35303c00d2222200400b3307e35303c00d2222200300c3307e35303c00d2222200500a15335533533032533535004222222222222222200e108401221306b001323233307407600230603350850133080010553350850100108601086013307f05435005222222222222222200d355001222001108a01133573892103483139000890115335533530095335304800d213535001220012222003108401108a011335738921034831360008901153355335333573466e1cd54004888008c1ac02c22804224044228044cd5ce249034831380008901153353302d00d00a130260041089011089011089011089011089011089011300735003222222222222222201010880121500221500222150032150021533333335009135008222533533302835003222222222222222200c00800932153353302c00c00915335330773036500130343350243067500135004222222222222222200e108901133573892010348313500088011088011330050820135003222222222222222201010870121306b4984c1a92621306b49884c1ad26221306c49884c1ad263085012232253350011003221350022253353305200b001133008300630560010031330080070033087012253350011003221335082010023004001308401225335001133305007e480001f8884c8d400c88d400c8c8894cd4cc120d40148888010d4d4c128040880048888010401c54cd4cc1500340144ccc164c00cc160014cdc02400400400226660b20080046660ea0ee0026a00a444400661180244a66a002200644266a10e020046008002600800261060244a66a0022104024426a00444a66a666ae68cdc7801003843808430089833800898030019919191910a9999999a8038983424c6464646442a66a6048a0142a66aa66a666ae68cdc499b81353535500a2222222222222222009220012253335002210011506e1506e353535500a2222222222222222009220022253335002210011506d1506d5004088010870110880113357389201034832320008701153355335333573466e1cd4c0e402c888888888004c8d4030888d4d4d400c888888888888888802488004894ccd400884cdc00008038a8380a83828020440084380884400899ab9c491034832330008701153353302b00b5003153355335333573466e1cd4c0e402c88888888801940082200421c044220044cd5ce24810348313300087011533553335001153355335333573466e1d20005002088010870115335333573466e1d200035303900b22222222200508801087011333573466e3cd4c0e402c888888888010d4018888880042200421c04421c04421c044220044cd5ce248103483238000870121533533301a50063333330215004500335303a00c22222222200535303a00c22222222200430340830135303a00c2222222220030011089011335738920103483239000880122153355335333573466e3cd4c0ec03488888888800cc0d42100422804224044ccc06d401ccccccc0894014cdc0a802240046a607601a44444444400a6a607601a444444444008606a10802002004211202211402266ae71241034833300008901153355335533535303900b2222222220021088012210890110880113357389201034832360008701153355335330365335304600b21353500122001222200310820135533535500a222222222222222200e13060031221002222200310880113357389201024834000870113330263307c35303900b22222222200850053307c35303900b22222222200750043307c35303900b2222222220095003108701108701108701108701108701108701108701108701135004222220021350032222200513500222222003135001222220041306849884c1a52632322153353330243307a350042222200450063307a3500422222003353038009222220033307a5003500532153355335333573466e1cd4c0e402888888008cdc024004a00610e0210c02210e02266ae71240103483231000860115335333018500733333301f500650033500222200235303900a2222200130320810130325001350022220031533553353302f5335304500a21353500122001222200310810133306f07135533550081305f0302210022222003306e500110870113357389201024834000860113302a00a5004108601108601108601133502135001222001533550071305e49103505439002210011085011350022222200213500122222005221306a49884210044d4c0cc010888880144d4c0c800c888880104d4d400888800c88888888888888880384d400488800cc02402cc8c8c94cd4ccd5cd19b87480000081fc1f844888888801454cd4ccd5cd19b87480080081fc1f84c848888888c004020c8c8c94cd4ccd5cd19b874800000820804204044480044c16816cd55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480100081fc1f84c848888888c00c020c8c8c94cd4ccd5cd19b874800000820804204044c8ccc88848ccc00401000c008cc065d71aba1002375a6ae84004dd69aba1357440026ae880044c16816cd55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480180081fc1f84c848888888c018020c8c8c94cd4ccd5cd19b874800000820804204044488800c54cd4ccd5cd19b874800800820804204044c84888c008010cc061d71aba100115335333573466e1d20040020820108101133221222330010050043301875c6ae84004dd71aba135744002260b40b66aae78008d55ce8009baa357420022a66a666ae68cdc3a40100040fe0fc264244444446008010646464a66a666ae68cdc3a40000041040210202264244600400666030eb8d5d08008a99a999ab9a3370e9001001041008408089991091198008020019980c3ae357420026eb8d5d09aba20011305a05b35573c0046aae74004dd51aba100115335333573466e1d200a00207f07e11222222200715335333573466e1d200c00207f07e133221222222233002009008375a6ae84004dd69aba135744002260ae0b06aae78008d55ce8009baa0063232325335333573466e1d200000207e07d1323233330353057357420066602c0b46ae84008dd71aba1001300d357426ae88004d5d10009aba200115335333573466e1d200200207e07d130323232325335333573466e1d2000002081010800113232323333303d375c6ae84010cc068178d5d0801982d9aba1002375a6ae84004dd71aba1357440026ae88004d5d10009aba20011305905a35573c0046aae74004dd51aba100115335333573466e1d200400207e07d130353232325335333573466e1d20000020810108001132323232323232333333333040375c6ae84020cc078188d5d0803982f9aba1006375a6ae84014dd69aba1004375c6ae8400cdd71aba10023301e75c6ae84004dd69aba1357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20011305905a35573c0046aae74004dd51aba100115335333573466e1d200600207e07d10341305605735573c0046aae74004dd5000881e09829a49035054350013052491035054350023051491035054350032323232323232323223232325335333573466e1d20000020810108001132333222123330010040030023232325335333573466e1d20000020850108401132323232323232323232323232323333333333333333222222222222222212333333333333333300101101000f00e00d00c00b00a0090080070060050040030023302901a3574201e660520346ae84038cc0a406cd5d08069bad3574201866603eeb94078d5d08059981480c1aba100a33301f01c75a6ae84024c8c8c94cd4ccd5cd19b874800000825804254044cc8848cc00400c008c8c8c94cd4ccd5cd19b874800000826404260044cc8848cc00400c008cc0b5d69aba1001302c357426ae880044c1c41c8d55cf0011aab9d00137546ae84004c8c8c94cd4ccd5cd19b874800000826404260044cc8848cc00400c008cc0b5d69aba1001302c357426ae880044c1c41c8d55cf0011aab9d00137546ae84d5d1000898370379aab9e00235573a0026ea8d5d080419814bae3574200e66603e4646464a66a666ae68cdc3a400000412e0212c022642444444600a00e6eb8d5d08008a99a999ab9a3370e900100104b8084b008990911111180100398121aba100115335333573466e1d20040020970109601132122222230030073020357420022a66a666ae68cdc3a400c00412e0212c022664424444446600c01000e6eb4d5d0800980e1aba1357440022a66a666ae68cdc3a401000412e0212c022642444444600200e603a6ae8400454cd4ccd5cd19b874802800825c04258044cc884888888cc01002001cdd69aba1001301b357426ae880044c1bc1c0d55cf0011aab9d001375400204a6ae84018ccc07dd70129aba1005375c6ae84010ccc07c064cc07c0a08c8c8c94cd4ccd5cd19b874800000825c04258044488800854cd4ccd5cd19b874800800825c04258044488800454cd4ccd5cd19b874801000825c04258044488800c4c1bc1c0d55cf0011aab9d00137540026ae8400ccc0a405cd5d08011980ebad357420026603aeb4d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c174178d55cf0011aab9d00137546ae84008d5d0800991919299a999ab9a3370e90000010428084200899091111118028039bae357420022a66a666ae68cdc3a400400410a02108022664424444446600401000e60246ae84004cc03c05cd5d09aba200115335333573466e1d2004002085010840113212222223003007300e357420022a66a666ae68cdc3a400c00410a02108022664424444446600c01000e6eb4d5d080098051aba1357440022a66a666ae68cdc3a401000410a02108022642444444600200e60166ae8400454cd4ccd5cd19b874802800821404210044cc884888888cc01002001cdd69aba10013009357426ae880044c174178d55cf0011aab9d00137546ae84d5d10009aba20011305905a35573c0046aae74004dd50009191919299a999ab9a3370e90000010400083f899199911091998008020018011bad3574200460146ae84004c8c8c94cd4ccd5cd19b87480000082100420c044c8ccc88848888888ccc00c028024020cc03c068d5d08011aba10013300f75c6ae84d5d10009aba200115335333573466e1d200200208401083011332212222222330070090083300e01935742002646464a66a666ae68cdc3a400000410e0210c022664424660020060046eb4d5d08009bad357426ae880044c17c180d55cf0011aab9d00137546ae84d5d10008a99a999ab9a3370e90020010420084180899910911111119801004804199808006bad357420026601ceb8d5d09aba200115335333573466e1d200600208401083011321222222230040083300e019357420022a66a666ae68cdc3a401000410802106022646466664444244444446666002016014012010660200366ae8400ccc07003cd5d0801199809007bad357420026a646464a66a666ae68cdc3a400000411202110022660fa6eb4d5d08009bad357426ae880044c184188d55cf0011aab9d00137546ae84d5d1000911980b8010009aba2001357440022a66a666ae68cdc3a4014004108021060226644244444446600a0120106601c0326ae84004c8c8c94cd4ccd5cd19b874800000821c04218044cc045d71aba10011305f06035573c0046aae74004dd51aba1357440022a66a666ae68cdc3a4018004108021060222444444400c260b80ba6aae78008d55ce8009baa357426ae88004d5d10008982c02c9aab9e00235573a0026ea8004c88c8c8c94cd4ccd5cd19b8748000008200041fc4cc88488888888888cc014034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b8748008008200041fc4cc88488888888888cc008034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b8748010008200041fc4cc88488888888888cc028034030c024d5d080098029aba1357440022a66a666ae68cdc3a400c004100020fe26466644424444444444466600c01c01a01860146ae84008c018d5d08009bad357426ae88004d5d10008a99a999ab9a3370e90040010400083f899910911111111111980380680618049aba1001375a6ae84d5d10008a99a999ab9a3370e90050010400083f899091111111111180080618049aba100115335333573466e1d200c0020800107f133221222222222223300300d00c3009357420026eb4d5d09aba200115335333573466e1d200e0020800107f133221222222222223300900d00c375c6ae84004dd71aba1357440022a66a666ae68cdc3a4020004100020fe266442444444444446601001a0186eb8d5d08009bad357426ae8800454cd4ccd5cd19b8748048008200041fc4cc88488888888888cc02c034030c024d5d080098049aba1357440022a66a666ae68cdc3a4028004100020fe264244444444444600801860126ae840044c160164d55cf0011aab9d0013754002644646464a66a666ae68cdc3a4000004100020fe264244460060086eb8d5d08008a99a999ab9a3370e90010010400083f8990911180080218029aba100115335333573466e1d20040020800107f13322122233002005004375c6ae84004c014d5d09aba20011305805935573c0046aae74004dd50009191919299a999ab9a3370e900000103f83f0990911180180218041aba100115335333573466e1d200200207f07e1122200215335333573466e1d200400207f07e112220011305705835573c0046aae74004dd50009191919299a999ab9a3370e900000103f03e8990911180180218039aba100115335333573466e1d200200207e07d132122230020043007357420022a66a666ae68cdc3a40080040fc0fa264244460020086eb8d5d08008982b02b9aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000081f41f04cc8848cc00400c008c028d5d080098029aba135744002260aa0ac6aae78008d55ce8009baa00123232325335333573466e1d200000207c07b13232333322221233330010050040030023232325335333573466e1d20000020810108001133221233001003002300a35742002660164646464a66a666ae68cdc3a400000410a02108022642446004006601c6ae8400454cd4ccd5cd19b874800800821404210044c8ccc888488ccc00401401000cdd69aba1002375a6ae84004dd69aba1357440026ae880044c174178d55cf0011aab9d00137540026ae84d5d10008982c82d1aab9e00235573a0026ea8d5d08019998053ae500935742004646464a66a666ae68cdc3a40000041020210002224440062a66a666ae68cdc3a40040041020210002264244460020086eb8d5d08008a99a999ab9a3370e90020010408084000899091118010021aba10011305905a35573c0046aae74004dd51aba10013300875c6ae84d5d10009aba200135744002260a80aa6aae78008d55ce8009baa00123232325335333573466e1d200000207b07a1321223002003375c6ae8400454cd4ccd5cd19b87480080081ec1e84c8488c00400cdd71aba10011305305435573c0046aae74004dd500091191919299a999ab9a3370e900100103d83d0a8330a99a999ab9a3370e900000103d83d0983398029aba10011305305435573c0046aae74004dd5000899800bae75a4464460046eac004c1e088cccd55cf800903991919a8399983718031aab9d001300535573c00260086ae8800cd5d080102f1191919299a999ab9a3370e900000103b83b09983c1bae357420026eb4d5d09aba20011304f05035573c0046aae74004dd50009839911299a999ab9a3370e0020300e80e6260989201035054330015335333573466e200040601d01cc4cc00ccdc080c00119b81018001132332212330010030023370800600266e10008004cc010008004c1c88894cd4ccd5cd19b8700101707307210021330030013370c00400244644a66aa66a666ae68cdc3980600218068008398390980119aa80500200088390839899ab9c49010348313200072307322533500110732215335350022233500722222223335734666e54024cdc51bb3375200e66e28dd99ba8006337146eccdd400299b8a37666ea4010cdc51bb337520066eccdd480100083f03e80089802000883a10009191919299a999ab9a3370e900000103883808380a99a999ab9a3370e90010010388380838898248251aab9e00235573a0026ea800488c8c8c94cd4ccd5cd19b87480000081c41c04488800854cd4ccd5cd19b87480080081c41c04c84888c00c010c014d5d08008a99a999ab9a3370e900200103883808911000898248251aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000081bc1b84cc8848cc00400c008dd71aba1001375a6ae84d5d1000898238241aab9e00235573a0026ea80048c88c008dd60009836911999aab9f0012068233506730043574200460066ae8800814ccc1ac8844894cd4008419c8854cd400c41a4884cd41a8cc194010008cd54c0204800400c0044800488888848cccccc00401c01801401000c008c1a4894cd4004520002213370090011802000983411299a8008a400044266e012002300400133067221225335333573466e24009200006906810631533500110632213350640023353006120013370200890010008900091a8009111111111111111299a9809006083a899ab9c4901035530310007430652253350011065223213500322300300130692253350011300600322135002225335333573466e1d200000106d06c13006003106c22235003223500422350052253355335333500a0590060051533533027004003133059002001106a106a106b133573892010248320006a330632212225335002153350011066221067221533500310672215335330070040021333530091200100700300110691200122232330662253350011300348000884d4008894cd4ccd5cd19b8f00200906a069130073370201c60180022600c0060084a66a666ae68cdc380099b8048008c01400819018c41904cd5ce248103483134000633061225335001148000884cdc024004600800260c044a66a00220084426a0044466e00004c01800c88c8d400c8894cd4c020d400c88888888888888880204c98cd5ce248102483600049232215335001153353002300c300735006222222222222222201010661335738921024835000652213263357389210248370004e306622533500110652215335330560050021068130040013061225335001105b22135002223232330692253350011003221335064002300400100230070043302d00735001222200348000c174894cd4004415c884cd4160008c010004c170894cd40044158884cd415c008c010004cc16c884894cd4ccd5cd19b8900248000174170400454cd4004415c884cd4c01848004cdc080224004002240026444666660060924600c0026660060924666ae68cdc3a40000020b80b602e004002446464464446600600400260be444a66a0042600a002442a66a006260100084426a00844646a00a44a66a6602200a0042a66a6601a00800226601801000c20d02a66a6020008266018010014266006a66a602000220c6266a0c400e0c600c60d0444a66a00220d04426a00444a66a602800226600e00c0062a66a6602a0120042a66a660220100022660200186660de444a66a00420024426600a00266a0d600400600c00620d826600e66a0cc00800c00660ba44a66a00220ba4426a00444a66a60100022600c00620c060b844a66a00220b84426a00444a66a600e0022600c00620be92103505438003058225335001105822135002225335333573466e1d200000105c05b13006003105b23724600400260ac44a66a002203e44266e28dd99a801111119ba548000cd5d01a8021119ba548000cd5d0180e80119aba03301e233500123374a900019aba0301f001376204244466e9520023357406ea000ccd5d01ba80023357406ea0004dd88118009bb101f335740666018ea5402c00ccd5d02999a801099ba548000dd880e9099ba548010cd5d00009bb101e213374a900119aba037520026ec4078cd5d01980e3a9001376203a600800246e48c068c05cc12c00488ccd5cd19b8f3766666008ea5400c008dd99998023a9500300105405313300175246ea000488c88dd31801000982a1119a800a5eb7bdb18088d400888cd5d019bb030080023007001300600332253353004300b00121533335001210011300349888884c01d262130044984c0092623263357389210248330003632253353003300a001215333350012130044984c00d26222213007498840044c00926232633573892010248330003532233333302100122532335333573466e1d20000030520511533533335573e0044a07c4607e6608e6ae8400cd5d100181c109a80091299a980400110a99a9999aab9f00225042230433304b357420066ae8800c0f084d4004894cd4cc09809c008854cd4cccd55cf8011282311823998279aba100335744006080426a00244a66a605a00442a66a6666aae7c008941288c8c8c134008d5d10021aba1003044215335302e00121304c333301500b0070030011300e4984c035261300c4984c02526130084984c01526130044984c0052613001498c894cd4ccd5cd19b874800801014c14854cd4cccd55cf8019281f9191918210011aba20053574200807242a66a66666604c00244a66a666ae68cdc3a40000040ac0aa2a66a6666aae7c004941088c10ccc12cd5d08011aba200203c2135001225335302900221533533335573e0044a08c4608e6609e6ae8400cd5d1001820109a80091299a9981501580110a99a9999aab9f0022504a2304b33053357420066ae8800c11084d4004894cd4c050008854cd4cccd55cf80112827118279982b9aba100335744006090426a00244a66a606c00442a66a6666aae7c008941488c8c8c154008d5d10021aba100304c21533530370012130543333302100f00b0070030011505215051150501504d1504c150491504815045150441504115041250402504025040250402130413009001130034984c0092613002498c894cd4ccd5cd19b874801001014c14854cd4cccd55cf8019281f9191918210011aba20053574200807242a66a66666604c00244a66a666ae68cdc3a40000040ac0aa2a66a6666aae7c004941088c10ccc12cd5d08011aba200203c2135001225335302900221533533335573e0044a08c4608e6609e6ae8400cd5d1001820109a80091299a9981501580110a99a9999aab9f0022504a2304b33053357420066ae8800c11084d4004894cd4c050008854cd4cccd55cf80112827118279982b9aba100335744006090426a00244a66a606c00442a66a6666aae7c008941488c14ccc16cd5d08019aba200304c2135001225335303a00221533533335573e0044a0ac460ae660be6ae8400cd5d1001828109a80091299a981e80110a99a9999aab9f0022505a2305b33063357420066ae8800c15084d4004894cd4c104008854cd4cccd55cf8011282f1182f998339aba1003357440060b0426a00244a66a6608408a00442a66a6666aae7c008941888c8c8c194008d5d10021aba100305c215335304800121306433333333303001f01b01701300f00b0070030011506215061150601505d1505c1505915058150551505415051150501504d1504c15049150481504515044150411504125040250402504025040213041300c001130034984c009261300249894cd4ccd5cd19b874801800c1481444c0f8020540f4940ec940ec940ec940ec8cccccc080004894cd4ccd5cd19b874800000814013c54cd4cccd55cf8009281e11919181f8011aba20033574200406c42a66a604400242607c0022a0782a0762a0764a0744a0744a0744a074424444600800a24444006444424444666600401000e00c00a424444600200a4444444442466666666600201401201000e00c00a00800600444444246666600200c00a008006004644a66a6a6a002444006444444444444444401c2600493110a99a998029a80111110021a9a98038019100091110020980e8010980224c464c66ae71241034831310002d223500222350032232335005233500425335333573466e3c0080041381345400c413481348cd4010813494cd4ccd5cd19b8f00200104e04d15003104d153350032153350022133500223350022335002233500223303f00200120502335002205023303f00200122205022233500420502225335333573466e1c01800c14c14854cd4ccd5cd19b8700500205305213300f00400110521052104b153350012104b104b22333573466e1c00800411811494cd4c008004840044c98cd5ce24810248380002a23500122235003222222222222222233333350112201a20192201a20192322300201330592253350011504422135002225335350022235009225335333573466e3c0100081841804ccd5cd19b87003001061060106013049004130060032019233500123374a900019aba037520026ec40108cdd2a400466ae80dd48009bb1004225335001213374a900019aba030030013762008266e9520023762006932814981f91299a80089801180181c910a99a800880111098031803802981f11299a800881c110a99a800880191099a81d998038020011803000981e911299a8010800910a99a801880219110a999a9981f0028010a801899a81e001198040038008a801899a81c80119802800801981e11299a800880291099a801111b8a001300400122333573466e1d200230053300300235001222200303b03a232253355335300200121302800115026213303e225335001103822132533535003225335333573466e1d20020010430421302f0021502e2133503b001002100130040010011035303b2253350011502622135002225335333573466e3c00801c0fc0f84c0ac0044c01800d2201003038225335001148000884cdc02400460080024a66a646466666601400444a66a666ae68cdc3a40000040740722a66a6666aae7c004940988c09ccc0bcd5d08011aba20020202135001225335300b00221533533335573e0044a05446056660666ae8400cd5d1001812109a80091299a980500110a99a9999aab9f0022502e232323031002357440086ae8400c0a0854cd4c04c00484c0c0ccc04001c00c004540b8540b4540b0540a4540a0540945409494090940909409094090c0108cccccc028004894cd4ccd5cd19b87480000080e80e454cd4cccd55cf8009281311813998179aba100235744004040426a00244a66a601800442a66a6666aae7c008940a88c8c8c0b4008d5d10021aba1003024215335300f00121302c12330010040021502a150291502815025150252502425024250242502430090012135001222002103022212333001004003002232233333300800122502325022002250222502230362233335573e002460460624a66a60086ae84008854cd4c010d5d100190981299a8190010008a811899281198019aba200201c2533530030012130200011501e2333333004001225335333573466e1d20000020340331533533335573e0024a04046042660526ae84008d5d100100d109a80091299a980380110a99a9999aab9f00225024232323027002357440086ae8400c078854cd4c02800484c098cc0ec00c004540905408c540885407c5407c940789407894078940788cccccc00c0048940789407494074940748c0780048cccccc00800489407494070940708c07400494070888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801c06894ccd4d400488880084c98cd5ce2490248390001421001213263357389210348313000015302e22533500110282213350293500222330260023301b23370490008008009802000899319ab9c490103483333000112326335738921034833370001123232325335333573466e1d200000202d02c1375a6ae840044c014018d55cf0011aab9d0013754002464c66ae7000403d240103505431002375c002604e44a66a0022900011099b8048008c010004c098894cd4004520002213370090011802000899319ab9c49103483434000093024225335001148000884cdc0240046008002604644a66a002203a44266a0044444660220260066008002604444a66a00220424426a00444a66a666ae68cdc7a450b4879647261486561645631000020260251333573466e1d2002001026025130060033021225335001148000884cdc0240046008002264c66ae712410348323700004132633573892103483235000031326335738921034832340000223263357389210248310000212001301b225335001101522133500222223300900b00330040012322230033009333500b00a002001301b225335001101522133501635002223301300233008233350012330094800000488cc0280080048cc0240052000001300400123223002001301a2253350011014221335015350022233012002300700130040012233700004002424460040062244002602a44a66a002201e44266a0206a004446601a004666a0024601400244666a01401200400246016002600800244666ae68cdc780100080a00989911119191980c91299a800880191099a80a0011802000980100218029980c11299a800880911099299a9a80191911801005980f11299a800880f1109a80111299a99808001003881089803001899a80a00180088009802000801180b91299a800880891099a8091a8011119198080019800804180e91299a80089aa8078019109a80111299a998078010040891119801005002098030019802000980991299a800880691099a8071a801111980580118050009802000980911299a800880611099a8069a801111980500118048009802000980891299a800880591099a8061a80111198048011aa8038009802000909111801802089091118008021109198008018011a8019110009a8011110011a800911001999180080091091919980111801111180180211801111180100211801111180080211a998020020019a801800891111998021299a800899a803003803910a99a800899a804001804910a99199a998068028018a800899980400199a8058028060010a8008999803001119a805802800800911299a800899a80419a804001801180300499110a999a998068030010a801899980400119a8058030028008a801899a80419a804001801180300091129919a80109800a4c442a64666a6601c00e0062a00226008930a80089998038011180319a806003800800919a804980199a80480200518038010910010910911980080200199111a9a80111001111a9a80191001112999a998038020010a99a999ab9a3370e00600201801620142a66a666ae68cdc48018008060058804080489980380200109980380200111299a999ab9a3371e00400200e00c200a2a66a666ae68cdc8801000803803080188020911001891100109110008910010910009109198008018011191800800918011198010010009" } diff --git a/hydra-plutus/scripts/vInitial.plutus b/hydra-plutus/scripts/vInitial.plutus index bad35d6e373..c4ecfc9aa36 100644 --- a/hydra-plutus/scripts/vInitial.plutus +++ b/hydra-plutus/scripts/vInitial.plutus @@ -1,5 +1,5 @@ { - "type": "PlutusScriptV2", - "description": "hydra-vInitial-0.19.0-278-g357ed0364", - "cborHex": "5910da5910d7010000332323322332232323322323232323232323232323322323232323232323232323232323232322332323232323232323232323232323222225335333004375c006646464a66a666ae68cdc3a400000407207022440042a66a666ae68cdc3a400400407207026424460020066601601e6ae840044c0ac050d55cf0011aab9d0013754004646464a66a666ae68cdc3a4000004072070266442466002006004646464a66a666ae68cdc3a40000040780762646464646464646464646666666666664444444444442466666666666600201a01801601401201000e00c00a008006004660300366ae8402ccc06006cd5d08051980c00f1aba100933302375ca0446ae84020ccc08dd728111aba10073301801a3574200c66604603eeb4d5d0802991919299a999ab9a3370e9000001024824099910919800801801191919299a999ab9a3370e90000010260258999109198008018011980ebad3574200260386ae84d5d10008981f0139aab9e00235573a0026ea8d5d0800991919299a999ab9a3370e90000010260258999109198008018011980ebad3574200260386ae84d5d10008981f0139aab9e00235573a0026ea8d5d09aba20011303b02435573c0046aae74004dd51aba10043301875c6ae8400cccc08c064054d5d0801199811bae01535742002603a6ae84d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440022605c02e6aae78008d55ce8009baa3574200260186ae84d5d10008981580a1aab9e00235573a0026ea800440b04c0a12410350543500200123232325335333573466e1d2000002034033103315335333573466e1d200200203403310341302600f35573c0046aae74004dd500091191919299a999ab9a3370e900000101a019889110010a99a999ab9a3370e900100101a0198990911180180218029aba100115335333573466e1d2004002034033112220011302600f35573c0046aae74004dd5000919118011bac00130332233335573e0024068466a06660086ae84008c00cd5d10010121191919299a999ab9a3370e90000010188180990911118018029bae357420022a66a666ae68cdc3a400400406206026424444600200a600e6ae8400454cd4ccd5cd19b87480100080c40c04c848888c008014c028d5d08008a99a999ab9a3370e900300101881809909111180200298029aba10011302300c35573c0046aae74004dd50009191919299a999ab9a3370e900000101801789909111111180280418049aba100115335333573466e1d200200203002f1321222222230070083009357420022a66a666ae68cdc3a400800406005e26644244444446600c01201060126ae84004dd71aba1357440022a66a666ae68cdc3a400c00406005e2664424444444660040120106eb8d5d08009bae357426ae8800454cd4ccd5cd19b87480200080c00bc4cc8848888888cc004024020dd71aba1001375a6ae84d5d10008a99a999ab9a3370e90050010180178891111110020a99a999ab9a3370e9006001018017889111111001898110059aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080bc0b84cc8848cc00400c008c014d5d080098039aba135744002260420146aae78008d55ce8009baa00123232325335333573466e1d200000202e02d1330283005357420026eb4d5d09aba20011302000935573c0046aae74004dd50009191919299a999ab9a3370e900000101681609bae357420022603e0106aae78008d55ce8009baa0013223232325335333573466e1d200000202d02c13232333322221233330010050040030023232325335333573466e1d2000002032031133221233001003002300c35742002660140166ae84d5d1000898120069aab9e00235573a0026ea8d5d08019998063ae500b35742004646464a66a666ae68cdc3a4000004064062224440062a66a666ae68cdc3a4004004064062264244460020086eb8d5d08008a99a999ab9a3370e9002001019018899091118010021aba10011302400d35573c0046aae74004dd51aba10013300775c6ae84d5d10009aba2001357440022603e0106aae78008d55ce8009baa001223232325335333573466e1d200200202d02c1502815335333573466e1d200000202d02c130293005357420022603e0106aae78008d55ce8009baa00123232325335333573466e1d200000202b02a13212230020033005357420022a66a666ae68cdc3a400400405605426466644424466600200a0080066eb4d5d08011bad357420026eb4d5d09aba2001357440022603a00c6aae78008d55ce8009baa00123232325335333573466e1d200000202a0291321223002003375c6ae8400454cd4ccd5cd19b87480080080a80a44c8488c00400cdd71aba10011301c00535573c0046aae74004dd5000a481035054310013300175ceb488c88c008dd58009814911999aab9f001202a23233502a3302c300635573a002600a6aae78004c010d5d10019aba100201a3323232323222322253350021330084910349303100300330093500122002323232215332353300d4910349303300323230213301a00200133301801a5004332323223002001303922533500110032213335006220023013301200230040013500122001321233001002037301801a5002323017301f3301000b0015005153353300d49010349303400302333035500135500422002153353300d490103493133003302b35500422001009153353300d491034930320032323233039225335001103622153353005002103913004001002302d00230303550062222222222220045335330362253350011502f221350022253353303100200f130340011300600350032153350011302549103493036002213500222533500315335333573466e1d200200103703610021302949010349303600221302b491034930360013024491034930350013300d490103493134003030300e50051031103110311330352253350011035221335036325335355009222222222222300d00c210011302849103493135003039225335001150322213500222533533033002008130370041300600330040010011030153353500322350022222222222223333500d2021202120212330422253350011503b221350022253353303c002007130400041300600300d21300a30090011031153353300b006500113020491034931320022135002225335003153335002130244910349303900215335333333015001225335333573466e1d20000020350341533533335573e0024a06246064660726ae84008d5d1001014109a80091299aa99a980c80110981a8008a81990a99a9999aab9f00225035230363303d357420066ae8800c0b084d4004894cd4cccccc0780088940e4940e0070940e0940e0854cd4cccd55cf8011281c91919181e0011aba20043574200606042a66a603e002426076246660020100080042a0722a0702a06e2a0682a0662a0602a0604a05e4a05e4a05e4a05e426a002444660740040022604a92010349313100213025490103493130002213026491034931320013500122002302e225335001102b22135002225335333573466e3c00801c0c00bc4c03c0044c01800c8d4004880048d4004888800c894cd4004409c4cd5ce00101311a800911111111111004111981491299a800881491099299a9a80191111a8021119a801128161299a999ab9a3371e00201c0620602605a6606800a00c2a0584266a058002004200260080026a002444444444444014002604a44a66a00220444426a00444a66a666ae68cdc7a4410b4879647261486561645631000020270261333573466e1d20010010270261300600330242233335573e0024603e04a4a66a66666600a6ae84008894cd4ccd5cd19b874800000809409054cd4cccd55cf8009281091811198149aba100235744004030426a00244a66a66666601400444a66a666ae68cdc3a40000040540522a66a6666aae7c004940988c09ccc0b8d5d08011aba200201d213500122533533333300f002225335333573466e1d200000202f02e1533533335573e0024a05646464605c0046ae8800cd5d080101110a99a98088009098168008a8158a8150a8151281492814928149281490a99a9999aab9f0022502a23232302d002357440086ae8400c084854cd4cccccc0440048940b0940ac940ac8c0b0004940ac84c0b0cc0a800c004540a8540a4540a0540945409494090940909409094090854cd4cccd55cf801128129191918140011aba20043574200603842a66a601600242604e24660020080042a04a2a0482a0462a0402a0404a03e4a03e4a03e4a03e42a66a60086ae8800c84c084cd40980080045407c4c9407cc00cd5d100100a919999980100091280e9280e1280e1280e1180e8009111111999999aba40062323300735573a0026aae78004dd5003918029bab00723004375800e460066eb401c8c008dd700380ba80c181011299a8008810110999802803801180200091911180199802801000981011299a800881011099a8109a80111198128011981311299a800881311099a8139a8011119815801199a80091980724000002446601e00400246601c002900018020008009802000911802199a80280a8010009119b80002001301c225335001101c22133501d3500222330210023335001230090012233350090190020012300a00130040011322223232330212253350011003221335022002300400130020043005330202253350011020221325335350032322300200b302622533500110242213500222533533010002007102713006003133502200300110013004001002301f225335001101f22133502035002223233025003300100830252253350011355012003221350022253353300f002008112223300200a004130060033004001301b225335001101b22133501c350022233020002300d0013004001301a225335001101a22133501b35002223301f002300c00130040013019225335001101922133501a35002223301e00235500a00130040013018225335001101822133501935002220013004001301722533500110152232135003223003001301b2253350011300600322135002225335333500123300c4800000488cc0340080048cc030005200013006003101c22333573466e2000800404c05084888c00c0104484888c004010c04c88d4004894cd400854cd4004404c884c01d2401034930370022153350031300749103493038002213500422350042253353301437666a006444466e9520003357406a0084466e952000335740602a00466ae80cc0588cd40048cdd2a400066ae80c05c004dd880c91119ba548008cd5d01ba80033357406ea0008cd5d01ba800137620360026ec405ccd5d019980b3a93301675246ea000400ccd5d02999a801099ba548000dd880a9099ba548010cd5d00009bb1016213374a900119aba037520026ec4058cd5d01980a3a9001376202a0022a66a66026008004260186603c00e00a20342034464c66ae70004008480048cd40048cdd2a400066ae80dd48009bb100423374a900119aba037520026ec4010894cd400484cdd2a400066ae80c00c004dd8802099ba548008dd8801a4c446446e98c008004c03c88cd40052f5bded8c0446a0044466ae80cdd8180400118038009803001911a801111a80191299a999ab9a3371e00800401c01a2666ae68cdc3801800807006880691199ab9a3371e004002012010442466002006004424460040062244002600e44a66a002200e44266a0100046008002600c44a66a0022008446426a006446006002601444a66a0022600c0064426a00444a66a666ae68cdc3a40000020180162600c00620162440042440022440042442446600200800644246600200600446460020024600446600400400291011cea444d37d226e71eef73ac78d149750da977feb588900135bf9e82210001" + "type": "PlutusScriptV3", + "description": "hydra-vInitial-0.19.0-287-g0bd0171da", + "cborHex": "5913cb5913c801010033232323232323232323232323232323232323232323232323232323232323232323232323232323223323222930030019114800c88c0a52410350543500918142490350543500911814a4810350543500918142490350543500912c800c8564ccc020dd70009919192a999ab9a3370e900000108c0004554ccd5cd19b8748008008460066603601a6ae8400422605a0346aae78008d55ce8009baa00530090078816c4c0a9241035054350044c0a52401035054350048c0a1240103505435000c8c8c8c8c8c8c8c8c88c8c8c954ccd5cd19b874800000844ca002646464aa666ae68cdc3a40000042264646464646464646464646464650013302e01a3574201f3302e01a3574201d3302e01b3574201b375a6ae8403266603eeb94078d5d0805ccc0b8060d5d08054ccc07c071d69aba10099919192a999ab9a3370e900000108c004c8c8c954ccd5cd19b87480000084600266062eb4d5d0800cc0c0d5d09aba20010898230199aab9e00235573a0026ea8d5d0800cc8c8c954ccd5cd19b87480000084600266062eb4d5d0800cc0c0d5d09aba20010898230199aab9e00235573a0026ea8d5d09aba20010898218181aab9e00235573a0026ea8d5d08044cc0b9d71aba100799980f91919192a999ab9a3370e900000108c00cdd71aba100108aa999ab9a3370e900100108c024c090d5d080084554ccd5cd19b87480100084600e60406ae8400422aa666ae68cdc3a400c00423001375a6ae8400660386ae84d5d100084554ccd5cd19b874802000846016603a6ae8400422aa666ae68cdc3a401400423005375a6ae8400660366ae84d5d1000844c1100c4d55cf0011aab9d00137540020526ae8401a66603eeb80a4d5d0802cdd71aba100499980f80c9980f81611919192a999ab9a3370e900000108c0084554ccd5cd19b87480080084600822aa666ae68cdc3a40080042300011304403135573c0046aae74004dd50009aba10039981700b9aba10029980ebad357420033301d75a6ae84d5d10008d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba200111303201f35573c0046aae74004dd51aba10029aba10019919192a999ab9a3370e900000108c00cdd71aba100108aa999ab9a3370e900100108c024c048d5d0800ccc03c06cd5d09aba200108aa999ab9a3370e900200108c01cc038d5d080084554ccd5cd19b8748018008460026eb4d5d0800cc028d5d09aba200108aa999ab9a3370e900400108c02cc02cd5d080084554ccd5cd19b87480280084600a6eb4d5d0800cc024d5d09aba200108981900f9aab9e00235573a0026ea8d5d09aba20011aba200111302e01b35573c0046aae74004dd500091919192a999ab9a3370e900000108994004dd69aba100298051aba10019919192a999ab9a3370e900000108994024cc03c078d5d08014d5d0800ccc03dd71aba1357440023574400222aa666ae68cdc3a4004004230013300e01d3574200332323255333573466e1d2000002118009bad35742003375a6ae84d5d1000844c0d0084d55cf0011aab9d00137546ae84d5d100084554ccd5cd19b87480100084601666602001aeb4d5d0800ccc039d71aba1357440021155333573466e1d2006002118039980700e9aba100108aa999ab9a3370e90040010899194034cc04007cd5d0801ccc08403cd5d08014ccc04803dd69aba1001c9919192a999ab9a3370e900000108c004dd69aba10019bad357426ae8800422606c0466aae78008d55ce8009baa357426ae88006446602e0040021aba20013574400222aa666ae68cdc3a4014004230053300e01d3574200332323255333573466e1d2000002113301175c6ae8400444c0d0084d55cf0011aab9d00137546ae84d5d100084554ccd5cd19b87480300084600422606203c6aae78008d55ce8009baa357426ae880046ae8800444c0b4068d55cf0011aab9d0013754002644646464aa666ae68cdc3a40000042300d3009357420033300a75a6ae84d5d100084554ccd5cd19b87480080084602660126ae8400666014eb4d5d09aba200108aa999ab9a3370e900200108c00cc024d5d0800cc014d5d09aba200108aa999ab9a3370e90030010899402cc028d5d08014c018d5d0800cdd69aba1357440023574400222aa666ae68cdc3a401000423009300935742003375a6ae84d5d100084554ccd5cd19b87480280084602a60126ae8400422aa666ae68cdc3a401800423011300935742003375a6ae84d5d100084554ccd5cd19b87480380084600a6eb8d5d0800cdd71aba1357440021155333573466e1d2010002118039bae35742003375a6ae84d5d100084554ccd5cd19b87480480084600260126ae8400660126ae84d5d100084554ccd5cd19b87480500084601e60126ae8400422605a0346aae78008d55ce8009baa00132232323255333573466e1d2000002118009bae357420021155333573466e1d20020021180298029aba100108aa999ab9a3370e900200108c00cdd71aba100198029aba13574400211302d01a35573c0046aae74004dd500091919192a999ab9a3370e900000108c004c020d5d080084554ccd5cd19b87480080084600422aa666ae68cdc3a40080042300411302c01935573c0046aae74004dd500091919192a999ab9a3370e900000108c004c01cd5d080084554ccd5cd19b874800800846006600e6ae8400422aa666ae68cdc3a400800423005375c6ae840042260560306aae78008d55ce8009baa001232323255333573466e1d20000021180098051aba100198029aba13574400211302a01735573c0046aae74004dd500091919192a999ab9a3370e90000010899194004c8c8c954ccd5cd19b87480000084600260146ae84006660164646464aa666ae68cdc3a400000423001300e357420021155333573466e1d200200211328019bad35742005375a6ae840066eb4d5d09aba20011aba200111303201f35573c0046aae74004dd50009aba13574400211302e01b35573c0046aae74004dd51aba10039998053ae50093574200532323255333573466e1d20000021180008aa999ab9a3370e900100108c014dd71aba100108aa999ab9a3370e900200108c00cd5d0800844c0b806cd55cf0011aab9d00137546ae8400666010eb8d5d09aba20011aba20013574400222605202c6aae78008d55ce8009baa001232323255333573466e1d2000002118009bae357420021155333573466e1d2002002118019bae3574200211302801535573c0046aae74004dd5000911919192a999ab9a3370e900100108c0084554ccd5cd19b874800000846002600a6ae8400422605002a6aae78008d55ce8009baa00113300175ceb488c88c008dd58009816111999aab9f0012800119400e002600c6aae74006600a6aae7800530043574400635742005000232323255333573466e1d2000002118009bae35742003375a6ae84d5d1000844c090044d55cf0011aab9d001375400246444b200513300a49103493031003003300b9001911001a64646442a6526601e92010349303300323230283302100200133301f0215004332323223002001303522590018801c884ce401a440043015301400230040014800c88005001301f021c000a00464603c604c66024016002a00b1593300f490103493034003028800a800e54012440044564cc03d24103493133003302f950049100080262b26601e92103493032003232323303522590018c00a442b2600a005180044c01000400230310023031950069111111111111111004164cc0c889640063002910c80148964cc0d400803e300100144c01800c2801c8564006260549210349303600910c8014896400e2aa666ae68cdc3a40040022200422605c92010349303600910981824903493036001130294901034930350044cc03d24103493134003031301050058c0091801230024600413303122590018c002443003325995009911111111111111118088082420031302d49010349313500181a912c800c60052219002912c9981b80100446002008898030018980200080022b32007222900391111111111111114808c8a005280148a005280148c88c00804cc10c89640063002910c80148964cc11400801e300100444c01800c4a0042426018601600318000564cc03401940062604a92010349313200910c8014896400e2b2005130294901034930390090ac99999980e800912a999ab9a3370e900000108ac9999aab9f0012801140060026ae8400a6ae88008800486400644b2b2604200521800800a300248564cccd55cf80114008a0030013574200735744006400243200322593333330260022280114008090a004500290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2604e00321800c00401e00700123002460048c0088c0091801118010460045002280114008a005219001911400400a00244c0a92410349313100484c0a924103493130004884c0ad240103493132000320032220030c0a889640063002910c80148954ccd5cd19b8f0020071130160011130060030c09c88954ccd5cd19b87001011113021490103505433001155333573466e2000404444cc00ccdc080880119b81011001113280099b8400300199b840020011980200100098131112a999ab9a3370e00202022004226600600266e18008004a400644002290019111001889640063000899ab9c0028010a40064444444444444444018223302322590018c00244264b32007222290049148014a005255333573466e3c00403846003001005803023002121801800c00910011802000a4006444444444444444401c2001232323255333573466e1d20000021180108aa999ab9a3370e900100108c00044c06801cd55cf0011aab9d001375400244646464aa666ae68cdc3a4000004230021155333573466e1d20020021180098029aba100108aa999ab9a3370e900200108c01044c06801cd55cf0011aab9d00137540024646464aa666ae68cdc3a400000423001375c6ae840066eb4d5d09aba200108980c0029aab9e00235573a0026ea800524103505431002322300237580026038446666aae7c004a0005003300435742005300335744004800180d112c800c60052219002912a999ab9a3371e9110b48796472614865616456310000211333573466e1c004cdc0803a400500080108980300189000180c111999aab9f0012800c0004b266666600a6ae840088954ccd5cd19b87480000084564cccd55cf80094008a00300135742005357440044002432003225933333300a0022255333573466e1d2000002115933335573e00250022800c004d5d08014d5d1001100090c800c8964c03800a42b26666aae7c008a004464650010021aba20043574200700090ac999999808800914008a004500228008008a00521800c00400e002460048c0091801118010460045002280114008a005215933335573e0045002232328008010d5d10021aba100380048564c02c00643001800801c0048c0091801230022300208c008a004500228011400a42b260086ae8800e4300180180140048c00913280118019aba200240008cccccc0080048a0045002280114008a0020022222223333333574800c4646600e6aae74004d55cf0009baa00723005375600e460086eb001c8c00cdd6803918011bae007800180a912c800c6001221333005007002300400111911180199802801000980a912c800c6001221801c80148a0020053301b22590018c002443003900291400400b200323300e48000006446601e00400323300e001480004c01000400126008002111802199a8028090010009119b80002001301122590018c002443003900291400400b20032300900191199a80480b001000c8c0280044c01000413222232323301622590018801c88600600530040010c008010c014cc05489640063000910992cc801c8c88c00802cc06c89640063000910c80148964cc04000801e300289803001846006007001440046008002002301422590018c002443003900291400400a6603444b20031802801a443200522593300f0020088c00c01e002898030018007260080021808112c800c6001221801c80148a002005800800898020008601e44b2003180048860072005228008016002002260080021807112c800c6001221801c80148a002005802800898020008601a44b2003180048860072005220014c010004300c22590018c0024464320072230030011808112c800c4c01800e44320052259900191980624000003223300d002001919806000a400089803001c6004044666ae68cdc4001000c00a000601445200322590028ac800c600122130074901034930370048856400e2600e92010349303800910c80248a401244b2660266ece400e444466e9520003357412009223374a900019aba030140023357406602a5200323374a900019aba0301600137620312223374a900119aba0375000666ae80dd400119aba037500026ec40680026ec405866ae80ccc055d49980aba92375000200666ae816400a266e9520003762029213374a900219aba0001376202b213374a900119aba037520026ec405466ae80cc04dd48009bb1014000c564cc04801000a26019001007802a3002460040119319ab9c00180014800c8cdd2a400066ae80dd48009bb1004919ba548008cd5d01ba9001376200822590019099ba548000cd5d018018009bb1004899ba548008dd880192622322374c6004002600e4520034bd6f7b63048a400a4466ae80cdd81804001180380098030018452005229003912a999ab9a3371e00800422666ae68cdc3801800c00200423002088ccd5cd19b8f0020018004008c00889640063000910c00c00a60080021800912c800c60012232190039118018008c01489640062600c0072219002912a999ab9a3370e900000088980300188c008119180080091801119801001000a4411cea444d37d226e71eef73ac78d149750da977feb588900135bf9e82210001" } diff --git a/hydra-plutus/src/Hydra/Contract.hs b/hydra-plutus/src/Hydra/Contract.hs index bae1df2da99..56058ce5cbf 100644 --- a/hydra-plutus/src/Hydra/Contract.hs +++ b/hydra-plutus/src/Hydra/Contract.hs @@ -19,7 +19,7 @@ import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadTokens qualified as HeadTokens import Hydra.Contract.Initial qualified as Initial import Hydra.Plutus (commitValidatorScript) -import PlutusLedgerApi.V2 (TxId (..), TxOutRef (..), toBuiltin) +import PlutusLedgerApi.V3 (TxId (..), TxOutRef (..), toBuiltin) -- | Information about relevant Hydra scripts. data ScriptInfo = ScriptInfo diff --git a/hydra-plutus/src/Hydra/Contract/Commit.hs b/hydra-plutus/src/Hydra/Contract/Commit.hs index b8bc9536060..eb36e418822 100644 --- a/hydra-plutus/src/Hydra/Contract/Commit.hs +++ b/hydra-plutus/src/Hydra/Contract/Commit.hs @@ -11,7 +11,7 @@ import Hydra.Cardano.Api (CtxUTxO, fromPlutusTxOut, fromPlutusTxOutRef, toPlutus import Hydra.Cardano.Api qualified as OffChain import Hydra.Cardano.Api.Network (Network) import Hydra.Data.Party (Party) -import PlutusLedgerApi.V2 ( +import PlutusLedgerApi.V3 ( CurrencySymbol, Datum (..), Redeemer (Redeemer), diff --git a/hydra-plutus/src/Hydra/Contract/Deposit.hs b/hydra-plutus/src/Hydra/Contract/Deposit.hs index 816cf00b331..6c9ad764f2b 100644 --- a/hydra-plutus/src/Hydra/Contract/Deposit.hs +++ b/hydra-plutus/src/Hydra/Contract/Deposit.hs @@ -11,7 +11,7 @@ module Hydra.Contract.Deposit where import PlutusTx.Prelude -import Hydra.Cardano.Api (PlutusScriptVersion (PlutusScriptV2)) +import Hydra.Cardano.Api (PlutusScriptVersion (PlutusScriptV3)) import Hydra.Contract.Commit (Commit) import Hydra.Contract.DepositError ( DepositError ( @@ -26,7 +26,7 @@ import Hydra.Contract.DepositError ( import Hydra.Contract.Error (errorCode) import Hydra.Contract.Head (hashPreSerializedCommits, hashTxOuts) import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) -import PlutusLedgerApi.V2 ( +import PlutusLedgerApi.V3 ( CurrencySymbol, Datum (Datum), Extended (Finite), @@ -117,7 +117,7 @@ validatorScript :: SerialisedScript validatorScript = serialiseCompiledCode compiledValidator validatorHash :: ScriptHash -validatorHash = scriptValidatorHash PlutusScriptV2 validatorScript +validatorHash = scriptValidatorHash PlutusScriptV3 validatorScript datum :: DepositDatum -> Datum datum a = Datum (toBuiltinData a) diff --git a/hydra-plutus/src/Hydra/Contract/Head.hs b/hydra-plutus/src/Hydra/Contract/Head.hs index eeec4fac1b0..0c9b2dc6072 100644 --- a/hydra-plutus/src/Hydra/Contract/Head.hs +++ b/hydra-plutus/src/Hydra/Contract/Head.hs @@ -11,7 +11,7 @@ module Hydra.Contract.Head where import PlutusTx.Prelude -import Hydra.Cardano.Api (PlutusScriptVersion (PlutusScriptV2)) +import Hydra.Cardano.Api (PlutusScriptVersion (PlutusScriptV3)) import Hydra.Contract.Commit (Commit (..)) import Hydra.Contract.Commit qualified as Commit import Hydra.Contract.HeadError (HeadError (..), errorCode) @@ -22,7 +22,8 @@ import Hydra.Data.Party (Party (vkey)) import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) import PlutusLedgerApi.Common (SerialisedScript, serialiseCompiledCode) import PlutusLedgerApi.V1.Time (fromMilliSeconds) -import PlutusLedgerApi.V2 ( +import PlutusLedgerApi.V1.Value (lovelaceValue) +import PlutusLedgerApi.V3 ( Address, CurrencySymbol, Datum (..), @@ -44,7 +45,7 @@ import PlutusLedgerApi.V2 ( UpperBound (..), Value (Value), ) -import PlutusLedgerApi.V2.Contexts (findOwnInput) +import PlutusLedgerApi.V3.Contexts (findOwnInput) import PlutusTx (CompiledCode) import PlutusTx qualified import PlutusTx.AssocMap qualified as AssocMap @@ -166,7 +167,7 @@ checkCollectCom ctx@ScriptContext{scriptContextTxInfo = txInfo} (contestationPer -- value, we do ensure the output value is all non collected value - fees. -- This makes the script not scale badly with number of participants as it -- would commonly only be a small number of inputs/outputs to pay fees. - otherValueOut == notCollectedValueIn - txInfoFee txInfo + otherValueOut == notCollectedValueIn - lovelaceValue (txInfoFee txInfo) OpenDatum { utxoHash @@ -693,7 +694,7 @@ validatorScript :: SerialisedScript validatorScript = serialiseCompiledCode compiledValidator validatorHash :: ScriptHash -validatorHash = scriptValidatorHash PlutusScriptV2 validatorScript +validatorHash = scriptValidatorHash PlutusScriptV3 validatorScript decodeHeadOutputClosedDatum :: ScriptContext -> ClosedDatum decodeHeadOutputClosedDatum ctx = diff --git a/hydra-plutus/src/Hydra/Contract/HeadState.hs b/hydra-plutus/src/Hydra/Contract/HeadState.hs index 5fcc8b839ad..f2a4a147652 100644 --- a/hydra-plutus/src/Hydra/Contract/HeadState.hs +++ b/hydra-plutus/src/Hydra/Contract/HeadState.hs @@ -9,7 +9,7 @@ import PlutusTx.Prelude import GHC.Generics (Generic) import Hydra.Data.ContestationPeriod (ContestationPeriod) import Hydra.Data.Party (Party) -import PlutusLedgerApi.V2 (CurrencySymbol, POSIXTime, PubKeyHash, TxOutRef) +import PlutusLedgerApi.V3 (CurrencySymbol, POSIXTime, PubKeyHash, TxOutRef) import PlutusTx qualified import Text.Show (Show) diff --git a/hydra-plutus/src/Hydra/Contract/HeadTokens.hs b/hydra-plutus/src/Hydra/Contract/HeadTokens.hs index 1677ddd6c7e..9d6293f4d58 100644 --- a/hydra-plutus/src/Hydra/Contract/HeadTokens.hs +++ b/hydra-plutus/src/Hydra/Contract/HeadTokens.hs @@ -6,7 +6,7 @@ {-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:no-simplifier-inline #-} -- Plutus core version to compile to. In babbage era, that is Cardano protocol -- version 7 and 8, only plutus-core version 1.0.0 is available. -{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.0.0 #-} +{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.1.0 #-} -- | Minting policy for a single head tokens. module Hydra.Contract.HeadTokens where @@ -14,7 +14,7 @@ module Hydra.Contract.HeadTokens where import PlutusTx.Prelude import Hydra.Cardano.Api ( - PlutusScriptV2, + PlutusScriptV3, PolicyId, TxIn, fromPlutusScript, @@ -29,10 +29,10 @@ import Hydra.Contract.HeadState qualified as Head import Hydra.Contract.HeadTokensError (HeadTokensError (..), errorCode) import Hydra.Contract.Initial qualified as Initial import Hydra.Contract.MintAction (MintAction (Burn, Mint)) -import Hydra.Contract.Util (hasST, ownCurrencySymbol, scriptOutputsAt) +import Hydra.Contract.Util (hasST, scriptOutputsAt) import Hydra.Plutus.Extras (MintingPolicyType, wrapMintingPolicy) -import PlutusCore.Core (plcVersion100) -import PlutusLedgerApi.V2 ( +import PlutusCore.Core (plcVersion110) +import PlutusLedgerApi.V3 ( Datum (getDatum), FromData (fromBuiltinData), OutputDatum (..), @@ -45,6 +45,7 @@ import PlutusLedgerApi.V2 ( Value (getValue), serialiseCompiledCode, ) +import PlutusLedgerApi.V3.Contexts (ownCurrencySymbol) import PlutusTx (CompiledCode) import PlutusTx qualified import PlutusTx.AssocMap qualified as AssocMap @@ -181,15 +182,15 @@ validateTokensBurning context = unappliedMintingPolicy :: CompiledCode (TxOutRef -> MintingPolicyType) unappliedMintingPolicy = $$(PlutusTx.compile [||\vInitial vHead ref -> wrapMintingPolicy (validate vInitial vHead ref)||]) - `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion100 Initial.validatorHash - `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion100 Head.validatorHash + `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion110 Initial.validatorHash + `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion110 Head.validatorHash -- | Get the applied head minting policy script given a seed 'TxOutRef'. mintingPolicyScript :: TxOutRef -> SerialisedScript mintingPolicyScript txOutRef = serialiseCompiledCode $ unappliedMintingPolicy - `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion100 txOutRef + `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion110 txOutRef -- * Create PolicyId @@ -201,4 +202,4 @@ headPolicyId = -- | Get the applied head minting policy script given a seed 'TxIn'. mkHeadTokenScript :: TxIn -> Api.PlutusScript mkHeadTokenScript = - fromPlutusScript @PlutusScriptV2 . mintingPolicyScript . toPlutusTxOutRef + fromPlutusScript @PlutusScriptV3 . mintingPolicyScript . toPlutusTxOutRef diff --git a/hydra-plutus/src/Hydra/Contract/Initial.hs b/hydra-plutus/src/Hydra/Contract/Initial.hs index 8da1716ea3a..1cc4baf574c 100644 --- a/hydra-plutus/src/Hydra/Contract/Initial.hs +++ b/hydra-plutus/src/Hydra/Contract/Initial.hs @@ -4,7 +4,7 @@ {-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:defer-errors #-} -- Plutus core version to compile to. In babbage era, that is Cardano protocol -- version 7 and 8, only plutus-core version 1.0.0 is available. -{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.0.0 #-} +{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.1.0 #-} -- | The initial validator which allows participants to commit or abort. module Hydra.Contract.Initial where @@ -16,13 +16,13 @@ import Hydra.Contract.Commit (Commit (..)) import Hydra.Contract.Commit qualified as Commit import Hydra.Contract.Error (errorCode) import Hydra.Contract.InitialError (InitialError (..)) -import Hydra.Contract.Util (findOwnInput, findTxInByTxOutRef, mustBurnST, scriptOutputsAt, valueLockedBy) +import Hydra.Contract.Util (findTxInByTxOutRef, mustBurnST, scriptOutputsAt, valueLockedBy) import Hydra.Plutus (commitValidatorScript) import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) -import PlutusCore.Core (plcVersion100) +import PlutusCore.Core (plcVersion110) import PlutusLedgerApi.Common (SerialisedScript, serialiseCompiledCode) import PlutusLedgerApi.V1.Value (geq, isZero) -import PlutusLedgerApi.V2 ( +import PlutusLedgerApi.V3 ( CurrencySymbol, Datum (..), FromData (fromBuiltinData), @@ -39,6 +39,7 @@ import PlutusLedgerApi.V2 ( TxOutRef, Value (getValue), ) +import PlutusLedgerApi.V3.Contexts (findOwnInput) import PlutusTx (CompiledCode) import PlutusTx qualified import PlutusTx.AssocMap qualified as AssocMap @@ -174,7 +175,7 @@ checkCommit commitValidator headId committedRefs context = compiledValidator :: CompiledCode ValidatorType compiledValidator = $$(PlutusTx.compile [||wrap . validator||]) - `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion100 (scriptValidatorHash PlutusScriptV3 commitValidatorScript) + `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion110 (scriptValidatorHash PlutusScriptV3 commitValidatorScript) where wrap = wrapValidator @DatumType @RedeemerType @@ -182,7 +183,7 @@ validatorScript :: SerialisedScript validatorScript = serialiseCompiledCode compiledValidator validatorHash :: ScriptHash -validatorHash = scriptValidatorHash PlutusScriptV2 validatorScript +validatorHash = scriptValidatorHash PlutusScriptV3 validatorScript datum :: DatumType -> Datum datum a = Datum (toBuiltinData a) diff --git a/hydra-plutus/src/Hydra/Contract/Util.hs b/hydra-plutus/src/Hydra/Contract/Util.hs index 94c83ab2d5f..871181539e4 100644 --- a/hydra-plutus/src/Hydra/Contract/Util.hs +++ b/hydra-plutus/src/Hydra/Contract/Util.hs @@ -8,14 +8,12 @@ import Hydra.Contract.HeadError (HeadError (..), errorCode) import Hydra.Data.Party (Party) import Hydra.Prelude (Show) import PlutusLedgerApi.V1.Value (isZero) -import PlutusLedgerApi.V2 ( +import PlutusLedgerApi.V3 ( Address (..), Credential (..), CurrencySymbol, OutputDatum (..), - ScriptContext (..), ScriptHash (..), - ScriptPurpose (..), TokenName (..), TxInInfo (..), TxInfo (..), @@ -110,21 +108,8 @@ valueLockedBy ptx h = in mconcat outputs {-# INLINEABLE valueLockedBy #-} --- | Find the input currently being validated. -findOwnInput :: ScriptContext -> Maybe TxInInfo -findOwnInput ScriptContext{scriptContextTxInfo = TxInfo{txInfoInputs}, scriptContextPurpose = Spending txOutRef} = - find (\TxInInfo{txInInfoOutRef} -> txInInfoOutRef == txOutRef) txInfoInputs -findOwnInput _ = Nothing -{-# INLINEABLE findOwnInput #-} - -- | Given a UTXO reference and a transaction (`TxInfo`), resolve it to one of the transaction's inputs (`TxInInfo`). findTxInByTxOutRef :: TxOutRef -> TxInfo -> Maybe TxInInfo findTxInByTxOutRef outRef TxInfo{txInfoInputs} = find (\TxInInfo{txInInfoOutRef} -> txInInfoOutRef == outRef) txInfoInputs {-# INLINEABLE findTxInByTxOutRef #-} - --- | The 'CurrencySymbol' of the current validator script. -ownCurrencySymbol :: ScriptContext -> CurrencySymbol -ownCurrencySymbol ScriptContext{scriptContextPurpose = Minting cs} = cs -ownCurrencySymbol _ = traceError "Lh" -- "Can't get currency symbol of the current validator script" -{-# INLINEABLE ownCurrencySymbol #-} diff --git a/hydra-plutus/src/Hydra/Data/ContestationPeriod.hs b/hydra-plutus/src/Hydra/Data/ContestationPeriod.hs index 7951e91784f..222746fb1d6 100644 --- a/hydra-plutus/src/Hydra/Data/ContestationPeriod.hs +++ b/hydra-plutus/src/Hydra/Data/ContestationPeriod.hs @@ -9,7 +9,7 @@ import PlutusTx.Prelude qualified as Plutus import Data.Ratio ((%)) import Data.Time (nominalDiffTimeToSeconds, secondsToNominalDiffTime) import PlutusLedgerApi.V1.Time (DiffMilliSeconds, fromMilliSeconds) -import PlutusLedgerApi.V2 (POSIXTime (..)) +import PlutusLedgerApi.V3 (POSIXTime (..)) import PlutusTx qualified newtype ContestationPeriod = UnsafeContestationPeriod {milliseconds :: DiffMilliSeconds} diff --git a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs index 5b028b66463..35fdbeaa393 100644 --- a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs +++ b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs @@ -14,7 +14,7 @@ import Hydra.Prelude import Test.Hydra.Prelude import Hydra.Cardano.Api ( - AsType (AsPlutusScriptV2, AsScript), + AsType (AsPlutusScriptV3, AsScript), File (..), Script, fromPlutusScript, @@ -28,8 +28,8 @@ import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadTokens qualified as HeadTokens import Hydra.Contract.Initial qualified as Initial import Hydra.Version (gitDescribe) -import PlutusLedgerApi.V2 (serialiseCompiledCode) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 (serialiseCompiledCode) +import PlutusLedgerApi.V3 qualified as Plutus import System.Process (readProcess) import Test.Hspec.Golden (Golden (..)) @@ -71,4 +71,4 @@ goldenScript name plutusScript = readFromFile fp = either (die . show) pure - =<< readFileTextEnvelope (AsScript AsPlutusScriptV2) (File fp) + =<< readFileTextEnvelope (AsScript AsPlutusScriptV3) (File fp) diff --git a/hydra-test-utils/src/Test/Plutus/Validator.hs b/hydra-test-utils/src/Test/Plutus/Validator.hs index 4e5db460433..da5bd7e8075 100644 --- a/hydra-test-utils/src/Test/Plutus/Validator.hs +++ b/hydra-test-utils/src/Test/Plutus/Validator.hs @@ -36,7 +36,7 @@ import Hydra.Cardano.Api ( LedgerProtocolParameters (LedgerProtocolParameters), NetworkId (Testnet), NetworkMagic (NetworkMagic), - PlutusScriptV2, + PlutusScriptV3, SystemStart (SystemStart), ToScriptData, TxBody, @@ -152,11 +152,11 @@ transactionBodyFromScript validatorScript redeemer = ScriptWitness scriptWitnessInCtx $ mkScriptWitness script (mkScriptDatum defaultDatum) (toScriptData redeemer) - script = fromPlutusScript @PlutusScriptV2 validatorScript + script = fromPlutusScript @PlutusScriptV3 validatorScript txOutFromScript = TxOut - (mkScriptAddress @PlutusScriptV2 networkId script) + (mkScriptAddress @PlutusScriptV3 networkId script) mempty (mkTxOutDatumHash defaultDatum) ReferenceScriptNone diff --git a/hydra-tx/src/Hydra/Tx/Abort.hs b/hydra-tx/src/Hydra/Tx/Abort.hs index a5f27bfccc8..f6fc6d635df 100644 --- a/hydra-tx/src/Hydra/Tx/Abort.hs +++ b/hydra-tx/src/Hydra/Tx/Abort.hs @@ -68,7 +68,7 @@ abortTx committedUTxO scriptRegistry vk (headInput, initialHeadOutput) headToken headScriptRef = fst (headReference scriptRegistry) headScript = - fromPlutusScript @PlutusScriptV2 Head.validatorScript + fromPlutusScript @PlutusScriptV3 Head.validatorScript headRedeemer = toScriptData Head.Abort @@ -92,7 +92,7 @@ abortTx committedUTxO scriptRegistry vk (headInput, initialHeadOutput) headToken initialScriptRef = fst (initialReference scriptRegistry) initialScript = - fromPlutusScript @PlutusScriptV2 Initial.validatorScript + fromPlutusScript @PlutusScriptV3 Initial.validatorScript initialRedeemer = toScriptData $ Initial.redeemer Initial.ViaAbort diff --git a/hydra-tx/src/Hydra/Tx/Close.hs b/hydra-tx/src/Hydra/Tx/Close.hs index 5c0a3674dff..bd0c4808bab 100644 --- a/hydra-tx/src/Hydra/Tx/Close.hs +++ b/hydra-tx/src/Hydra/Tx/Close.hs @@ -36,7 +36,7 @@ import Hydra.Tx ( import Hydra.Tx.Contest (PointInTime) import Hydra.Tx.Crypto (toPlutusSignatures) import Hydra.Tx.Utils (mkHydraHeadV1TxName) -import PlutusLedgerApi.V2 (toBuiltin) +import PlutusLedgerApi.V3 (toBuiltin) -- | Representation of the Head output after a CollectCom transaction. data OpenThreadOutput = OpenThreadOutput @@ -93,7 +93,7 @@ closeTx scriptRegistry vk headId openVersion confirmedSnapshot startSlotNo (endS fst (headReference scriptRegistry) headScript = - fromPlutusScript @PlutusScriptV2 Head.validatorScript + fromPlutusScript @PlutusScriptV3 Head.validatorScript headRedeemer = toScriptData $ Head.Close closeRedeemer diff --git a/hydra-tx/src/Hydra/Tx/CollectCom.hs b/hydra-tx/src/Hydra/Tx/CollectCom.hs index 91234a4d728..ad3848f5ab6 100644 --- a/hydra-tx/src/Hydra/Tx/CollectCom.hs +++ b/hydra-tx/src/Hydra/Tx/CollectCom.hs @@ -26,7 +26,7 @@ import Hydra.Tx.IsTx (hashUTxO) import Hydra.Tx.Party (partyToChain) import Hydra.Tx.ScriptRegistry (ScriptRegistry (..)) import Hydra.Tx.Utils (mkHydraHeadV1TxName) -import PlutusLedgerApi.V2 (toBuiltin) +import PlutusLedgerApi.V3 (toBuiltin) -- | Create a transaction collecting all "committed" utxo and opening a Head, -- i.e. driving the Head script state. @@ -64,12 +64,12 @@ collectComTx networkId scriptRegistry vk headId headParameters (headInput, initi BuildTxWith $ ScriptWitness scriptWitnessInCtx $ mkScriptReference headScriptRef headScript InlineScriptDatum headRedeemer - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript headScriptRef = fst (headReference scriptRegistry) headRedeemer = toScriptData Head.CollectCom headOutput = TxOut - (mkScriptAddress @PlutusScriptV2 networkId headScript) + (mkScriptAddress @PlutusScriptV3 networkId headScript) (txOutValue initialHeadOutput <> commitValue) headDatumAfter ReferenceScriptNone diff --git a/hydra-tx/src/Hydra/Tx/Commit.hs b/hydra-tx/src/Hydra/Tx/Commit.hs index 6c77c8a86c4..bb6081df693 100644 --- a/hydra-tx/src/Hydra/Tx/Commit.hs +++ b/hydra-tx/src/Hydra/Tx/Commit.hs @@ -34,8 +34,8 @@ import Hydra.Tx.HeadId (HeadId, headIdToCurrencySymbol) import Hydra.Tx.Party (Party, partyToChain) import Hydra.Tx.ScriptRegistry (ScriptRegistry, initialReference) import Hydra.Tx.Utils (addMetadata, mkHydraHeadV1TxName) -import PlutusLedgerApi.V2 (CurrencySymbol) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 (CurrencySymbol) +import PlutusLedgerApi.V3 qualified as Plutus mkCommitDatum :: Party -> UTxO -> CurrencySymbol -> Plutus.Datum mkCommitDatum party utxo headId = diff --git a/hydra-tx/src/Hydra/Tx/Contest.hs b/hydra-tx/src/Hydra/Tx/Contest.hs index 0c92eab4066..519dbf809e9 100644 --- a/hydra-tx/src/Hydra/Tx/Contest.hs +++ b/hydra-tx/src/Hydra/Tx/Contest.hs @@ -24,8 +24,8 @@ import Hydra.Tx.IsTx (hashUTxO) import Hydra.Tx.ScriptRegistry (ScriptRegistry, headReference) import Hydra.Tx.Snapshot (Snapshot (..), SnapshotVersion) import Hydra.Tx.Utils (mkHydraHeadV1TxName) -import PlutusLedgerApi.V2 (toBuiltin) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 (toBuiltin) +import PlutusLedgerApi.V3 qualified as Plutus type PointInTime = (SlotNo, UTCTime) @@ -86,7 +86,7 @@ contestTx scriptRegistry vk headId contestationPeriod openVersion Snapshot{numbe fst (headReference scriptRegistry) headScript = - fromPlutusScript @PlutusScriptV2 Head.validatorScript + fromPlutusScript @PlutusScriptV3 Head.validatorScript headRedeemer = toScriptData $ Head.Contest contestRedeemer diff --git a/hydra-tx/src/Hydra/Tx/Crypto.hs b/hydra-tx/src/Hydra/Tx/Crypto.hs index b98ca7a3730..8c15582972b 100644 --- a/hydra-tx/src/Hydra/Tx/Crypto.hs +++ b/hydra-tx/src/Hydra/Tx/Crypto.hs @@ -61,7 +61,7 @@ import Hydra.Cardano.Api ( serialiseToRawBytesHexText, ) import Hydra.Contract.HeadState qualified as OnChain -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus import Test.QuickCheck (vectorOf) import Test.QuickCheck.Instances.ByteString () import Text.Show (Show (..)) diff --git a/hydra-tx/src/Hydra/Tx/Decrement.hs b/hydra-tx/src/Hydra/Tx/Decrement.hs index 7b4c9355705..f1ea3b1793e 100644 --- a/hydra-tx/src/Hydra/Tx/Decrement.hs +++ b/hydra-tx/src/Hydra/Tx/Decrement.hs @@ -22,7 +22,7 @@ import Hydra.Tx.Party (partyToChain) import Hydra.Tx.ScriptRegistry (ScriptRegistry, headReference) import Hydra.Tx.Snapshot (Snapshot (..)) import Hydra.Tx.Utils (mkHydraHeadV1TxName) -import PlutusLedgerApi.V2 (toBuiltin) +import PlutusLedgerApi.V3 (toBuiltin) -- | Construct a _decrement_ transaction which takes as input some 'UTxO' present -- in the L2 ledger state and makes it available on L1. @@ -73,7 +73,7 @@ decrementTx scriptRegistry vk headId headParameters (headInput, headOutput) snap decommitOutputs = maybe [] toList utxoToDecommit - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript headScriptRef = fst (headReference scriptRegistry) diff --git a/hydra-tx/src/Hydra/Tx/Deposit.hs b/hydra-tx/src/Hydra/Tx/Deposit.hs index d96d127d188..cd774caeb10 100644 --- a/hydra-tx/src/Hydra/Tx/Deposit.hs +++ b/hydra-tx/src/Hydra/Tx/Deposit.hs @@ -14,7 +14,7 @@ import Hydra.Contract.Deposit qualified as Deposit import Hydra.Plutus.Extras.Time (posixFromUTCTime) import Hydra.Tx (CommitBlueprintTx (..), HeadId, fromCurrencySymbol, headIdToCurrencySymbol) import Hydra.Tx.Utils (addMetadata, mkHydraHeadV1TxName) -import PlutusLedgerApi.V2 (POSIXTime) +import PlutusLedgerApi.V3 (POSIXTime) -- * Construction @@ -45,7 +45,7 @@ depositTx networkId headId commitBlueprintTx deadline = depositValue = foldMap txOutValue depositUTxO - depositScript = fromPlutusScript @PlutusScriptV2 Deposit.validatorScript + depositScript = fromPlutusScript @PlutusScriptV3 Deposit.validatorScript deposits = mapMaybe Commit.serializeCommit $ UTxO.pairs depositUTxO @@ -55,7 +55,7 @@ depositTx networkId headId commitBlueprintTx deadline = depositOutput = TxOut - (mkScriptAddress @PlutusScriptV2 networkId depositScript) + (mkScriptAddress @PlutusScriptV3 networkId depositScript) depositValue depositDatum ReferenceScriptNone @@ -91,7 +91,7 @@ observeDepositTx networkId tx = do where depositScript = fromPlutusScript Deposit.validatorScript - depositAddress = mkScriptAddress @PlutusScriptV2 networkId depositScript + depositAddress = mkScriptAddress @PlutusScriptV3 networkId depositScript observeDepositTxOut :: Network -> TxOut CtxUTxO -> Maybe (HeadId, UTxO, POSIXTime) observeDepositTxOut network depositOut = do diff --git a/hydra-tx/src/Hydra/Tx/Fanout.hs b/hydra-tx/src/Hydra/Tx/Fanout.hs index d743e829ea8..4a5776f2db2 100644 --- a/hydra-tx/src/Hydra/Tx/Fanout.hs +++ b/hydra-tx/src/Hydra/Tx/Fanout.hs @@ -52,7 +52,7 @@ fanoutTx scriptRegistry utxo utxoToDecommit (headInput, headOutput) deadlineSlot headScriptRef = fst (headReference scriptRegistry) headScript = - fromPlutusScript @PlutusScriptV2 Head.validatorScript + fromPlutusScript @PlutusScriptV3 Head.validatorScript headRedeemer = toScriptData $ Head.Fanout diff --git a/hydra-tx/src/Hydra/Tx/HeadId.hs b/hydra-tx/src/Hydra/Tx/HeadId.hs index 66faa332ade..c12e86ddf50 100644 --- a/hydra-tx/src/Hydra/Tx/HeadId.hs +++ b/hydra-tx/src/Hydra/Tx/HeadId.hs @@ -12,7 +12,7 @@ import Hydra.Cardano.Api ( UsingRawBytesHex (..), fromPlutusCurrencySymbol, ) -import PlutusLedgerApi.V2 (CurrencySymbol (..), toBuiltin) +import PlutusLedgerApi.V3 (CurrencySymbol (..), toBuiltin) import Test.QuickCheck (vectorOf) import Test.QuickCheck.Instances.Semigroup () import Test.QuickCheck.Instances.Time () diff --git a/hydra-tx/src/Hydra/Tx/Increment.hs b/hydra-tx/src/Hydra/Tx/Increment.hs index 9ed588d528b..41e0f8ef1f1 100644 --- a/hydra-tx/src/Hydra/Tx/Increment.hs +++ b/hydra-tx/src/Hydra/Tx/Increment.hs @@ -25,7 +25,7 @@ import Hydra.Tx.Party (partyToChain) import Hydra.Tx.ScriptRegistry (ScriptRegistry, headReference) import Hydra.Tx.Snapshot (Snapshot (..)) import Hydra.Tx.Utils (mkHydraHeadV1TxName) -import PlutusLedgerApi.V2 (toBuiltin) +import PlutusLedgerApi.V3 (toBuiltin) -- | Construct a _increment_ transaction which takes as input some 'UTxO' -- locked at v_deposit and make it available on L2. @@ -68,7 +68,7 @@ incrementTx scriptRegistry vk headId headParameters (headInput, headOutput) snap & modifyTxOutDatum (const headDatumAfter) & modifyTxOutValue (<> depositedValue) - headScript = fromPlutusScript @PlutusScriptV2 Head.validatorScript + headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript headScriptRef = fst (headReference scriptRegistry) @@ -90,7 +90,7 @@ incrementTx scriptRegistry vk headId headParameters (headInput, headOutput) snap depositedValue = txOutValue depositOut - depositScript = fromPlutusScript @PlutusScriptV2 Deposit.validatorScript + depositScript = fromPlutusScript @PlutusScriptV3 Deposit.validatorScript -- NOTE: we expect always a single output from a deposit tx (depositIn, depositOut) = List.head $ UTxO.pairs depositScriptUTxO diff --git a/hydra-tx/src/Hydra/Tx/Init.hs b/hydra-tx/src/Hydra/Tx/Init.hs index bc3abbbb0d5..456d920b947 100644 --- a/hydra-tx/src/Hydra/Tx/Init.hs +++ b/hydra-tx/src/Hydra/Tx/Init.hs @@ -42,7 +42,7 @@ initTx networkId seedTxIn participants parameters = mkHeadOutput :: NetworkId -> PolicyId -> TxOutDatum ctx -> TxOut ctx mkHeadOutput networkId tokenPolicyId datum = TxOut - (mkScriptAddress @PlutusScriptV2 networkId headScript) + (mkScriptAddress @PlutusScriptV3 networkId headScript) (fromList [(AssetId tokenPolicyId hydraHeadV1AssetName, 1)]) datum ReferenceScriptNone @@ -71,7 +71,7 @@ mkInitialOutput networkId seedTxIn participant = initialValue = fromList [(AssetId tokenPolicyId (onChainIdToAssetName participant), 1)] initialAddress = - mkScriptAddress @PlutusScriptV2 networkId initialScript + mkScriptAddress @PlutusScriptV3 networkId initialScript initialScript = fromPlutusScript Initial.validatorScript initialDatum = diff --git a/hydra-tx/src/Hydra/Tx/IsTx.hs b/hydra-tx/src/Hydra/Tx/IsTx.hs index 73eed851e04..600145126be 100644 --- a/hydra-tx/src/Hydra/Tx/IsTx.hs +++ b/hydra-tx/src/Hydra/Tx/IsTx.hs @@ -23,7 +23,7 @@ import Formatting.Buildable (build) import Hydra.Cardano.Api.Tx qualified as Api import Hydra.Cardano.Api.UTxO qualified as Api import Hydra.Contract.Head qualified as Head -import PlutusLedgerApi.V2 (fromBuiltin) +import PlutusLedgerApi.V3 (fromBuiltin) -- | Types of transactions that can be used by the Head protocol. The associated -- types and methods of this type class represent the whole interface of what diff --git a/hydra-tx/src/Hydra/Tx/Recover.hs b/hydra-tx/src/Hydra/Tx/Recover.hs index 3b95257b365..9505df15eab 100644 --- a/hydra-tx/src/Hydra/Tx/Recover.hs +++ b/hydra-tx/src/Hydra/Tx/Recover.hs @@ -45,7 +45,7 @@ recoverTx depositTxId deposited lowerBoundSlot = depositOutputs = toTxContext <$> toList deposited - depositScript = fromPlutusScript @PlutusScriptV2 Deposit.validatorScript + depositScript = fromPlutusScript @PlutusScriptV3 Deposit.validatorScript data RecoverObservation = RecoverObservation { headId :: HeadId @@ -60,7 +60,7 @@ observeRecoverTx :: Maybe RecoverObservation observeRecoverTx networkId utxo tx = do let inputUTxO = resolveInputsUTxO utxo tx - (TxIn depositTxId _, depositOut) <- findTxOutByScript @PlutusScriptV2 inputUTxO depositScript + (TxIn depositTxId _, depositOut) <- findTxOutByScript @PlutusScriptV3 inputUTxO depositScript dat <- txOutScriptData $ toTxContext depositOut Deposit.DepositDatum (headCurrencySymbol, _, onChainDeposits) <- fromScriptData dat deposits <- do diff --git a/hydra-tx/src/Hydra/Tx/Snapshot.hs b/hydra-tx/src/Hydra/Tx/Snapshot.hs index d411fe74e4e..4f510eba96c 100644 --- a/hydra-tx/src/Hydra/Tx/Snapshot.hs +++ b/hydra-tx/src/Hydra/Tx/Snapshot.hs @@ -14,7 +14,7 @@ import Hydra.Contract.HeadState qualified as Onchain import Hydra.Tx.Crypto (HydraKey, MultiSignature, aggregate, sign) import Hydra.Tx.HeadId (HeadId) import Hydra.Tx.IsTx (IsTx (..)) -import PlutusLedgerApi.V2 (toBuiltin, toData) +import PlutusLedgerApi.V3 (toBuiltin, toData) import Test.QuickCheck (frequency, suchThat) import Test.QuickCheck.Instances.Natural () diff --git a/hydra-tx/src/Hydra/Tx/Utils.hs b/hydra-tx/src/Hydra/Tx/Utils.hs index 7d0e4ca0a8e..92c35f0decc 100644 --- a/hydra-tx/src/Hydra/Tx/Utils.hs +++ b/hydra-tx/src/Hydra/Tx/Utils.hs @@ -13,7 +13,7 @@ import GHC.IsList (IsList (..)) import Hydra.Contract.Util (hydraHeadV1) import Hydra.Tx.OnChainId (OnChainId (..)) import Ouroboros.Consensus.Shelley.Eras qualified as Ledger -import PlutusLedgerApi.V2 (fromBuiltin, getPubKeyHash) +import PlutusLedgerApi.V3 (fromBuiltin, getPubKeyHash) hydraHeadV1AssetName :: AssetName hydraHeadV1AssetName = AssetName (fromBuiltin hydraHeadV1) diff --git a/hydra-tx/test/Hydra/Tx/Contract/Abort.hs b/hydra-tx/test/Hydra/Tx/Contract/Abort.hs index 2743510c854..303bb3375ff 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Abort.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Abort.hs @@ -122,7 +122,7 @@ propHasInitial (_, utxo) = & counterexample ("UTxO: " <> decodeUtf8 (encodePretty utxo)) & counterexample ("Looking for Initial Script: " <> show addr) where - addr = mkScriptAddress @PlutusScriptV2 testNetworkId (fromPlutusScript Initial.validatorScript) + addr = mkScriptAddress @PlutusScriptV3 testNetworkId (fromPlutusScript Initial.validatorScript) paysToInitialScript txOut = txOutAddress txOut == addr @@ -293,7 +293,7 @@ genAbortableOutputs parties = (mkTxOutDatumInline initialDatum) ReferenceScriptNone - initialScript = fromPlutusScript @PlutusScriptV2 Initial.validatorScript + initialScript = fromPlutusScript @PlutusScriptV3 Initial.validatorScript initialDatum = Initial.datum (toPlutusCurrencySymbol testPolicyId) diff --git a/hydra-tx/test/Hydra/Tx/Contract/Close/CloseInitial.hs b/hydra-tx/test/Hydra/Tx/Contract/Close/CloseInitial.hs index ba762b85b09..3385867e171 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Close/CloseInitial.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Close/CloseInitial.hs @@ -34,7 +34,7 @@ import Hydra.Tx.Contract.Close.Healthy ( healthyUTxO, somePartyCardanoVerificationKey, ) -import PlutusLedgerApi.V2 (POSIXTime, toBuiltin) +import PlutusLedgerApi.V3 (POSIXTime, toBuiltin) import Test.Hydra.Tx.Fixture qualified as Fixture import Test.Hydra.Tx.Gen (genScriptRegistry) import Test.Hydra.Tx.Mutation (Mutation (..), SomeMutation (..), modifyInlineDatum, replaceContestationDeadline) diff --git a/hydra-tx/test/Hydra/Tx/Contract/Close/CloseUnused.hs b/hydra-tx/test/Hydra/Tx/Contract/Close/CloseUnused.hs index 8632ef04205..37dc64bae5d 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Close/CloseUnused.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Close/CloseUnused.hs @@ -35,7 +35,7 @@ import Hydra.Tx.Contract.Close.Healthy ( import Hydra.Tx.Crypto (MultiSignature, toPlutusSignatures) import Hydra.Tx.Snapshot qualified as Snapshot import PlutusLedgerApi.V1.Time (DiffMilliSeconds (..), fromMilliSeconds) -import PlutusLedgerApi.V2 (POSIXTime, PubKeyHash (PubKeyHash), toBuiltin) +import PlutusLedgerApi.V3 (POSIXTime, PubKeyHash (PubKeyHash), toBuiltin) import Test.Hydra.Tx.Fixture qualified as Fixture import Test.Hydra.Tx.Gen ( genAddressInEra, diff --git a/hydra-tx/test/Hydra/Tx/Contract/Close/CloseUsed.hs b/hydra-tx/test/Hydra/Tx/Contract/Close/CloseUsed.hs index 57ab66bbbe7..390e9ef1a48 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Close/CloseUsed.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Close/CloseUsed.hs @@ -44,7 +44,7 @@ import Hydra.Tx.Contract.Close.Healthy ( ) import Hydra.Tx.Crypto (MultiSignature (..), toPlutusSignatures) import PlutusLedgerApi.V1.Time (DiffMilliSeconds (..), fromMilliSeconds) -import PlutusLedgerApi.V2 (POSIXTime, PubKeyHash (PubKeyHash), toBuiltin) +import PlutusLedgerApi.V3 (POSIXTime, PubKeyHash (PubKeyHash), toBuiltin) import Test.Hydra.Tx.Fixture qualified as Fixture import Test.Hydra.Tx.Gen ( genAddressInEra, diff --git a/hydra-tx/test/Hydra/Tx/Contract/Close/Healthy.hs b/hydra-tx/test/Hydra/Tx/Contract/Close/Healthy.hs index f291729a0f9..a1c744ac12e 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Close/Healthy.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Close/Healthy.hs @@ -23,7 +23,7 @@ import Hydra.Tx.ContestationPeriod (fromChain) import Hydra.Tx.Crypto (HydraKey, MultiSignature, aggregate, sign) import Hydra.Tx.Init (mkHeadOutput) import Hydra.Tx.Utils (splitUTxO) -import PlutusLedgerApi.V2 (BuiltinByteString, toBuiltin) +import PlutusLedgerApi.V3 (BuiltinByteString, toBuiltin) import Test.Hydra.Tx.Fixture (aliceSk, bobSk, carolSk) import Test.Hydra.Tx.Fixture qualified as Fixture import Test.Hydra.Tx.Gen (genForParty, genOneUTxOFor, genVerificationKey) diff --git a/hydra-tx/test/Hydra/Tx/Contract/Contest/ContestCurrent.hs b/hydra-tx/test/Hydra/Tx/Contract/Contest/ContestCurrent.hs index 27fe4a96802..601f7d3503f 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Contest/ContestCurrent.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Contest/ContestCurrent.hs @@ -32,8 +32,8 @@ import Hydra.Tx.Snapshot (Snapshot (..), SnapshotNumber, SnapshotVersion) import Hydra.Tx.Utils ( splitUTxO, ) -import PlutusLedgerApi.V2 (BuiltinByteString, toBuiltin) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 (BuiltinByteString, toBuiltin) +import PlutusLedgerApi.V3 qualified as Plutus import Test.Hydra.Tx.Fixture (aliceSk, bobSk, carolSk, slotLength, systemStart, testNetworkId, testPolicyId) import Test.Hydra.Tx.Fixture qualified as Fixture import Test.Hydra.Tx.Gen ( diff --git a/hydra-tx/test/Hydra/Tx/Contract/ContractSpec.hs b/hydra-tx/test/Hydra/Tx/Contract/ContractSpec.hs index 6195bd0b168..0f6ebdf6ac9 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/ContractSpec.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/ContractSpec.hs @@ -47,7 +47,7 @@ import Hydra.Tx.Contract.Increment (genIncrementMutation, healthyIncrementTx) import Hydra.Tx.Contract.Init (genInitMutation, healthyInitTx) import Hydra.Tx.Contract.Recover (genRecoverMutation, healthyRecoverTx) import Hydra.Tx.Crypto (aggregate, sign, toPlutusSignatures) -import PlutusLedgerApi.V2 (fromBuiltin, toBuiltin) +import PlutusLedgerApi.V3 (fromBuiltin, toBuiltin) import Test.Hydra.Tx.Fixture (testNetworkId) import Test.Hydra.Tx.Gen ( genUTxOSized, diff --git a/hydra-tx/test/Hydra/Tx/Contract/Increment.hs b/hydra-tx/test/Hydra/Tx/Contract/Increment.hs index 909b0d5f84e..7233e63dd99 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Increment.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Increment.hs @@ -35,7 +35,7 @@ import Hydra.Tx.Party (Party, deriveParty, partyToChain) import Hydra.Tx.ScriptRegistry (registryUTxO) import Hydra.Tx.Snapshot (Snapshot (..), SnapshotNumber, SnapshotVersion) import Hydra.Tx.Utils (adaOnly, splitUTxO) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 qualified as Plutus import PlutusTx.Builtins (toBuiltin) import Test.Hydra.Tx.Fixture (aliceSk, bobSk, carolSk, slotLength, systemStart, testHeadId, testNetworkId, testPolicyId) import Test.Hydra.Tx.Gen (genForParty, genScriptRegistry, genUTxOSized, genVerificationKey) @@ -175,9 +175,9 @@ genIncrementMutation (tx, utxo) = pure $ ChangeInput depositIn newOutput (Just $ toScriptData $ Claim (headIdToCurrencySymbol testHeadId)) ] where - depositScript = fromPlutusScript @PlutusScriptV2 Deposit.validatorScript + depositScript = fromPlutusScript @PlutusScriptV3 Deposit.validatorScript - depositAddress = mkScriptAddress @PlutusScriptV2 testNetworkId depositScript + depositAddress = mkScriptAddress @PlutusScriptV3 testNetworkId depositScript (depositIn, depositOut@(TxOut addr val _ rscript)) = fromJust $ diff --git a/hydra-tx/test/Hydra/Tx/Contract/Recover.hs b/hydra-tx/test/Hydra/Tx/Contract/Recover.hs index c4765716078..c84c2c1c7cc 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Recover.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Recover.hs @@ -17,7 +17,7 @@ import Hydra.Tx.BlueprintTx (CommitBlueprintTx (..)) import Hydra.Tx.Deposit (depositTx) import Hydra.Tx.HeadId (mkHeadId) import Hydra.Tx.Recover (recoverTx) -import PlutusLedgerApi.V2 (CurrencySymbol, POSIXTime) +import PlutusLedgerApi.V3 (CurrencySymbol, POSIXTime) import Test.Hydra.Tx.Fixture (testNetworkId, testPolicyId) import Test.Hydra.Tx.Gen (genUTxOAdaOnlyOfSize, genValue) import Test.Hydra.Tx.Mutation ( diff --git a/hydra-tx/testlib/Test/Hydra/Tx/Mutation.hs b/hydra-tx/testlib/Test/Hydra/Tx/Mutation.hs index e521e9e83d5..986614d1052 100644 --- a/hydra-tx/testlib/Test/Hydra/Tx/Mutation.hs +++ b/hydra-tx/testlib/Test/Hydra/Tx/Mutation.hs @@ -154,8 +154,8 @@ import Hydra.Ledger.Cardano.Evaluate (evaluateTx) import Hydra.Plutus.Orphans () import Hydra.Prelude hiding (label, toList) import Hydra.Tx.Utils (findFirst, onChainIdToAssetName, verificationKeyToOnChainId) -import PlutusLedgerApi.V2 (CurrencySymbol, POSIXTime, toData) -import PlutusLedgerApi.V2 qualified as Plutus +import PlutusLedgerApi.V3 (CurrencySymbol, POSIXTime, toData) +import PlutusLedgerApi.V3 qualified as Plutus import System.Directory.Internal.Prelude qualified as Prelude import Test.Hydra.Prelude import Test.Hydra.Tx.Fixture (testPolicyId) @@ -537,7 +537,7 @@ instance Arbitrary Head.State where isHeadOutput :: TxOut CtxUTxO -> Bool isHeadOutput TxOut{txOutAddress = addr} = addr == headAddress where - headAddress = mkScriptAddress @PlutusScriptV2 Fixture.testNetworkId headScript + headAddress = mkScriptAddress @PlutusScriptV3 Fixture.testNetworkId headScript headScript = fromPlutusScript Head.validatorScript -- | Adds given 'Datum' and corresponding hash to the transaction's scripts. From 866775bfa2f348051a38e94fa2c180fdce91ce6a Mon Sep 17 00:00:00 2001 From: Daniel Firth Date: Thu, 31 Oct 2024 16:19:13 +0000 Subject: [PATCH 04/24] PlutusScriptV2 -> PlutusScriptV3 --- hydra-plutus/scripts/mHead.plutus | 2 +- hydra-plutus/scripts/vDeposit.plutus | 2 +- hydra-plutus/scripts/vHead.plutus | 2 +- hydra-plutus/scripts/vInitial.plutus | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hydra-plutus/scripts/mHead.plutus b/hydra-plutus/scripts/mHead.plutus index ee70e6b1248..948ac4855f1 100644 --- a/hydra-plutus/scripts/mHead.plutus +++ b/hydra-plutus/scripts/mHead.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV3", - "description": "hydra-mHead-0.19.0-287-g0bd0171da", + "description": "hydra-mHead-0.19.0-289-gad254dc10", "cborHex": "592b2d592b2a0101003332323232323232323232323232323232323232322222932323232553335734002226464646464646500132323232553335734002226464646464646464646464646464646466666666666646664664664444444444444445001010807c03a01b00c805c02a013008803c01a00b004801c00a00230013574202a60026ae8404cc0b08c8c8c8c954ccd5cd00088c004c084d5d08014c018d5d09aba200208981ea4903505431003370e90000011aab9e00235573a0026ea8004cc0b0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981a1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304849103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c109240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089822248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303075c6ae84d5d10008d5d10009aba200211303c490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0a805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089820248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304049103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089820a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae6800446008226084920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303a49103505431003370e90000011aab9e00235573a0026ea8d5d0805198153ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c10124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d001375400204e6ae84020cc00409cd5d08039bae3574200c66602c0306602c052464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022607a92103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605402a6ae84010c008d5d080198011aba135744006602aeb8c099d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422604c92103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980c80c1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302b49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a00111328049980f00f9aba10039aba10019980f3ae357426ae880046ae8800844c954ccd5cd00088c004cc07807cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606092103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093301f75c6ae84d5d1002044c954ccd5cd00088c01ccc080084d5d0802844c954ccd5cd0008899194034cc08c090d5d08044cc094050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0d5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981080100086ae88004d5d100308992a999ab9a00111802998110119aba1007991919192a999ab9a001113302675c6ae8400844c0d1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a00111801089818a4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c099240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009811911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301675a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc05dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089817a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089817248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a00111802089819a48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c09524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c08d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302149103505431003370e90000011aab9e00235573a0026ea8004d5d100108980da48103505431003370e90000011aab9e00235573a0026ea8006445200322500c92c992c991919192a999ab9a0011180108992a999ab9a00111800089810a4903505431003370e900100199b8748000008d55cf0011aab9d0013754009133014491034d303600593330122232333573400300080119b8f002001301300130159001911001a426603c44b200318004886400a44b264666ae6800600100233710002900044c01800e30020003180122b266028921034d303100323301e22590018c00a442b3201922900491192a999ab9a0011132333573400300080119b870040021180119b8f004002230008980200080026603a44b2003180048860072005220024c01000499001911001a44444444444444440208a999191919149980ca49034d30320032333573400300080119b8732593330182232333573400300080119b8f0020015006301b9007911001a4260040031480006466446446004002604a44b20031003910c801488cc020004c01800c90019100124006440028009119b80002001a4000337012b32a0072200245407642b26666660420024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0cc00a42b26666aae7c008a004464650010021aba20043574200700090ac99999981b00091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0ec00a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302c001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981880148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac981f800c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0b800488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26066005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c11c00a42b26666aae7c008a00450018009aba10039aba20032001219001912c982580148564cccd55cf80114008a0030013574200735744006400243200322593302b04f00290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981400091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999813800914008a004500228008008a004464466666605000245002280100114008a0046050446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302400190c00400518010cdc3a40000045002280114008a005215900190a80fc5407a44443001002800ccc0204488c88c008004c0a889640062007221330060023004001001a42a03e89811249034d30390048540792220012400513232593301b4901034d3033003302422590018c00a4432005223255333573400222603e00422600e00866e3c008020900191000a264b2b266038921034d30340032333573400300080119b8795990029100122a04121593333330240012232532323232325333573400c22b26666aae7c01ca00450018009aba10089aba20082001219001912c980280148564cccd55cf80114008a0030013574200735744006400243200322593300b00c00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e0045002232328008010d5d10021aba100380048564cccccc0e400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2607c005215933335573e0045002232328008010d5d10021aba100380048564c06000643001800801c0048c0091801230022300208c008cdc3a40000045002280114008a00521800c01402e00f00380091300e4991300d4991300c49889804a4c8980424c44c0152644c0112622600293044c005262325325333573400422b26666aae7c024a004464650010021aba200b3574201500090ac99999981780091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d000a42b26666aae7c008a00450018009aba10039aba20032001219001912c9980880900148564cccd55cf80114008a003001357420073574400640024320032259301300290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26030005215933335573e0045002232328008010d5d10021aba100380048564c10800643001800807c02e00f003800918012300246004460048c0088c009180111801230022300208c008cdc3a40000045002280114008a00521800c01c0048980124c89800a4c1130014988c94c94ccd5cd00108ac9999aab9f00b28011191940040086ae88034d5d0806400242b26666660620024464aa666ae680044564cccd55cf80114008a003001357420073574400640024320032259303600290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266026028005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c05400a42b26666aae7c008a00450018009aba10039aba20032001219001912c980d00148564cccd55cf80114008a003001357420073574400640024320032259301e00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26094005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c13800a42b26666aae7c008a00450018009aba10039aba20032001219001912c9981582900148564cccd55cf801140088c8ca002004357440086ae8400e0012159302c00190c00600203f01b80bc04e01f00b803c00e002460048c009180111801230022300246004460048c0088c009180111801230022300246004460048c0088c008230023370e900000114008a004500228014860030010012260049322600293044c005262325533357340022300180104600466e1d200600c3370e900200519b87480080208cccccc0ac00488c954ccd5cd00088ac9999aab9f00228011191940040086ae88010d5d0801c00242b2600c00321800800a3002460041180119b8748000008a00450022801140088cccccc0a80048a00450022801140040045002232233333302b0012280114008008a0045002302b2233335573e00250018000964c010d5d080148564c010d5d1001c8600300300280091801226500230033574400480012c9813800c860020028c00866e1d2000002280114008a004500290ac800c85408a2a0432222180080140066601622446446004002605a44b20031003910998030011802000800d21502244c095241034d303900485408522200119802889119118010009813912c800c400e4426600c00460080023302522590018c002443003900291000a60080021800c804c88800d13302125933301b2232333573400300080119b8f00200100400190ac800c4c0992401034d303800910c8014896400e2b264666ae680060010023370e0029001460011302a4901034d3038004884c0b12401034d3038001130254901034d30370019812912c800c6001221801c80148800530040010c00640264440068c009159330212590018a80fc8564c090006426603e9201034d31320032333573400300080119b8f001006898132481034d31320048540806604a44b2003180048860072005220024c01000430019009911001a2646603a9201034d3035005932333573400300080119b8f9001911001801233200322200248a404a4464aa666ae6800444c8ccd5cd000c00200466e1c0100084600466e3c0100088c008b320052200245408242b26666660480024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d800a42b26666aae7c008a004464650010021aba20043574200700090ac99999981c80091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0f800a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302f001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981a00148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac9821000c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0c400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c12800a42b26666aae7c008a00450018009aba10039aba20032001219001912c982700148564cccd55cf80114008a0030013574200735744006400243200322593302b05200290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981580091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999815000914008a004500228008008a004464466666605600245002280100114008a0046056446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302700190c00400518010cdc3a40000045002280114008a005215900190a81145408644443001002800ccc02c4488c88c008004c0b489640062007221330060023004001001a42a04489812a481034d30390048540851801230021803008460045004500580088cd5400488cdc0000a400490000ac998008054801c88800d1301e491034d313100910ac800c400a44260449201034d313100088cc08089640063000910992cc801c888a4012452005280148c954ccd5cd00088c00600200d00704600466e3c0040384860060030024400460080029001911111111111111100704c04c00460051801064646464aa666ae6800444c8c8c8c8c8c8ca00264646464aa666ae6800444c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccccccccccc8ccc8cc8cc888888888888888a00202100f807403601900b80540260110078034016009003801400460026ae84054c004d5d080998181191919192a999ab9a0011180098109aba100298031aba13574400411304149103505431003370e90000011aab9e00235573a0026ea8004cc0c0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981c1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304c49103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c119240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089824248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303475c6ae84d5d10008d5d10009aba2002113040490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0b805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089822248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304449103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089822a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae680044600822608c920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303e49103505431003370e90000011aab9e00235573a0026ea8d5d0805198173ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c11124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137540020566ae84020cc0040acd5d08039bae3574200c66602c0306602c05a464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022608292103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605c02a6ae84010c008d5d080198011aba135744006602aeb8c0a9d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422605492103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980e80e1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302f49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a0011132804998110119aba10039aba1001998113ae357426ae880046ae8800844c954ccd5cd00088c004cc08808cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606892103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093302375c6ae84d5d1002044c954ccd5cd00088c01ccc090094d5d0802844c954ccd5cd0008899194034cc09c0a0d5d08044cc0a4050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0e5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981280100086ae88004d5d100308992a999ab9a00111802998130139aba1007991919192a999ab9a001113302a75c6ae8400844c0e1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a0011180108981aa4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c0a9240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009813911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301a75a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc06dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089819a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089819248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a0011180208981ba48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c0a524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c09d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302549103505431003370e90000011aab9e00235573a0026ea8004d5d100108980fa48103505431003370e90000011aab9e00235573a0026ea801629345402d22500c92805c8940324a0161809911192a999ab9a001113016490103505433001132553335734002226600a66e05200000433702900000188994004cdc2002800ccdc20020008cc01801000ccdc40012400066e1c005200030122223255333573400222006226600800466e1800c008cdc3800a400026020920103505435002001223232323255333573400223002113255333573400223001300735742006113015490103505431003370e900000199b8748008008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411301249103505431003370e90000011aab9e00235573a0026ea80048c88c008dd60009807111999aab9f00128001400cc010d5d08014c00cd5d10012000601844b200318014886400a4464aa666ae6800444c8ccd5cd000c00200466e1c00920021130070043371e0049110b487964726148656164563100088c88c008004c03489640063002910c80148964cc02000801e300100144c01800c14800c888ca400a44a0072001912801c9400a44a00725002099319ab9c491024c6800800089640063000899ab9c0028010a40064444444444444444018130064901034d31320013005491034d30390013004491034d31300023223002001300522590018c002442b2600a005130040018c00823333330020012280114008a004500228008008888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801e000464c66ae7000600046460020024600446600400400291011cc12e89c8838224d72db401ba955e96134b3d7d920fdc33049c0569d80048811c00e0e6aceb51fcb4fcc5dc6032cc524a641163f0723b25d995de3ae80001" } diff --git a/hydra-plutus/scripts/vDeposit.plutus b/hydra-plutus/scripts/vDeposit.plutus index 907e6d1a7bc..07f70020436 100644 --- a/hydra-plutus/scripts/vDeposit.plutus +++ b/hydra-plutus/scripts/vDeposit.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV3", - "description": "hydra-vDeposit-0.19.0-287-g0bd0171da", + "description": "hydra-vDeposit-0.19.0-289-gad254dc10", "cborHex": "5912fe5912fb0100003233223332223233223232323232323232323232323232323232323232323232323232323232323223235300100222233333350012230154910350543500230144910350543500223015490103505435002301449103505435002253350012153353322323353232325335333573466e1d20000020350341321223002003375c6ae8400454cd4ccd5cd19b87480080080d40d04c8488c00400cdd69aba10011301c01835573c0046aae74004dd50041299a9a9a9808a80111000912999a8011099809a490344303100333573466e24004d401c8880080d80d44c07124103443032001301c4910344303200133010490103443036003301c00135004222003103225335353530115002220022253335002213301349010344303400333573466e24004d401c8880080d40d84c07124103443033001301c4910344303300133010490103443035003301c3724603a66a0320026aa004444444444444444401c6e48c098c08cc0a8d401088800440c84d400488800cc8c8c94cd4ccd5cd19b87480000080c80c44c8c8c8c94cd4ccd5cd19b87480000080d80d44c8ccc88848ccc00401000c008dd71aba1002375a6ae84004c014d5d09aba2001357440022603a0326aae78008d55ce8009baa35742004602c4646464a66a666ae68cdc3a400000406c06a26644246600200600460206ae84004dd71aba1357440022603a0326aae78008d55ce8009baa0011301901535573c0046aae74004dd50009803804080e0980b249035054350013015491035054350023014491035054350032323232323232323223232325335333573466e1d2000002035034132333222123330010040030023232325335333573466e1d2000002039038132323232323232323232323232323333333333333333222222222222222212333333333333333300101101000f00e00d00c00b00a0090080070060050040030023302b01a3574201e660560346ae84038cc0ac06cd5d08069bad3574201866603eeb94078d5d08059981580c1aba100a33301f01c75a6ae84024c8c8c94cd4ccd5cd19b87480000081281244cc8848cc00400c008c8c8c94cd4ccd5cd19b87480000081341304cc8848cc00400c008cc0b9d69aba1001302d357426ae880044c0d00c0d55cf0011aab9d00137546ae84004c8c8c94cd4ccd5cd19b87480000081341304cc8848cc00400c008cc0b9d69aba1001302d357426ae880044c0d00c0d55cf0011aab9d00137546ae84d5d1000898188169aab9e00235573a0026ea8d5d080419815bae3574200e66603e4646464a66a666ae68cdc3a40000040960942642444444600a00e6eb8d5d08008a99a999ab9a3370e90010010258250990911111180100398129aba100115335333573466e1d200400204b04a132122222230030073020357420022a66a666ae68cdc3a400c0040960942664424444446600c01000e6eb4d5d0800980e1aba1357440022a66a666ae68cdc3a40100040960942642444444600200e603a6ae8400454cd4ccd5cd19b874802800812c1284cc884888888cc01002001cdd69aba1001301b357426ae880044c0c80b8d55cf0011aab9d001375400204c6ae84018ccc07dd70131aba1005375c6ae84010ccc07c064cc07c0a48c8c8c94cd4ccd5cd19b874800000812c1284488800854cd4ccd5cd19b874800800812c1284488800454cd4ccd5cd19b874801000812c1284488800c4c0c80b8d55cf0011aab9d00137540026ae8400ccc0ac05cd5d08011980ebad357420026603aeb4d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c080070d55cf0011aab9d00137546ae84008d5d0800991919299a999ab9a3370e900000101c81c099091111118028039bae357420022a66a666ae68cdc3a40040040720702664424444446600401000e60266ae84004cc03c060d5d09aba200115335333573466e1d200400203903813212222223003007300e357420022a66a666ae68cdc3a400c0040720702664424444446600c01000e6eb4d5d080098051aba1357440022a66a666ae68cdc3a40100040720702642444444600200e60166ae8400454cd4ccd5cd19b87480280080e40e04cc884888888cc01002001cdd69aba10013009357426ae880044c080070d55cf0011aab9d00137546ae84d5d10009aba20011301c01835573c0046aae74004dd50009191919299a999ab9a3370e900000101a019899199911091998008020018011bad3574200460146ae84004c8c8c94cd4ccd5cd19b87480000080e00dc4c8ccc88848888888ccc00c028024020cc03c06cd5d08011aba10013300f75c6ae84d5d10009aba200115335333573466e1d20020020380371332212222222330070090083300e01a35742002646464a66a666ae68cdc3a40000040760742664424660020060046eb4d5d08009bad357426ae880044c088078d55cf0011aab9d00137546ae84d5d10008a99a999ab9a3370e900200101c01b899910911111119801004804199808006bad357420026601ceb8d5d09aba200115335333573466e1d20060020380371321222222230040083300e01a357420022a66a666ae68cdc3a401000407006e2646466664444244444446666002016014012010660200386ae8400ccc07803cd5d0801199809007bad357420026a646464a66a666ae68cdc3a400000407a0782660586eb4d5d08009bad357426ae880044c090080d55cf0011aab9d00137546ae84d5d1000911980b8010009aba2001357440022a66a666ae68cdc3a401400407006e26644244444446600a0120106601c0346ae84004c8c8c94cd4ccd5cd19b87480000080ec0e84cc045d71aba10011302201e35573c0046aae74004dd51aba1357440022a66a666ae68cdc3a401800407006e22444444400c2603e0366aae78008d55ce8009baa357426ae88004d5d10008980d80b9aab9e00235573a0026ea8004c88c8c8c94cd4ccd5cd19b87480000080d00cc4cc88488888888888cc014034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b87480080080d00cc4cc88488888888888cc008034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b87480100080d00cc4cc88488888888888cc028034030c024d5d080098029aba1357440022a66a666ae68cdc3a400c00406806626466644424444444444466600c01c01a01860146ae84008c018d5d08009bad357426ae88004d5d10008a99a999ab9a3370e900400101a019899910911111111111980380680618049aba1001375a6ae84d5d10008a99a999ab9a3370e900500101a019899091111111111180080618049aba100115335333573466e1d200c002034033133221222222222223300300d00c3009357420026eb4d5d09aba200115335333573466e1d200e002034033133221222222222223300900d00c375c6ae84004dd71aba1357440022a66a666ae68cdc3a4020004068066266442444444444446601001a0186eb8d5d08009bad357426ae8800454cd4ccd5cd19b87480480080d00cc4cc88488888888888cc02c034030c024d5d080098049aba1357440022a66a666ae68cdc3a4028004068066264244444444444600801860126ae840044c06c05cd55cf0011aab9d0013754002644646464a66a666ae68cdc3a4000004068066264244460060086eb8d5d08008a99a999ab9a3370e900100101a0198990911180080218029aba100115335333573466e1d200400203403313322122233002005004375c6ae84004c014d5d09aba20011301b01735573c0046aae74004dd50009191919299a999ab9a3370e90000010198190990911180180218041aba100115335333573466e1d20020020330321122200215335333573466e1d2004002033032112220011301a01635573c0046aae74004dd50009191919299a999ab9a3370e90000010190188990911180180218039aba100115335333573466e1d2002002032031132122230020043007357420022a66a666ae68cdc3a4008004064062264244460020086eb8d5d08008980c80a9aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080c40c04cc8848cc00400c008c02cd5d080098029aba135744002260300286aae78008d55ce8009baa00123232325335333573466e1d200000203002f13232333322221233330010050040030023232325335333573466e1d2000002035034133221233001003002300a35742002660164646464a66a666ae68cdc3a40000040720702642446004006601c6ae8400454cd4ccd5cd19b87480080080e40e04c8ccc888488ccc00401401000cdd69aba1002375a6ae84004dd69aba1357440026ae880044c080070d55cf0011aab9d00137540026ae84d5d10008980e00c1aab9e00235573a0026ea8d5d08019998053ae500935742004646464a66a666ae68cdc3a400000406a068224440062a66a666ae68cdc3a400400406a068264244460020086eb8d5d08008a99a999ab9a3370e900200101a81a099091118010021aba10011301c01835573c0046aae74004dd51aba10013300875c6ae84d5d10009aba2001357440022602e0266aae78008d55ce8009baa00123232325335333573466e1d200000202f02e1321223002003375c6ae8400454cd4ccd5cd19b87480080080bc0b84c8488c00400cdd71aba10011301601235573c0046aae74004dd500091191919299a999ab9a3370e900100101781708910008a99a999ab9a3370e9000001017817099091180100198029aba10011301601235573c0046aae74004dd5000899800bae75a4464460046eac004c0ac88cccd55cf800901391919a8139980e98031aab9d001300535573c00260086ae8800cd5d080100a1191919299a999ab9a3370e90000010150148999109198008018011bae357420026eb4d5d09aba20011301100d35573c0046aae74004dd50009813111299a999ab9a3370e00201a05004e2601e9201035054330015335333573466e200040340a009c4cc00ccdc080680119b8100d001132332212330010030023370800600266e10008004cc010008004c0948894cd4ccd5cd19b8700100c02702610021330030013370c00400244a66a002204a266ae700080908d4004888888888888888802480048c8c8c94cd4ccd5cd19b874800000809008c408c54cd4ccd5cd19b874800800809008c40904c02c01cd55cf0011aab9d001375400244646464a66a666ae68cdc3a4000004048046224440042a66a666ae68cdc3a400400404804626424446006008600a6ae8400454cd4ccd5cd19b874801000809008c448880044c02c01cd55cf0011aab9d00137540024646464a66a666ae68cdc3a40000040440422664424660020060046eb8d5d08009bad357426ae880044c024014d55cf0011aab9d00137540029210350543100232230023758002603c446666aae7c00480688cd4064c010d5d080118019aba200200748000cc06c884894cd4ccd5cd19b8900248000078074406054cd40044060884cd4064008cd4c01848004cdc08022400400224002464c66ae700040084800488ccd5cd19b8f0020010190183017225335001100c221337146eccd40088888cdd2a400066ae80d401088cdd2a400066ae80c02c008cd5d019806119a800919ba548000cd5d018068009bb100f2223374a900119aba0375000666ae80dd400119aba037500026ec4044004dd880699aba033300c75266018ea48dd400080199aba05333500213374a90001bb100b213374a900219aba000137620184266e9520023357406ea4004dd880619aba03300a7520026ec402cc0100048cd40048cdd2a400066ae80dd48009bb100423374a900119aba037520026ec4010894cd400484cdd2a400066ae80c00c004dd8802099ba548008dd8801a4c446446e98c008004c05488cd40052f5bded8c0446a0044466ae80cdd8180400118038009803001910919800801801180891299a800898011801806110a99a800880111098031803802980811299a8008805910a99a800880191099a8071980380200118030009807911299a8010800910a99a801880219110a999a998088028010a801899a807801198040038008a801899a80600119802800801980711299a80088019109a8011119b8a00130060034890035003222001350022220023500122200333230010012212323330022300222230030042300222230020042300222230010042353300400400335003001122223330042533500113350060070072215335001133500800300922153233353300d00500315001133300800333500b00500c002150011333006002233500b00500100122253350011335008335008003002300600932221533353300d00600215003133300800233500b0060050011500313350083350080030023006001222532335002130014988854c8ccd4cc03801c00c540044c011261500113330070022300633500c0070010012335009300333500900400a30070021220021221223300100400332223500222350022235005223500222533353300b00600215335333573466e1c01400404003c403854cd4ccd5cd19b8900500101000f100c100d13300b00600213300b006002225335333573466e3c00800401c018401454cd4ccd5cd19b91002001007006100310041222003122200212220011220021220012323001001230022330020020011" } diff --git a/hydra-plutus/scripts/vHead.plutus b/hydra-plutus/scripts/vHead.plutus index 404966ffc43..ae617f55d78 100644 --- a/hydra-plutus/scripts/vHead.plutus +++ b/hydra-plutus/scripts/vHead.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV3", - "description": "hydra-vHead-0.19.0-287-g0bd0171da", + "description": "hydra-vHead-0.19.0-289-gad254dc10", "cborHex": "59315659315301000032323322333222323322323232323233223232323232332232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323233332222323232323232323232323232323232323232323232323232323232323232323232323232322323235300100322233333350012230524910350543500230514910350543500223052490103505435002305149103505435002253350012153353232325333350033232323232215333333350081306949884c1a92613069498c8c8c8c8c8c8854cd4c09d403454cd54cd4ccd5cd19b8735303c00e222222222006500208b0108a01108b0113357389201034831330008a01153355335333573466e25402cd40208888888880142280422c04422c044cd5ce249034833310008a01153353350012533533301d500633333302450045003500c35303d00f22222222200430370860135303d00f222222222003001108c011335738921034833390008b012253355335333573466e3cd4c0f804088888888800cc0e021c0423404230044ccc079401ccccccc0954014cdc0a80224004a01a6a607c020444444444008607010e02002004211802211a02266ae71241034834300008c01153353302e00e50031533553353323223002001308e01225335001108e012215335333573466e3c0140082400423c04423c044c01000540314010422c044cd5ce2481034833380008a0115335353535500d2222222222222222009220012253335002215335333573466e24005402823804234044238044cd5ce249034833320008d011506215062153355335333502a079500933508401500c5004108b011335738921034833360008a01153355335333573466e1cc1994024c19d402822c042280454cd4ccd5cd19b8735303c00e222222222001500708b0108a01108b0113357389201034833340008a0115335333573466e1cd4c0f0038888888888004cdc02803a8030458084500884580899ab9c4901034833350008a01153353330293307f500a50053307f35303c00e22222222200750063307f35303c00e222222222009500315335330395335304900e21353500122001222200310850135533535500d222222222222222200e130630342210022222003108b01133573892010248340008a01108a01108a01108a01108a01108a01108a01108a01108a01108a01108a0113500622222222200613500522222222200913500422222222200213500322222222200813500222222222200713500122222222200121306a498884d40248894cd4ccc0a4d400c8888888888888888030d4018888888888024d4018888888888020c854cd54cd4ccd5cd19b8f303533502500650013500722222222200408a0108901108a0113357389201034834310008901153355335333573466e3cd401c88888888800cc0d4c8cd4098018004cd40c4019400422804224044228044cd5ce248103483432000890113535350042222222222222222009220022253335002215335333573466e24004d402888888888800423004234044234044cd5ce249034834330008c011506915069108901108901135003222222222222222200e10880121306a4984d4c0cc0148888888880084d4c0c80108888888880204d4c0c400c88888888801454cd4d5400488888888888888880204c155262215335001100222130594984d400488800c4c18d26222323232215323333333500a150012150021350092225332355335333573466e3cd4c0f003488888004c0dcd5400488800c22804224044228044cd5ce249034831370008901153355335333573466e1d200035303c00d2222200208a0108901108a0113357389201034832300008901153353330283307e35303c00d2222200400b3307e35303c00d2222200300c3307e35303c00d2222200500a15335533533032533535004222222222222222200e108401221306b001323233307407600230603350850133080010553350850100108601086013307f05435005222222222222222200d355001222001108a01133573892103483139000890115335533530095335304800d213535001220012222003108401108a011335738921034831360008901153355335333573466e1cd54004888008c1ac02c22804224044228044cd5ce249034831380008901153353302d00d00a130260041089011089011089011089011089011089011300735003222222222222222201010880121500221500222150032150021533333335009135008222533533302835003222222222222222200c00800932153353302c00c00915335330773036500130343350243067500135004222222222222222200e108901133573892010348313500088011088011330050820135003222222222222222201010870121306b4984c1a92621306b49884c1ad26221306c49884c1ad263085012232253350011003221350022253353305200b001133008300630560010031330080070033087012253350011003221335082010023004001308401225335001133305007e480001f8884c8d400c88d400c8c8894cd4cc120d40148888010d4d4c128040880048888010401c54cd4cc1500340144ccc164c00cc160014cdc02400400400226660b20080046660ea0ee0026a00a444400661180244a66a002200644266a10e020046008002600800261060244a66a0022104024426a00444a66a666ae68cdc7801003843808430089833800898030019919191910a9999999a8038983424c6464646442a66a6048a0142a66aa66a666ae68cdc499b81353535500a2222222222222222009220012253335002210011506e1506e353535500a2222222222222222009220022253335002210011506d1506d5004088010870110880113357389201034832320008701153355335333573466e1cd4c0e402c888888888004c8d4030888d4d4d400c888888888888888802488004894ccd400884cdc00008038a8380a83828020440084380884400899ab9c491034832330008701153353302b00b5003153355335333573466e1cd4c0e402c88888888801940082200421c044220044cd5ce24810348313300087011533553335001153355335333573466e1d20005002088010870115335333573466e1d200035303900b22222222200508801087011333573466e3cd4c0e402c888888888010d4018888880042200421c04421c04421c044220044cd5ce248103483238000870121533533301a50063333330215004500335303a00c22222222200535303a00c22222222200430340830135303a00c2222222220030011089011335738920103483239000880122153355335333573466e3cd4c0ec03488888888800cc0d42100422804224044ccc06d401ccccccc0894014cdc0a802240046a607601a44444444400a6a607601a444444444008606a10802002004211202211402266ae71241034833300008901153355335533535303900b2222222220021088012210890110880113357389201034832360008701153355335330365335304600b21353500122001222200310820135533535500a222222222222222200e13060031221002222200310880113357389201024834000870113330263307c35303900b22222222200850053307c35303900b22222222200750043307c35303900b2222222220095003108701108701108701108701108701108701108701108701135004222220021350032222200513500222222003135001222220041306849884c1a52632322153353330243307a350042222200450063307a3500422222003353038009222220033307a5003500532153355335333573466e1cd4c0e402888888008cdc024004a00610e0210c02210e02266ae71240103483231000860115335333018500733333301f500650033500222200235303900a2222200130320810130325001350022220031533553353302f5335304500a21353500122001222200310810133306f07135533550081305f0302210022222003306e500110870113357389201024834000860113302a00a5004108601108601108601133502135001222001533550071305e49103505439002210011085011350022222200213500122222005221306a49884210044d4c0cc010888880144d4c0c800c888880104d4d400888800c88888888888888880384d400488800cc02402cc8c8c94cd4ccd5cd19b87480000081fc1f844888888801454cd4ccd5cd19b87480080081fc1f84c848888888c004020c8c8c94cd4ccd5cd19b874800000820804204044480044c16816cd55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480100081fc1f84c848888888c00c020c8c8c94cd4ccd5cd19b874800000820804204044c8ccc88848ccc00401000c008cc065d71aba1002375a6ae84004dd69aba1357440026ae880044c16816cd55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480180081fc1f84c848888888c018020c8c8c94cd4ccd5cd19b874800000820804204044488800c54cd4ccd5cd19b874800800820804204044c84888c008010cc061d71aba100115335333573466e1d20040020820108101133221222330010050043301875c6ae84004dd71aba135744002260b40b66aae78008d55ce8009baa357420022a66a666ae68cdc3a40100040fe0fc264244444446008010646464a66a666ae68cdc3a40000041040210202264244600400666030eb8d5d08008a99a999ab9a3370e9001001041008408089991091198008020019980c3ae357420026eb8d5d09aba20011305a05b35573c0046aae74004dd51aba100115335333573466e1d200a00207f07e11222222200715335333573466e1d200c00207f07e133221222222233002009008375a6ae84004dd69aba135744002260ae0b06aae78008d55ce8009baa0063232325335333573466e1d200000207e07d1323233330353057357420066602c0b46ae84008dd71aba1001300d357426ae88004d5d10009aba200115335333573466e1d200200207e07d130323232325335333573466e1d2000002081010800113232323333303d375c6ae84010cc068178d5d0801982d9aba1002375a6ae84004dd71aba1357440026ae88004d5d10009aba20011305905a35573c0046aae74004dd51aba100115335333573466e1d200400207e07d130353232325335333573466e1d20000020810108001132323232323232333333333040375c6ae84020cc078188d5d0803982f9aba1006375a6ae84014dd69aba1004375c6ae8400cdd71aba10023301e75c6ae84004dd69aba1357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20011305905a35573c0046aae74004dd51aba100115335333573466e1d200600207e07d10341305605735573c0046aae74004dd5000881e09829a49035054350013052491035054350023051491035054350032323232323232323223232325335333573466e1d20000020810108001132333222123330010040030023232325335333573466e1d20000020850108401132323232323232323232323232323333333333333333222222222222222212333333333333333300101101000f00e00d00c00b00a0090080070060050040030023302901a3574201e660520346ae84038cc0a406cd5d08069bad3574201866603eeb94078d5d08059981480c1aba100a33301f01c75a6ae84024c8c8c94cd4ccd5cd19b874800000825804254044cc8848cc00400c008c8c8c94cd4ccd5cd19b874800000826404260044cc8848cc00400c008cc0b5d69aba1001302c357426ae880044c1c41c8d55cf0011aab9d00137546ae84004c8c8c94cd4ccd5cd19b874800000826404260044cc8848cc00400c008cc0b5d69aba1001302c357426ae880044c1c41c8d55cf0011aab9d00137546ae84d5d1000898370379aab9e00235573a0026ea8d5d080419814bae3574200e66603e4646464a66a666ae68cdc3a400000412e0212c022642444444600a00e6eb8d5d08008a99a999ab9a3370e900100104b8084b008990911111180100398121aba100115335333573466e1d20040020970109601132122222230030073020357420022a66a666ae68cdc3a400c00412e0212c022664424444446600c01000e6eb4d5d0800980e1aba1357440022a66a666ae68cdc3a401000412e0212c022642444444600200e603a6ae8400454cd4ccd5cd19b874802800825c04258044cc884888888cc01002001cdd69aba1001301b357426ae880044c1bc1c0d55cf0011aab9d001375400204a6ae84018ccc07dd70129aba1005375c6ae84010ccc07c064cc07c0a08c8c8c94cd4ccd5cd19b874800000825c04258044488800854cd4ccd5cd19b874800800825c04258044488800454cd4ccd5cd19b874801000825c04258044488800c4c1bc1c0d55cf0011aab9d00137540026ae8400ccc0a405cd5d08011980ebad357420026603aeb4d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c174178d55cf0011aab9d00137546ae84008d5d0800991919299a999ab9a3370e90000010428084200899091111118028039bae357420022a66a666ae68cdc3a400400410a02108022664424444446600401000e60246ae84004cc03c05cd5d09aba200115335333573466e1d2004002085010840113212222223003007300e357420022a66a666ae68cdc3a400c00410a02108022664424444446600c01000e6eb4d5d080098051aba1357440022a66a666ae68cdc3a401000410a02108022642444444600200e60166ae8400454cd4ccd5cd19b874802800821404210044cc884888888cc01002001cdd69aba10013009357426ae880044c174178d55cf0011aab9d00137546ae84d5d10009aba20011305905a35573c0046aae74004dd50009191919299a999ab9a3370e90000010400083f899199911091998008020018011bad3574200460146ae84004c8c8c94cd4ccd5cd19b87480000082100420c044c8ccc88848888888ccc00c028024020cc03c068d5d08011aba10013300f75c6ae84d5d10009aba200115335333573466e1d200200208401083011332212222222330070090083300e01935742002646464a66a666ae68cdc3a400000410e0210c022664424660020060046eb4d5d08009bad357426ae880044c17c180d55cf0011aab9d00137546ae84d5d10008a99a999ab9a3370e90020010420084180899910911111119801004804199808006bad357420026601ceb8d5d09aba200115335333573466e1d200600208401083011321222222230040083300e019357420022a66a666ae68cdc3a401000410802106022646466664444244444446666002016014012010660200366ae8400ccc07003cd5d0801199809007bad357420026a646464a66a666ae68cdc3a400000411202110022660fa6eb4d5d08009bad357426ae880044c184188d55cf0011aab9d00137546ae84d5d1000911980b8010009aba2001357440022a66a666ae68cdc3a4014004108021060226644244444446600a0120106601c0326ae84004c8c8c94cd4ccd5cd19b874800000821c04218044cc045d71aba10011305f06035573c0046aae74004dd51aba1357440022a66a666ae68cdc3a4018004108021060222444444400c260b80ba6aae78008d55ce8009baa357426ae88004d5d10008982c02c9aab9e00235573a0026ea8004c88c8c8c94cd4ccd5cd19b8748000008200041fc4cc88488888888888cc014034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b8748008008200041fc4cc88488888888888cc008034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b8748010008200041fc4cc88488888888888cc028034030c024d5d080098029aba1357440022a66a666ae68cdc3a400c004100020fe26466644424444444444466600c01c01a01860146ae84008c018d5d08009bad357426ae88004d5d10008a99a999ab9a3370e90040010400083f899910911111111111980380680618049aba1001375a6ae84d5d10008a99a999ab9a3370e90050010400083f899091111111111180080618049aba100115335333573466e1d200c0020800107f133221222222222223300300d00c3009357420026eb4d5d09aba200115335333573466e1d200e0020800107f133221222222222223300900d00c375c6ae84004dd71aba1357440022a66a666ae68cdc3a4020004100020fe266442444444444446601001a0186eb8d5d08009bad357426ae8800454cd4ccd5cd19b8748048008200041fc4cc88488888888888cc02c034030c024d5d080098049aba1357440022a66a666ae68cdc3a4028004100020fe264244444444444600801860126ae840044c160164d55cf0011aab9d0013754002644646464a66a666ae68cdc3a4000004100020fe264244460060086eb8d5d08008a99a999ab9a3370e90010010400083f8990911180080218029aba100115335333573466e1d20040020800107f13322122233002005004375c6ae84004c014d5d09aba20011305805935573c0046aae74004dd50009191919299a999ab9a3370e900000103f83f0990911180180218041aba100115335333573466e1d200200207f07e1122200215335333573466e1d200400207f07e112220011305705835573c0046aae74004dd50009191919299a999ab9a3370e900000103f03e8990911180180218039aba100115335333573466e1d200200207e07d132122230020043007357420022a66a666ae68cdc3a40080040fc0fa264244460020086eb8d5d08008982b02b9aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000081f41f04cc8848cc00400c008c028d5d080098029aba135744002260aa0ac6aae78008d55ce8009baa00123232325335333573466e1d200000207c07b13232333322221233330010050040030023232325335333573466e1d20000020810108001133221233001003002300a35742002660164646464a66a666ae68cdc3a400000410a02108022642446004006601c6ae8400454cd4ccd5cd19b874800800821404210044c8ccc888488ccc00401401000cdd69aba1002375a6ae84004dd69aba1357440026ae880044c174178d55cf0011aab9d00137540026ae84d5d10008982c82d1aab9e00235573a0026ea8d5d08019998053ae500935742004646464a66a666ae68cdc3a40000041020210002224440062a66a666ae68cdc3a40040041020210002264244460020086eb8d5d08008a99a999ab9a3370e90020010408084000899091118010021aba10011305905a35573c0046aae74004dd51aba10013300875c6ae84d5d10009aba200135744002260a80aa6aae78008d55ce8009baa00123232325335333573466e1d200000207b07a1321223002003375c6ae8400454cd4ccd5cd19b87480080081ec1e84c8488c00400cdd71aba10011305305435573c0046aae74004dd500091191919299a999ab9a3370e900100103d83d0a8330a99a999ab9a3370e900000103d83d0983398029aba10011305305435573c0046aae74004dd5000899800bae75a4464460046eac004c1e088cccd55cf800903991919a8399983718031aab9d001300535573c00260086ae8800cd5d080102f1191919299a999ab9a3370e900000103b83b09983c1bae357420026eb4d5d09aba20011304f05035573c0046aae74004dd50009839911299a999ab9a3370e0020300e80e6260989201035054330015335333573466e200040601d01cc4cc00ccdc080c00119b81018001132332212330010030023370800600266e10008004cc010008004c1c88894cd4ccd5cd19b8700101707307210021330030013370c00400244644a66aa66a666ae68cdc3980600218068008398390980119aa80500200088390839899ab9c49010348313200072307322533500110732215335350022233500722222223335734666e54024cdc51bb3375200e66e28dd99ba8006337146eccdd400299b8a37666ea4010cdc51bb337520066eccdd480100083f03e80089802000883a10009191919299a999ab9a3370e900000103883808380a99a999ab9a3370e90010010388380838898248251aab9e00235573a0026ea800488c8c8c94cd4ccd5cd19b87480000081c41c04488800854cd4ccd5cd19b87480080081c41c04c84888c00c010c014d5d08008a99a999ab9a3370e900200103883808911000898248251aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000081bc1b84cc8848cc00400c008dd71aba1001375a6ae84d5d1000898238241aab9e00235573a0026ea80048c88c008dd60009836911999aab9f0012068233506730043574200460066ae8800814ccc1ac8844894cd4008419c8854cd400c41a4884cd41a8cc194010008cd54c0204800400c0044800488888848cccccc00401c01801401000c008c1a4894cd4004520002213370090011802000983411299a8008a400044266e012002300400133067221225335333573466e24009200006906810631533500110632213350640023353006120013370200890010008900091a8009111111111111111299a9809006083a899ab9c4901035530310007430652253350011065223213500322300300130692253350011300600322135002225335333573466e1d200000106d06c13006003106c22235003223500422350052253355335333500a0590060051533533027004003133059002001106a106a106b133573892010248320006a330632212225335002153350011066221067221533500310672215335330070040021333530091200100700300110691200122232330662253350011300348000884d4008894cd4ccd5cd19b8f00200906a069130073370201c60180022600c0060084a66a666ae68cdc380099b8048008c01400819018c41904cd5ce248103483134000633061225335001148000884cdc024004600800260c044a66a00220084426a0044466e00004c01800c88c8d400c8894cd4c020d400c88888888888888880204c98cd5ce248102483600049232215335001153353002300c300735006222222222222222201010661335738921024835000652213263357389210248370004e306622533500110652215335330560050021068130040013061225335001105b22135002223232330692253350011003221335064002300400100230070043302d00735001222200348000c174894cd4004415c884cd4160008c010004c170894cd40044158884cd415c008c010004cc16c884894cd4ccd5cd19b8900248000174170400454cd4004415c884cd4c01848004cdc080224004002240026444666660060924600c0026660060924666ae68cdc3a40000020b80b602e004002446464464446600600400260be444a66a0042600a002442a66a006260100084426a00844646a00a44a66a6602200a0042a66a6601a00800226601801000c20d02a66a6020008266018010014266006a66a602000220c6266a0c400e0c600c60d0444a66a00220d04426a00444a66a602800226600e00c0062a66a6602a0120042a66a660220100022660200186660de444a66a00420024426600a00266a0d600400600c00620d826600e66a0cc00800c00660ba44a66a00220ba4426a00444a66a60100022600c00620c060b844a66a00220b84426a00444a66a600e0022600c00620be92103505438003058225335001105822135002225335333573466e1d200000105c05b13006003105b23724600400260ac44a66a002203e44266e28dd99a801111119ba548000cd5d01a8021119ba548000cd5d0180e80119aba03301e233500123374a900019aba0301f001376204244466e9520023357406ea000ccd5d01ba80023357406ea0004dd88118009bb101f335740666018ea5402c00ccd5d02999a801099ba548000dd880e9099ba548010cd5d00009bb101e213374a900119aba037520026ec4078cd5d01980e3a9001376203a600800246e48c068c05cc12c00488ccd5cd19b8f3766666008ea5400c008dd99998023a9500300105405313300175246ea000488c88dd31801000982a1119a800a5eb7bdb18088d400888cd5d019bb030080023007001300600332253353004300b00121533335001210011300349888884c01d262130044984c0092623263357389210248330003632253353003300a001215333350012130044984c00d26222213007498840044c00926232633573892010248330003532233333302100122532335333573466e1d20000030520511533533335573e0044a07c4607e6608e6ae8400cd5d100181c109a80091299a980400110a99a9999aab9f00225042230433304b357420066ae8800c0f084d4004894cd4cc09809c008854cd4cccd55cf8011282311823998279aba100335744006080426a00244a66a605a00442a66a6666aae7c008941288c8c8c134008d5d10021aba1003044215335302e00121304c333301500b0070030011300e4984c035261300c4984c02526130084984c01526130044984c0052613001498c894cd4ccd5cd19b874800801014c14854cd4cccd55cf8019281f9191918210011aba20053574200807242a66a66666604c00244a66a666ae68cdc3a40000040ac0aa2a66a6666aae7c004941088c10ccc12cd5d08011aba200203c2135001225335302900221533533335573e0044a08c4608e6609e6ae8400cd5d1001820109a80091299a9981501580110a99a9999aab9f0022504a2304b33053357420066ae8800c11084d4004894cd4c050008854cd4cccd55cf80112827118279982b9aba100335744006090426a00244a66a606c00442a66a6666aae7c008941488c8c8c154008d5d10021aba100304c21533530370012130543333302100f00b0070030011505215051150501504d1504c150491504815045150441504115041250402504025040250402130413009001130034984c0092613002498c894cd4ccd5cd19b874801001014c14854cd4cccd55cf8019281f9191918210011aba20053574200807242a66a66666604c00244a66a666ae68cdc3a40000040ac0aa2a66a6666aae7c004941088c10ccc12cd5d08011aba200203c2135001225335302900221533533335573e0044a08c4608e6609e6ae8400cd5d1001820109a80091299a9981501580110a99a9999aab9f0022504a2304b33053357420066ae8800c11084d4004894cd4c050008854cd4cccd55cf80112827118279982b9aba100335744006090426a00244a66a606c00442a66a6666aae7c008941488c14ccc16cd5d08019aba200304c2135001225335303a00221533533335573e0044a0ac460ae660be6ae8400cd5d1001828109a80091299a981e80110a99a9999aab9f0022505a2305b33063357420066ae8800c15084d4004894cd4c104008854cd4cccd55cf8011282f1182f998339aba1003357440060b0426a00244a66a6608408a00442a66a6666aae7c008941888c8c8c194008d5d10021aba100305c215335304800121306433333333303001f01b01701300f00b0070030011506215061150601505d1505c1505915058150551505415051150501504d1504c15049150481504515044150411504125040250402504025040213041300c001130034984c009261300249894cd4ccd5cd19b874801800c1481444c0f8020540f4940ec940ec940ec940ec8cccccc080004894cd4ccd5cd19b874800000814013c54cd4cccd55cf8009281e11919181f8011aba20033574200406c42a66a604400242607c0022a0782a0762a0764a0744a0744a0744a074424444600800a24444006444424444666600401000e00c00a424444600200a4444444442466666666600201401201000e00c00a00800600444444246666600200c00a008006004644a66a6a6a002444006444444444444444401c2600493110a99a998029a80111110021a9a98038019100091110020980e8010980224c464c66ae71241034831310002d223500222350032232335005233500425335333573466e3c0080041381345400c413481348cd4010813494cd4ccd5cd19b8f00200104e04d15003104d153350032153350022133500223350022335002233500223303f00200120502335002205023303f00200122205022233500420502225335333573466e1c01800c14c14854cd4ccd5cd19b8700500205305213300f00400110521052104b153350012104b104b22333573466e1c00800411811494cd4c008004840044c98cd5ce24810248380002a23500122235003222222222222222233333350112201a20192201a20192322300201330592253350011504422135002225335350022235009225335333573466e3c0100081841804ccd5cd19b87003001061060106013049004130060032019233500123374a900019aba037520026ec40108cdd2a400466ae80dd48009bb1004225335001213374a900019aba030030013762008266e9520023762006932814981f91299a80089801180181c910a99a800880111098031803802981f11299a800881c110a99a800880191099a81d998038020011803000981e911299a8010800910a99a801880219110a999a9981f0028010a801899a81e001198040038008a801899a81c80119802800801981e11299a800880291099a801111b8a001300400122333573466e1d200230053300300235001222200303b03a232253355335300200121302800115026213303e225335001103822132533535003225335333573466e1d20020010430421302f0021502e2133503b001002100130040010011035303b2253350011502622135002225335333573466e3c00801c0fc0f84c0ac0044c01800d2201003038225335001148000884cdc02400460080024a66a646466666601400444a66a666ae68cdc3a40000040740722a66a6666aae7c004940988c09ccc0bcd5d08011aba20020202135001225335300b00221533533335573e0044a05446056660666ae8400cd5d1001812109a80091299a980500110a99a9999aab9f0022502e232323031002357440086ae8400c0a0854cd4c04c00484c0c0ccc04001c00c004540b8540b4540b0540a4540a0540945409494090940909409094090c0108cccccc028004894cd4ccd5cd19b87480000080e80e454cd4cccd55cf8009281311813998179aba100235744004040426a00244a66a601800442a66a6666aae7c008940a88c8c8c0b4008d5d10021aba1003024215335300f00121302c12330010040021502a150291502815025150252502425024250242502430090012135001222002103022212333001004003002232233333300800122502325022002250222502230362233335573e002460460624a66a60086ae84008854cd4c010d5d100190981299a8190010008a811899281198019aba200201c2533530030012130200011501e2333333004001225335333573466e1d20000020340331533533335573e0024a04046042660526ae84008d5d100100d109a80091299a980380110a99a9999aab9f00225024232323027002357440086ae8400c078854cd4c02800484c098cc0ec00c004540905408c540885407c5407c940789407894078940788cccccc00c0048940789407494074940748c0780048cccccc00800489407494070940708c07400494070888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801c06894ccd4d400488880084c98cd5ce2490248390001421001213263357389210348313000015302e22533500110282213350293500222330260023301b23370490008008009802000899319ab9c490103483333000112326335738921034833370001123232325335333573466e1d200000202d02c1375a6ae840044c014018d55cf0011aab9d0013754002464c66ae7000403d240103505431002375c002604e44a66a0022900011099b8048008c010004c098894cd4004520002213370090011802000899319ab9c49103483434000093024225335001148000884cdc0240046008002604644a66a002203a44266a0044444660220260066008002604444a66a00220424426a00444a66a666ae68cdc7a450b4879647261486561645631000020260251333573466e1d2002001026025130060033021225335001148000884cdc0240046008002264c66ae712410348323700004132633573892103483235000031326335738921034832340000223263357389210248310000212001301b225335001101522133500222223300900b00330040012322230033009333500b00a002001301b225335001101522133501635002223301300233008233350012330094800000488cc0280080048cc0240052000001300400123223002001301a2253350011014221335015350022233012002300700130040012233700004002424460040062244002602a44a66a002201e44266a0206a004446601a004666a0024601400244666a01401200400246016002600800244666ae68cdc780100080a00989911119191980c91299a800880191099a80a0011802000980100218029980c11299a800880911099299a9a80191911801005980f11299a800880f1109a80111299a99808001003881089803001899a80a00180088009802000801180b91299a800880891099a8091a8011119198080019800804180e91299a80089aa8078019109a80111299a998078010040891119801005002098030019802000980991299a800880691099a8071a801111980580118050009802000980911299a800880611099a8069a801111980500118048009802000980891299a800880591099a8061a80111198048011aa8038009802000909111801802089091118008021109198008018011a8019110009a8011110011a800911001999180080091091919980111801111180180211801111180100211801111180080211a998020020019a801800891111998021299a800899a803003803910a99a800899a804001804910a99199a998068028018a800899980400199a8058028060010a8008999803001119a805802800800911299a800899a80419a804001801180300499110a999a998068030010a801899980400119a8058030028008a801899a80419a804001801180300091129919a80109800a4c442a64666a6601c00e0062a00226008930a80089998038011180319a806003800800919a804980199a80480200518038010910010910911980080200199111a9a80111001111a9a80191001112999a998038020010a99a999ab9a3370e00600201801620142a66a666ae68cdc48018008060058804080489980380200109980380200111299a999ab9a3371e00400200e00c200a2a66a666ae68cdc8801000803803080188020911001891100109110008910010910009109198008018011191800800918011198010010009" } diff --git a/hydra-plutus/scripts/vInitial.plutus b/hydra-plutus/scripts/vInitial.plutus index c4ecfc9aa36..0240530f6a0 100644 --- a/hydra-plutus/scripts/vInitial.plutus +++ b/hydra-plutus/scripts/vInitial.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV3", - "description": "hydra-vInitial-0.19.0-287-g0bd0171da", + "description": "hydra-vInitial-0.19.0-289-gad254dc10", "cborHex": "5913cb5913c801010033232323232323232323232323232323232323232323232323232323232323232323232323232323223323222930030019114800c88c0a52410350543500918142490350543500911814a4810350543500918142490350543500912c800c8564ccc020dd70009919192a999ab9a3370e900000108c0004554ccd5cd19b8748008008460066603601a6ae8400422605a0346aae78008d55ce8009baa00530090078816c4c0a9241035054350044c0a52401035054350048c0a1240103505435000c8c8c8c8c8c8c8c8c88c8c8c954ccd5cd19b874800000844ca002646464aa666ae68cdc3a40000042264646464646464646464646464650013302e01a3574201f3302e01a3574201d3302e01b3574201b375a6ae8403266603eeb94078d5d0805ccc0b8060d5d08054ccc07c071d69aba10099919192a999ab9a3370e900000108c004c8c8c954ccd5cd19b87480000084600266062eb4d5d0800cc0c0d5d09aba20010898230199aab9e00235573a0026ea8d5d0800cc8c8c954ccd5cd19b87480000084600266062eb4d5d0800cc0c0d5d09aba20010898230199aab9e00235573a0026ea8d5d09aba20010898218181aab9e00235573a0026ea8d5d08044cc0b9d71aba100799980f91919192a999ab9a3370e900000108c00cdd71aba100108aa999ab9a3370e900100108c024c090d5d080084554ccd5cd19b87480100084600e60406ae8400422aa666ae68cdc3a400c00423001375a6ae8400660386ae84d5d100084554ccd5cd19b874802000846016603a6ae8400422aa666ae68cdc3a401400423005375a6ae8400660366ae84d5d1000844c1100c4d55cf0011aab9d00137540020526ae8401a66603eeb80a4d5d0802cdd71aba100499980f80c9980f81611919192a999ab9a3370e900000108c0084554ccd5cd19b87480080084600822aa666ae68cdc3a40080042300011304403135573c0046aae74004dd50009aba10039981700b9aba10029980ebad357420033301d75a6ae84d5d10008d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba200111303201f35573c0046aae74004dd51aba10029aba10019919192a999ab9a3370e900000108c00cdd71aba100108aa999ab9a3370e900100108c024c048d5d0800ccc03c06cd5d09aba200108aa999ab9a3370e900200108c01cc038d5d080084554ccd5cd19b8748018008460026eb4d5d0800cc028d5d09aba200108aa999ab9a3370e900400108c02cc02cd5d080084554ccd5cd19b87480280084600a6eb4d5d0800cc024d5d09aba200108981900f9aab9e00235573a0026ea8d5d09aba20011aba200111302e01b35573c0046aae74004dd500091919192a999ab9a3370e900000108994004dd69aba100298051aba10019919192a999ab9a3370e900000108994024cc03c078d5d08014d5d0800ccc03dd71aba1357440023574400222aa666ae68cdc3a4004004230013300e01d3574200332323255333573466e1d2000002118009bad35742003375a6ae84d5d1000844c0d0084d55cf0011aab9d00137546ae84d5d100084554ccd5cd19b87480100084601666602001aeb4d5d0800ccc039d71aba1357440021155333573466e1d2006002118039980700e9aba100108aa999ab9a3370e90040010899194034cc04007cd5d0801ccc08403cd5d08014ccc04803dd69aba1001c9919192a999ab9a3370e900000108c004dd69aba10019bad357426ae8800422606c0466aae78008d55ce8009baa357426ae88006446602e0040021aba20013574400222aa666ae68cdc3a4014004230053300e01d3574200332323255333573466e1d2000002113301175c6ae8400444c0d0084d55cf0011aab9d00137546ae84d5d100084554ccd5cd19b87480300084600422606203c6aae78008d55ce8009baa357426ae880046ae8800444c0b4068d55cf0011aab9d0013754002644646464aa666ae68cdc3a40000042300d3009357420033300a75a6ae84d5d100084554ccd5cd19b87480080084602660126ae8400666014eb4d5d09aba200108aa999ab9a3370e900200108c00cc024d5d0800cc014d5d09aba200108aa999ab9a3370e90030010899402cc028d5d08014c018d5d0800cdd69aba1357440023574400222aa666ae68cdc3a401000423009300935742003375a6ae84d5d100084554ccd5cd19b87480280084602a60126ae8400422aa666ae68cdc3a401800423011300935742003375a6ae84d5d100084554ccd5cd19b87480380084600a6eb8d5d0800cdd71aba1357440021155333573466e1d2010002118039bae35742003375a6ae84d5d100084554ccd5cd19b87480480084600260126ae8400660126ae84d5d100084554ccd5cd19b87480500084601e60126ae8400422605a0346aae78008d55ce8009baa00132232323255333573466e1d2000002118009bae357420021155333573466e1d20020021180298029aba100108aa999ab9a3370e900200108c00cdd71aba100198029aba13574400211302d01a35573c0046aae74004dd500091919192a999ab9a3370e900000108c004c020d5d080084554ccd5cd19b87480080084600422aa666ae68cdc3a40080042300411302c01935573c0046aae74004dd500091919192a999ab9a3370e900000108c004c01cd5d080084554ccd5cd19b874800800846006600e6ae8400422aa666ae68cdc3a400800423005375c6ae840042260560306aae78008d55ce8009baa001232323255333573466e1d20000021180098051aba100198029aba13574400211302a01735573c0046aae74004dd500091919192a999ab9a3370e90000010899194004c8c8c954ccd5cd19b87480000084600260146ae84006660164646464aa666ae68cdc3a400000423001300e357420021155333573466e1d200200211328019bad35742005375a6ae840066eb4d5d09aba20011aba200111303201f35573c0046aae74004dd50009aba13574400211302e01b35573c0046aae74004dd51aba10039998053ae50093574200532323255333573466e1d20000021180008aa999ab9a3370e900100108c014dd71aba100108aa999ab9a3370e900200108c00cd5d0800844c0b806cd55cf0011aab9d00137546ae8400666010eb8d5d09aba20011aba20013574400222605202c6aae78008d55ce8009baa001232323255333573466e1d2000002118009bae357420021155333573466e1d2002002118019bae3574200211302801535573c0046aae74004dd5000911919192a999ab9a3370e900100108c0084554ccd5cd19b874800000846002600a6ae8400422605002a6aae78008d55ce8009baa00113300175ceb488c88c008dd58009816111999aab9f0012800119400e002600c6aae74006600a6aae7800530043574400635742005000232323255333573466e1d2000002118009bae35742003375a6ae84d5d1000844c090044d55cf0011aab9d001375400246444b200513300a49103493031003003300b9001911001a64646442a6526601e92010349303300323230283302100200133301f0215004332323223002001303522590018801c884ce401a440043015301400230040014800c88005001301f021c000a00464603c604c66024016002a00b1593300f490103493034003028800a800e54012440044564cc03d24103493133003302f950049100080262b26601e92103493032003232323303522590018c00a442b2600a005180044c01000400230310023031950069111111111111111004164cc0c889640063002910c80148964cc0d400803e300100144c01800c2801c8564006260549210349303600910c8014896400e2aa666ae68cdc3a40040022200422605c92010349303600910981824903493036001130294901034930350044cc03d24103493134003031301050058c0091801230024600413303122590018c002443003325995009911111111111111118088082420031302d49010349313500181a912c800c60052219002912c9981b80100446002008898030018980200080022b32007222900391111111111111114808c8a005280148a005280148c88c00804cc10c89640063002910c80148964cc11400801e300100444c01800c4a0042426018601600318000564cc03401940062604a92010349313200910c8014896400e2b2005130294901034930390090ac99999980e800912a999ab9a3370e900000108ac9999aab9f0012801140060026ae8400a6ae88008800486400644b2b2604200521800800a300248564cccd55cf80114008a0030013574200735744006400243200322593333330260022280114008090a004500290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2604e00321800c00401e00700123002460048c0088c0091801118010460045002280114008a005219001911400400a00244c0a92410349313100484c0a924103493130004884c0ad240103493132000320032220030c0a889640063002910c80148954ccd5cd19b8f0020071130160011130060030c09c88954ccd5cd19b87001011113021490103505433001155333573466e2000404444cc00ccdc080880119b81011001113280099b8400300199b840020011980200100098131112a999ab9a3370e00202022004226600600266e18008004a400644002290019111001889640063000899ab9c0028010a40064444444444444444018223302322590018c00244264b32007222290049148014a005255333573466e3c00403846003001005803023002121801800c00910011802000a4006444444444444444401c2001232323255333573466e1d20000021180108aa999ab9a3370e900100108c00044c06801cd55cf0011aab9d001375400244646464aa666ae68cdc3a4000004230021155333573466e1d20020021180098029aba100108aa999ab9a3370e900200108c01044c06801cd55cf0011aab9d00137540024646464aa666ae68cdc3a400000423001375c6ae840066eb4d5d09aba200108980c0029aab9e00235573a0026ea800524103505431002322300237580026038446666aae7c004a0005003300435742005300335744004800180d112c800c60052219002912a999ab9a3371e9110b48796472614865616456310000211333573466e1c004cdc0803a400500080108980300189000180c111999aab9f0012800c0004b266666600a6ae840088954ccd5cd19b87480000084564cccd55cf80094008a00300135742005357440044002432003225933333300a0022255333573466e1d2000002115933335573e00250022800c004d5d08014d5d1001100090c800c8964c03800a42b26666aae7c008a004464650010021aba20043574200700090ac999999808800914008a004500228008008a00521800c00400e002460048c0091801118010460045002280114008a005215933335573e0045002232328008010d5d10021aba100380048564c02c00643001800801c0048c0091801230022300208c008a004500228011400a42b260086ae8800e4300180180140048c00913280118019aba200240008cccccc0080048a0045002280114008a0020022222223333333574800c4646600e6aae74004d55cf0009baa00723005375600e460086eb001c8c00cdd6803918011bae007800180a912c800c6001221333005007002300400111911180199802801000980a912c800c6001221801c80148a0020053301b22590018c002443003900291400400b200323300e48000006446601e00400323300e001480004c01000400126008002111802199a8028090010009119b80002001301122590018c002443003900291400400b20032300900191199a80480b001000c8c0280044c01000413222232323301622590018801c88600600530040010c008010c014cc05489640063000910992cc801c8c88c00802cc06c89640063000910c80148964cc04000801e300289803001846006007001440046008002002301422590018c002443003900291400400a6603444b20031802801a443200522593300f0020088c00c01e002898030018007260080021808112c800c6001221801c80148a002005800800898020008601e44b2003180048860072005228008016002002260080021807112c800c6001221801c80148a002005802800898020008601a44b2003180048860072005220014c010004300c22590018c0024464320072230030011808112c800c4c01800e44320052259900191980624000003223300d002001919806000a400089803001c6004044666ae68cdc4001000c00a000601445200322590028ac800c600122130074901034930370048856400e2600e92010349303800910c80248a401244b2660266ece400e444466e9520003357412009223374a900019aba030140023357406602a5200323374a900019aba0301600137620312223374a900119aba0375000666ae80dd400119aba037500026ec40680026ec405866ae80ccc055d49980aba92375000200666ae816400a266e9520003762029213374a900219aba0001376202b213374a900119aba037520026ec405466ae80cc04dd48009bb1014000c564cc04801000a26019001007802a3002460040119319ab9c00180014800c8cdd2a400066ae80dd48009bb1004919ba548008cd5d01ba9001376200822590019099ba548000cd5d018018009bb1004899ba548008dd880192622322374c6004002600e4520034bd6f7b63048a400a4466ae80cdd81804001180380098030018452005229003912a999ab9a3371e00800422666ae68cdc3801800c00200423002088ccd5cd19b8f0020018004008c00889640063000910c00c00a60080021800912c800c60012232190039118018008c01489640062600c0072219002912a999ab9a3370e900000088980300188c008119180080091801119801001000a4411cea444d37d226e71eef73ac78d149750da977feb588900135bf9e82210001" } From 3d78045656dda3320f9a38411d3b97ab00a28fc1 Mon Sep 17 00:00:00 2001 From: Franco Testagrossa Date: Tue, 29 Oct 2024 11:12:33 +0100 Subject: [PATCH 05/24] starting the rewrite --- hydra-plutus/plutus.json | 113 +++++++++++- hydra-plutus/validators/initial.ak | 282 +++++++++++++++++++++++++++++ 2 files changed, 391 insertions(+), 4 deletions(-) create mode 100644 hydra-plutus/validators/initial.ak diff --git a/hydra-plutus/plutus.json b/hydra-plutus/plutus.json index 6e4f29e97d5..ee88b93bd79 100644 --- a/hydra-plutus/plutus.json +++ b/hydra-plutus/plutus.json @@ -25,27 +25,110 @@ "$ref": "#/definitions/commit~1Redeemer" } }, - "compiledCode": "5902ae010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35333b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c9201054c34333b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34323b333100165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221" + "compiledCode": "59026d010100323232323232322533300232323232325332330083001300937540042646464646464a66601c60060022a66602260206ea8024540085854ccc038c01c00454ccc044c040dd50048a8010b0b18071baa0081533300c3001300d37540042646464646464a666024601660266ea80344cc00cc011300103d87980003370e6660026eacc05cc060c060c060c060c050dd50079bae30053014375400c91010b487964726148656164563100480044c94ccc04cc020c050dd50008998021802a6103d87a8000300c333002375660306032602a6ea8c060c054dd50009bae30063015375400e9110b4879647261486561645631001632533301600114c103d87a8000130033301730180014bd701bac30053014375401e44464a66602a601c602c6ea8004520001375a6034602e6ea8004c94ccc054c038c058dd50008a6103d87a8000132330010013756603660306ea8008894ccc068004530103d87a8000132323232533301b337220100042a66603666e3c0200084c02ccc07cdd4000a5eb80530103d87a8000133006006003375a60380066eb8c068008c078008c070004c8cc004004010894ccc0640045300103d87a8000132323232533301a337220100042a66603466e3c0200084c028cc078dd3000a5eb80530103d87a8000133006006003375660360066eb8c064008c074008c06c004dd2a400044a666022002294452812999807980218081baa001149103433031001491034330320023013301430140013011300e37540042c6e1d2000300f3010002300e001300a37540046e1d200216300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", + "hash": "3767add3ba46f9111861d5342a3b3b11fbc44940633c37d6968a7699" }, { "title": "commit.commit.else", "redeemer": { "schema": {} }, - "compiledCode": "5902ae010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35333b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c9201054c34333b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34323b333100165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221" + "compiledCode": "59026d010100323232323232322533300232323232325332330083001300937540042646464646464a66601c60060022a66602260206ea8024540085854ccc038c01c00454ccc044c040dd50048a8010b0b18071baa0081533300c3001300d37540042646464646464a666024601660266ea80344cc00cc011300103d87980003370e6660026eacc05cc060c060c060c060c050dd50079bae30053014375400c91010b487964726148656164563100480044c94ccc04cc020c050dd50008998021802a6103d87a8000300c333002375660306032602a6ea8c060c054dd50009bae30063015375400e9110b4879647261486561645631001632533301600114c103d87a8000130033301730180014bd701bac30053014375401e44464a66602a601c602c6ea8004520001375a6034602e6ea8004c94ccc054c038c058dd50008a6103d87a8000132330010013756603660306ea8008894ccc068004530103d87a8000132323232533301b337220100042a66603666e3c0200084c02ccc07cdd4000a5eb80530103d87a8000133006006003375a60380066eb8c068008c078008c070004c8cc004004010894ccc0640045300103d87a8000132323232533301a337220100042a66603466e3c0200084c028cc078dd3000a5eb80530103d87a8000133006006003375660360066eb8c064008c074008c06c004dd2a400044a666022002294452812999807980218081baa001149103433031001491034330320023013301430140013011300e37540042c6e1d2000300f3010002300e001300a37540046e1d200216300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", + "hash": "3767add3ba46f9111861d5342a3b3b11fbc44940633c37d6968a7699" + }, + { + "title": "initial.initial.spend", + "datum": { + "title": "datum", + "schema": { + "$ref": "#/definitions/Datum" + } + }, + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/initial~1Redeemer" + } + }, + "parameters": [ + { + "title": "commit_validator", + "schema": { + "$ref": "#/definitions/ScriptHash" + } + } + ], + "compiledCode": "590a4c010100323232323232323223225333004323232323253323300a3001300b375400426464646464646464a66602460080022a66602a60286ea802c540085854ccc048c0240044c8c94ccc05cc0680084cc01c004894ccc064008540184cc01cc06c0084c004c07000858dd6180c000980a1baa00b16301237540142a666020600460226ea80104c8c8c8c8c8c8c94ccc05cc024c060dd50080998029802260103d87980003370e6660026eacc018c064dd5009003a4410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cc080004894ccc0c800854ccc0bccc074c07130103d87b80003371266e00c044010c044ccc04ccc04801c8dd5980598191baa300b3032375400297adef6c600143011333013330123300b3758601860626ea80a80b48dd5980598191baa0014bd6f7b63000a0a999817998040038018a9998179980e980e26104d9050580003371e03e6eb8c030c0c4dd50028a99981799192999818981180089809180f26103d87d8000153330313028001132533303500113013301f4c103d87e80001533303530380011323302130204c103d87a80003322323300100100322533303a00114a0264a66607066e3cdd7181e8010020a51133003003001303d0013758607060726072607260726072607260726072606a6ea80b8de40009bae303700113013301f4c103d87e8000323300100100322533303600114bd700991919299981b18169bad303800313303a37520026600a00a00426600a00a0046eb8c0d8008c0e8008c0e00044c048c079300103d87e80003018001330163301a00401f4bd6f7b63009980e980e26104d9050680003375e603c60626ea80a9300101a00014a029405280a501325333030302230313754002264646464a66606e607400426604a0062600c607400e2c6eb8c0e0004c0e0008c0d8004c0c8dd50008b181a0011bac3007302e37540046602464a6660586046605a6ea8004530103d87a800013018330303007302e3754600e605c6ea8c0c4c0b8dd5000a5eb80cc028dd6180898169baa0260204bd6f7b630299981680089804180ba6104d9050480001533302d303000113232533302c301e0011300a30194c104d9050180001533302c30230011300a30194c0104d9050280001323253333330350021533302e3020302f3754004264a66606400200426464a66606800200826464a66606c00200c264a66666607600200e00e00e00e264a666070607600620120106eb8004c0e0004c0e0008c0d8004c0d8008c0d0004c0c0dd500100080080080080089805980d26104d9050380003031302e375400460586ea8004c0bc0044c020c05d300104d90504800033009330053758600c60566ea809009c8c01cc0b0dd5000998041bac302d302a375404246644a666056604460586ea800840044c0c0c0b4dd5001198041bac300f302b3754048002600e602c980104d90507800030010012223232323253330300021533303000314a20020022a66605e0022601a603298103d87f80001533302f0021300d30194c0104d9050080001323232323301e301d4c0103d87c800053330303371e6eccc02cc0c8dd50021bae300b303237540042a66606066ebcc058c0c8dd5002180b18191baa002133300a00a00300114a02940c0d4014c0cc010c0cc008c0c4004dd618180011bac302f30300013302d374e0046605a6e9c0052f5c046056605800244646600200200644a666056002297ae013232533302a32533302b3022302c3754002266e3c018dd7181818169baa00114a0602060586ea8c040c0b0dd500109981700119802002000899802002000981780118168009181498151815000931119198008008019129998140008a6103d87a80001323253330273375e601a60526ea80080144c04ccc0ac0092f5c02660080080026058004605400244646600200200644a66604e002297ae01330283003302900133002002302a00124a0466601200291010048810022323300100100322533302400114bd700998129ba630033026001330020023027001222323330010010040032225333025002100113330030033028002330040013756604e0044464666002002006004444a6660460042002264666008008604e0066644646600200200a44a66605000226605266ec0dd48021ba60034bd6f7b630099191919299981499b9000800213302d337606ea4020dd30038028a99981499b8f008002132533302a301c302b375400226605c66ec0dd4804981798161baa001004100432533302a533302d00114a22940530103d87a8000130163302e374c00297ae032333001001008002222533302f0021001132333004004303300333223233001001005225333034001133035337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0d4cdc800400109981c99bb037520106ea001c01454ccc0d4cdc7804001099299981b1814181b9baa00113303a337606ea4024c0ecc0e0dd5000802080219299981b18140008a60103d87a8000130223303a375000297ae03370000e00226607266ec0dd48011ba800133006006003375a606c0066eb8c0d0008c0e0008c0d8004dd718170009bad302f001303100213302d337606ea4008dd3000998030030019bab302a003375c6050004605800460540026eb8c088004dd5981180098128011181000091299980d9809180e1baa0021001137566040603a6ea8008c004004894ccc07000452000133700900119801001180f80091119299980d1808980d9baa0011480004dd6980f980e1baa00132533301a3011301b3754002298103d87a80001323300100137566040603a6ea8008894ccc07c004530103d87a80001323232325333020337220100042a66604066e3c0200084c030cc090dd4000a5eb80530103d87a8000133006006003375a60420066eb8c07c008c08c008c084004cc01000c00888c8cc00400400c894ccc070004530103d87a8000132323232533301d3372200e0042a66603a66e3c01c0084c024cc084dd3000a5eb80530103d87a80001330060060033756603c0066eb8c070008c080008c078004dd2a4000464a66602a600e00229201034930310015333015300c001149010349303200153330153370e90020008a490349303300153330153370e90030008a490349303400153330153370e90040008a490349303500153330153370e90050008a490349303600153330153370e90060008a490349303700153330153370e90070008a490349303800153330153370e90080008a490349303900153330153370e90090008a490349313000153330153370e900a0008a490349313100153330153370e900b0008a490349313200153330153370e900c0008a490349313300153330153370e900d0008a490349313400149103493135003015375400244a66602800229445281180b980c180c180c180c0009bae3015301237540082c44a666022600660246ea80084c8c8c8c94ccc060c06c0085401458dd6980c800980c8011bae3017001301337540042c6e1d200022323300100100322330030013002002301130120023010001300c37540046e1d200216300d300e002300c001300c002300a0013006375400229309b2b1bae0015734aae7555cf2ab9f5740ae855d12ba401", + "hash": "1cfbf372cbcee765a4577b3926b7bb4670ebded444461aacf7a8041e" + }, + { + "title": "initial.initial.else", + "redeemer": { + "schema": {} + }, + "parameters": [ + { + "title": "commit_validator", + "schema": { + "$ref": "#/definitions/ScriptHash" + } + } + ], + "compiledCode": "590a4c010100323232323232323223225333004323232323253323300a3001300b375400426464646464646464a66602460080022a66602a60286ea802c540085854ccc048c0240044c8c94ccc05cc0680084cc01c004894ccc064008540184cc01cc06c0084c004c07000858dd6180c000980a1baa00b16301237540142a666020600460226ea80104c8c8c8c8c8c8c94ccc05cc024c060dd50080998029802260103d87980003370e6660026eacc018c064dd5009003a4410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cc080004894ccc0c800854ccc0bccc074c07130103d87b80003371266e00c044010c044ccc04ccc04801c8dd5980598191baa300b3032375400297adef6c600143011333013330123300b3758601860626ea80a80b48dd5980598191baa0014bd6f7b63000a0a999817998040038018a9998179980e980e26104d9050580003371e03e6eb8c030c0c4dd50028a99981799192999818981180089809180f26103d87d8000153330313028001132533303500113013301f4c103d87e80001533303530380011323302130204c103d87a80003322323300100100322533303a00114a0264a66607066e3cdd7181e8010020a51133003003001303d0013758607060726072607260726072607260726072606a6ea80b8de40009bae303700113013301f4c103d87e8000323300100100322533303600114bd700991919299981b18169bad303800313303a37520026600a00a00426600a00a0046eb8c0d8008c0e8008c0e00044c048c079300103d87e80003018001330163301a00401f4bd6f7b63009980e980e26104d9050680003375e603c60626ea80a9300101a00014a029405280a501325333030302230313754002264646464a66606e607400426604a0062600c607400e2c6eb8c0e0004c0e0008c0d8004c0c8dd50008b181a0011bac3007302e37540046602464a6660586046605a6ea8004530103d87a800013018330303007302e3754600e605c6ea8c0c4c0b8dd5000a5eb80cc028dd6180898169baa0260204bd6f7b630299981680089804180ba6104d9050480001533302d303000113232533302c301e0011300a30194c104d9050180001533302c30230011300a30194c0104d9050280001323253333330350021533302e3020302f3754004264a66606400200426464a66606800200826464a66606c00200c264a66666607600200e00e00e00e264a666070607600620120106eb8004c0e0004c0e0008c0d8004c0d8008c0d0004c0c0dd500100080080080080089805980d26104d9050380003031302e375400460586ea8004c0bc0044c020c05d300104d90504800033009330053758600c60566ea809009c8c01cc0b0dd5000998041bac302d302a375404246644a666056604460586ea800840044c0c0c0b4dd5001198041bac300f302b3754048002600e602c980104d90507800030010012223232323253330300021533303000314a20020022a66605e0022601a603298103d87f80001533302f0021300d30194c0104d9050080001323232323301e301d4c0103d87c800053330303371e6eccc02cc0c8dd50021bae300b303237540042a66606066ebcc058c0c8dd5002180b18191baa002133300a00a00300114a02940c0d4014c0cc010c0cc008c0c4004dd618180011bac302f30300013302d374e0046605a6e9c0052f5c046056605800244646600200200644a666056002297ae013232533302a32533302b3022302c3754002266e3c018dd7181818169baa00114a0602060586ea8c040c0b0dd500109981700119802002000899802002000981780118168009181498151815000931119198008008019129998140008a6103d87a80001323253330273375e601a60526ea80080144c04ccc0ac0092f5c02660080080026058004605400244646600200200644a66604e002297ae01330283003302900133002002302a00124a0466601200291010048810022323300100100322533302400114bd700998129ba630033026001330020023027001222323330010010040032225333025002100113330030033028002330040013756604e0044464666002002006004444a6660460042002264666008008604e0066644646600200200a44a66605000226605266ec0dd48021ba60034bd6f7b630099191919299981499b9000800213302d337606ea4020dd30038028a99981499b8f008002132533302a301c302b375400226605c66ec0dd4804981798161baa001004100432533302a533302d00114a22940530103d87a8000130163302e374c00297ae032333001001008002222533302f0021001132333004004303300333223233001001005225333034001133035337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0d4cdc800400109981c99bb037520106ea001c01454ccc0d4cdc7804001099299981b1814181b9baa00113303a337606ea4024c0ecc0e0dd5000802080219299981b18140008a60103d87a8000130223303a375000297ae03370000e00226607266ec0dd48011ba800133006006003375a606c0066eb8c0d0008c0e0008c0d8004dd718170009bad302f001303100213302d337606ea4008dd3000998030030019bab302a003375c6050004605800460540026eb8c088004dd5981180098128011181000091299980d9809180e1baa0021001137566040603a6ea8008c004004894ccc07000452000133700900119801001180f80091119299980d1808980d9baa0011480004dd6980f980e1baa00132533301a3011301b3754002298103d87a80001323300100137566040603a6ea8008894ccc07c004530103d87a80001323232325333020337220100042a66604066e3c0200084c030cc090dd4000a5eb80530103d87a8000133006006003375a60420066eb8c07c008c08c008c084004cc01000c00888c8cc00400400c894ccc070004530103d87a8000132323232533301d3372200e0042a66603a66e3c01c0084c024cc084dd3000a5eb80530103d87a80001330060060033756603c0066eb8c070008c080008c078004dd2a4000464a66602a600e00229201034930310015333015300c001149010349303200153330153370e90020008a490349303300153330153370e90030008a490349303400153330153370e90040008a490349303500153330153370e90050008a490349303600153330153370e90060008a490349303700153330153370e90070008a490349303800153330153370e90080008a490349303900153330153370e90090008a490349313000153330153370e900a0008a490349313100153330153370e900b0008a490349313200153330153370e900c0008a490349313300153330153370e900d0008a490349313400149103493135003015375400244a66602800229445281180b980c180c180c180c0009bae3015301237540082c44a666022600660246ea80084c8c8c8c94ccc060c06c0085401458dd6980c800980c8011bae3017001301337540042c6e1d200022323300100100322330030013002002301130120023010001300c37540046e1d200216300d300e002300c001300c002300a0013006375400229309b2b1bae0015734aae7555cf2ab9f5740ae855d12ba401", + "hash": "1cfbf372cbcee765a4577b3926b7bb4670ebded444461aacf7a8041e" } ], "definitions": { + "ByteArray": { + "title": "ByteArray", + "dataType": "bytes" + }, "Data": { "title": "Data", "description": "Any Plutus data." }, + "Datum": { + "title": "Datum", + "dataType": "bytes" + }, + "Int": { + "dataType": "integer" + }, + "List$cardano/transaction/OutputReference": { + "dataType": "list", + "items": { + "$ref": "#/definitions/cardano~1transaction~1OutputReference" + } + }, "PolicyId": { "title": "PolicyId", "dataType": "bytes" }, + "ScriptHash": { + "title": "ScriptHash", + "dataType": "bytes" + }, + "cardano/transaction/OutputReference": { + "title": "OutputReference", + "description": "An `OutputReference` is a unique reference to an output on-chain. The `output_index`\n corresponds to the position in the output list of the transaction (identified by its id)\n that produced that output", + "anyOf": [ + { + "title": "OutputReference", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "transaction_id", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "output_index", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, "commit/Datum": { "title": "Datum", "anyOf": [ @@ -86,6 +169,28 @@ "fields": [] } ] + }, + "initial/Redeemer": { + "title": "Redeemer", + "anyOf": [ + { + "title": "ViaAbort", + "dataType": "constructor", + "index": 0, + "fields": [] + }, + { + "title": "ViaCommit", + "dataType": "constructor", + "index": 1, + "fields": [ + { + "title": "committed_refs", + "$ref": "#/definitions/List$cardano~1transaction~1OutputReference" + } + ] + } + ] } } } \ No newline at end of file diff --git a/hydra-plutus/validators/initial.ak b/hydra-plutus/validators/initial.ak new file mode 100644 index 00000000000..9809955ef74 --- /dev/null +++ b/hydra-plutus/validators/initial.ak @@ -0,0 +1,282 @@ +use aiken/builtin +use aiken/collection/list +use aiken/collection/dict +use aiken/collection/pairs +use aiken/option +use aiken/crypto.{ScriptHash} +use cardano/assets.{PolicyId, Value} +use cardano/transaction.{ + Input, + OutputReference, + Transaction, + NoDatum, + DatumHash, + InlineDatum +} +use commit + +pub type Datum = PolicyId + +pub type CommitDatum { + input: OutputReference, + pre_serialized_output: ByteArray +} + +pub type Redeemer { + ViaAbort + ViaCommit { + committed_refs: List + // ^ Points to the committed Utxo. + } +} + +const hydra_head_v1: ByteArray = "HydraHeadV1" + +type InitialError { + STNotBurned + MissingOrInvalidCommitAuthor + LockedValueDoesNotMatch + MismatchCommittedTxOutInDatum + CouldNotFindTheCorrectCurrencySymbolInTokens + MultipleHeadTokensOrMoreThan1PTsFound + MissingCommittedTxOutInOutputDatum + CommittedTxOutMissingInOutputDatum + MissingDatum + UnexpectedNonInlineDatum + ExpectedCommitDatumTypeGotSomethingElse + ExpectedSingleCommitOutput + WrongHeadIdInCommitDatum + MintingOrBurningIsForbidden + OutRefNotFound +} + +fn to_error_code(err: InitialError) -> String { + when err is { + STNotBurned -> @"I01" + MissingOrInvalidCommitAuthor -> @"I02" + LockedValueDoesNotMatch -> @"I03" + MismatchCommittedTxOutInDatum -> @"I04" + CouldNotFindTheCorrectCurrencySymbolInTokens -> @"I05" + MultipleHeadTokensOrMoreThan1PTsFound -> @"I06" + MissingCommittedTxOutInOutputDatum -> @"I07" + CommittedTxOutMissingInOutputDatum -> @"I08" + MissingDatum -> @"I09" + UnexpectedNonInlineDatum -> @"I10" + ExpectedCommitDatumTypeGotSomethingElse -> @"I11" + ExpectedSingleCommitOutput -> @"I12" + WrongHeadIdInCommitDatum -> @"I13" + MintingOrBurningIsForbidden -> @"I14" + OutRefNotFound -> @"I15" + } +} + +// | The v_initial validator verifies that: +// +// * spent in a transaction also consuming a v_head output +// +// * ensures the committed value is recorded correctly in the output datum +// +// * ensures that the transaction was signed by the key corresponding to the +// PubKeyHash encoded in the participation token name +// +// NOTE: It does not need to ensure that the participation token is of some +// specific Head currency. +validator initial(commit_validator: ScriptHash) { + spend( + datum: Option, + redeemer: Redeemer, + utxo: OutputReference, + self: Transaction + ) -> Bool { + expect Some(head_id) = datum + when redeemer is { + ViaAbort -> + must_burn_st(head_id, self.mint)? + ViaCommit(committed_refs) -> + check_commit(head_id, commit_validator, committed_refs, utxo, self)? + } + } +} + +fn must_burn_st(head_id: PolicyId, mint: Value) -> Bool { + let quantity = + mint + |> assets.quantity_of(head_id, hydra_head_v1) + trace_if_false( + to_error_code(STNotBurned), + quantity == -1 + ) +} + +fn check_commit( + head_id: PolicyId, + commit_validator: ScriptHash, + committed_refs: List, + utxo: OutputReference, + self: Transaction, +) -> Bool { + let committed_utxo = + committed_refs + |> list.map(fn(ref) { + self.inputs + |> transaction.find_input(ref) + |> option.or_else( + trace_fail(to_error_code(OutRefNotFound)) + ) + }) + let locked_datums = + self.outputs + |> transaction.find_script_outputs(commit_validator) + |> list.map(fn(out) { out.datum }) + let commit_datum = + when locked_datums is { + [dat] -> + when dat is { + NoDatum -> + trace_fail(to_error_code(MissingDatum)) + DatumHash(_dataHash) -> + trace_fail(to_error_code(UnexpectedNonInlineDatum)) + InlineDatum(data) -> { + if data is commit.Datum { + data + } else { + trace_fail(to_error_code(ExpectedCommitDatumTypeGotSomethingElse)) + } + } + } + _otherwise -> + trace_fail(to_error_code(ExpectedSingleCommitOutput)) + } + let initial_value = + self.inputs + |> transaction.find_input(utxo) + |> option.map(fn(i) { i.output.value }) + |> option.or_else(assets.zero) + expect locked_commits: List = commit_datum.commits + check_committed_value(commit_validator, committed_utxo, initial_value, self) && + check_locked_commit(committed_utxo, locked_commits) && + check_head_id(head_id, commit_datum.head_id) && + must_be_signed_by_participant(head_id, initial_value, self) && + must_not_mint_or_burn(self.mint) +} + +fn check_committed_value( + commit_validator: ScriptHash, + committed_utxo: List, + initial_value: Value, + self: Transaction +) -> Bool { + let initial_lovelace = + initial_value + |> assets.lovelace_of + let locked_value = + self.outputs + |> transaction.find_script_outputs(commit_validator) + |> list.map(fn(output) { output.value }) + |> list.reduce(assets.zero, assets.merge) + |> assets.lovelace_of + let committed_value = + committed_utxo + |> list.map(fn(i) { i.output.value }) + |> list.reduce(assets.zero, assets.merge) + |> assets.lovelace_of + trace_if_false( + to_error_code(LockedValueDoesNotMatch), + // NOTE: Ada in initialValue is usually lower than in the locked ADA due + // to higher deposit needed for commit output than for initial output + locked_value >= initial_lovelace + committed_value + ) +} + +fn check_locked_commit( + committed_utxo: List, + locked_commits: List +) -> Bool { + when(committed_utxo, locked_commits) is { + ([], []) -> True + ([], _) -> + trace_false(to_error_code(MissingCommittedTxOutInOutputDatum)) + (_, []) -> + trace_false(to_error_code(CommittedTxOutMissingInOutputDatum)) + ([i, ..rest_committed], [c, ..rest_commits]) -> { + trace_if_false( + to_error_code(MismatchCommittedTxOutInDatum), + builtin.serialise_data(i.output) == c.pre_serialized_output && + i.output_reference == c.input && + check_locked_commit(rest_committed, rest_commits) + ) + } + } +} + +fn check_head_id( + self_head_id: PolicyId, + committed_head_id: PolicyId, +) -> Bool { + trace_if_false( + to_error_code(WrongHeadIdInCommitDatum), + self_head_id == committed_head_id + ) +} + +fn must_be_signed_by_participant( + head_id: PolicyId, + initial_value: Value, + self: Transaction +) -> Bool { + let token_map = + initial_value + |> assets.tokens(head_id) + when dict.size(token_map) is { + 0 -> + trace_false(to_error_code(CouldNotFindTheCorrectCurrencySymbolInTokens)) + 1 -> { + let participation_tokens = + token_map + |> dict.to_pairs + |> pairs.find_all(1) + when participation_tokens is { + [our_participation_token_name] -> { + trace_if_false( + to_error_code(MissingOrInvalidCommitAuthor), + self.extra_signatories + |> list.has( + crypto.blake2b_224(our_participation_token_name) + ) + ) + } + _more_than_one_token -> + trace_false(to_error_code(MultipleHeadTokensOrMoreThan1PTsFound)) + } + } + _more_than_one_token -> + trace_false(to_error_code(MultipleHeadTokensOrMoreThan1PTsFound)) + } +} + +fn must_not_mint_or_burn(mint: Value) -> Bool { + trace_if_false( + to_error_code(MintingOrBurningIsForbidden), + assets.is_zero(mint) + ) +} + +// Helpers +fn trace_if_false(trace_log: String, predicate: Bool) -> Bool { + if predicate { + True + } else { + trace trace_log + False + } +} + +fn trace_false(trace_log: String) -> Bool { + trace trace_log + False +} + +fn trace_fail(trace_log: String) -> a { + trace trace_log + fail +} From 8bed760164623636540859bdebf7ff9903b4dac2 Mon Sep 17 00:00:00 2001 From: Franco Testagrossa Date: Thu, 31 Oct 2024 11:23:11 +0100 Subject: [PATCH 06/24] replace plutus script --- hydra-node/src/Hydra/Chain/Direct/State.hs | 5 +- hydra-node/src/Hydra/Chain/Direct/Tx.hs | 7 +- hydra-node/src/Hydra/Chain/ScriptRegistry.hs | 6 +- .../test/Hydra/Chain/Direct/StateSpec.hs | 3 +- hydra-plutus/exe/inspect-script/Main.hs | 3 +- hydra-plutus/src/Hydra/Contract.hs | 7 +- hydra-plutus/src/Hydra/Contract/HeadTokens.hs | 8 +- hydra-plutus/src/Hydra/Plutus.hs | 16 +- hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs | 4 +- hydra-plutus/validators/initial.ak | 175 ++++++++---------- hydra-tx/src/Hydra/Tx/Abort.hs | 4 +- hydra-tx/src/Hydra/Tx/Init.hs | 3 +- hydra-tx/test/Hydra/Tx/Contract/Abort.hs | 6 +- hydra-tx/test/Hydra/Tx/Contract/CollectCom.hs | 4 +- hydra-tx/testlib/Test/Hydra/Tx/Gen.hs | 5 +- 15 files changed, 128 insertions(+), 128 deletions(-) diff --git a/hydra-node/src/Hydra/Chain/Direct/State.hs b/hydra-node/src/Hydra/Chain/Direct/State.hs index 0f1b16f38cd..4cd449d44b2 100644 --- a/hydra-node/src/Hydra/Chain/Direct/State.hs +++ b/hydra-node/src/Hydra/Chain/Direct/State.hs @@ -84,10 +84,9 @@ import Hydra.Contract.Deposit qualified as Deposit import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadState qualified as Head import Hydra.Contract.HeadTokens (headPolicyId, mkHeadTokenScript) -import Hydra.Contract.Initial qualified as Initial import Hydra.Ledger.Cardano.Evaluate (genPointInTimeBefore, genValidityBoundsFromContestationPeriod, slotLength, systemStart) import Hydra.Ledger.Cardano.Time (slotNoFromUTCTime) -import Hydra.Plutus (commitValidatorScript) +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import Hydra.Plutus.Extras (posixToUTCTime) import Hydra.Tx ( CommitBlueprintTx (..), @@ -440,7 +439,7 @@ abort ctx seedTxIn spendableUTxO committedUTxO = do headScript = fromPlutusScript @PlutusScriptV3 Head.validatorScript - initialScript = fromPlutusScript @PlutusScriptV3 Initial.validatorScript + initialScript = fromPlutusScript @PlutusScriptV3 initialValidatorScript headTokenScript = mkHeadTokenScript seedTxIn diff --git a/hydra-node/src/Hydra/Chain/Direct/Tx.hs b/hydra-node/src/Hydra/Chain/Direct/Tx.hs index 49e31ed9b5f..981918c045b 100644 --- a/hydra-node/src/Hydra/Chain/Direct/Tx.hs +++ b/hydra-node/src/Hydra/Chain/Direct/Tx.hs @@ -25,10 +25,9 @@ import Hydra.Contract.Deposit qualified as Deposit import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadState qualified as Head import Hydra.Contract.HeadTokens qualified as HeadTokens -import Hydra.Contract.Initial qualified as Initial import Hydra.Data.ContestationPeriod qualified as OnChain import Hydra.Data.Party qualified as OnChain -import Hydra.Plutus (commitValidatorScript) +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import Hydra.Plutus.Extras (posixToUTCTime) import Hydra.Plutus.Orphans () import Hydra.Tx ( @@ -225,7 +224,7 @@ observeInitTx tx = do isInitial = isScriptTxOut initialScript - initialScript = fromPlutusScript @PlutusScriptV3 Initial.validatorScript + initialScript = fromPlutusScript @PlutusScriptV3 initialValidatorScript mintedTokenNames pid = [ assetName @@ -306,7 +305,7 @@ observeCommitTx networkId utxo tx = do initialAddress = mkScriptAddress @PlutusScriptV3 networkId initialScript - initialScript = fromPlutusScript Initial.validatorScript + initialScript = fromPlutusScript @PlutusScriptV3 initialValidatorScript commitAddress = mkScriptAddress networkId commitScript diff --git a/hydra-node/src/Hydra/Chain/ScriptRegistry.hs b/hydra-node/src/Hydra/Chain/ScriptRegistry.hs index 9780f273493..51a81883bda 100644 --- a/hydra-node/src/Hydra/Chain/ScriptRegistry.hs +++ b/hydra-node/src/Hydra/Chain/ScriptRegistry.hs @@ -22,7 +22,6 @@ import Hydra.Cardano.Api ( makeShelleyKeyWitness, makeSignedTransaction, mkScriptAddress, - mkScriptRef, mkScriptRefV3, mkTxOutAutoBalance, mkVkAddress, @@ -41,8 +40,7 @@ import Hydra.Chain.CardanoClient ( submitTransaction, ) import Hydra.Contract.Head qualified as Head -import Hydra.Contract.Initial qualified as Initial -import Hydra.Plutus (commitValidatorScript) +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import Hydra.Tx.ScriptRegistry (ScriptRegistry (..), newScriptRegistry) -- | Query for 'TxIn's in the search for outputs containing all the reference @@ -87,7 +85,7 @@ publishHydraScripts networkId socketPath sk = do utxo <- queryUTxOFor networkId socketPath QueryTip vk let outputs = mkScriptTxOut pparams - <$> [ mkScriptRefV3 Initial.validatorScript + <$> [ mkScriptRefV3 initialValidatorScript , mkScriptRefV3 commitValidatorScript , mkScriptRefV3 Head.validatorScript ] diff --git a/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs b/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs index 283aeb103f0..18ebfccf633 100644 --- a/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs +++ b/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs @@ -110,6 +110,7 @@ import Hydra.Ledger.Cardano.Evaluate ( propTransactionFailsEvaluation, ) import Hydra.Ledger.Cardano.Time (slotNoFromUTCTime) +import Hydra.Plutus (initialValidatorScript) import Hydra.Tx.Contest (ClosedThreadOutput (closedContesters)) import Hydra.Tx.ContestationPeriod (toNominalDiffTime) import Hydra.Tx.Deposit (DepositObservation (..), observeDepositTx) @@ -423,7 +424,7 @@ genCommitTxMutation utxo tx = fromMaybe (error "not found redeemer") $ findRedeemerSpending @Initial.RedeemerType tx initialTxIn - initialScript = fromPlutusScript Initial.validatorScript + initialScript = fromPlutusScript @PlutusScriptV3 initialValidatorScript fakeScriptAddress = mkScriptAddress @PlutusScriptV3 testNetworkId fakeScript diff --git a/hydra-plutus/exe/inspect-script/Main.hs b/hydra-plutus/exe/inspect-script/Main.hs index d4035def468..56dbc710f30 100644 --- a/hydra-plutus/exe/inspect-script/Main.hs +++ b/hydra-plutus/exe/inspect-script/Main.hs @@ -13,6 +13,7 @@ import Hydra.Contract.Head as Head import Hydra.Contract.HeadState as Head import Hydra.Contract.HeadTokens qualified as HeadTokens import Hydra.Contract.Initial as Initial +import Hydra.Plutus (initialValidatorScript) import PlutusLedgerApi.V3 (Data, SerialisedScript, toData) import PlutusTx (getPlc) import PlutusTx.Code (CompiledCode) @@ -87,7 +88,7 @@ main = do headScript = Head.validatorScript - initialScript = Initial.validatorScript + initialScript = initialValidatorScript compiledScripts = [ (Compiled Head.compiledValidator, "headScript") diff --git a/hydra-plutus/src/Hydra/Contract.hs b/hydra-plutus/src/Hydra/Contract.hs index 56058ce5cbf..b496d7e1401 100644 --- a/hydra-plutus/src/Hydra/Contract.hs +++ b/hydra-plutus/src/Hydra/Contract.hs @@ -17,8 +17,7 @@ import Hydra.Cardano.Api.Prelude qualified as Api import Hydra.Contract.Deposit qualified as Deposit import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadTokens qualified as HeadTokens -import Hydra.Contract.Initial qualified as Initial -import Hydra.Plutus (commitValidatorScript) +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import PlutusLedgerApi.V3 (TxId (..), TxOutRef (..), toBuiltin) -- | Information about relevant Hydra scripts. @@ -46,8 +45,8 @@ scriptInfo = ScriptInfo { mintingScriptHash = plutusScriptHash $ HeadTokens.mintingPolicyScript defaultOutRef , mintingScriptSize = scriptSize $ HeadTokens.mintingPolicyScript defaultOutRef - , initialScriptHash = plutusScriptHash Initial.validatorScript - , initialScriptSize = scriptSize Initial.validatorScript + , initialScriptHash = hashScript $ Api.PlutusScript PlutusScriptV3 $ fromPlutusScript initialValidatorScript + , initialScriptSize = scriptSize initialValidatorScript , commitScriptHash = hashScript $ Api.PlutusScript PlutusScriptV3 $ fromPlutusScript commitValidatorScript , commitScriptSize = scriptSize commitValidatorScript , headScriptHash = plutusScriptHash Head.validatorScript diff --git a/hydra-plutus/src/Hydra/Contract/HeadTokens.hs b/hydra-plutus/src/Hydra/Contract/HeadTokens.hs index 9d6293f4d58..c9ba29361c0 100644 --- a/hydra-plutus/src/Hydra/Contract/HeadTokens.hs +++ b/hydra-plutus/src/Hydra/Contract/HeadTokens.hs @@ -23,6 +23,7 @@ import Hydra.Cardano.Api ( pattern PlutusScript, ) import Hydra.Cardano.Api qualified as Api + import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadState (seed) import Hydra.Contract.HeadState qualified as Head @@ -30,8 +31,9 @@ import Hydra.Contract.HeadTokensError (HeadTokensError (..), errorCode) import Hydra.Contract.Initial qualified as Initial import Hydra.Contract.MintAction (MintAction (Burn, Mint)) import Hydra.Contract.Util (hasST, scriptOutputsAt) -import Hydra.Plutus.Extras (MintingPolicyType, wrapMintingPolicy) -import PlutusCore.Core (plcVersion110) +import Hydra.Plutus (initialValidatorScript) +import Hydra.Plutus.Extras (MintingPolicyType, scriptValidatorHash, wrapMintingPolicy) +import PlutusCore.Version (plcVersion110) import PlutusLedgerApi.V3 ( Datum (getDatum), FromData (fromBuiltinData), @@ -182,7 +184,7 @@ validateTokensBurning context = unappliedMintingPolicy :: CompiledCode (TxOutRef -> MintingPolicyType) unappliedMintingPolicy = $$(PlutusTx.compile [||\vInitial vHead ref -> wrapMintingPolicy (validate vInitial vHead ref)||]) - `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion110 Initial.validatorHash + `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion110 (scriptValidatorHash Api.PlutusScriptV3 initialValidatorScript) `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion110 Head.validatorHash -- | Get the applied head minting policy script given a seed 'TxOutRef'. diff --git a/hydra-plutus/src/Hydra/Plutus.hs b/hydra-plutus/src/Hydra/Plutus.hs index 2f2de40e174..5cb33b37028 100644 --- a/hydra-plutus/src/Hydra/Plutus.hs +++ b/hydra-plutus/src/Hydra/Plutus.hs @@ -27,9 +27,23 @@ commitValidatorScript = Right bytes -> toShort bytes where base16Bytes = encodeUtf8 base16Text - -- NOTE: we are using a hardcoded index to access the commit validator. -- This is fragile and will raise problems when we move another plutus validator -- to Aiken. -- Reference: https://github.com/cardano-foundation/CIPs/tree/master/CIP-0057 base16Text = blueprintJSON ^. key "validators" . nth 0 . key "compiledCode" . _String + +-- | Access the initial validator script from the 'blueprintJSON'. +initialValidatorScript :: SerialisedScript +initialValidatorScript = + case Base16.decode base16Bytes of + Left e -> error $ "Failed to decode initial validator: " <> show e + Right bytes -> toShort bytes + where + base16Bytes = encodeUtf8 base16Text + + -- NOTE: we are using a hardcoded index to access the commit validator. + -- This is fragile and will raise problems when we move another plutus validator + -- to Aiken. + -- Reference: https://github.com/cardano-foundation/CIPs/tree/master/CIP-0057 + base16Text = blueprintJSON ^. key "validators" . nth 2 . key "compiledCode" . _String diff --git a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs index 35fdbeaa393..1f89d36921e 100644 --- a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs +++ b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs @@ -26,7 +26,7 @@ import Hydra.Cardano.Api ( import Hydra.Contract.Deposit qualified as Deposit import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadTokens qualified as HeadTokens -import Hydra.Contract.Initial qualified as Initial +import Hydra.Plutus (initialValidatorScript) import Hydra.Version (gitDescribe) import PlutusLedgerApi.V3 (serialiseCompiledCode) import PlutusLedgerApi.V3 qualified as Plutus @@ -42,7 +42,7 @@ spec = do regenerated <- readFileBS "plutus.json" regenerated `shouldBe` original it "Initial validator script" $ - goldenScript "vInitial" Initial.validatorScript + goldenScript "vInitial" initialValidatorScript it "Head validator script" $ goldenScript "vHead" Head.validatorScript it "Head minting policy script" $ diff --git a/hydra-plutus/validators/initial.ak b/hydra-plutus/validators/initial.ak index 9809955ef74..1c78beff299 100644 --- a/hydra-plutus/validators/initial.ak +++ b/hydra-plutus/validators/initial.ak @@ -1,53 +1,48 @@ use aiken/builtin -use aiken/collection/list use aiken/collection/dict +use aiken/collection/list use aiken/collection/pairs -use aiken/option use aiken/crypto.{ScriptHash} +use aiken/option use cardano/assets.{PolicyId, Value} use cardano/transaction.{ - Input, - OutputReference, - Transaction, - NoDatum, - DatumHash, - InlineDatum + DatumHash, InlineDatum, Input, NoDatum, OutputReference, Transaction, } use commit -pub type Datum = PolicyId +pub type Datum = + PolicyId pub type CommitDatum { input: OutputReference, - pre_serialized_output: ByteArray + pre_serialized_output: ByteArray, } pub type Redeemer { ViaAbort - ViaCommit { - committed_refs: List - // ^ Points to the committed Utxo. - } + ViaCommit { committed_refs: List } } +// ^ Points to the committed Utxo. + const hydra_head_v1: ByteArray = "HydraHeadV1" type InitialError { - STNotBurned - MissingOrInvalidCommitAuthor - LockedValueDoesNotMatch - MismatchCommittedTxOutInDatum - CouldNotFindTheCorrectCurrencySymbolInTokens - MultipleHeadTokensOrMoreThan1PTsFound - MissingCommittedTxOutInOutputDatum - CommittedTxOutMissingInOutputDatum - MissingDatum - UnexpectedNonInlineDatum - ExpectedCommitDatumTypeGotSomethingElse - ExpectedSingleCommitOutput - WrongHeadIdInCommitDatum - MintingOrBurningIsForbidden - OutRefNotFound + STNotBurned + MissingOrInvalidCommitAuthor + LockedValueDoesNotMatch + MismatchCommittedTxOutInDatum + CouldNotFindTheCorrectCurrencySymbolInTokens + MultipleHeadTokensOrMoreThan1PTsFound + MissingCommittedTxOutInOutputDatum + CommittedTxOutMissingInOutputDatum + MissingDatum + UnexpectedNonInlineDatum + ExpectedCommitDatumTypeGotSomethingElse + ExpectedSingleCommitOutput + WrongHeadIdInCommitDatum + MintingOrBurningIsForbidden + OutRefNotFound } fn to_error_code(err: InitialError) -> String { @@ -86,26 +81,26 @@ validator initial(commit_validator: ScriptHash) { datum: Option, redeemer: Redeemer, utxo: OutputReference, - self: Transaction - ) -> Bool { + self: Transaction, + ) { expect Some(head_id) = datum when redeemer is { - ViaAbort -> - must_burn_st(head_id, self.mint)? - ViaCommit(committed_refs) -> + ViaAbort -> must_burn_st(head_id, self.mint)? + ViaCommit(committed_refs) -> check_commit(head_id, commit_validator, committed_refs, utxo, self)? } } + + else(_) { + fail + } } fn must_burn_st(head_id: PolicyId, mint: Value) -> Bool { let quantity = mint |> assets.quantity_of(head_id, hydra_head_v1) - trace_if_false( - to_error_code(STNotBurned), - quantity == -1 - ) + trace_if_false(to_error_code(STNotBurned), quantity == -1) } fn check_commit( @@ -115,67 +110,67 @@ fn check_commit( utxo: OutputReference, self: Transaction, ) -> Bool { - let committed_utxo = + let committed_utxo = committed_refs - |> list.map(fn(ref) { - self.inputs - |> transaction.find_input(ref) - |> option.or_else( - trace_fail(to_error_code(OutRefNotFound)) - ) - }) + |> list.map( + fn(ref) { + self.inputs + |> transaction.find_input(ref) + |> option.or_else(trace_fail(to_error_code(OutRefNotFound))) + }, + ) let locked_datums = - self.outputs - |> transaction.find_script_outputs(commit_validator) - |> list.map(fn(out) { out.datum }) + self.outputs + |> transaction.find_script_outputs(commit_validator) + |> list.map(fn(out) { out.datum }) let commit_datum = when locked_datums is { [dat] -> when dat is { - NoDatum -> - trace_fail(to_error_code(MissingDatum)) + NoDatum -> trace_fail(to_error_code(MissingDatum)) DatumHash(_dataHash) -> trace_fail(to_error_code(UnexpectedNonInlineDatum)) - InlineDatum(data) -> { + InlineDatum(data) -> if data is commit.Datum { data } else { trace_fail(to_error_code(ExpectedCommitDatumTypeGotSomethingElse)) } - } } - _otherwise -> - trace_fail(to_error_code(ExpectedSingleCommitOutput)) + _otherwise -> trace_fail(to_error_code(ExpectedSingleCommitOutput)) } - let initial_value = + let initial_value = self.inputs |> transaction.find_input(utxo) |> option.map(fn(i) { i.output.value }) |> option.or_else(assets.zero) expect locked_commits: List = commit_datum.commits - check_committed_value(commit_validator, committed_utxo, initial_value, self) && - check_locked_commit(committed_utxo, locked_commits) && - check_head_id(head_id, commit_datum.head_id) && - must_be_signed_by_participant(head_id, initial_value, self) && - must_not_mint_or_burn(self.mint) + check_committed_value(commit_validator, committed_utxo, initial_value, self) && check_locked_commit( + committed_utxo, + locked_commits, + ) && check_head_id(head_id, commit_datum.head_id) && must_be_signed_by_participant( + head_id, + initial_value, + self, + ) && must_not_mint_or_burn(self.mint) } fn check_committed_value( commit_validator: ScriptHash, committed_utxo: List, initial_value: Value, - self: Transaction + self: Transaction, ) -> Bool { - let initial_lovelace = - initial_value + let initial_lovelace = + initial_value |> assets.lovelace_of - let locked_value = + let locked_value = self.outputs |> transaction.find_script_outputs(commit_validator) |> list.map(fn(output) { output.value }) |> list.reduce(assets.zero, assets.merge) |> assets.lovelace_of - let committed_value = + let committed_value = committed_utxo |> list.map(fn(i) { i.output.value }) |> list.reduce(assets.zero, assets.merge) @@ -184,45 +179,40 @@ fn check_committed_value( to_error_code(LockedValueDoesNotMatch), // NOTE: Ada in initialValue is usually lower than in the locked ADA due // to higher deposit needed for commit output than for initial output - locked_value >= initial_lovelace + committed_value + locked_value >= initial_lovelace + committed_value, ) } fn check_locked_commit( committed_utxo: List, - locked_commits: List + locked_commits: List, ) -> Bool { - when(committed_utxo, locked_commits) is { + when (committed_utxo, locked_commits) is { ([], []) -> True - ([], _) -> - trace_false(to_error_code(MissingCommittedTxOutInOutputDatum)) - (_, []) -> - trace_false(to_error_code(CommittedTxOutMissingInOutputDatum)) - ([i, ..rest_committed], [c, ..rest_commits]) -> { + ([], _) -> trace_false(to_error_code(MissingCommittedTxOutInOutputDatum)) + (_, []) -> trace_false(to_error_code(CommittedTxOutMissingInOutputDatum)) + ([i, ..rest_committed], [c, ..rest_commits]) -> trace_if_false( to_error_code(MismatchCommittedTxOutInDatum), - builtin.serialise_data(i.output) == c.pre_serialized_output && - i.output_reference == c.input && - check_locked_commit(rest_committed, rest_commits) + builtin.serialise_data(i.output) == c.pre_serialized_output && i.output_reference == c.input && check_locked_commit( + rest_committed, + rest_commits, + ), ) - } } } -fn check_head_id( - self_head_id: PolicyId, - committed_head_id: PolicyId, -) -> Bool { +fn check_head_id(self_head_id: PolicyId, committed_head_id: PolicyId) -> Bool { trace_if_false( to_error_code(WrongHeadIdInCommitDatum), - self_head_id == committed_head_id + self_head_id == committed_head_id, ) } fn must_be_signed_by_participant( head_id: PolicyId, initial_value: Value, - self: Transaction + self: Transaction, ) -> Bool { let token_map = initial_value @@ -236,15 +226,12 @@ fn must_be_signed_by_participant( |> dict.to_pairs |> pairs.find_all(1) when participation_tokens is { - [our_participation_token_name] -> { - trace_if_false( - to_error_code(MissingOrInvalidCommitAuthor), - self.extra_signatories - |> list.has( - crypto.blake2b_224(our_participation_token_name) - ) - ) - } + [our_participation_token_name] -> + trace_if_false( + to_error_code(MissingOrInvalidCommitAuthor), + self.extra_signatories + |> list.has(crypto.blake2b_224(our_participation_token_name)), + ) _more_than_one_token -> trace_false(to_error_code(MultipleHeadTokensOrMoreThan1PTsFound)) } @@ -257,7 +244,7 @@ fn must_be_signed_by_participant( fn must_not_mint_or_burn(mint: Value) -> Bool { trace_if_false( to_error_code(MintingOrBurningIsForbidden), - assets.is_zero(mint) + assets.is_zero(mint), ) } diff --git a/hydra-tx/src/Hydra/Tx/Abort.hs b/hydra-tx/src/Hydra/Tx/Abort.hs index f6fc6d635df..f6817c27368 100644 --- a/hydra-tx/src/Hydra/Tx/Abort.hs +++ b/hydra-tx/src/Hydra/Tx/Abort.hs @@ -19,7 +19,7 @@ import Hydra.Ledger.Cardano.Builder ( emptyTxBody, unsafeBuildTransaction, ) -import Hydra.Plutus (commitValidatorScript) +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import Hydra.Tx (ScriptRegistry (..)) import Hydra.Tx.Utils (headTokensFromValue) @@ -92,7 +92,7 @@ abortTx committedUTxO scriptRegistry vk (headInput, initialHeadOutput) headToken initialScriptRef = fst (initialReference scriptRegistry) initialScript = - fromPlutusScript @PlutusScriptV3 Initial.validatorScript + fromPlutusScript @PlutusScriptV3 initialValidatorScript initialRedeemer = toScriptData $ Initial.redeemer Initial.ViaAbort diff --git a/hydra-tx/src/Hydra/Tx/Init.hs b/hydra-tx/src/Hydra/Tx/Init.hs index 456d920b947..5edd0e859ac 100644 --- a/hydra-tx/src/Hydra/Tx/Init.hs +++ b/hydra-tx/src/Hydra/Tx/Init.hs @@ -9,6 +9,7 @@ import Hydra.Contract.HeadTokens qualified as HeadTokens import Hydra.Contract.Initial qualified as Initial import Hydra.Contract.MintAction (MintAction (..)) import Hydra.Ledger.Cardano.Builder (addOutputs, addVkInputs, emptyTxBody, mintTokens, unsafeBuildTransaction) +import Hydra.Plutus (initialValidatorScript) import Hydra.Tx.ContestationPeriod (toChain) import Hydra.Tx.HeadParameters (HeadParameters (..)) import Hydra.Tx.OnChainId (OnChainId (..)) @@ -73,6 +74,6 @@ mkInitialOutput networkId seedTxIn participant = initialAddress = mkScriptAddress @PlutusScriptV3 networkId initialScript initialScript = - fromPlutusScript Initial.validatorScript + fromPlutusScript @PlutusScriptV3 initialValidatorScript initialDatum = mkTxOutDatumInline $ Initial.datum (toPlutusCurrencySymbol tokenPolicyId) diff --git a/hydra-tx/test/Hydra/Tx/Contract/Abort.hs b/hydra-tx/test/Hydra/Tx/Contract/Abort.hs index 303bb3375ff..028d0352aaf 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Abort.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Abort.hs @@ -18,7 +18,7 @@ import Hydra.Contract.HeadTokens (headPolicyId, mkHeadTokenScript) import Hydra.Contract.HeadTokensError (HeadTokensError (..)) import Hydra.Contract.Initial qualified as Initial import Hydra.Contract.InitialError (InitialError (STNotBurned)) -import Hydra.Plutus (commitValidatorScript) +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import Hydra.Tx ( HeadParameters (..), Party, @@ -122,7 +122,7 @@ propHasInitial (_, utxo) = & counterexample ("UTxO: " <> decodeUtf8 (encodePretty utxo)) & counterexample ("Looking for Initial Script: " <> show addr) where - addr = mkScriptAddress @PlutusScriptV3 testNetworkId (fromPlutusScript Initial.validatorScript) + addr = mkScriptAddress testNetworkId (fromPlutusScript @PlutusScriptV3 initialValidatorScript) paysToInitialScript txOut = txOutAddress txOut == addr @@ -293,7 +293,7 @@ genAbortableOutputs parties = (mkTxOutDatumInline initialDatum) ReferenceScriptNone - initialScript = fromPlutusScript @PlutusScriptV3 Initial.validatorScript + initialScript = fromPlutusScript @PlutusScriptV3 initialValidatorScript initialDatum = Initial.datum (toPlutusCurrencySymbol testPolicyId) diff --git a/hydra-tx/test/Hydra/Tx/Contract/CollectCom.hs b/hydra-tx/test/Hydra/Tx/Contract/CollectCom.hs index 3f35f9b6055..ee988e9a5cd 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/CollectCom.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/CollectCom.hs @@ -20,7 +20,7 @@ import Hydra.Contract.Initial qualified as Initial import Hydra.Contract.InitialError (InitialError (ExpectedSingleCommitOutput, LockedValueDoesNotMatch)) import Hydra.Contract.Util (UtilError (MintingOrBurningIsForbidden)) import Hydra.Data.Party qualified as OnChain -import Hydra.Plutus (commitValidatorScript) +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import Hydra.Tx (HeadParameters (..), Party, partyToChain) import Hydra.Tx.CollectCom ( collectComTx, @@ -253,7 +253,7 @@ genCollectComMutation (tx, _utxo) = txIn (toUTxOContext $ mkInitialOutput testNetworkId testSeedInput participant) (Just . toScriptData . Initial.redeemer $ Initial.ViaCommit [toPlutusTxOutRef txIn]) - , AddScript $ fromPlutusScript Initial.validatorScript + , AddScript $ fromPlutusScript initialValidatorScript ] , SomeMutation (pure $ toErrorCode MintingOrBurningIsForbidden) MutateTokenMintingOrBurning <$> (changeMintedTokens tx =<< genMintedOrBurnedValue) diff --git a/hydra-tx/testlib/Test/Hydra/Tx/Gen.hs b/hydra-tx/testlib/Test/Hydra/Tx/Gen.hs index c862f4d6bfd..9b0af9a0ed9 100644 --- a/hydra-tx/testlib/Test/Hydra/Tx/Gen.hs +++ b/hydra-tx/testlib/Test/Hydra/Tx/Gen.hs @@ -19,9 +19,8 @@ import Data.Maybe (fromJust) import GHC.IsList (IsList (..)) import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadTokens (headPolicyId) -import Hydra.Contract.Initial qualified as Initial import Hydra.Contract.Util (hydraHeadV1) -import Hydra.Plutus (commitValidatorScript) +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import Hydra.Tx (ScriptRegistry (..)) import Hydra.Tx.Close (OpenThreadOutput) import Hydra.Tx.Contest (ClosedThreadOutput) @@ -249,7 +248,7 @@ genScriptRegistry = do ScriptRegistry { initialReference = ( TxIn txId' (TxIx 0) - , txOut{txOutReferenceScript = mkScriptRef Initial.validatorScript} + , txOut{txOutReferenceScript = mkScriptRefV3 initialValidatorScript} ) , commitReference = ( TxIn txId' (TxIx 1) From 849c49f7082000c51f4f9511382e93db3f884db9 Mon Sep 17 00:00:00 2001 From: Franco Testagrossa Date: Mon, 4 Nov 2024 13:16:04 +0100 Subject: [PATCH 07/24] trace error when failing to decode locked commits in commit datum --- hydra-plutus/plutus.json | 24 +++++++-------------- hydra-plutus/validators/initial.ak | 34 ++++++++++++++++-------------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/hydra-plutus/plutus.json b/hydra-plutus/plutus.json index ee88b93bd79..eebb82deaed 100644 --- a/hydra-plutus/plutus.json +++ b/hydra-plutus/plutus.json @@ -25,16 +25,16 @@ "$ref": "#/definitions/commit~1Redeemer" } }, - "compiledCode": "59026d010100323232323232322533300232323232325332330083001300937540042646464646464a66601c60060022a66602260206ea8024540085854ccc038c01c00454ccc044c040dd50048a8010b0b18071baa0081533300c3001300d37540042646464646464a666024601660266ea80344cc00cc011300103d87980003370e6660026eacc05cc060c060c060c060c050dd50079bae30053014375400c91010b487964726148656164563100480044c94ccc04cc020c050dd50008998021802a6103d87a8000300c333002375660306032602a6ea8c060c054dd50009bae30063015375400e9110b4879647261486561645631001632533301600114c103d87a8000130033301730180014bd701bac30053014375401e44464a66602a601c602c6ea8004520001375a6034602e6ea8004c94ccc054c038c058dd50008a6103d87a8000132330010013756603660306ea8008894ccc068004530103d87a8000132323232533301b337220100042a66603666e3c0200084c02ccc07cdd4000a5eb80530103d87a8000133006006003375a60380066eb8c068008c078008c070004c8cc004004010894ccc0640045300103d87a8000132323232533301a337220100042a66603466e3c0200084c028cc078dd3000a5eb80530103d87a8000133006006003375660360066eb8c064008c074008c06c004dd2a400044a666022002294452812999807980218081baa001149103433031001491034330320023013301430140013011300e37540042c6e1d2000300f3010002300e001300a37540046e1d200216300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", - "hash": "3767add3ba46f9111861d5342a3b3b11fbc44940633c37d6968a7699" + "compiledCode": "590398010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d879800053330133370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c9110b487964726148656164563100480045288a9980a2492e6d7573745f6275726e5f737428646174756d2e686561645f69642c2073656c662e6d696e7429203f2046616c73650014a0264a6660286010602c6ea80044cc010c01530103d87a80005333014300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e91010b48796472614865616456310014a22a6602a921306861735f737428646174756d2e686561645f69642c20686561645f6f75747075742e76616c756529203f2046616c73650014a02a6602a9213465787065637420536f6d6528686561645f6f757470757429203d2073656c662e6f757470757473207c3e206c6973742e68656164001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c92011a65787065637420536f6d6528646174756d29203d20646174756d0016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa001149854cc0112411856616c696461746f722072657475726e65642066616c73650013656153300249011272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e" }, { "title": "commit.commit.else", "redeemer": { "schema": {} }, - "compiledCode": "59026d010100323232323232322533300232323232325332330083001300937540042646464646464a66601c60060022a66602260206ea8024540085854ccc038c01c00454ccc044c040dd50048a8010b0b18071baa0081533300c3001300d37540042646464646464a666024601660266ea80344cc00cc011300103d87980003370e6660026eacc05cc060c060c060c060c050dd50079bae30053014375400c91010b487964726148656164563100480044c94ccc04cc020c050dd50008998021802a6103d87a8000300c333002375660306032602a6ea8c060c054dd50009bae30063015375400e9110b4879647261486561645631001632533301600114c103d87a8000130033301730180014bd701bac30053014375401e44464a66602a601c602c6ea8004520001375a6034602e6ea8004c94ccc054c038c058dd50008a6103d87a8000132330010013756603660306ea8008894ccc068004530103d87a8000132323232533301b337220100042a66603666e3c0200084c02ccc07cdd4000a5eb80530103d87a8000133006006003375a60380066eb8c068008c078008c070004c8cc004004010894ccc0640045300103d87a8000132323232533301a337220100042a66603466e3c0200084c028cc078dd3000a5eb80530103d87a8000133006006003375660360066eb8c064008c074008c06c004dd2a400044a666022002294452812999807980218081baa001149103433031001491034330320023013301430140013011300e37540042c6e1d2000300f3010002300e001300a37540046e1d200216300b300c002300a001300a00230080013004375400229309b2b2b9a5573aaae7955cfaba05742ae881", - "hash": "3767add3ba46f9111861d5342a3b3b11fbc44940633c37d6968a7699" + "compiledCode": "590398010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d879800053330133370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c9110b487964726148656164563100480045288a9980a2492e6d7573745f6275726e5f737428646174756d2e686561645f69642c2073656c662e6d696e7429203f2046616c73650014a0264a6660286010602c6ea80044cc010c01530103d87a80005333014300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e91010b48796472614865616456310014a22a6602a921306861735f737428646174756d2e686561645f69642c20686561645f6f75747075742e76616c756529203f2046616c73650014a02a6602a9213465787065637420536f6d6528686561645f6f757470757429203d2073656c662e6f757470757473207c3e206c6973742e68656164001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c92011a65787065637420536f6d6528646174756d29203d20646174756d0016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa001149854cc0112411856616c696461746f722072657475726e65642066616c73650013656153300249011272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e" }, { "title": "initial.initial.spend", @@ -50,16 +50,8 @@ "$ref": "#/definitions/initial~1Redeemer" } }, - "parameters": [ - { - "title": "commit_validator", - "schema": { - "$ref": "#/definitions/ScriptHash" - } - } - ], - "compiledCode": "590a4c010100323232323232323223225333004323232323253323300a3001300b375400426464646464646464a66602460080022a66602a60286ea802c540085854ccc048c0240044c8c94ccc05cc0680084cc01c004894ccc064008540184cc01cc06c0084c004c07000858dd6180c000980a1baa00b16301237540142a666020600460226ea80104c8c8c8c8c8c8c94ccc05cc024c060dd50080998029802260103d87980003370e6660026eacc018c064dd5009003a4410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cc080004894ccc0c800854ccc0bccc074c07130103d87b80003371266e00c044010c044ccc04ccc04801c8dd5980598191baa300b3032375400297adef6c600143011333013330123300b3758601860626ea80a80b48dd5980598191baa0014bd6f7b63000a0a999817998040038018a9998179980e980e26104d9050580003371e03e6eb8c030c0c4dd50028a99981799192999818981180089809180f26103d87d8000153330313028001132533303500113013301f4c103d87e80001533303530380011323302130204c103d87a80003322323300100100322533303a00114a0264a66607066e3cdd7181e8010020a51133003003001303d0013758607060726072607260726072607260726072606a6ea80b8de40009bae303700113013301f4c103d87e8000323300100100322533303600114bd700991919299981b18169bad303800313303a37520026600a00a00426600a00a0046eb8c0d8008c0e8008c0e00044c048c079300103d87e80003018001330163301a00401f4bd6f7b63009980e980e26104d9050680003375e603c60626ea80a9300101a00014a029405280a501325333030302230313754002264646464a66606e607400426604a0062600c607400e2c6eb8c0e0004c0e0008c0d8004c0c8dd50008b181a0011bac3007302e37540046602464a6660586046605a6ea8004530103d87a800013018330303007302e3754600e605c6ea8c0c4c0b8dd5000a5eb80cc028dd6180898169baa0260204bd6f7b630299981680089804180ba6104d9050480001533302d303000113232533302c301e0011300a30194c104d9050180001533302c30230011300a30194c0104d9050280001323253333330350021533302e3020302f3754004264a66606400200426464a66606800200826464a66606c00200c264a66666607600200e00e00e00e264a666070607600620120106eb8004c0e0004c0e0008c0d8004c0d8008c0d0004c0c0dd500100080080080080089805980d26104d9050380003031302e375400460586ea8004c0bc0044c020c05d300104d90504800033009330053758600c60566ea809009c8c01cc0b0dd5000998041bac302d302a375404246644a666056604460586ea800840044c0c0c0b4dd5001198041bac300f302b3754048002600e602c980104d90507800030010012223232323253330300021533303000314a20020022a66605e0022601a603298103d87f80001533302f0021300d30194c0104d9050080001323232323301e301d4c0103d87c800053330303371e6eccc02cc0c8dd50021bae300b303237540042a66606066ebcc058c0c8dd5002180b18191baa002133300a00a00300114a02940c0d4014c0cc010c0cc008c0c4004dd618180011bac302f30300013302d374e0046605a6e9c0052f5c046056605800244646600200200644a666056002297ae013232533302a32533302b3022302c3754002266e3c018dd7181818169baa00114a0602060586ea8c040c0b0dd500109981700119802002000899802002000981780118168009181498151815000931119198008008019129998140008a6103d87a80001323253330273375e601a60526ea80080144c04ccc0ac0092f5c02660080080026058004605400244646600200200644a66604e002297ae01330283003302900133002002302a00124a0466601200291010048810022323300100100322533302400114bd700998129ba630033026001330020023027001222323330010010040032225333025002100113330030033028002330040013756604e0044464666002002006004444a6660460042002264666008008604e0066644646600200200a44a66605000226605266ec0dd48021ba60034bd6f7b630099191919299981499b9000800213302d337606ea4020dd30038028a99981499b8f008002132533302a301c302b375400226605c66ec0dd4804981798161baa001004100432533302a533302d00114a22940530103d87a8000130163302e374c00297ae032333001001008002222533302f0021001132333004004303300333223233001001005225333034001133035337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0d4cdc800400109981c99bb037520106ea001c01454ccc0d4cdc7804001099299981b1814181b9baa00113303a337606ea4024c0ecc0e0dd5000802080219299981b18140008a60103d87a8000130223303a375000297ae03370000e00226607266ec0dd48011ba800133006006003375a606c0066eb8c0d0008c0e0008c0d8004dd718170009bad302f001303100213302d337606ea4008dd3000998030030019bab302a003375c6050004605800460540026eb8c088004dd5981180098128011181000091299980d9809180e1baa0021001137566040603a6ea8008c004004894ccc07000452000133700900119801001180f80091119299980d1808980d9baa0011480004dd6980f980e1baa00132533301a3011301b3754002298103d87a80001323300100137566040603a6ea8008894ccc07c004530103d87a80001323232325333020337220100042a66604066e3c0200084c030cc090dd4000a5eb80530103d87a8000133006006003375a60420066eb8c07c008c08c008c084004cc01000c00888c8cc00400400c894ccc070004530103d87a8000132323232533301d3372200e0042a66603a66e3c01c0084c024cc084dd3000a5eb80530103d87a80001330060060033756603c0066eb8c070008c080008c078004dd2a4000464a66602a600e00229201034930310015333015300c001149010349303200153330153370e90020008a490349303300153330153370e90030008a490349303400153330153370e90040008a490349303500153330153370e90050008a490349303600153330153370e90060008a490349303700153330153370e90070008a490349303800153330153370e90080008a490349303900153330153370e90090008a490349313000153330153370e900a0008a490349313100153330153370e900b0008a490349313200153330153370e900c0008a490349313300153330153370e900d0008a490349313400149103493135003015375400244a66602800229445281180b980c180c180c180c0009bae3015301237540082c44a666022600660246ea80084c8c8c8c94ccc060c06c0085401458dd6980c800980c8011bae3017001301337540042c6e1d200022323300100100322330030013002002301130120023010001300c37540046e1d200216300d300e002300c001300c002300a0013006375400229309b2b1bae0015734aae7555cf2ab9f5740ae855d12ba401", - "hash": "1cfbf372cbcee765a4577b3926b7bb4670ebded444461aacf7a8041e" + "compiledCode": "590c4001010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088a99980c99802980226103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480045288a9980d249286d7573745f6275726e5f737428686561645f69642c2073656c662e6d696e7429203f2046616c73650014a02a66603264646464646464646464646464646464646464646464a66666606e0020040042646604400244a66606c0042a6660646603c603a98103d87b80003371266e00c048018c048ccc050cc04c0248dd59806981b1baa300d3036375400297adef6c600153012333014330133300d3758601c606a6ea80b00bc8dd59806981b1baa0014bd6f7b63000a8a999819198050048018a9998191980f180ea6104d9050580003371e0426eb8c038c0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c0011323302230214c103d87a80003322323300100100322533303e00114a0264a66607666e3cdd718208010020a51133003003001304100137586078607a607a607a607a607a607a607a607a60726ea80c0de40009bae303b0011302230204c103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089804180b26104d9050480001533302f303200113232533302d301e0011300a30184c104d9050180001533302d30230011300a30184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089805980ca6104d905038000303330303754004605c6ea8004c0c40044c020c059300104d90504800033009330053758600c605a6ea809009c8c01cc0b8dd5000998041bac302f302c375404246644a6660586044605c6ea800840044c0c8c0bcdd5001198041bac300e302d3754048002600e602a980104d90507800030010012223232323253330320021533303200314a20020022a66606200226034603098103d87f8000153330310021301a30184c0104d9050080001323232323301d301c4c0103d87c800053330313371e6eccc02cc0d0dd50021bae300b303437540042a66606266ebcc054c0d0dd5002180a981a1baa002133300a00a00300114a02940c0dc014c0d4010c0d4008c0cc004dd618190011bac303130320013302f374e0046605e6e9c0052f5c04605a605c00244646600200200644a66605a002297ae013232533302b32533302c3022302e3754002266e3c018dd7181918179baa00114a0601e605c6ea8c03cc0b8dd50010998180011980200200089980200200098188011817800918159816181600092998128008b1119198008008019129998150008a6103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c0045200013370090011980100118110008a51153301a4914b636865636b5f636f6d6d697428686561645f69642c20636f6d6d69745f76616c696461746f722c20636f6d6d69747465645f726566732c207574786f2c2073656c6629203f2046616c73650014a044464a6660386024603c6ea8004520001375a6044603e6ea8004c94ccc070c048c078dd50008a60103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257489811e581c3767add3ba46f9111861d5342a3b3b11fbc44940633c37d6968a76990001", + "hash": "a56b37144b1d8bc3d492d9370bfc03b4a52443e336463138360b0975" }, { "title": "initial.initial.else", @@ -74,8 +66,8 @@ } } ], - "compiledCode": "590a4c010100323232323232323223225333004323232323253323300a3001300b375400426464646464646464a66602460080022a66602a60286ea802c540085854ccc048c0240044c8c94ccc05cc0680084cc01c004894ccc064008540184cc01cc06c0084c004c07000858dd6180c000980a1baa00b16301237540142a666020600460226ea80104c8c8c8c8c8c8c94ccc05cc024c060dd50080998029802260103d87980003370e6660026eacc018c064dd5009003a4410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cc080004894ccc0c800854ccc0bccc074c07130103d87b80003371266e00c044010c044ccc04ccc04801c8dd5980598191baa300b3032375400297adef6c600143011333013330123300b3758601860626ea80a80b48dd5980598191baa0014bd6f7b63000a0a999817998040038018a9998179980e980e26104d9050580003371e03e6eb8c030c0c4dd50028a99981799192999818981180089809180f26103d87d8000153330313028001132533303500113013301f4c103d87e80001533303530380011323302130204c103d87a80003322323300100100322533303a00114a0264a66607066e3cdd7181e8010020a51133003003001303d0013758607060726072607260726072607260726072606a6ea80b8de40009bae303700113013301f4c103d87e8000323300100100322533303600114bd700991919299981b18169bad303800313303a37520026600a00a00426600a00a0046eb8c0d8008c0e8008c0e00044c048c079300103d87e80003018001330163301a00401f4bd6f7b63009980e980e26104d9050680003375e603c60626ea80a9300101a00014a029405280a501325333030302230313754002264646464a66606e607400426604a0062600c607400e2c6eb8c0e0004c0e0008c0d8004c0c8dd50008b181a0011bac3007302e37540046602464a6660586046605a6ea8004530103d87a800013018330303007302e3754600e605c6ea8c0c4c0b8dd5000a5eb80cc028dd6180898169baa0260204bd6f7b630299981680089804180ba6104d9050480001533302d303000113232533302c301e0011300a30194c104d9050180001533302c30230011300a30194c0104d9050280001323253333330350021533302e3020302f3754004264a66606400200426464a66606800200826464a66606c00200c264a66666607600200e00e00e00e264a666070607600620120106eb8004c0e0004c0e0008c0d8004c0d8008c0d0004c0c0dd500100080080080080089805980d26104d9050380003031302e375400460586ea8004c0bc0044c020c05d300104d90504800033009330053758600c60566ea809009c8c01cc0b0dd5000998041bac302d302a375404246644a666056604460586ea800840044c0c0c0b4dd5001198041bac300f302b3754048002600e602c980104d90507800030010012223232323253330300021533303000314a20020022a66605e0022601a603298103d87f80001533302f0021300d30194c0104d9050080001323232323301e301d4c0103d87c800053330303371e6eccc02cc0c8dd50021bae300b303237540042a66606066ebcc058c0c8dd5002180b18191baa002133300a00a00300114a02940c0d4014c0cc010c0cc008c0c4004dd618180011bac302f30300013302d374e0046605a6e9c0052f5c046056605800244646600200200644a666056002297ae013232533302a32533302b3022302c3754002266e3c018dd7181818169baa00114a0602060586ea8c040c0b0dd500109981700119802002000899802002000981780118168009181498151815000931119198008008019129998140008a6103d87a80001323253330273375e601a60526ea80080144c04ccc0ac0092f5c02660080080026058004605400244646600200200644a66604e002297ae01330283003302900133002002302a00124a0466601200291010048810022323300100100322533302400114bd700998129ba630033026001330020023027001222323330010010040032225333025002100113330030033028002330040013756604e0044464666002002006004444a6660460042002264666008008604e0066644646600200200a44a66605000226605266ec0dd48021ba60034bd6f7b630099191919299981499b9000800213302d337606ea4020dd30038028a99981499b8f008002132533302a301c302b375400226605c66ec0dd4804981798161baa001004100432533302a533302d00114a22940530103d87a8000130163302e374c00297ae032333001001008002222533302f0021001132333004004303300333223233001001005225333034001133035337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0d4cdc800400109981c99bb037520106ea001c01454ccc0d4cdc7804001099299981b1814181b9baa00113303a337606ea4024c0ecc0e0dd5000802080219299981b18140008a60103d87a8000130223303a375000297ae03370000e00226607266ec0dd48011ba800133006006003375a606c0066eb8c0d0008c0e0008c0d8004dd718170009bad302f001303100213302d337606ea4008dd3000998030030019bab302a003375c6050004605800460540026eb8c088004dd5981180098128011181000091299980d9809180e1baa0021001137566040603a6ea8008c004004894ccc07000452000133700900119801001180f80091119299980d1808980d9baa0011480004dd6980f980e1baa00132533301a3011301b3754002298103d87a80001323300100137566040603a6ea8008894ccc07c004530103d87a80001323232325333020337220100042a66604066e3c0200084c030cc090dd4000a5eb80530103d87a8000133006006003375a60420066eb8c07c008c08c008c084004cc01000c00888c8cc00400400c894ccc070004530103d87a8000132323232533301d3372200e0042a66603a66e3c01c0084c024cc084dd3000a5eb80530103d87a80001330060060033756603c0066eb8c070008c080008c078004dd2a4000464a66602a600e00229201034930310015333015300c001149010349303200153330153370e90020008a490349303300153330153370e90030008a490349303400153330153370e90040008a490349303500153330153370e90050008a490349303600153330153370e90060008a490349303700153330153370e90070008a490349303800153330153370e90080008a490349303900153330153370e90090008a490349313000153330153370e900a0008a490349313100153330153370e900b0008a490349313200153330153370e900c0008a490349313300153330153370e900d0008a490349313400149103493135003015375400244a66602800229445281180b980c180c180c180c0009bae3015301237540082c44a666022600660246ea80084c8c8c8c94ccc060c06c0085401458dd6980c800980c8011bae3017001301337540042c6e1d200022323300100100322330030013002002301130120023010001300c37540046e1d200216300d300e002300c001300c002300a0013006375400229309b2b1bae0015734aae7555cf2ab9f5740ae855d12ba401", - "hash": "1cfbf372cbcee765a4577b3926b7bb4670ebded444461aacf7a8041e" + "compiledCode": "590c1e0101003232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088a99980c998029802260103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480045288a9980d249286d7573745f6275726e5f737428686561645f69642c2073656c662e6d696e7429203f2046616c73650014a02a66603264646464646464646464646464646464646464646464a66666606e0020040042646604400244a66606c0042a6660646603c603a98103d87b80003371266e00c048018c048ccc050cc04c0248dd59806981b1baa300d3036375400297adef6c600153012333014330133300d3758601c606a6ea80b00bc8dd59806981b1baa0014bd6f7b63000a8a999819198050048018a9998191980f180ea6104d9050580003371e0426eb8c038c0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c0011323302230214c103d87a80003322323300100100322533303e00114a0264a66607666e3cdd718208010020a51133003003001304100137586078607a607a607a607a607a607a607a607a60726ea80c0de40009bae303b0011302230204c103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089804180b26104d9050480001533302f303200113232533302d301e0011300a30184c104d9050180001533302d30230011300a30184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089805980ca6104d905038000303330303754004605c6ea8004c0c40044c020c059300104d90504800033009330053758600c605a6ea809009c8c01cc0b8dd5000998041bac302f302c375404246644a6660586044605c6ea800840044c0c8c0bcdd5001198041bac300e302d3754048002600e602a980104d90507800030010012223232323253330320021533303200314a20020022a66606200226034603098103d87f8000153330310021301a30184c0104d9050080001323232323301d301c4c0103d87c800053330313371e6eccc02cc0d0dd50021bae300b303437540042a66606266ebcc054c0d0dd5002180a981a1baa002133300a00a00300114a02940c0dc014c0d4010c0d4008c0cc004dd618190011bac303130320013302f374e0046605e6e9c0052f5c04605a605c00244646600200200644a66605a002297ae013232533302b32533302c3022302e3754002266e3c018dd7181918179baa00114a0601e605c6ea8c03cc0b8dd50010998180011980200200089980200200098188011817800918159816181600092998128008b1119198008008019129998150008a6103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c0045200013370090011980100118110008a51153301a4914b636865636b5f636f6d6d697428686561645f69642c20636f6d6d69745f76616c696461746f722c20636f6d6d69747465645f726566732c207574786f2c2073656c6629203f2046616c73650014a044464a6660386024603c6ea8004520001375a6044603e6ea8004c94ccc070c048c078dd50008a60103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "9400eee68798bfe7cc37d52ecc88c43f98b1c935eb3f38a23cb74003" } ], "definitions": { diff --git a/hydra-plutus/validators/initial.ak b/hydra-plutus/validators/initial.ak index 1c78beff299..1ae999d6ad8 100644 --- a/hydra-plutus/validators/initial.ak +++ b/hydra-plutus/validators/initial.ak @@ -144,15 +144,18 @@ fn check_commit( |> transaction.find_input(utxo) |> option.map(fn(i) { i.output.value }) |> option.or_else(assets.zero) - expect locked_commits: List = commit_datum.commits - check_committed_value(commit_validator, committed_utxo, initial_value, self) && check_locked_commit( - committed_utxo, - locked_commits, - ) && check_head_id(head_id, commit_datum.head_id) && must_be_signed_by_participant( - head_id, - initial_value, - self, - ) && must_not_mint_or_burn(self.mint) + if commit_datum.commits is locked_commits: List { + check_committed_value(commit_validator, committed_utxo, initial_value, self) && check_locked_commit( + committed_utxo, + locked_commits, + ) && check_head_id(head_id, commit_datum.head_id) && must_be_signed_by_participant( + head_id, + initial_value, + self, + ) && must_not_mint_or_burn(self.mint) + } else { + trace_false(@"Failed to decode locked_commits") + } } fn check_committed_value( @@ -249,20 +252,19 @@ fn must_not_mint_or_burn(mint: Value) -> Bool { } // Helpers +fn trace_false(trace_log: String) -> Bool { + trace trace_log + False +} + fn trace_if_false(trace_log: String, predicate: Bool) -> Bool { if predicate { True } else { - trace trace_log - False + trace_false(trace_log) } } -fn trace_false(trace_log: String) -> Bool { - trace trace_log - False -} - fn trace_fail(trace_log: String) -> a { trace trace_log fail From a2127872e6852758cb8c698945556ed73999949b Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Mon, 4 Nov 2024 15:39:19 +0100 Subject: [PATCH 08/24] Make commit tx be healthy again --- hydra-plutus/plutus.json | 8 ++--- hydra-plutus/validators/initial.ak | 56 +++++++++++++++++------------- 2 files changed, 35 insertions(+), 29 deletions(-) diff --git a/hydra-plutus/plutus.json b/hydra-plutus/plutus.json index eebb82deaed..4851d31202b 100644 --- a/hydra-plutus/plutus.json +++ b/hydra-plutus/plutus.json @@ -50,8 +50,8 @@ "$ref": "#/definitions/initial~1Redeemer" } }, - "compiledCode": "590c4001010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088a99980c99802980226103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480045288a9980d249286d7573745f6275726e5f737428686561645f69642c2073656c662e6d696e7429203f2046616c73650014a02a66603264646464646464646464646464646464646464646464a66666606e0020040042646604400244a66606c0042a6660646603c603a98103d87b80003371266e00c048018c048ccc050cc04c0248dd59806981b1baa300d3036375400297adef6c600153012333014330133300d3758601c606a6ea80b00bc8dd59806981b1baa0014bd6f7b63000a8a999819198050048018a9998191980f180ea6104d9050580003371e0426eb8c038c0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c0011323302230214c103d87a80003322323300100100322533303e00114a0264a66607666e3cdd718208010020a51133003003001304100137586078607a607a607a607a607a607a607a607a60726ea80c0de40009bae303b0011302230204c103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089804180b26104d9050480001533302f303200113232533302d301e0011300a30184c104d9050180001533302d30230011300a30184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089805980ca6104d905038000303330303754004605c6ea8004c0c40044c020c059300104d90504800033009330053758600c605a6ea809009c8c01cc0b8dd5000998041bac302f302c375404246644a6660586044605c6ea800840044c0c8c0bcdd5001198041bac300e302d3754048002600e602a980104d90507800030010012223232323253330320021533303200314a20020022a66606200226034603098103d87f8000153330310021301a30184c0104d9050080001323232323301d301c4c0103d87c800053330313371e6eccc02cc0d0dd50021bae300b303437540042a66606266ebcc054c0d0dd5002180a981a1baa002133300a00a00300114a02940c0dc014c0d4010c0d4008c0cc004dd618190011bac303130320013302f374e0046605e6e9c0052f5c04605a605c00244646600200200644a66605a002297ae013232533302b32533302c3022302e3754002266e3c018dd7181918179baa00114a0601e605c6ea8c03cc0b8dd50010998180011980200200089980200200098188011817800918159816181600092998128008b1119198008008019129998150008a6103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c0045200013370090011980100118110008a51153301a4914b636865636b5f636f6d6d697428686561645f69642c20636f6d6d69745f76616c696461746f722c20636f6d6d69747465645f726566732c207574786f2c2073656c6629203f2046616c73650014a044464a6660386024603c6ea8004520001375a6044603e6ea8004c94ccc070c048c078dd50008a60103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257489811e581c3767add3ba46f9111861d5342a3b3b11fbc44940633c37d6968a76990001", - "hash": "a56b37144b1d8bc3d492d9370bfc03b4a52443e336463138360b0975" + "compiledCode": "590bb701010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088998029802260103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601c6eb0c03cc0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c03cc0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089803180b26104d9050480001533302f303200113232533302d301e0011300830184c104d9050180001533302d30230011300830184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089804980ca6104d905038000303330303754004605c6ea8004c0c40044c018c059300104d90504800033009330063758600e605a6ea809009c8c020c0b8dd5000998041bac302f302c37540424660106eb0c038c0b4dd501200098008009111919191929998190010a9998190018a51001001153330310011301a30184c103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd7011816981700092998138008b1119198008008019129998160008a5eb804c8c94ccc0a8c94ccc0acc084c0b4dd5000899b8f006375c6062605c6ea8004528180718169baa300e302d375400426605e004660080080022660080080026060004605c002460546056605600244646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257489811e581c742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e0001", + "hash": "2a7300406263278718367ac8ca1d4d2e982a7c2eb14d8e21d4f33115" }, { "title": "initial.initial.else", @@ -66,8 +66,8 @@ } } ], - "compiledCode": "590c1e0101003232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088a99980c998029802260103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480045288a9980d249286d7573745f6275726e5f737428686561645f69642c2073656c662e6d696e7429203f2046616c73650014a02a66603264646464646464646464646464646464646464646464a66666606e0020040042646604400244a66606c0042a6660646603c603a98103d87b80003371266e00c048018c048ccc050cc04c0248dd59806981b1baa300d3036375400297adef6c600153012333014330133300d3758601c606a6ea80b00bc8dd59806981b1baa0014bd6f7b63000a8a999819198050048018a9998191980f180ea6104d9050580003371e0426eb8c038c0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c0011323302230214c103d87a80003322323300100100322533303e00114a0264a66607666e3cdd718208010020a51133003003001304100137586078607a607a607a607a607a607a607a607a60726ea80c0de40009bae303b0011302230204c103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089804180b26104d9050480001533302f303200113232533302d301e0011300a30184c104d9050180001533302d30230011300a30184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089805980ca6104d905038000303330303754004605c6ea8004c0c40044c020c059300104d90504800033009330053758600c605a6ea809009c8c01cc0b8dd5000998041bac302f302c375404246644a6660586044605c6ea800840044c0c8c0bcdd5001198041bac300e302d3754048002600e602a980104d90507800030010012223232323253330320021533303200314a20020022a66606200226034603098103d87f8000153330310021301a30184c0104d9050080001323232323301d301c4c0103d87c800053330313371e6eccc02cc0d0dd50021bae300b303437540042a66606266ebcc054c0d0dd5002180a981a1baa002133300a00a00300114a02940c0dc014c0d4010c0d4008c0cc004dd618190011bac303130320013302f374e0046605e6e9c0052f5c04605a605c00244646600200200644a66605a002297ae013232533302b32533302c3022302e3754002266e3c018dd7181918179baa00114a0601e605c6ea8c03cc0b8dd50010998180011980200200089980200200098188011817800918159816181600092998128008b1119198008008019129998150008a6103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c0045200013370090011980100118110008a51153301a4914b636865636b5f636f6d6d697428686561645f69642c20636f6d6d69745f76616c696461746f722c20636f6d6d69747465645f726566732c207574786f2c2073656c6629203f2046616c73650014a044464a6660386024603c6ea8004520001375a6044603e6ea8004c94ccc070c048c078dd50008a60103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "9400eee68798bfe7cc37d52ecc88c43f98b1c935eb3f38a23cb74003" + "compiledCode": "590b940101003232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd5008899802980226103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601c6eb0c03cc0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c03cc0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089803180b26104d9050480001533302f303200113232533302d301e0011300830184c104d9050180001533302d30230011300830184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089804980ca6104d905038000303330303754004605c6ea8004c0c40044c018c059300104d90504800033009330063758600e605a6ea809009c8c020c0b8dd5000998041bac302f302c37540424660106eb0c038c0b4dd501200098008009111919191929998190010a9998190018a51001001153330310011301a30184c103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd7011816981700092998138008b1119198008008019129998160008a5eb804c8c94ccc0a8c94ccc0acc084c0b4dd5000899b8f006375c6062605c6ea8004528180718169baa300e302d375400426605e004660080080022660080080026060004605c002460546056605600244646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "f423cf52daf8e525c6fb25a77bdf25a9a18429e7b917d326c92767e5" } ], "definitions": { diff --git a/hydra-plutus/validators/initial.ak b/hydra-plutus/validators/initial.ak index 1ae999d6ad8..8dec4acd30b 100644 --- a/hydra-plutus/validators/initial.ak +++ b/hydra-plutus/validators/initial.ak @@ -85,9 +85,9 @@ validator initial(commit_validator: ScriptHash) { ) { expect Some(head_id) = datum when redeemer is { - ViaAbort -> must_burn_st(head_id, self.mint)? + ViaAbort -> must_burn_st(head_id, self.mint) ViaCommit(committed_refs) -> - check_commit(head_id, commit_validator, committed_refs, utxo, self)? + check_commit(head_id, commit_validator, committed_refs, utxo, self) } } @@ -116,7 +116,7 @@ fn check_commit( fn(ref) { self.inputs |> transaction.find_input(ref) - |> option.or_else(trace_fail(to_error_code(OutRefNotFound))) + // |> option.(trace_fail(to_error_code(OutRefNotFound))) }, ) let locked_datums = @@ -145,22 +145,19 @@ fn check_commit( |> option.map(fn(i) { i.output.value }) |> option.or_else(assets.zero) if commit_datum.commits is locked_commits: List { - check_committed_value(commit_validator, committed_utxo, initial_value, self) && check_locked_commit( - committed_utxo, - locked_commits, - ) && check_head_id(head_id, commit_datum.head_id) && must_be_signed_by_participant( - head_id, - initial_value, - self, - ) && must_not_mint_or_burn(self.mint) - } else { - trace_false(@"Failed to decode locked_commits") - } + check_committed_value(commit_validator, committed_utxo, initial_value, self) + && check_locked_commit( committed_utxo, locked_commits,) + && check_head_id(head_id, commit_datum.head_id) + && must_be_signed_by_participant( head_id, initial_value, self,) + && must_not_mint_or_burn(self.mint) + } else { + trace_false(@"Failed to decode locked_commits") + } } fn check_committed_value( commit_validator: ScriptHash, - committed_utxo: List, + committed_utxo: List>, initial_value: Value, self: Transaction, ) -> Bool { @@ -175,7 +172,12 @@ fn check_committed_value( |> assets.lovelace_of let committed_value = committed_utxo - |> list.map(fn(i) { i.output.value }) + |> list.map(fn(i) { + when i is { + Some(input) -> input.output.value + None -> assets.zero + } + }) |> list.reduce(assets.zero, assets.merge) |> assets.lovelace_of trace_if_false( @@ -187,7 +189,7 @@ fn check_committed_value( } fn check_locked_commit( - committed_utxo: List, + committed_utxo: List>, locked_commits: List, ) -> Bool { when (committed_utxo, locked_commits) is { @@ -195,13 +197,17 @@ fn check_locked_commit( ([], _) -> trace_false(to_error_code(MissingCommittedTxOutInOutputDatum)) (_, []) -> trace_false(to_error_code(CommittedTxOutMissingInOutputDatum)) ([i, ..rest_committed], [c, ..rest_commits]) -> - trace_if_false( - to_error_code(MismatchCommittedTxOutInDatum), - builtin.serialise_data(i.output) == c.pre_serialized_output && i.output_reference == c.input && check_locked_commit( - rest_committed, - rest_commits, - ), - ) + when i is { + Some(input) -> + trace_if_false( + to_error_code(MismatchCommittedTxOutInDatum), + builtin.serialise_data(input.output) == c.pre_serialized_output && input.output_reference == c.input && check_locked_commit( + rest_committed, + rest_commits, + ), + ) + None -> False + } } } @@ -233,7 +239,7 @@ fn must_be_signed_by_participant( trace_if_false( to_error_code(MissingOrInvalidCommitAuthor), self.extra_signatories - |> list.has(crypto.blake2b_224(our_participation_token_name)), + |> list.has(our_participation_token_name), ) _more_than_one_token -> trace_false(to_error_code(MultipleHeadTokensOrMoreThan1PTsFound)) From 0b8e6aff0aa58c1b740b1d41b646ad9f44deb793 Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Mon, 4 Nov 2024 16:28:32 +0100 Subject: [PATCH 09/24] Make sure not to produce larger values then they were --- hydra-plutus/plutus.json | 16 ++++++++-------- hydra-plutus/validators/initial.ak | 1 - hydra-tx/test/Hydra/Tx/Contract/Commit.hs | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/hydra-plutus/plutus.json b/hydra-plutus/plutus.json index 4851d31202b..e1ad662bf7f 100644 --- a/hydra-plutus/plutus.json +++ b/hydra-plutus/plutus.json @@ -25,16 +25,16 @@ "$ref": "#/definitions/commit~1Redeemer" } }, - "compiledCode": "590398010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d879800053330133370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c9110b487964726148656164563100480045288a9980a2492e6d7573745f6275726e5f737428646174756d2e686561645f69642c2073656c662e6d696e7429203f2046616c73650014a0264a6660286010602c6ea80044cc010c01530103d87a80005333014300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e91010b48796472614865616456310014a22a6602a921306861735f737428646174756d2e686561645f69642c20686561645f6f75747075742e76616c756529203f2046616c73650014a02a6602a9213465787065637420536f6d6528686561645f6f757470757429203d2073656c662e6f757470757473207c3e206c6973742e68656164001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c92011a65787065637420536f6d6528646174756d29203d20646174756d0016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa001149854cc0112411856616c696461746f722072657475726e65642066616c73650013656153300249011272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e" + "compiledCode": "5902ae010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35333b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c9201054c34333b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34323b333100165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221" }, { "title": "commit.commit.else", "redeemer": { "schema": {} }, - "compiledCode": "590398010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d879800053330133370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c9110b487964726148656164563100480045288a9980a2492e6d7573745f6275726e5f737428646174756d2e686561645f69642c2073656c662e6d696e7429203f2046616c73650014a0264a6660286010602c6ea80044cc010c01530103d87a80005333014300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e91010b48796472614865616456310014a22a6602a921306861735f737428646174756d2e686561645f69642c20686561645f6f75747075742e76616c756529203f2046616c73650014a02a6602a9213465787065637420536f6d6528686561645f6f757470757429203d2073656c662e6f757470757473207c3e206c6973742e68656164001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c92011a65787065637420536f6d6528646174756d29203d20646174756d0016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa001149854cc0112411856616c696461746f722072657475726e65642066616c73650013656153300249011272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e" + "compiledCode": "5902ae010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35333b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c9201054c34333b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34323b333100165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221" }, { "title": "initial.initial.spend", @@ -50,8 +50,8 @@ "$ref": "#/definitions/initial~1Redeemer" } }, - "compiledCode": "590bb701010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088998029802260103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601c6eb0c03cc0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c03cc0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089803180b26104d9050480001533302f303200113232533302d301e0011300830184c104d9050180001533302d30230011300830184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089804980ca6104d905038000303330303754004605c6ea8004c0c40044c018c059300104d90504800033009330063758600e605a6ea809009c8c020c0b8dd5000998041bac302f302c37540424660106eb0c038c0b4dd501200098008009111919191929998190010a9998190018a51001001153330310011301a30184c103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd7011816981700092998138008b1119198008008019129998160008a5eb804c8c94ccc0a8c94ccc0acc084c0b4dd5000899b8f006375c6062605c6ea8004528180718169baa300e302d375400426605e004660080080022660080080026060004605c002460546056605600244646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257489811e581c742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e0001", - "hash": "2a7300406263278718367ac8ca1d4d2e982a7c2eb14d8e21d4f33115" + "compiledCode": "590b7401010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088998029802260103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601c6eb0c03cc0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c03cc0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089803180b26104d9050480001533302f303200113232533302d301e0011300830184c104d9050180001533302d30230011300830184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089804980ca6104d905038000303330303754004605c6ea8004c0c40044c018c059300104d90504800033009330063758600e605a6ea809009c8c020c0b8dd5000998041bac302f302c37540424660106eb0c038c0b4dd501200098008009111919191929998190010a9998190018a51001001153330310011301a30184c103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd7011816981700092998138008b1119198008008019129998160008a5eb804c8c94ccc0a8c94ccc0acc084c0b4dd5000899b8f006375c6062605c6ea8004528180718169baa300e302d375400426605e004660080080022660080080026060004605c002460546056605600244646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a660249201054c38363b3500162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa00114984d958dd70008a998012481054c38323b3500165734ae7155ceaab9e5573eae815d0aba257489811e581cea444d37d226e71eef73ac78d149750da977feb588900135bf9e82210001", + "hash": "7f1c263a9f2d645a00cc74f2b395874a6d40dd97d47786fd6e0969b0" }, { "title": "initial.initial.else", @@ -66,8 +66,8 @@ } } ], - "compiledCode": "590b940101003232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd5008899802980226103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601c6eb0c03cc0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c03cc0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089803180b26104d9050480001533302f303200113232533302d301e0011300830184c104d9050180001533302d30230011300830184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089804980ca6104d905038000303330303754004605c6ea8004c0c40044c018c059300104d90504800033009330063758600e605a6ea809009c8c020c0b8dd5000998041bac302f302c37540424660106eb0c038c0b4dd501200098008009111919191929998190010a9998190018a51001001153330310011301a30184c103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd7011816981700092998138008b1119198008008019129998160008a5eb804c8c94ccc0a8c94ccc0acc084c0b4dd5000899b8f006375c6062605c6ea8004528180718169baa300e302d375400426605e004660080080022660080080026060004605c002460546056605600244646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "f423cf52daf8e525c6fb25a77bdf25a9a18429e7b917d326c92767e5" + "compiledCode": "590b510101003232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd5008899802980226103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601c6eb0c03cc0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c03cc0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089803180b26104d9050480001533302f303200113232533302d301e0011300830184c104d9050180001533302d30230011300830184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089804980ca6104d905038000303330303754004605c6ea8004c0c40044c018c059300104d90504800033009330063758600e605a6ea809009c8c020c0b8dd5000998041bac302f302c37540424660106eb0c038c0b4dd501200098008009111919191929998190010a9998190018a51001001153330310011301a30184c103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd7011816981700092998138008b1119198008008019129998160008a5eb804c8c94ccc0a8c94ccc0acc084c0b4dd5000899b8f006375c6062605c6ea8004528180718169baa300e302d375400426605e004660080080022660080080026060004605c002460546056605600244646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a660249201054c38363b3500162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa00114984d958dd70008a998012481054c38323b3500165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "d5928c0a2dfaaf69c160288aeef9f6302474dfa076c79f767f302df5" } ], "definitions": { diff --git a/hydra-plutus/validators/initial.ak b/hydra-plutus/validators/initial.ak index 8dec4acd30b..61bdc462f60 100644 --- a/hydra-plutus/validators/initial.ak +++ b/hydra-plutus/validators/initial.ak @@ -116,7 +116,6 @@ fn check_commit( fn(ref) { self.inputs |> transaction.find_input(ref) - // |> option.(trace_fail(to_error_code(OutRefNotFound))) }, ) let locked_datums = diff --git a/hydra-tx/test/Hydra/Tx/Contract/Commit.hs b/hydra-tx/test/Hydra/Tx/Contract/Commit.hs index db7d1fc7b7e..cad4d7e674e 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Commit.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Commit.hs @@ -128,7 +128,7 @@ genCommitMutation (tx, _utxo) = pure $ ChangeOutput 0 $ mutateHeadId commitTxOut , SomeMutation (pure $ toErrorCode LockedValueDoesNotMatch) MutateCommitOutputValue . ChangeOutput 0 <$> do mutatedValue <- scale (`div` 2) genValue `suchThat` (/= commitOutputValue) - pure $ commitTxOut{txOutValue = mutatedValue} + pure $ commitTxOut{txOutValue = mutatedValue <> negateValue mutatedValue} , SomeMutation (pure $ toErrorCode LockedValueDoesNotMatch) MutateCommittedValue <$> do mutatedValue <- scale (`div` 2) genValue `suchThat` (/= aCommittedOutputValue) let mutatedOutput = modifyTxOutValue (const mutatedValue) aCommittedTxOut From 57444c604436f0fb731249777f8e21cb34cbab6b Mon Sep 17 00:00:00 2001 From: Franco Testagrossa Date: Mon, 4 Nov 2024 16:51:03 +0100 Subject: [PATCH 10/24] fix I15 when calculating committed_utxo This was caused due to eager evaluation of fail during option.or_else --- hydra-plutus/plutus.json | 16 +++++------ hydra-plutus/validators/initial.ak | 44 ++++++++++++++++++------------ 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/hydra-plutus/plutus.json b/hydra-plutus/plutus.json index e1ad662bf7f..1cde3ff12cb 100644 --- a/hydra-plutus/plutus.json +++ b/hydra-plutus/plutus.json @@ -25,16 +25,16 @@ "$ref": "#/definitions/commit~1Redeemer" } }, - "compiledCode": "5902ae010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35333b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c9201054c34333b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34323b333100165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221" + "compiledCode": "590398010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d879800053330133370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c9110b487964726148656164563100480045288a9980a2492e6d7573745f6275726e5f737428646174756d2e686561645f69642c2073656c662e6d696e7429203f2046616c73650014a0264a6660286010602c6ea80044cc010c01530103d87a80005333014300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e91010b48796472614865616456310014a22a6602a921306861735f737428646174756d2e686561645f69642c20686561645f6f75747075742e76616c756529203f2046616c73650014a02a6602a9213465787065637420536f6d6528686561645f6f757470757429203d2073656c662e6f757470757473207c3e206c6973742e68656164001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c92011a65787065637420536f6d6528646174756d29203d20646174756d0016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa001149854cc0112411856616c696461746f722072657475726e65642066616c73650013656153300249011272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e" }, { "title": "commit.commit.else", "redeemer": { "schema": {} }, - "compiledCode": "5902ae010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35333b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c9201054c34333b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34323b333100165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "ea444d37d226e71eef73ac78d149750da977feb588900135bf9e8221" + "compiledCode": "590398010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d879800053330133370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c9110b487964726148656164563100480045288a9980a2492e6d7573745f6275726e5f737428646174756d2e686561645f69642c2073656c662e6d696e7429203f2046616c73650014a0264a6660286010602c6ea80044cc010c01530103d87a80005333014300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e91010b48796472614865616456310014a22a6602a921306861735f737428646174756d2e686561645f69642c20686561645f6f75747075742e76616c756529203f2046616c73650014a02a6602a9213465787065637420536f6d6528686561645f6f757470757429203d2073656c662e6f757470757473207c3e206c6973742e68656164001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c92011a65787065637420536f6d6528646174756d29203d20646174756d0016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa001149854cc0112411856616c696461746f722072657475726e65642066616c73650013656153300249011272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e" }, { "title": "initial.initial.spend", @@ -50,8 +50,8 @@ "$ref": "#/definitions/initial~1Redeemer" } }, - "compiledCode": "590b7401010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088998029802260103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601c6eb0c03cc0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c03cc0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089803180b26104d9050480001533302f303200113232533302d301e0011300830184c104d9050180001533302d30230011300830184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089804980ca6104d905038000303330303754004605c6ea8004c0c40044c018c059300104d90504800033009330063758600e605a6ea809009c8c020c0b8dd5000998041bac302f302c37540424660106eb0c038c0b4dd501200098008009111919191929998190010a9998190018a51001001153330310011301a30184c103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd7011816981700092998138008b1119198008008019129998160008a5eb804c8c94ccc0a8c94ccc0acc084c0b4dd5000899b8f006375c6062605c6ea8004528180718169baa300e302d375400426605e004660080080022660080080026060004605c002460546056605600244646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a660249201054c38363b3500162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa00114984d958dd70008a998012481054c38323b3500165734ae7155ceaab9e5573eae815d0aba257489811e581cea444d37d226e71eef73ac78d149750da977feb588900135bf9e82210001", - "hash": "7f1c263a9f2d645a00cc74f2b395874a6d40dd97d47786fd6e0969b0" + "compiledCode": "590bde01010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088998029802260103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601a6eb0c038c0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c038c0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089804180b26104d9050480001533302f303200113232533302d301e0011300a30184c104d9050180001533302d30230011300a30184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089805980ca6104d905038000303330303754004605c6ea8004c0c40044c020c059300104d90504800033009330053758600c605a6ea809009c8c01cc0b8dd5000998041bac302f302c3754042464a6660566038605a6ea80044c054cc0c0c0c4c0b8dd5000a5eb804c020c05930104d905078000330083758601c605a6ea8090004c004004888c8c8c8c94ccc0c800854ccc0c800c5288008008a9998188008980d180c26103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd701181698170009119198008008019129998168008a5eb804c8c94ccc0acc94ccc0b0c088c0b8dd5000899b8f006375c6064605e6ea8004528180798171baa300f302e3754004266060004660080080022660080080026062004605e00246056605860580024a6604a0022c44646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257489811e581c742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e0001", + "hash": "204ac27eca6e04f5fa8eda141b441454418a41b904c0be84ad0a93b3" }, { "title": "initial.initial.else", @@ -66,8 +66,8 @@ } } ], - "compiledCode": "590b510101003232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd5008899802980226103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601c6eb0c03cc0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c03cc0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089803180b26104d9050480001533302f303200113232533302d301e0011300830184c104d9050180001533302d30230011300830184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089804980ca6104d905038000303330303754004605c6ea8004c0c40044c018c059300104d90504800033009330063758600e605a6ea809009c8c020c0b8dd5000998041bac302f302c37540424660106eb0c038c0b4dd501200098008009111919191929998190010a9998190018a51001001153330310011301a30184c103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd7011816981700092998138008b1119198008008019129998160008a5eb804c8c94ccc0a8c94ccc0acc084c0b4dd5000899b8f006375c6062605c6ea8004528180718169baa300e302d375400426605e004660080080022660080080026060004605c002460546056605600244646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a660249201054c38363b3500162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa00114984d958dd70008a998012481054c38323b3500165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "d5928c0a2dfaaf69c160288aeef9f6302474dfa076c79f767f302df5" + "compiledCode": "590bbb0101003232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd5008899802980226103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601a6eb0c038c0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c038c0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089804180b26104d9050480001533302f303200113232533302d301e0011300a30184c104d9050180001533302d30230011300a30184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089805980ca6104d905038000303330303754004605c6ea8004c0c40044c020c059300104d90504800033009330053758600c605a6ea809009c8c01cc0b8dd5000998041bac302f302c3754042464a6660566038605a6ea80044c054cc0c0c0c4c0b8dd5000a5eb804c020c05930104d905078000330083758601c605a6ea8090004c004004888c8c8c8c94ccc0c800854ccc0c800c5288008008a9998188008980d180c26103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd701181698170009119198008008019129998168008a5eb804c8c94ccc0acc94ccc0b0c088c0b8dd5000899b8f006375c6064605e6ea8004528180798171baa300f302e3754004266060004660080080022660080080026062004605e00246056605860580024a6604a0022c44646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "e91d895ba65bc13d0a0fbad6e73fd7287207855b740bb5dd4ef3a2cd" } ], "definitions": { diff --git a/hydra-plutus/validators/initial.ak b/hydra-plutus/validators/initial.ak index 61bdc462f60..0afa1124b60 100644 --- a/hydra-plutus/validators/initial.ak +++ b/hydra-plutus/validators/initial.ak @@ -114,8 +114,13 @@ fn check_commit( committed_refs |> list.map( fn(ref) { - self.inputs - |> transaction.find_input(ref) + when + self.inputs + |> transaction.find_input(ref) + is { + Some(i) -> Some(i) + None -> trace_fail(to_error_code(OutRefNotFound)) + } }, ) let locked_datums = @@ -144,14 +149,17 @@ fn check_commit( |> option.map(fn(i) { i.output.value }) |> option.or_else(assets.zero) if commit_datum.commits is locked_commits: List { - check_committed_value(commit_validator, committed_utxo, initial_value, self) - && check_locked_commit( committed_utxo, locked_commits,) - && check_head_id(head_id, commit_datum.head_id) - && must_be_signed_by_participant( head_id, initial_value, self,) - && must_not_mint_or_burn(self.mint) - } else { - trace_false(@"Failed to decode locked_commits") - } + check_committed_value(commit_validator, committed_utxo, initial_value, self) && check_locked_commit( + committed_utxo, + locked_commits, + ) && check_head_id(head_id, commit_datum.head_id) && must_be_signed_by_participant( + head_id, + initial_value, + self, + ) && must_not_mint_or_burn(self.mint) + } else { + trace_false(@"Failed to decode locked_commits") + } } fn check_committed_value( @@ -171,12 +179,14 @@ fn check_committed_value( |> assets.lovelace_of let committed_value = committed_utxo - |> list.map(fn(i) { - when i is { - Some(input) -> input.output.value - None -> assets.zero - } - }) + |> list.map( + fn(i) { + when i is { + Some(input) -> input.output.value + None -> assets.zero + } + }, + ) |> list.reduce(assets.zero, assets.merge) |> assets.lovelace_of trace_if_false( @@ -206,7 +216,7 @@ fn check_locked_commit( ), ) None -> False - } + } } } From 47336217a309aee1f65c2ebdb28839bf0583244c Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Wed, 6 Nov 2024 16:20:04 +0100 Subject: [PATCH 11/24] Aiken optimisations --- hydra-plutus/plutus.json | 26 ++-- hydra-plutus/validators/commit.ak | 25 +--- hydra-plutus/validators/initial.ak | 194 +++++++++++------------------ hydra-plutus/validators/util.ak | 27 ++++ 4 files changed, 113 insertions(+), 159 deletions(-) create mode 100644 hydra-plutus/validators/util.ak diff --git a/hydra-plutus/plutus.json b/hydra-plutus/plutus.json index 1cde3ff12cb..58e8752d410 100644 --- a/hydra-plutus/plutus.json +++ b/hydra-plutus/plutus.json @@ -25,16 +25,16 @@ "$ref": "#/definitions/commit~1Redeemer" } }, - "compiledCode": "590398010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d879800053330133370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c9110b487964726148656164563100480045288a9980a2492e6d7573745f6275726e5f737428646174756d2e686561645f69642c2073656c662e6d696e7429203f2046616c73650014a0264a6660286010602c6ea80044cc010c01530103d87a80005333014300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e91010b48796472614865616456310014a22a6602a921306861735f737428646174756d2e686561645f69642c20686561645f6f75747075742e76616c756529203f2046616c73650014a02a6602a9213465787065637420536f6d6528686561645f6f757470757429203d2073656c662e6f757470757473207c3e206c6973742e68656164001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c92011a65787065637420536f6d6528646174756d29203d20646174756d0016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa001149854cc0112411856616c696461746f722072657475726e65642066616c73650013656153300249011272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e" + "compiledCode": "5902ad010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35323b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c0085894ccc040c010c048dd50008a4903433031001491034330320023015301630160013013301037540042a6601c9201054c34323b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34313b333100165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "6ff4aaf9cbdd1742b06a404b773281cc732313379d74972c4d445d87" }, { "title": "commit.commit.else", "redeemer": { "schema": {} }, - "compiledCode": "590398010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d879800053330133370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c9110b487964726148656164563100480045288a9980a2492e6d7573745f6275726e5f737428646174756d2e686561645f69642c2073656c662e6d696e7429203f2046616c73650014a0264a6660286010602c6ea80044cc010c01530103d87a80005333014300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e91010b48796472614865616456310014a22a6602a921306861735f737428646174756d2e686561645f69642c20686561645f6f75747075742e76616c756529203f2046616c73650014a02a6602a9213465787065637420536f6d6528686561645f6f757470757429203d2073656c662e6f757470757473207c3e206c6973742e68656164001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c00852812999808180218091baa001149103433031001491034330320023015301630160013013301037540042a6601c92011a65787065637420536f6d6528646174756d29203d20646174756d0016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa001149854cc0112411856616c696461746f722072657475726e65642066616c73650013656153300249011272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e" + "compiledCode": "5902ad010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35323b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c0085894ccc040c010c048dd50008a4903433031001491034330320023015301630160013013301037540042a6601c9201054c34323b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34313b333100165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "6ff4aaf9cbdd1742b06a404b773281cc732313379d74972c4d445d87" }, { "title": "initial.initial.spend", @@ -50,24 +50,16 @@ "$ref": "#/definitions/initial~1Redeemer" } }, - "compiledCode": "590bde01010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd50088998029802260103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601a6eb0c038c0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c038c0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089804180b26104d9050480001533302f303200113232533302d301e0011300a30184c104d9050180001533302d30230011300a30184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089805980ca6104d905038000303330303754004605c6ea8004c0c40044c020c059300104d90504800033009330053758600c605a6ea809009c8c01cc0b8dd5000998041bac302f302c3754042464a6660566038605a6ea80044c054cc0c0c0c4c0b8dd5000a5eb804c020c05930104d905078000330083758601c605a6ea8090004c004004888c8c8c8c94ccc0c800854ccc0c800c5288008008a9998188008980d180c26103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd701181698170009119198008008019129998168008a5eb804c8c94ccc0acc94ccc0b0c088c0b8dd5000899b8f006375c6064605e6ea8004528180798171baa300f302e3754004266060004660080080022660080080026062004605e00246056605860580024a6604a0022c44646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257489811e581c742f6d8720643515fd12935af47baaf2452b076f4c8d84d17387bb6e0001", - "hash": "204ac27eca6e04f5fa8eda141b441454418a41b904c0be84ad0a93b3" + "compiledCode": "590a6501010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c94ccc060c024c068dd5008099802248103493031003370e6660026eacc018c06cdd5009003a4410b487964726148656164563100480044cc8c8c8c8c8c8c8c8c8c8c8c8c8c8c88c8c8c8c8c94cccccc0d40040080084c8cc080004894ccc0d00084c8c94ccc0c8cc07924103493133003371e0426eb8c058c0d4dd50040a999819191919299981a981300089811249034930350015333035302b001132533303a0011302349103493036001533303a303d001133022491034930320032323300100100622533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375c60780022604692010349303600323300100100322533303b00114bd700991919299981d18181bad303d00313303f37520026600a00a00426600a00a0046eb8c0ec008c0fc008c0f40044c08924010349303600301a001330183301d0020224bd6f7b6301bac303830393039303930393039303930393039303537540582a6660646603c92103493134003375e6040606a6ea80b1300101a000153330323301e49103493033003371266e00c048004c048ccc050cc04c00894ccc0ccc090c0d4dd500089bab3010303637546020606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a60246660286602601446eacc040c0d8dd5000a5eb7bdb1800544cc0300080145280a5014a02940cc058c94ccc0c8c0a0c0d0dd50008a60103d87a80001301d33037300f30353754601e606a6ea8c0e0c0d4dd5000a5eb80cc034dd6180c981a1baa02b0254bd6f7b6301980780491929998191811981a1baa0011301d3303730383035375400297ae013010490103493135003300d3758603260686ea80ac0044c94cccccc0e400454ccc0c4c088c0ccdd5000899299981b000803899299999981d800899299981c000804899299999981e800805005005005099299981d181e801899981300209803981e8040058059bae001303a001303a00200800800800830380013034375400200c00c00c00c00c606c0046eb0004008008c024c0bcdd50010980c2491f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d69747300533302e0011300849103493132001533302e303100113232533302c301d0011300a49103493039001533302c30220011300a490103493130001323253333330360021533302e301f30303754004264a66606600200426464a66606a00200826464a66606e00200c264a66666607800200e00e00e00e264a666072607800620120106eb8004c0e4004c0e4008c0dc004c0dc008c0d4004c0c4dd500100080080080080089805a4903493131003032302f3754004605a6ea8004c0c00044c02124010349313200330080012300e302d375400264660020026eb0c034c0b0dd50119129998170008a5eb804c8c94ccc0b0c94ccc0b4c08cc0bcdd5000899b8f02a375c606660606ea8004528180a18179baa3014302f37540042660620046600800800226600800800260640046060002600200244464646464a6660600042a666060006294400400454ccc0bc0044c06124103493037001533302f0021301849010349303800132323232533302f30203031375400826466038921034930340053330303371e6eccc034c0ccdd50009bae300d303337540062a66606066ebcc060c0ccdd5000980c18199baa003133300b00b00400214a02940c0d4c0c8dd50020a503035005303300430330023031001375860600046eb0c0bcc0c0004cc0b4dd3801198169ba70014bd701119198008008019129998160008a6103d87a800013232533302a3375e6024605a6ea80080144c054cc0bc0092f5c02660080080026060004605c0024605460560024a660480022c44646600200200644a666052002297ae013302a3003302b00133002002302c001233300a00148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301733031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130233303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd598130009814001118119812181200091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c0045200013370090011980100118110009180f8009bac301e301b375402044464a6660366022603a6ea8004520001375a6042603c6ea8004c94ccc06cc044c074dd50008a6103d87a80001323300100137566044603e6ea8008894ccc084004530103d87a80001323232325333021337220100042a66604266e3c0200084c030cc098dd4000a5eb80530103d87a8000133006006003375a60460066eb8c084008c094008c08c004cc01000c00888c8cc00400400c894ccc078004530103d87a8000132323232533301e3372200e0042a66603c66e3c01c0084c024cc08cdd3000a5eb80530103d87a8000133006006003375660400066eb8c078008c088008c080004dd2a400044a66602c00229444c00c00894cc054004588c064c068c068c068c068004dd7180b980a1baa0041533012491054c36323b3500162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa00114984d958dd70008a998012481054c35383b3500165734ae7155ceaab9e5573eae815d0aba257489811e581c3e5a776bcee213e3dfd15806952a10ac5590e3e97d09d62eb99266b20001", + "hash": "00a6ddbc130ab92f5b7cb8d1ccd8d79eca5bfe25f6843c07b62841f0" }, { "title": "initial.initial.else", "redeemer": { "schema": {} }, - "parameters": [ - { - "title": "commit_validator", - "schema": { - "$ref": "#/definitions/ScriptHash" - } - } - ], - "compiledCode": "590bbb0101003232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c8c94ccc064c028c06cdd5008899802980226103d87980003370e6660026eacc01cc070dd500980424410b487964726148656164563100480044c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94cccccc0dc0040080084c8cc088004894ccc0d800854ccc0c8cc078c07530103d87b80003371266e00c048018c048ccc050cc04c02494ccc0ccc090c0d4dd500089bab300d30363754601a606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a6024666028660266601a6eb0c038c0d4dd501601791bab300d3036375400297adef6c60015153330323300a009003153330323301e301d4c104d9050580003371e0426eb8c038c0d4dd50038a9998191919299981a181280089810980fa6103d87d800015333034302a00113253330390011302230204c103d87e800015333039303c00113302130204c103d87a80003322323300100100322533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375860766078607860786078607860786078607860706ea80bcdd7181d800898111810260103d87e8000323300100100322533303a00114bd700991919299981c98179bad303c00313303e37520026600a00a00426600a00a0046eb8c0e8008c0f8008c0f00044c084c07d300103d87e80003019001330173301b0060214bd6f7b63009980f180ea6104d9050680003375e6040606a6ea80b1300101a00014a029405280a50132533333303b00115333033302430353754002264a66607000200e264a66666607a002264a666074002012264a66666607e002014014014014264a666078607e00626660500082600e607e0100160166eb8004c0f0004c0f0008020020020020c0e8004c0d8dd5000803003003003003181c0011bac0010020023008303137540062603492011f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d697473003301132533302d3023302f37540022980103d87a80001301733032300730303754600e60606ea8c0ccc0c0dd5000a5eb80cc028dd6180818179baa0260204bd6f7b630299981780089804180b26104d9050480001533302f303200113232533302d301e0011300a30184c104d9050180001533302d30230011300a30184c0104d9050280001323253333330370021533302f302030313754004264a66606800200426464a66606c00200826464a66607000200c264a66666607a00200e00e00e00e264a666074607a00620120106eb8004c0e8004c0e8008c0e0004c0e0008c0d8004c0c8dd500100080080080080089805980ca6104d905038000303330303754004605c6ea8004c0c40044c020c059300104d90504800033009330053758600c605a6ea809009c8c01cc0b8dd5000998041bac302f302c3754042464a6660566038605a6ea80044c054cc0c0c0c4c0b8dd5000a5eb804c020c05930104d905078000330083758601c605a6ea8090004c004004888c8c8c8c94ccc0c800854ccc0c800c5288008008a9998188008980d180c26103d87f8000153330310021301a30184c0104d90500800013232323253330313022303337540082646603c603a98103d87c800053330323371e6eccc030c0d4dd50009bae300c303537540062a66606466ebcc058c0d4dd5000980b181a9baa003133300b00b00400214a02940c0dcc0d0dd50020a503037005303500430350023033001375860640046eb0c0c4c0c8004cc0bcdd3801198179ba70014bd701181698170009119198008008019129998168008a5eb804c8c94ccc0acc94ccc0b0c088c0b8dd5000899b8f006375c6064605e6ea8004528180798171baa300f302e3754004266060004660080080022660080080026062004605e00246056605860580024a6604a0022c44646600200200644a6660540022980103d87a80001323253330283375e601860566ea80080144c048cc0b40092f5c0266008008002605c004605800244646600200200644a666052002297ae013302a3003302b00133002002302c001233300900148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301633031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130223303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd5981300098140011181180091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c00452000133700900119801001181100091119299980e1809180f1baa0011480004dd69811180f9baa00132533301c3012301e3754002298103d87a8000132330010013756604660406ea8008894ccc088004530103d87a80001323232325333022337220100042a66604466e3c0200084c030cc09cdd4000a5eb80530103d87a8000133006006003375a60480066eb8c088008c098008c090004cc01000c00888c8cc00400400c894ccc07c004530103d87a8000132323232533301f3372200e0042a66603e66e3c01c0084c024cc090dd3000a5eb80530103d87a8000133006006003375660420066eb8c07c008c08c008c084004dd2a4000464a66602e601000229201034930310015333017300d001149010349303200153330173370e90020008a490349303300153330173370e90030008a490349303400153330173370e90040008a490349303500153330173370e90050008a490349303600153330173370e90060008a490349303700153330173370e90070008a490349303800153330173370e90080008a490349303900153330173370e90090008a490349313000153330173370e900a0008a490349313100153330173370e900b0008a490349313200153330173370e900c0008a490349313300153330173370e900d0008a490349313400149103493135003018375400244a66602c00229444c00c00894cc0540045281180c980d180d180d180d0009bae3017301437540082a6602492011c65787065637420536f6d6528686561645f696429203d20646174756d00162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa001149854cc0192411856616c696461746f722072657475726e65642066616c73650013656375c0022a660049211272656465656d65723a2052656465656d657200165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "e91d895ba65bc13d0a0fbad6e73fd7287207855b740bb5dd4ef3a2cd" + "compiledCode": "590a6501010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c94ccc060c024c068dd5008099802248103493031003370e6660026eacc018c06cdd5009003a4410b487964726148656164563100480044cc8c8c8c8c8c8c8c8c8c8c8c8c8c8c88c8c8c8c8c94cccccc0d40040080084c8cc080004894ccc0d00084c8c94ccc0c8cc07924103493133003371e0426eb8c058c0d4dd50040a999819191919299981a981300089811249034930350015333035302b001132533303a0011302349103493036001533303a303d001133022491034930320032323300100100622533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375c60780022604692010349303600323300100100322533303b00114bd700991919299981d18181bad303d00313303f37520026600a00a00426600a00a0046eb8c0ec008c0fc008c0f40044c08924010349303600301a001330183301d0020224bd6f7b6301bac303830393039303930393039303930393039303537540582a6660646603c92103493134003375e6040606a6ea80b1300101a000153330323301e49103493033003371266e00c048004c048ccc050cc04c00894ccc0ccc090c0d4dd500089bab3010303637546020606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a60246660286602601446eacc040c0d8dd5000a5eb7bdb1800544cc0300080145280a5014a02940cc058c94ccc0c8c0a0c0d0dd50008a60103d87a80001301d33037300f30353754601e606a6ea8c0e0c0d4dd5000a5eb80cc034dd6180c981a1baa02b0254bd6f7b6301980780491929998191811981a1baa0011301d3303730383035375400297ae013010490103493135003300d3758603260686ea80ac0044c94cccccc0e400454ccc0c4c088c0ccdd5000899299981b000803899299999981d800899299981c000804899299999981e800805005005005099299981d181e801899981300209803981e8040058059bae001303a001303a00200800800800830380013034375400200c00c00c00c00c606c0046eb0004008008c024c0bcdd50010980c2491f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d69747300533302e0011300849103493132001533302e303100113232533302c301d0011300a49103493039001533302c30220011300a490103493130001323253333330360021533302e301f30303754004264a66606600200426464a66606a00200826464a66606e00200c264a66666607800200e00e00e00e264a666072607800620120106eb8004c0e4004c0e4008c0dc004c0dc008c0d4004c0c4dd500100080080080080089805a4903493131003032302f3754004605a6ea8004c0c00044c02124010349313200330080012300e302d375400264660020026eb0c034c0b0dd50119129998170008a5eb804c8c94ccc0b0c94ccc0b4c08cc0bcdd5000899b8f02a375c606660606ea8004528180a18179baa3014302f37540042660620046600800800226600800800260640046060002600200244464646464a6660600042a666060006294400400454ccc0bc0044c06124103493037001533302f0021301849010349303800132323232533302f30203031375400826466038921034930340053330303371e6eccc034c0ccdd50009bae300d303337540062a66606066ebcc060c0ccdd5000980c18199baa003133300b00b00400214a02940c0d4c0c8dd50020a503035005303300430330023031001375860600046eb0c0bcc0c0004cc0b4dd3801198169ba70014bd701119198008008019129998160008a6103d87a800013232533302a3375e6024605a6ea80080144c054cc0bc0092f5c02660080080026060004605c0024605460560024a660480022c44646600200200644a666052002297ae013302a3003302b00133002002302c001233300a00148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301733031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130233303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd598130009814001118119812181200091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c0045200013370090011980100118110009180f8009bac301e301b375402044464a6660366022603a6ea8004520001375a6042603c6ea8004c94ccc06cc044c074dd50008a6103d87a80001323300100137566044603e6ea8008894ccc084004530103d87a80001323232325333021337220100042a66604266e3c0200084c030cc098dd4000a5eb80530103d87a8000133006006003375a60460066eb8c084008c094008c08c004cc01000c00888c8cc00400400c894ccc078004530103d87a8000132323232533301e3372200e0042a66603c66e3c01c0084c024cc08cdd3000a5eb80530103d87a8000133006006003375660400066eb8c078008c088008c080004dd2a400044a66602c00229444c00c00894cc054004588c064c068c068c068c068004dd7180b980a1baa0041533012491054c36323b3500162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa00114984d958dd70008a998012481054c35383b3500165734ae7155ceaab9e5573eae815d0aba257489811e581c3e5a776bcee213e3dfd15806952a10ac5590e3e97d09d62eb99266b20001", + "hash": "00a6ddbc130ab92f5b7cb8d1ccd8d79eca5bfe25f6843c07b62841f0" } ], "definitions": { @@ -185,4 +177,4 @@ ] } } -} \ No newline at end of file +} diff --git a/hydra-plutus/validators/commit.ak b/hydra-plutus/validators/commit.ak index 89678b8c909..a8a6abd1912 100644 --- a/hydra-plutus/validators/commit.ak +++ b/hydra-plutus/validators/commit.ak @@ -1,6 +1,7 @@ use aiken/collection/list use cardano/assets.{PolicyId, Value} use cardano/transaction.{OutputReference, Transaction} +use util.{trace_if_false, must_burn_st, hydra_head_v1} // TODO: Party is not used on-chain but is needed off-chain while it's still // based on mock crypto. When we move to real crypto we could simply use @@ -16,8 +17,6 @@ pub type Redeemer { ViaAbort } -const hydra_head_v1: ByteArray = "HydraHeadV1" - type CommitError { STNotBurnedError STIsMissingInTheOutput @@ -45,13 +44,13 @@ validator commit { // NOTE: The reimbursement of the committed output 'commit' is // delegated to the 'head' script who has more information to do it. ViaAbort -> - traceIfFalse( + trace_if_false( toErrorCode(STNotBurnedError), must_burn_st(datum.head_id, self.mint)? ) ViaCollectCom -> { expect Some(head_output) = self.outputs |> list.head - traceIfFalse( + trace_if_false( toErrorCode(STIsMissingInTheOutput), has_st(datum.head_id, head_output.value)?, ) @@ -64,21 +63,3 @@ fn has_st(head_id: PolicyId, value: Value) -> Bool { assets.quantity_of(value, head_id, hydra_head_v1) == 1 } -fn must_burn_st(head_id: PolicyId, mint: Value) -> Bool { - let quantity = - mint - |> assets.quantity_of(head_id, hydra_head_v1) - - quantity == -1 -} - -// Helpers - -fn traceIfFalse(traceLog: String, predicate: Bool) -> Bool { - if predicate { - True - } else { - trace traceLog - False - } -} diff --git a/hydra-plutus/validators/initial.ak b/hydra-plutus/validators/initial.ak index 0afa1124b60..74c8ebf1d85 100644 --- a/hydra-plutus/validators/initial.ak +++ b/hydra-plutus/validators/initial.ak @@ -2,13 +2,14 @@ use aiken/builtin use aiken/collection/dict use aiken/collection/list use aiken/collection/pairs -use aiken/crypto.{ScriptHash} +use aiken/crypto.{ScriptHash, VerificationKeyHash} use aiken/option use cardano/assets.{PolicyId, Value} use cardano/transaction.{ - DatumHash, InlineDatum, Input, NoDatum, OutputReference, Transaction, + DatumHash, InlineDatum, Input, Output, NoDatum, OutputReference, Transaction, } use commit +use util.{trace_if_false, trace_fail, must_burn_st} pub type Datum = PolicyId @@ -23,47 +24,23 @@ pub type Redeemer { ViaCommit { committed_refs: List } } -// ^ Points to the committed Utxo. +// Mapping for the error types we also have in Haskell land +// STNotBurned -> @"I01" +// MissingOrInvalidCommitAuthor -> @"I02" +// LockedValueDoesNotMatch -> @"I03" +// MismatchCommittedTxOutInDatum -> @"I04" +// CouldNotFindTheCorrectCurrencySymbolInTokens -> @"I05" +// MultipleHeadTokensOrMoreThan1PTsFound -> @"I06" +// MissingCommittedTxOutInOutputDatum -> @"I07" +// CommittedTxOutMissingInOutputDatum -> @"I08" +// MissingDatum -> @"I09" +// UnexpectedNonInlineDatum -> @"I10" +// ExpectedCommitDatumTypeGotSomethingElse -> @"I11" +// ExpectedSingleCommitOutput -> @"I12" +// WrongHeadIdInCommitDatum -> @"I13" +// MintingOrBurningIsForbidden -> @"I14" +// OutRefNotFound -> @"I15" -const hydra_head_v1: ByteArray = "HydraHeadV1" - -type InitialError { - STNotBurned - MissingOrInvalidCommitAuthor - LockedValueDoesNotMatch - MismatchCommittedTxOutInDatum - CouldNotFindTheCorrectCurrencySymbolInTokens - MultipleHeadTokensOrMoreThan1PTsFound - MissingCommittedTxOutInOutputDatum - CommittedTxOutMissingInOutputDatum - MissingDatum - UnexpectedNonInlineDatum - ExpectedCommitDatumTypeGotSomethingElse - ExpectedSingleCommitOutput - WrongHeadIdInCommitDatum - MintingOrBurningIsForbidden - OutRefNotFound -} - -fn to_error_code(err: InitialError) -> String { - when err is { - STNotBurned -> @"I01" - MissingOrInvalidCommitAuthor -> @"I02" - LockedValueDoesNotMatch -> @"I03" - MismatchCommittedTxOutInDatum -> @"I04" - CouldNotFindTheCorrectCurrencySymbolInTokens -> @"I05" - MultipleHeadTokensOrMoreThan1PTsFound -> @"I06" - MissingCommittedTxOutInOutputDatum -> @"I07" - CommittedTxOutMissingInOutputDatum -> @"I08" - MissingDatum -> @"I09" - UnexpectedNonInlineDatum -> @"I10" - ExpectedCommitDatumTypeGotSomethingElse -> @"I11" - ExpectedSingleCommitOutput -> @"I12" - WrongHeadIdInCommitDatum -> @"I13" - MintingOrBurningIsForbidden -> @"I14" - OutRefNotFound -> @"I15" - } -} // | The v_initial validator verifies that: // @@ -85,7 +62,11 @@ validator initial(commit_validator: ScriptHash) { ) { expect Some(head_id) = datum when redeemer is { - ViaAbort -> must_burn_st(head_id, self.mint) + ViaAbort -> + trace_if_false( + @"I01" , + must_burn_st(head_id, self.mint)? + ) ViaCommit(committed_refs) -> check_commit(head_id, commit_validator, committed_refs, utxo, self) } @@ -96,13 +77,6 @@ validator initial(commit_validator: ScriptHash) { } } -fn must_burn_st(head_id: PolicyId, mint: Value) -> Bool { - let quantity = - mint - |> assets.quantity_of(head_id, hydra_head_v1) - trace_if_false(to_error_code(STNotBurned), quantity == -1) -} - fn check_commit( head_id: PolicyId, commit_validator: ScriptHash, @@ -110,70 +84,68 @@ fn check_commit( utxo: OutputReference, self: Transaction, ) -> Bool { - let committed_utxo = - committed_refs - |> list.map( - fn(ref) { - when - self.inputs - |> transaction.find_input(ref) - is { - Some(i) -> Some(i) - None -> trace_fail(to_error_code(OutRefNotFound)) - } - }, - ) - let locked_datums = - self.outputs - |> transaction.find_script_outputs(commit_validator) - |> list.map(fn(out) { out.datum }) + let tx_outputs = get_script_outputs(commit_validator, self) + let locked_datums = tx_outputs |> list.map(fn(out) { out.datum }) let commit_datum = when locked_datums is { [dat] -> when dat is { - NoDatum -> trace_fail(to_error_code(MissingDatum)) + NoDatum -> trace_fail(@"I09") DatumHash(_dataHash) -> - trace_fail(to_error_code(UnexpectedNonInlineDatum)) + trace_fail(@"I10") InlineDatum(data) -> if data is commit.Datum { data } else { - trace_fail(to_error_code(ExpectedCommitDatumTypeGotSomethingElse)) + trace_fail(@"I11") } } - _otherwise -> trace_fail(to_error_code(ExpectedSingleCommitOutput)) + _otherwise -> trace_fail(@"I12") } - let initial_value = - self.inputs - |> transaction.find_input(utxo) - |> option.map(fn(i) { i.output.value }) - |> option.or_else(assets.zero) if commit_datum.commits is locked_commits: List { - check_committed_value(commit_validator, committed_utxo, initial_value, self) && check_locked_commit( - committed_utxo, - locked_commits, - ) && check_head_id(head_id, commit_datum.head_id) && must_be_signed_by_participant( - head_id, - initial_value, - self, - ) && must_not_mint_or_burn(self.mint) + + let committed_utxo = + committed_refs + |> list.map( + fn(ref) { + when + self.inputs + |> transaction.find_input(ref) + is { + Some(i) -> Some(i) + None -> trace_fail(@"I15") + } + }, + ) + let initial_value = + self.inputs + |> transaction.find_input(utxo) + |> option.map(fn(i) { i.output.value }) + |> option.or_else(assets.zero) + check_head_id(head_id, commit_datum.head_id) + && must_be_signed_by_participant( head_id, initial_value, self.extra_signatories) + && must_not_mint_or_burn(self.mint) + && check_committed_value(committed_utxo, initial_value, tx_outputs) + && check_locked_commit(committed_utxo, locked_commits) } else { - trace_false(@"Failed to decode locked_commits") + trace_fail(@"Failed to decode locked_commits") } } +fn get_script_outputs (commit_validator: ScriptHash, self : Transaction){ + self.outputs + |> transaction.find_script_outputs(commit_validator) +} + fn check_committed_value( - commit_validator: ScriptHash, committed_utxo: List>, initial_value: Value, - self: Transaction, + commit_outputs: List, ) -> Bool { let initial_lovelace = initial_value |> assets.lovelace_of - let locked_value = - self.outputs - |> transaction.find_script_outputs(commit_validator) + let locked_value = commit_outputs |> list.map(fn(output) { output.value }) |> list.reduce(assets.zero, assets.merge) |> assets.lovelace_of @@ -190,7 +162,7 @@ fn check_committed_value( |> list.reduce(assets.zero, assets.merge) |> assets.lovelace_of trace_if_false( - to_error_code(LockedValueDoesNotMatch), + @"I03", // NOTE: Ada in initialValue is usually lower than in the locked ADA due // to higher deposit needed for commit output than for initial output locked_value >= initial_lovelace + committed_value, @@ -203,13 +175,13 @@ fn check_locked_commit( ) -> Bool { when (committed_utxo, locked_commits) is { ([], []) -> True - ([], _) -> trace_false(to_error_code(MissingCommittedTxOutInOutputDatum)) - (_, []) -> trace_false(to_error_code(CommittedTxOutMissingInOutputDatum)) + ([], _) -> trace_fail(@"I07") + (_, []) -> trace_fail(@"I08") ([i, ..rest_committed], [c, ..rest_commits]) -> when i is { Some(input) -> trace_if_false( - to_error_code(MismatchCommittedTxOutInDatum), + @"I04", builtin.serialise_data(input.output) == c.pre_serialized_output && input.output_reference == c.input && check_locked_commit( rest_committed, rest_commits, @@ -222,7 +194,7 @@ fn check_locked_commit( fn check_head_id(self_head_id: PolicyId, committed_head_id: PolicyId) -> Bool { trace_if_false( - to_error_code(WrongHeadIdInCommitDatum), + @"I13", self_head_id == committed_head_id, ) } @@ -230,14 +202,14 @@ fn check_head_id(self_head_id: PolicyId, committed_head_id: PolicyId) -> Bool { fn must_be_signed_by_participant( head_id: PolicyId, initial_value: Value, - self: Transaction, + signatories: List, ) -> Bool { let token_map = initial_value |> assets.tokens(head_id) when dict.size(token_map) is { 0 -> - trace_false(to_error_code(CouldNotFindTheCorrectCurrencySymbolInTokens)) + trace_fail(@"I05") 1 -> { let participation_tokens = token_map @@ -246,41 +218,23 @@ fn must_be_signed_by_participant( when participation_tokens is { [our_participation_token_name] -> trace_if_false( - to_error_code(MissingOrInvalidCommitAuthor), - self.extra_signatories + @"I02", + signatories |> list.has(our_participation_token_name), ) _more_than_one_token -> - trace_false(to_error_code(MultipleHeadTokensOrMoreThan1PTsFound)) + trace_fail(@"I06") } } _more_than_one_token -> - trace_false(to_error_code(MultipleHeadTokensOrMoreThan1PTsFound)) + trace_fail(@"I06") } } fn must_not_mint_or_burn(mint: Value) -> Bool { trace_if_false( - to_error_code(MintingOrBurningIsForbidden), + @"I14" , assets.is_zero(mint), ) } -// Helpers -fn trace_false(trace_log: String) -> Bool { - trace trace_log - False -} - -fn trace_if_false(trace_log: String, predicate: Bool) -> Bool { - if predicate { - True - } else { - trace_false(trace_log) - } -} - -fn trace_fail(trace_log: String) -> a { - trace trace_log - fail -} diff --git a/hydra-plutus/validators/util.ak b/hydra-plutus/validators/util.ak new file mode 100644 index 00000000000..e7b3a6a0959 --- /dev/null +++ b/hydra-plutus/validators/util.ak @@ -0,0 +1,27 @@ + +use cardano/assets.{PolicyId, Value} + +pub const hydra_head_v1: ByteArray = "HydraHeadV1" + +pub fn must_burn_st(head_id: PolicyId, mint: Value) -> Bool { + let quantity = + mint + |> assets.quantity_of(head_id, hydra_head_v1) + + quantity == -1 +} + +// Helpers + +pub fn trace_if_false(trace_log: String, predicate: Bool) -> Bool { + if predicate { + True + } else { + trace_fail(trace_log) + } +} + +pub fn trace_fail(trace_log: String) -> a { + trace trace_log + fail +} From 441a0d5c1c60d1cf9d506346fedfab474b2d95b4 Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Wed, 6 Nov 2024 21:42:37 +0100 Subject: [PATCH 12/24] Fix golden scripts test with blueprint apply --- hydra-plutus/hydra-plutus.cabal | 1 + hydra-plutus/plutus.json | 10 ++-- hydra-plutus/scripts/mHead.plutus | 4 +- hydra-plutus/scripts/vDeposit.plutus | 2 +- hydra-plutus/scripts/vHead.plutus | 2 +- hydra-plutus/scripts/vInitial.plutus | 5 -- hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs | 13 +++-- hydra-plutus/validators/commit.ak | 18 ++++-- hydra-plutus/validators/initial.ak | 58 ++++++++------------ hydra-plutus/validators/util.ak | 1 - 10 files changed, 55 insertions(+), 59 deletions(-) delete mode 100644 hydra-plutus/scripts/vInitial.plutus diff --git a/hydra-plutus/hydra-plutus.cabal b/hydra-plutus/hydra-plutus.cabal index a0a26bc92cd..0a7a15a3fc1 100644 --- a/hydra-plutus/hydra-plutus.cabal +++ b/hydra-plutus/hydra-plutus.cabal @@ -105,6 +105,7 @@ test-suite tests , hydra-plutus , hydra-prelude , hydra-test-utils + , io-streams , lens , lens-aeson , plutus-ledger-api diff --git a/hydra-plutus/plutus.json b/hydra-plutus/plutus.json index 58e8752d410..fc8f0118f4f 100644 --- a/hydra-plutus/plutus.json +++ b/hydra-plutus/plutus.json @@ -25,16 +25,16 @@ "$ref": "#/definitions/commit~1Redeemer" } }, - "compiledCode": "5902ad010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35323b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c0085894ccc040c010c048dd50008a4903433031001491034330320023015301630160013013301037540042a6601c9201054c34323b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34313b333100165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "6ff4aaf9cbdd1742b06a404b773281cc732313379d74972c4d445d87" + "compiledCode": "5902ac010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35373b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c0085894ccc040c010c048dd50008a4903433031001491034330320023015301630160013013301037540042a6601c9201054c34373b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401054c34333b3500165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "3e5a776bcee213e3dfd15806952a10ac5590e3e97d09d62eb99266b2" }, { "title": "commit.commit.else", "redeemer": { "schema": {} }, - "compiledCode": "5902ad010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35323b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c0085894ccc040c010c048dd50008a4903433031001491034330320023015301630160013013301037540042a6601c9201054c34323b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401064c34313b333100165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "6ff4aaf9cbdd1742b06a404b773281cc732313379d74972c4d445d87" + "compiledCode": "5902ac010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35373b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c0085894ccc040c010c048dd50008a4903433031001491034330320023015301630160013013301037540042a6601c9201054c34373b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401054c34333b3500165734ae7155ceaab9e5573eae815d0aba257481", + "hash": "3e5a776bcee213e3dfd15806952a10ac5590e3e97d09d62eb99266b2" }, { "title": "initial.initial.spend", @@ -177,4 +177,4 @@ ] } } -} +} \ No newline at end of file diff --git a/hydra-plutus/scripts/mHead.plutus b/hydra-plutus/scripts/mHead.plutus index 948ac4855f1..afecd2605dd 100644 --- a/hydra-plutus/scripts/mHead.plutus +++ b/hydra-plutus/scripts/mHead.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV3", - "description": "hydra-mHead-0.19.0-289-gad254dc10", - "cborHex": "592b2d592b2a0101003332323232323232323232323232323232323232322222932323232553335734002226464646464646500132323232553335734002226464646464646464646464646464646466666666666646664664664444444444444445001010807c03a01b00c805c02a013008803c01a00b004801c00a00230013574202a60026ae8404cc0b08c8c8c8c954ccd5cd00088c004c084d5d08014c018d5d09aba200208981ea4903505431003370e90000011aab9e00235573a0026ea8004cc0b0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981a1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304849103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c109240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089822248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303075c6ae84d5d10008d5d10009aba200211303c490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0a805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089820248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304049103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089820a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae6800446008226084920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303a49103505431003370e90000011aab9e00235573a0026ea8d5d0805198153ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c10124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d001375400204e6ae84020cc00409cd5d08039bae3574200c66602c0306602c052464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022607a92103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605402a6ae84010c008d5d080198011aba135744006602aeb8c099d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422604c92103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980c80c1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302b49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a00111328049980f00f9aba10039aba10019980f3ae357426ae880046ae8800844c954ccd5cd00088c004cc07807cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606092103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093301f75c6ae84d5d1002044c954ccd5cd00088c01ccc080084d5d0802844c954ccd5cd0008899194034cc08c090d5d08044cc094050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0d5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981080100086ae88004d5d100308992a999ab9a00111802998110119aba1007991919192a999ab9a001113302675c6ae8400844c0d1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a00111801089818a4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c099240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009811911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301675a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc05dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089817a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089817248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a00111802089819a48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c09524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c08d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302149103505431003370e90000011aab9e00235573a0026ea8004d5d100108980da48103505431003370e90000011aab9e00235573a0026ea8006445200322500c92c992c991919192a999ab9a0011180108992a999ab9a00111800089810a4903505431003370e900100199b8748000008d55cf0011aab9d0013754009133014491034d303600593330122232333573400300080119b8f002001301300130159001911001a426603c44b200318004886400a44b264666ae6800600100233710002900044c01800e30020003180122b266028921034d303100323301e22590018c00a442b3201922900491192a999ab9a0011132333573400300080119b870040021180119b8f004002230008980200080026603a44b2003180048860072005220024c01000499001911001a44444444444444440208a999191919149980ca49034d30320032333573400300080119b8732593330182232333573400300080119b8f0020015006301b9007911001a4260040031480006466446446004002604a44b20031003910c801488cc020004c01800c90019100124006440028009119b80002001a4000337012b32a0072200245407642b26666660420024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0cc00a42b26666aae7c008a004464650010021aba20043574200700090ac99999981b00091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0ec00a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302c001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981880148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac981f800c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0b800488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26066005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c11c00a42b26666aae7c008a00450018009aba10039aba20032001219001912c982580148564cccd55cf80114008a0030013574200735744006400243200322593302b04f00290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981400091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999813800914008a004500228008008a004464466666605000245002280100114008a0046050446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302400190c00400518010cdc3a40000045002280114008a005215900190a80fc5407a44443001002800ccc0204488c88c008004c0a889640062007221330060023004001001a42a03e89811249034d30390048540792220012400513232593301b4901034d3033003302422590018c00a4432005223255333573400222603e00422600e00866e3c008020900191000a264b2b266038921034d30340032333573400300080119b8795990029100122a04121593333330240012232532323232325333573400c22b26666aae7c01ca00450018009aba10089aba20082001219001912c980280148564cccd55cf80114008a0030013574200735744006400243200322593300b00c00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e0045002232328008010d5d10021aba100380048564cccccc0e400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2607c005215933335573e0045002232328008010d5d10021aba100380048564c06000643001800801c0048c0091801230022300208c008cdc3a40000045002280114008a00521800c01402e00f00380091300e4991300d4991300c49889804a4c8980424c44c0152644c0112622600293044c005262325325333573400422b26666aae7c024a004464650010021aba200b3574201500090ac99999981780091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d000a42b26666aae7c008a00450018009aba10039aba20032001219001912c9980880900148564cccd55cf80114008a003001357420073574400640024320032259301300290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26030005215933335573e0045002232328008010d5d10021aba100380048564c10800643001800807c02e00f003800918012300246004460048c0088c009180111801230022300208c008cdc3a40000045002280114008a00521800c01c0048980124c89800a4c1130014988c94c94ccd5cd00108ac9999aab9f00b28011191940040086ae88034d5d0806400242b26666660620024464aa666ae680044564cccd55cf80114008a003001357420073574400640024320032259303600290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266026028005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c05400a42b26666aae7c008a00450018009aba10039aba20032001219001912c980d00148564cccd55cf80114008a003001357420073574400640024320032259301e00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26094005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c13800a42b26666aae7c008a00450018009aba10039aba20032001219001912c9981582900148564cccd55cf801140088c8ca002004357440086ae8400e0012159302c00190c00600203f01b80bc04e01f00b803c00e002460048c009180111801230022300246004460048c0088c009180111801230022300246004460048c0088c008230023370e900000114008a004500228014860030010012260049322600293044c005262325533357340022300180104600466e1d200600c3370e900200519b87480080208cccccc0ac00488c954ccd5cd00088ac9999aab9f00228011191940040086ae88010d5d0801c00242b2600c00321800800a3002460041180119b8748000008a00450022801140088cccccc0a80048a00450022801140040045002232233333302b0012280114008008a0045002302b2233335573e00250018000964c010d5d080148564c010d5d1001c8600300300280091801226500230033574400480012c9813800c860020028c00866e1d2000002280114008a004500290ac800c85408a2a0432222180080140066601622446446004002605a44b20031003910998030011802000800d21502244c095241034d303900485408522200119802889119118010009813912c800c400e4426600c00460080023302522590018c002443003900291000a60080021800c804c88800d13302125933301b2232333573400300080119b8f00200100400190ac800c4c0992401034d303800910c8014896400e2b264666ae680060010023370e0029001460011302a4901034d3038004884c0b12401034d3038001130254901034d30370019812912c800c6001221801c80148800530040010c00640264440068c009159330212590018a80fc8564c090006426603e9201034d31320032333573400300080119b8f001006898132481034d31320048540806604a44b2003180048860072005220024c01000430019009911001a2646603a9201034d3035005932333573400300080119b8f9001911001801233200322200248a404a4464aa666ae6800444c8ccd5cd000c00200466e1c0100084600466e3c0100088c008b320052200245408242b26666660480024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d800a42b26666aae7c008a004464650010021aba20043574200700090ac99999981c80091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0f800a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302f001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981a00148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac9821000c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0c400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c12800a42b26666aae7c008a00450018009aba10039aba20032001219001912c982700148564cccd55cf80114008a0030013574200735744006400243200322593302b05200290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981580091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999815000914008a004500228008008a004464466666605600245002280100114008a0046056446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302700190c00400518010cdc3a40000045002280114008a005215900190a81145408644443001002800ccc02c4488c88c008004c0b489640062007221330060023004001001a42a04489812a481034d30390048540851801230021803008460045004500580088cd5400488cdc0000a400490000ac998008054801c88800d1301e491034d313100910ac800c400a44260449201034d313100088cc08089640063000910992cc801c888a4012452005280148c954ccd5cd00088c00600200d00704600466e3c0040384860060030024400460080029001911111111111111100704c04c00460051801064646464aa666ae6800444c8c8c8c8c8c8ca00264646464aa666ae6800444c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccccccccccc8ccc8cc8cc888888888888888a00202100f807403601900b80540260110078034016009003801400460026ae84054c004d5d080998181191919192a999ab9a0011180098109aba100298031aba13574400411304149103505431003370e90000011aab9e00235573a0026ea8004cc0c0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981c1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304c49103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c119240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089824248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303475c6ae84d5d10008d5d10009aba2002113040490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0b805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089822248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304449103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089822a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae680044600822608c920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303e49103505431003370e90000011aab9e00235573a0026ea8d5d0805198173ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c11124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137540020566ae84020cc0040acd5d08039bae3574200c66602c0306602c05a464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022608292103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605c02a6ae84010c008d5d080198011aba135744006602aeb8c0a9d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422605492103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980e80e1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302f49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a0011132804998110119aba10039aba1001998113ae357426ae880046ae8800844c954ccd5cd00088c004cc08808cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606892103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093302375c6ae84d5d1002044c954ccd5cd00088c01ccc090094d5d0802844c954ccd5cd0008899194034cc09c0a0d5d08044cc0a4050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0e5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981280100086ae88004d5d100308992a999ab9a00111802998130139aba1007991919192a999ab9a001113302a75c6ae8400844c0e1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a0011180108981aa4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c0a9240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009813911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301a75a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc06dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089819a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089819248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a0011180208981ba48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c0a524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c09d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302549103505431003370e90000011aab9e00235573a0026ea8004d5d100108980fa48103505431003370e90000011aab9e00235573a0026ea801629345402d22500c92805c8940324a0161809911192a999ab9a001113016490103505433001132553335734002226600a66e05200000433702900000188994004cdc2002800ccdc20020008cc01801000ccdc40012400066e1c005200030122223255333573400222006226600800466e1800c008cdc3800a400026020920103505435002001223232323255333573400223002113255333573400223001300735742006113015490103505431003370e900000199b8748008008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411301249103505431003370e90000011aab9e00235573a0026ea80048c88c008dd60009807111999aab9f00128001400cc010d5d08014c00cd5d10012000601844b200318014886400a4464aa666ae6800444c8ccd5cd000c00200466e1c00920021130070043371e0049110b487964726148656164563100088c88c008004c03489640063002910c80148964cc02000801e300100144c01800c14800c888ca400a44a0072001912801c9400a44a00725002099319ab9c491024c6800800089640063000899ab9c0028010a40064444444444444444018130064901034d31320013005491034d30390013004491034d31300023223002001300522590018c002442b2600a005130040018c00823333330020012280114008a004500228008008888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801e000464c66ae7000600046460020024600446600400400291011cc12e89c8838224d72db401ba955e96134b3d7d920fdc33049c0569d80048811c00e0e6aceb51fcb4fcc5dc6032cc524a641163f0723b25d995de3ae80001" + "description": "hydra-mHead-0.19.0-284-g2f3d76240", + "cborHex": "592b2d592b2a0101003332323232323232323232323232323232323232322222932323232553335734002226464646464646500132323232553335734002226464646464646464646464646464646466666666666646664664664444444444444445001010807c03a01b00c805c02a013008803c01a00b004801c00a00230013574202a60026ae8404cc0b08c8c8c8c954ccd5cd00088c004c084d5d08014c018d5d09aba200208981ea4903505431003370e90000011aab9e00235573a0026ea8004cc0b0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981a1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304849103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c109240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089822248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303075c6ae84d5d10008d5d10009aba200211303c490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0a805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089820248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304049103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089820a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae6800446008226084920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303a49103505431003370e90000011aab9e00235573a0026ea8d5d0805198153ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c10124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d001375400204e6ae84020cc00409cd5d08039bae3574200c66602c0306602c052464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022607a92103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605402a6ae84010c008d5d080198011aba135744006602aeb8c099d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422604c92103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980c80c1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302b49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a00111328049980f00f9aba10039aba10019980f3ae357426ae880046ae8800844c954ccd5cd00088c004cc07807cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606092103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093301f75c6ae84d5d1002044c954ccd5cd00088c01ccc080084d5d0802844c954ccd5cd0008899194034cc08c090d5d08044cc094050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0d5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981080100086ae88004d5d100308992a999ab9a00111802998110119aba1007991919192a999ab9a001113302675c6ae8400844c0d1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a00111801089818a4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c099240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009811911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301675a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc05dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089817a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089817248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a00111802089819a48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c09524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c08d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302149103505431003370e90000011aab9e00235573a0026ea8004d5d100108980da48103505431003370e90000011aab9e00235573a0026ea8006445200322500c92c992c991919192a999ab9a0011180108992a999ab9a00111800089810a4903505431003370e900100199b8748000008d55cf0011aab9d0013754009133014491034d303600593330122232333573400300080119b8f002001301300130159001911001a426603c44b200318004886400a44b264666ae6800600100233710002900044c01800e30020003180122b266028921034d303100323301e22590018c00a442b3201922900491192a999ab9a0011132333573400300080119b870040021180119b8f004002230008980200080026603a44b2003180048860072005220024c01000499001911001a44444444444444440208a999191919149980ca49034d30320032333573400300080119b8732593330182232333573400300080119b8f0020015006301b9007911001a4260040031480006466446446004002604a44b20031003910c801488cc020004c01800c90019100124006440028009119b80002001a4000337012b32a0072200245407642b26666660420024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0cc00a42b26666aae7c008a004464650010021aba20043574200700090ac99999981b00091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0ec00a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302c001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981880148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac981f800c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0b800488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26066005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c11c00a42b26666aae7c008a00450018009aba10039aba20032001219001912c982580148564cccd55cf80114008a0030013574200735744006400243200322593302b04f00290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981400091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999813800914008a004500228008008a004464466666605000245002280100114008a0046050446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302400190c00400518010cdc3a40000045002280114008a005215900190a80fc5407a44443001002800ccc0204488c88c008004c0a889640062007221330060023004001001a42a03e89811249034d30390048540792220012400513232593301b4901034d3033003302422590018c00a4432005223255333573400222603e00422600e00866e3c008020900191000a264b2b266038921034d30340032333573400300080119b8795990029100122a04121593333330240012232532323232325333573400c22b26666aae7c01ca00450018009aba10089aba20082001219001912c980280148564cccd55cf80114008a0030013574200735744006400243200322593300b00c00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e0045002232328008010d5d10021aba100380048564cccccc0e400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2607c005215933335573e0045002232328008010d5d10021aba100380048564c06000643001800801c0048c0091801230022300208c008cdc3a40000045002280114008a00521800c01402e00f00380091300e4991300d4991300c49889804a4c8980424c44c0152644c0112622600293044c005262325325333573400422b26666aae7c024a004464650010021aba200b3574201500090ac99999981780091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d000a42b26666aae7c008a00450018009aba10039aba20032001219001912c9980880900148564cccd55cf80114008a003001357420073574400640024320032259301300290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26030005215933335573e0045002232328008010d5d10021aba100380048564c10800643001800807c02e00f003800918012300246004460048c0088c009180111801230022300208c008cdc3a40000045002280114008a00521800c01c0048980124c89800a4c1130014988c94c94ccd5cd00108ac9999aab9f00b28011191940040086ae88034d5d0806400242b26666660620024464aa666ae680044564cccd55cf80114008a003001357420073574400640024320032259303600290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266026028005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c05400a42b26666aae7c008a00450018009aba10039aba20032001219001912c980d00148564cccd55cf80114008a003001357420073574400640024320032259301e00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26094005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c13800a42b26666aae7c008a00450018009aba10039aba20032001219001912c9981582900148564cccd55cf801140088c8ca002004357440086ae8400e0012159302c00190c00600203f01b80bc04e01f00b803c00e002460048c009180111801230022300246004460048c0088c009180111801230022300246004460048c0088c008230023370e900000114008a004500228014860030010012260049322600293044c005262325533357340022300180104600466e1d200600c3370e900200519b87480080208cccccc0ac00488c954ccd5cd00088ac9999aab9f00228011191940040086ae88010d5d0801c00242b2600c00321800800a3002460041180119b8748000008a00450022801140088cccccc0a80048a00450022801140040045002232233333302b0012280114008008a0045002302b2233335573e00250018000964c010d5d080148564c010d5d1001c8600300300280091801226500230033574400480012c9813800c860020028c00866e1d2000002280114008a004500290ac800c85408a2a0432222180080140066601622446446004002605a44b20031003910998030011802000800d21502244c095241034d303900485408522200119802889119118010009813912c800c400e4426600c00460080023302522590018c002443003900291000a60080021800c804c88800d13302125933301b2232333573400300080119b8f00200100400190ac800c4c0992401034d303800910c8014896400e2b264666ae680060010023370e0029001460011302a4901034d3038004884c0b12401034d3038001130254901034d30370019812912c800c6001221801c80148800530040010c00640264440068c009159330212590018a80fc8564c090006426603e9201034d31320032333573400300080119b8f001006898132481034d31320048540806604a44b2003180048860072005220024c01000430019009911001a2646603a9201034d3035005932333573400300080119b8f9001911001801233200322200248a404a4464aa666ae6800444c8ccd5cd000c00200466e1c0100084600466e3c0100088c008b320052200245408242b26666660480024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d800a42b26666aae7c008a004464650010021aba20043574200700090ac99999981c80091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0f800a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302f001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981a00148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac9821000c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0c400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c12800a42b26666aae7c008a00450018009aba10039aba20032001219001912c982700148564cccd55cf80114008a0030013574200735744006400243200322593302b05200290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981580091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999815000914008a004500228008008a004464466666605600245002280100114008a0046056446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302700190c00400518010cdc3a40000045002280114008a005215900190a81145408644443001002800ccc02c4488c88c008004c0b489640062007221330060023004001001a42a04489812a481034d30390048540851801230021803008460045004500580088cd5400488cdc0000a400490000ac998008054801c88800d1301e491034d313100910ac800c400a44260449201034d313100088cc08089640063000910992cc801c888a4012452005280148c954ccd5cd00088c00600200d00704600466e3c0040384860060030024400460080029001911111111111111100704c04c00460051801064646464aa666ae6800444c8c8c8c8c8c8ca00264646464aa666ae6800444c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccccccccccc8ccc8cc8cc888888888888888a00202100f807403601900b80540260110078034016009003801400460026ae84054c004d5d080998181191919192a999ab9a0011180098109aba100298031aba13574400411304149103505431003370e90000011aab9e00235573a0026ea8004cc0c0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981c1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304c49103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c119240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089824248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303475c6ae84d5d10008d5d10009aba2002113040490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0b805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089822248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304449103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089822a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae680044600822608c920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303e49103505431003370e90000011aab9e00235573a0026ea8d5d0805198173ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c11124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137540020566ae84020cc0040acd5d08039bae3574200c66602c0306602c05a464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022608292103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605c02a6ae84010c008d5d080198011aba135744006602aeb8c0a9d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422605492103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980e80e1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302f49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a0011132804998110119aba10039aba1001998113ae357426ae880046ae8800844c954ccd5cd00088c004cc08808cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606892103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093302375c6ae84d5d1002044c954ccd5cd00088c01ccc090094d5d0802844c954ccd5cd0008899194034cc09c0a0d5d08044cc0a4050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0e5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981280100086ae88004d5d100308992a999ab9a00111802998130139aba1007991919192a999ab9a001113302a75c6ae8400844c0e1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a0011180108981aa4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c0a9240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009813911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301a75a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc06dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089819a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089819248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a0011180208981ba48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c0a524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c09d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302549103505431003370e90000011aab9e00235573a0026ea8004d5d100108980fa48103505431003370e90000011aab9e00235573a0026ea801629345402d22500c92805c8940324a0161809911192a999ab9a001113016490103505433001132553335734002226600a66e05200000433702900000188994004cdc2002800ccdc20020008cc01801000ccdc40012400066e1c005200030122223255333573400222006226600800466e1800c008cdc3800a400026020920103505435002001223232323255333573400223002113255333573400223001300735742006113015490103505431003370e900000199b8748008008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411301249103505431003370e90000011aab9e00235573a0026ea80048c88c008dd60009807111999aab9f00128001400cc010d5d08014c00cd5d10012000601844b200318014886400a4464aa666ae6800444c8ccd5cd000c00200466e1c00920021130070043371e0049110b487964726148656164563100088c88c008004c03489640063002910c80148964cc02000801e300100144c01800c14800c888ca400a44a0072001912801c9400a44a00725002099319ab9c491024c6800800089640063000899ab9c0028010a40064444444444444444018130064901034d31320013005491034d30390013004491034d31300023223002001300522590018c002442b2600a005130040018c00823333330020012280114008a004500228008008888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801e000464c66ae7000600046460020024600446600400400291011c34fb9b172543b510ce248fc3faf6530e9cb828a7016add1759f39e290048811c00e0e6aceb51fcb4fcc5dc6032cc524a641163f0723b25d995de3ae80001" } diff --git a/hydra-plutus/scripts/vDeposit.plutus b/hydra-plutus/scripts/vDeposit.plutus index 07f70020436..52c2b4fc689 100644 --- a/hydra-plutus/scripts/vDeposit.plutus +++ b/hydra-plutus/scripts/vDeposit.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV3", - "description": "hydra-vDeposit-0.19.0-289-gad254dc10", + "description": "hydra-vDeposit-0.19.0-284-g2f3d76240", "cborHex": "5912fe5912fb0100003233223332223233223232323232323232323232323232323232323232323232323232323232323223235300100222233333350012230154910350543500230144910350543500223015490103505435002301449103505435002253350012153353322323353232325335333573466e1d20000020350341321223002003375c6ae8400454cd4ccd5cd19b87480080080d40d04c8488c00400cdd69aba10011301c01835573c0046aae74004dd50041299a9a9a9808a80111000912999a8011099809a490344303100333573466e24004d401c8880080d80d44c07124103443032001301c4910344303200133010490103443036003301c00135004222003103225335353530115002220022253335002213301349010344303400333573466e24004d401c8880080d40d84c07124103443033001301c4910344303300133010490103443035003301c3724603a66a0320026aa004444444444444444401c6e48c098c08cc0a8d401088800440c84d400488800cc8c8c94cd4ccd5cd19b87480000080c80c44c8c8c8c94cd4ccd5cd19b87480000080d80d44c8ccc88848ccc00401000c008dd71aba1002375a6ae84004c014d5d09aba2001357440022603a0326aae78008d55ce8009baa35742004602c4646464a66a666ae68cdc3a400000406c06a26644246600200600460206ae84004dd71aba1357440022603a0326aae78008d55ce8009baa0011301901535573c0046aae74004dd50009803804080e0980b249035054350013015491035054350023014491035054350032323232323232323223232325335333573466e1d2000002035034132333222123330010040030023232325335333573466e1d2000002039038132323232323232323232323232323333333333333333222222222222222212333333333333333300101101000f00e00d00c00b00a0090080070060050040030023302b01a3574201e660560346ae84038cc0ac06cd5d08069bad3574201866603eeb94078d5d08059981580c1aba100a33301f01c75a6ae84024c8c8c94cd4ccd5cd19b87480000081281244cc8848cc00400c008c8c8c94cd4ccd5cd19b87480000081341304cc8848cc00400c008cc0b9d69aba1001302d357426ae880044c0d00c0d55cf0011aab9d00137546ae84004c8c8c94cd4ccd5cd19b87480000081341304cc8848cc00400c008cc0b9d69aba1001302d357426ae880044c0d00c0d55cf0011aab9d00137546ae84d5d1000898188169aab9e00235573a0026ea8d5d080419815bae3574200e66603e4646464a66a666ae68cdc3a40000040960942642444444600a00e6eb8d5d08008a99a999ab9a3370e90010010258250990911111180100398129aba100115335333573466e1d200400204b04a132122222230030073020357420022a66a666ae68cdc3a400c0040960942664424444446600c01000e6eb4d5d0800980e1aba1357440022a66a666ae68cdc3a40100040960942642444444600200e603a6ae8400454cd4ccd5cd19b874802800812c1284cc884888888cc01002001cdd69aba1001301b357426ae880044c0c80b8d55cf0011aab9d001375400204c6ae84018ccc07dd70131aba1005375c6ae84010ccc07c064cc07c0a48c8c8c94cd4ccd5cd19b874800000812c1284488800854cd4ccd5cd19b874800800812c1284488800454cd4ccd5cd19b874801000812c1284488800c4c0c80b8d55cf0011aab9d00137540026ae8400ccc0ac05cd5d08011980ebad357420026603aeb4d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c080070d55cf0011aab9d00137546ae84008d5d0800991919299a999ab9a3370e900000101c81c099091111118028039bae357420022a66a666ae68cdc3a40040040720702664424444446600401000e60266ae84004cc03c060d5d09aba200115335333573466e1d200400203903813212222223003007300e357420022a66a666ae68cdc3a400c0040720702664424444446600c01000e6eb4d5d080098051aba1357440022a66a666ae68cdc3a40100040720702642444444600200e60166ae8400454cd4ccd5cd19b87480280080e40e04cc884888888cc01002001cdd69aba10013009357426ae880044c080070d55cf0011aab9d00137546ae84d5d10009aba20011301c01835573c0046aae74004dd50009191919299a999ab9a3370e900000101a019899199911091998008020018011bad3574200460146ae84004c8c8c94cd4ccd5cd19b87480000080e00dc4c8ccc88848888888ccc00c028024020cc03c06cd5d08011aba10013300f75c6ae84d5d10009aba200115335333573466e1d20020020380371332212222222330070090083300e01a35742002646464a66a666ae68cdc3a40000040760742664424660020060046eb4d5d08009bad357426ae880044c088078d55cf0011aab9d00137546ae84d5d10008a99a999ab9a3370e900200101c01b899910911111119801004804199808006bad357420026601ceb8d5d09aba200115335333573466e1d20060020380371321222222230040083300e01a357420022a66a666ae68cdc3a401000407006e2646466664444244444446666002016014012010660200386ae8400ccc07803cd5d0801199809007bad357420026a646464a66a666ae68cdc3a400000407a0782660586eb4d5d08009bad357426ae880044c090080d55cf0011aab9d00137546ae84d5d1000911980b8010009aba2001357440022a66a666ae68cdc3a401400407006e26644244444446600a0120106601c0346ae84004c8c8c94cd4ccd5cd19b87480000080ec0e84cc045d71aba10011302201e35573c0046aae74004dd51aba1357440022a66a666ae68cdc3a401800407006e22444444400c2603e0366aae78008d55ce8009baa357426ae88004d5d10008980d80b9aab9e00235573a0026ea8004c88c8c8c94cd4ccd5cd19b87480000080d00cc4cc88488888888888cc014034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b87480080080d00cc4cc88488888888888cc008034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b87480100080d00cc4cc88488888888888cc028034030c024d5d080098029aba1357440022a66a666ae68cdc3a400c00406806626466644424444444444466600c01c01a01860146ae84008c018d5d08009bad357426ae88004d5d10008a99a999ab9a3370e900400101a019899910911111111111980380680618049aba1001375a6ae84d5d10008a99a999ab9a3370e900500101a019899091111111111180080618049aba100115335333573466e1d200c002034033133221222222222223300300d00c3009357420026eb4d5d09aba200115335333573466e1d200e002034033133221222222222223300900d00c375c6ae84004dd71aba1357440022a66a666ae68cdc3a4020004068066266442444444444446601001a0186eb8d5d08009bad357426ae8800454cd4ccd5cd19b87480480080d00cc4cc88488888888888cc02c034030c024d5d080098049aba1357440022a66a666ae68cdc3a4028004068066264244444444444600801860126ae840044c06c05cd55cf0011aab9d0013754002644646464a66a666ae68cdc3a4000004068066264244460060086eb8d5d08008a99a999ab9a3370e900100101a0198990911180080218029aba100115335333573466e1d200400203403313322122233002005004375c6ae84004c014d5d09aba20011301b01735573c0046aae74004dd50009191919299a999ab9a3370e90000010198190990911180180218041aba100115335333573466e1d20020020330321122200215335333573466e1d2004002033032112220011301a01635573c0046aae74004dd50009191919299a999ab9a3370e90000010190188990911180180218039aba100115335333573466e1d2002002032031132122230020043007357420022a66a666ae68cdc3a4008004064062264244460020086eb8d5d08008980c80a9aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000080c40c04cc8848cc00400c008c02cd5d080098029aba135744002260300286aae78008d55ce8009baa00123232325335333573466e1d200000203002f13232333322221233330010050040030023232325335333573466e1d2000002035034133221233001003002300a35742002660164646464a66a666ae68cdc3a40000040720702642446004006601c6ae8400454cd4ccd5cd19b87480080080e40e04c8ccc888488ccc00401401000cdd69aba1002375a6ae84004dd69aba1357440026ae880044c080070d55cf0011aab9d00137540026ae84d5d10008980e00c1aab9e00235573a0026ea8d5d08019998053ae500935742004646464a66a666ae68cdc3a400000406a068224440062a66a666ae68cdc3a400400406a068264244460020086eb8d5d08008a99a999ab9a3370e900200101a81a099091118010021aba10011301c01835573c0046aae74004dd51aba10013300875c6ae84d5d10009aba2001357440022602e0266aae78008d55ce8009baa00123232325335333573466e1d200000202f02e1321223002003375c6ae8400454cd4ccd5cd19b87480080080bc0b84c8488c00400cdd71aba10011301601235573c0046aae74004dd500091191919299a999ab9a3370e900100101781708910008a99a999ab9a3370e9000001017817099091180100198029aba10011301601235573c0046aae74004dd5000899800bae75a4464460046eac004c0ac88cccd55cf800901391919a8139980e98031aab9d001300535573c00260086ae8800cd5d080100a1191919299a999ab9a3370e90000010150148999109198008018011bae357420026eb4d5d09aba20011301100d35573c0046aae74004dd50009813111299a999ab9a3370e00201a05004e2601e9201035054330015335333573466e200040340a009c4cc00ccdc080680119b8100d001132332212330010030023370800600266e10008004cc010008004c0948894cd4ccd5cd19b8700100c02702610021330030013370c00400244a66a002204a266ae700080908d4004888888888888888802480048c8c8c94cd4ccd5cd19b874800000809008c408c54cd4ccd5cd19b874800800809008c40904c02c01cd55cf0011aab9d001375400244646464a66a666ae68cdc3a4000004048046224440042a66a666ae68cdc3a400400404804626424446006008600a6ae8400454cd4ccd5cd19b874801000809008c448880044c02c01cd55cf0011aab9d00137540024646464a66a666ae68cdc3a40000040440422664424660020060046eb8d5d08009bad357426ae880044c024014d55cf0011aab9d00137540029210350543100232230023758002603c446666aae7c00480688cd4064c010d5d080118019aba200200748000cc06c884894cd4ccd5cd19b8900248000078074406054cd40044060884cd4064008cd4c01848004cdc08022400400224002464c66ae700040084800488ccd5cd19b8f0020010190183017225335001100c221337146eccd40088888cdd2a400066ae80d401088cdd2a400066ae80c02c008cd5d019806119a800919ba548000cd5d018068009bb100f2223374a900119aba0375000666ae80dd400119aba037500026ec4044004dd880699aba033300c75266018ea48dd400080199aba05333500213374a90001bb100b213374a900219aba000137620184266e9520023357406ea4004dd880619aba03300a7520026ec402cc0100048cd40048cdd2a400066ae80dd48009bb100423374a900119aba037520026ec4010894cd400484cdd2a400066ae80c00c004dd8802099ba548008dd8801a4c446446e98c008004c05488cd40052f5bded8c0446a0044466ae80cdd8180400118038009803001910919800801801180891299a800898011801806110a99a800880111098031803802980811299a8008805910a99a800880191099a8071980380200118030009807911299a8010800910a99a801880219110a999a998088028010a801899a807801198040038008a801899a80600119802800801980711299a80088019109a8011119b8a00130060034890035003222001350022220023500122200333230010012212323330022300222230030042300222230020042300222230010042353300400400335003001122223330042533500113350060070072215335001133500800300922153233353300d00500315001133300800333500b00500c002150011333006002233500b00500100122253350011335008335008003002300600932221533353300d00600215003133300800233500b0060050011500313350083350080030023006001222532335002130014988854c8ccd4cc03801c00c540044c011261500113330070022300633500c0070010012335009300333500900400a30070021220021221223300100400332223500222350022235005223500222533353300b00600215335333573466e1c01400404003c403854cd4ccd5cd19b8900500101000f100c100d13300b00600213300b006002225335333573466e3c00800401c018401454cd4ccd5cd19b91002001007006100310041222003122200212220011220021220012323001001230022330020020011" } diff --git a/hydra-plutus/scripts/vHead.plutus b/hydra-plutus/scripts/vHead.plutus index ae617f55d78..7a049216653 100644 --- a/hydra-plutus/scripts/vHead.plutus +++ b/hydra-plutus/scripts/vHead.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV3", - "description": "hydra-vHead-0.19.0-289-gad254dc10", + "description": "hydra-vHead-0.19.0-284-g2f3d76240", "cborHex": "59315659315301000032323322333222323322323232323233223232323232332232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323233332222323232323232323232323232323232323232323232323232323232323232323232323232322323235300100322233333350012230524910350543500230514910350543500223052490103505435002305149103505435002253350012153353232325333350033232323232215333333350081306949884c1a92613069498c8c8c8c8c8c8854cd4c09d403454cd54cd4ccd5cd19b8735303c00e222222222006500208b0108a01108b0113357389201034831330008a01153355335333573466e25402cd40208888888880142280422c04422c044cd5ce249034833310008a01153353350012533533301d500633333302450045003500c35303d00f22222222200430370860135303d00f222222222003001108c011335738921034833390008b012253355335333573466e3cd4c0f804088888888800cc0e021c0423404230044ccc079401ccccccc0954014cdc0a80224004a01a6a607c020444444444008607010e02002004211802211a02266ae71241034834300008c01153353302e00e50031533553353323223002001308e01225335001108e012215335333573466e3c0140082400423c04423c044c01000540314010422c044cd5ce2481034833380008a0115335353535500d2222222222222222009220012253335002215335333573466e24005402823804234044238044cd5ce249034833320008d011506215062153355335333502a079500933508401500c5004108b011335738921034833360008a01153355335333573466e1cc1994024c19d402822c042280454cd4ccd5cd19b8735303c00e222222222001500708b0108a01108b0113357389201034833340008a0115335333573466e1cd4c0f0038888888888004cdc02803a8030458084500884580899ab9c4901034833350008a01153353330293307f500a50053307f35303c00e22222222200750063307f35303c00e222222222009500315335330395335304900e21353500122001222200310850135533535500d222222222222222200e130630342210022222003108b01133573892010248340008a01108a01108a01108a01108a01108a01108a01108a01108a01108a01108a0113500622222222200613500522222222200913500422222222200213500322222222200813500222222222200713500122222222200121306a498884d40248894cd4ccc0a4d400c8888888888888888030d4018888888888024d4018888888888020c854cd54cd4ccd5cd19b8f303533502500650013500722222222200408a0108901108a0113357389201034834310008901153355335333573466e3cd401c88888888800cc0d4c8cd4098018004cd40c4019400422804224044228044cd5ce248103483432000890113535350042222222222222222009220022253335002215335333573466e24004d402888888888800423004234044234044cd5ce249034834330008c011506915069108901108901135003222222222222222200e10880121306a4984d4c0cc0148888888880084d4c0c80108888888880204d4c0c400c88888888801454cd4d5400488888888888888880204c155262215335001100222130594984d400488800c4c18d26222323232215323333333500a150012150021350092225332355335333573466e3cd4c0f003488888004c0dcd5400488800c22804224044228044cd5ce249034831370008901153355335333573466e1d200035303c00d2222200208a0108901108a0113357389201034832300008901153353330283307e35303c00d2222200400b3307e35303c00d2222200300c3307e35303c00d2222200500a15335533533032533535004222222222222222200e108401221306b001323233307407600230603350850133080010553350850100108601086013307f05435005222222222222222200d355001222001108a01133573892103483139000890115335533530095335304800d213535001220012222003108401108a011335738921034831360008901153355335333573466e1cd54004888008c1ac02c22804224044228044cd5ce249034831380008901153353302d00d00a130260041089011089011089011089011089011089011300735003222222222222222201010880121500221500222150032150021533333335009135008222533533302835003222222222222222200c00800932153353302c00c00915335330773036500130343350243067500135004222222222222222200e108901133573892010348313500088011088011330050820135003222222222222222201010870121306b4984c1a92621306b49884c1ad26221306c49884c1ad263085012232253350011003221350022253353305200b001133008300630560010031330080070033087012253350011003221335082010023004001308401225335001133305007e480001f8884c8d400c88d400c8c8894cd4cc120d40148888010d4d4c128040880048888010401c54cd4cc1500340144ccc164c00cc160014cdc02400400400226660b20080046660ea0ee0026a00a444400661180244a66a002200644266a10e020046008002600800261060244a66a0022104024426a00444a66a666ae68cdc7801003843808430089833800898030019919191910a9999999a8038983424c6464646442a66a6048a0142a66aa66a666ae68cdc499b81353535500a2222222222222222009220012253335002210011506e1506e353535500a2222222222222222009220022253335002210011506d1506d5004088010870110880113357389201034832320008701153355335333573466e1cd4c0e402c888888888004c8d4030888d4d4d400c888888888888888802488004894ccd400884cdc00008038a8380a83828020440084380884400899ab9c491034832330008701153353302b00b5003153355335333573466e1cd4c0e402c88888888801940082200421c044220044cd5ce24810348313300087011533553335001153355335333573466e1d20005002088010870115335333573466e1d200035303900b22222222200508801087011333573466e3cd4c0e402c888888888010d4018888880042200421c04421c04421c044220044cd5ce248103483238000870121533533301a50063333330215004500335303a00c22222222200535303a00c22222222200430340830135303a00c2222222220030011089011335738920103483239000880122153355335333573466e3cd4c0ec03488888888800cc0d42100422804224044ccc06d401ccccccc0894014cdc0a802240046a607601a44444444400a6a607601a444444444008606a10802002004211202211402266ae71241034833300008901153355335533535303900b2222222220021088012210890110880113357389201034832360008701153355335330365335304600b21353500122001222200310820135533535500a222222222222222200e13060031221002222200310880113357389201024834000870113330263307c35303900b22222222200850053307c35303900b22222222200750043307c35303900b2222222220095003108701108701108701108701108701108701108701108701135004222220021350032222200513500222222003135001222220041306849884c1a52632322153353330243307a350042222200450063307a3500422222003353038009222220033307a5003500532153355335333573466e1cd4c0e402888888008cdc024004a00610e0210c02210e02266ae71240103483231000860115335333018500733333301f500650033500222200235303900a2222200130320810130325001350022220031533553353302f5335304500a21353500122001222200310810133306f07135533550081305f0302210022222003306e500110870113357389201024834000860113302a00a5004108601108601108601133502135001222001533550071305e49103505439002210011085011350022222200213500122222005221306a49884210044d4c0cc010888880144d4c0c800c888880104d4d400888800c88888888888888880384d400488800cc02402cc8c8c94cd4ccd5cd19b87480000081fc1f844888888801454cd4ccd5cd19b87480080081fc1f84c848888888c004020c8c8c94cd4ccd5cd19b874800000820804204044480044c16816cd55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480100081fc1f84c848888888c00c020c8c8c94cd4ccd5cd19b874800000820804204044c8ccc88848ccc00401000c008cc065d71aba1002375a6ae84004dd69aba1357440026ae880044c16816cd55cf0011aab9d00137546ae8400454cd4ccd5cd19b87480180081fc1f84c848888888c018020c8c8c94cd4ccd5cd19b874800000820804204044488800c54cd4ccd5cd19b874800800820804204044c84888c008010cc061d71aba100115335333573466e1d20040020820108101133221222330010050043301875c6ae84004dd71aba135744002260b40b66aae78008d55ce8009baa357420022a66a666ae68cdc3a40100040fe0fc264244444446008010646464a66a666ae68cdc3a40000041040210202264244600400666030eb8d5d08008a99a999ab9a3370e9001001041008408089991091198008020019980c3ae357420026eb8d5d09aba20011305a05b35573c0046aae74004dd51aba100115335333573466e1d200a00207f07e11222222200715335333573466e1d200c00207f07e133221222222233002009008375a6ae84004dd69aba135744002260ae0b06aae78008d55ce8009baa0063232325335333573466e1d200000207e07d1323233330353057357420066602c0b46ae84008dd71aba1001300d357426ae88004d5d10009aba200115335333573466e1d200200207e07d130323232325335333573466e1d2000002081010800113232323333303d375c6ae84010cc068178d5d0801982d9aba1002375a6ae84004dd71aba1357440026ae88004d5d10009aba20011305905a35573c0046aae74004dd51aba100115335333573466e1d200400207e07d130353232325335333573466e1d20000020810108001132323232323232333333333040375c6ae84020cc078188d5d0803982f9aba1006375a6ae84014dd69aba1004375c6ae8400cdd71aba10023301e75c6ae84004dd69aba1357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20011305905a35573c0046aae74004dd51aba100115335333573466e1d200600207e07d10341305605735573c0046aae74004dd5000881e09829a49035054350013052491035054350023051491035054350032323232323232323223232325335333573466e1d20000020810108001132333222123330010040030023232325335333573466e1d20000020850108401132323232323232323232323232323333333333333333222222222222222212333333333333333300101101000f00e00d00c00b00a0090080070060050040030023302901a3574201e660520346ae84038cc0a406cd5d08069bad3574201866603eeb94078d5d08059981480c1aba100a33301f01c75a6ae84024c8c8c94cd4ccd5cd19b874800000825804254044cc8848cc00400c008c8c8c94cd4ccd5cd19b874800000826404260044cc8848cc00400c008cc0b5d69aba1001302c357426ae880044c1c41c8d55cf0011aab9d00137546ae84004c8c8c94cd4ccd5cd19b874800000826404260044cc8848cc00400c008cc0b5d69aba1001302c357426ae880044c1c41c8d55cf0011aab9d00137546ae84d5d1000898370379aab9e00235573a0026ea8d5d080419814bae3574200e66603e4646464a66a666ae68cdc3a400000412e0212c022642444444600a00e6eb8d5d08008a99a999ab9a3370e900100104b8084b008990911111180100398121aba100115335333573466e1d20040020970109601132122222230030073020357420022a66a666ae68cdc3a400c00412e0212c022664424444446600c01000e6eb4d5d0800980e1aba1357440022a66a666ae68cdc3a401000412e0212c022642444444600200e603a6ae8400454cd4ccd5cd19b874802800825c04258044cc884888888cc01002001cdd69aba1001301b357426ae880044c1bc1c0d55cf0011aab9d001375400204a6ae84018ccc07dd70129aba1005375c6ae84010ccc07c064cc07c0a08c8c8c94cd4ccd5cd19b874800000825c04258044488800854cd4ccd5cd19b874800800825c04258044488800454cd4ccd5cd19b874801000825c04258044488800c4c1bc1c0d55cf0011aab9d00137540026ae8400ccc0a405cd5d08011980ebad357420026603aeb4d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae880044c174178d55cf0011aab9d00137546ae84008d5d0800991919299a999ab9a3370e90000010428084200899091111118028039bae357420022a66a666ae68cdc3a400400410a02108022664424444446600401000e60246ae84004cc03c05cd5d09aba200115335333573466e1d2004002085010840113212222223003007300e357420022a66a666ae68cdc3a400c00410a02108022664424444446600c01000e6eb4d5d080098051aba1357440022a66a666ae68cdc3a401000410a02108022642444444600200e60166ae8400454cd4ccd5cd19b874802800821404210044cc884888888cc01002001cdd69aba10013009357426ae880044c174178d55cf0011aab9d00137546ae84d5d10009aba20011305905a35573c0046aae74004dd50009191919299a999ab9a3370e90000010400083f899199911091998008020018011bad3574200460146ae84004c8c8c94cd4ccd5cd19b87480000082100420c044c8ccc88848888888ccc00c028024020cc03c068d5d08011aba10013300f75c6ae84d5d10009aba200115335333573466e1d200200208401083011332212222222330070090083300e01935742002646464a66a666ae68cdc3a400000410e0210c022664424660020060046eb4d5d08009bad357426ae880044c17c180d55cf0011aab9d00137546ae84d5d10008a99a999ab9a3370e90020010420084180899910911111119801004804199808006bad357420026601ceb8d5d09aba200115335333573466e1d200600208401083011321222222230040083300e019357420022a66a666ae68cdc3a401000410802106022646466664444244444446666002016014012010660200366ae8400ccc07003cd5d0801199809007bad357420026a646464a66a666ae68cdc3a400000411202110022660fa6eb4d5d08009bad357426ae880044c184188d55cf0011aab9d00137546ae84d5d1000911980b8010009aba2001357440022a66a666ae68cdc3a4014004108021060226644244444446600a0120106601c0326ae84004c8c8c94cd4ccd5cd19b874800000821c04218044cc045d71aba10011305f06035573c0046aae74004dd51aba1357440022a66a666ae68cdc3a4018004108021060222444444400c260b80ba6aae78008d55ce8009baa357426ae88004d5d10008982c02c9aab9e00235573a0026ea8004c88c8c8c94cd4ccd5cd19b8748000008200041fc4cc88488888888888cc014034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b8748008008200041fc4cc88488888888888cc008034030c024d5d0800998053ad357426ae8800454cd4ccd5cd19b8748010008200041fc4cc88488888888888cc028034030c024d5d080098029aba1357440022a66a666ae68cdc3a400c004100020fe26466644424444444444466600c01c01a01860146ae84008c018d5d08009bad357426ae88004d5d10008a99a999ab9a3370e90040010400083f899910911111111111980380680618049aba1001375a6ae84d5d10008a99a999ab9a3370e90050010400083f899091111111111180080618049aba100115335333573466e1d200c0020800107f133221222222222223300300d00c3009357420026eb4d5d09aba200115335333573466e1d200e0020800107f133221222222222223300900d00c375c6ae84004dd71aba1357440022a66a666ae68cdc3a4020004100020fe266442444444444446601001a0186eb8d5d08009bad357426ae8800454cd4ccd5cd19b8748048008200041fc4cc88488888888888cc02c034030c024d5d080098049aba1357440022a66a666ae68cdc3a4028004100020fe264244444444444600801860126ae840044c160164d55cf0011aab9d0013754002644646464a66a666ae68cdc3a4000004100020fe264244460060086eb8d5d08008a99a999ab9a3370e90010010400083f8990911180080218029aba100115335333573466e1d20040020800107f13322122233002005004375c6ae84004c014d5d09aba20011305805935573c0046aae74004dd50009191919299a999ab9a3370e900000103f83f0990911180180218041aba100115335333573466e1d200200207f07e1122200215335333573466e1d200400207f07e112220011305705835573c0046aae74004dd50009191919299a999ab9a3370e900000103f03e8990911180180218039aba100115335333573466e1d200200207e07d132122230020043007357420022a66a666ae68cdc3a40080040fc0fa264244460020086eb8d5d08008982b02b9aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000081f41f04cc8848cc00400c008c028d5d080098029aba135744002260aa0ac6aae78008d55ce8009baa00123232325335333573466e1d200000207c07b13232333322221233330010050040030023232325335333573466e1d20000020810108001133221233001003002300a35742002660164646464a66a666ae68cdc3a400000410a02108022642446004006601c6ae8400454cd4ccd5cd19b874800800821404210044c8ccc888488ccc00401401000cdd69aba1002375a6ae84004dd69aba1357440026ae880044c174178d55cf0011aab9d00137540026ae84d5d10008982c82d1aab9e00235573a0026ea8d5d08019998053ae500935742004646464a66a666ae68cdc3a40000041020210002224440062a66a666ae68cdc3a40040041020210002264244460020086eb8d5d08008a99a999ab9a3370e90020010408084000899091118010021aba10011305905a35573c0046aae74004dd51aba10013300875c6ae84d5d10009aba200135744002260a80aa6aae78008d55ce8009baa00123232325335333573466e1d200000207b07a1321223002003375c6ae8400454cd4ccd5cd19b87480080081ec1e84c8488c00400cdd71aba10011305305435573c0046aae74004dd500091191919299a999ab9a3370e900100103d83d0a8330a99a999ab9a3370e900000103d83d0983398029aba10011305305435573c0046aae74004dd5000899800bae75a4464460046eac004c1e088cccd55cf800903991919a8399983718031aab9d001300535573c00260086ae8800cd5d080102f1191919299a999ab9a3370e900000103b83b09983c1bae357420026eb4d5d09aba20011304f05035573c0046aae74004dd50009839911299a999ab9a3370e0020300e80e6260989201035054330015335333573466e200040601d01cc4cc00ccdc080c00119b81018001132332212330010030023370800600266e10008004cc010008004c1c88894cd4ccd5cd19b8700101707307210021330030013370c00400244644a66aa66a666ae68cdc3980600218068008398390980119aa80500200088390839899ab9c49010348313200072307322533500110732215335350022233500722222223335734666e54024cdc51bb3375200e66e28dd99ba8006337146eccdd400299b8a37666ea4010cdc51bb337520066eccdd480100083f03e80089802000883a10009191919299a999ab9a3370e900000103883808380a99a999ab9a3370e90010010388380838898248251aab9e00235573a0026ea800488c8c8c94cd4ccd5cd19b87480000081c41c04488800854cd4ccd5cd19b87480080081c41c04c84888c00c010c014d5d08008a99a999ab9a3370e900200103883808911000898248251aab9e00235573a0026ea80048c8c8c94cd4ccd5cd19b87480000081bc1b84cc8848cc00400c008dd71aba1001375a6ae84d5d1000898238241aab9e00235573a0026ea80048c88c008dd60009836911999aab9f0012068233506730043574200460066ae8800814ccc1ac8844894cd4008419c8854cd400c41a4884cd41a8cc194010008cd54c0204800400c0044800488888848cccccc00401c01801401000c008c1a4894cd4004520002213370090011802000983411299a8008a400044266e012002300400133067221225335333573466e24009200006906810631533500110632213350640023353006120013370200890010008900091a8009111111111111111299a9809006083a899ab9c4901035530310007430652253350011065223213500322300300130692253350011300600322135002225335333573466e1d200000106d06c13006003106c22235003223500422350052253355335333500a0590060051533533027004003133059002001106a106a106b133573892010248320006a330632212225335002153350011066221067221533500310672215335330070040021333530091200100700300110691200122232330662253350011300348000884d4008894cd4ccd5cd19b8f00200906a069130073370201c60180022600c0060084a66a666ae68cdc380099b8048008c01400819018c41904cd5ce248103483134000633061225335001148000884cdc024004600800260c044a66a00220084426a0044466e00004c01800c88c8d400c8894cd4c020d400c88888888888888880204c98cd5ce248102483600049232215335001153353002300c300735006222222222222222201010661335738921024835000652213263357389210248370004e306622533500110652215335330560050021068130040013061225335001105b22135002223232330692253350011003221335064002300400100230070043302d00735001222200348000c174894cd4004415c884cd4160008c010004c170894cd40044158884cd415c008c010004cc16c884894cd4ccd5cd19b8900248000174170400454cd4004415c884cd4c01848004cdc080224004002240026444666660060924600c0026660060924666ae68cdc3a40000020b80b602e004002446464464446600600400260be444a66a0042600a002442a66a006260100084426a00844646a00a44a66a6602200a0042a66a6601a00800226601801000c20d02a66a6020008266018010014266006a66a602000220c6266a0c400e0c600c60d0444a66a00220d04426a00444a66a602800226600e00c0062a66a6602a0120042a66a660220100022660200186660de444a66a00420024426600a00266a0d600400600c00620d826600e66a0cc00800c00660ba44a66a00220ba4426a00444a66a60100022600c00620c060b844a66a00220b84426a00444a66a600e0022600c00620be92103505438003058225335001105822135002225335333573466e1d200000105c05b13006003105b23724600400260ac44a66a002203e44266e28dd99a801111119ba548000cd5d01a8021119ba548000cd5d0180e80119aba03301e233500123374a900019aba0301f001376204244466e9520023357406ea000ccd5d01ba80023357406ea0004dd88118009bb101f335740666018ea5402c00ccd5d02999a801099ba548000dd880e9099ba548010cd5d00009bb101e213374a900119aba037520026ec4078cd5d01980e3a9001376203a600800246e48c068c05cc12c00488ccd5cd19b8f3766666008ea5400c008dd99998023a9500300105405313300175246ea000488c88dd31801000982a1119a800a5eb7bdb18088d400888cd5d019bb030080023007001300600332253353004300b00121533335001210011300349888884c01d262130044984c0092623263357389210248330003632253353003300a001215333350012130044984c00d26222213007498840044c00926232633573892010248330003532233333302100122532335333573466e1d20000030520511533533335573e0044a07c4607e6608e6ae8400cd5d100181c109a80091299a980400110a99a9999aab9f00225042230433304b357420066ae8800c0f084d4004894cd4cc09809c008854cd4cccd55cf8011282311823998279aba100335744006080426a00244a66a605a00442a66a6666aae7c008941288c8c8c134008d5d10021aba1003044215335302e00121304c333301500b0070030011300e4984c035261300c4984c02526130084984c01526130044984c0052613001498c894cd4ccd5cd19b874800801014c14854cd4cccd55cf8019281f9191918210011aba20053574200807242a66a66666604c00244a66a666ae68cdc3a40000040ac0aa2a66a6666aae7c004941088c10ccc12cd5d08011aba200203c2135001225335302900221533533335573e0044a08c4608e6609e6ae8400cd5d1001820109a80091299a9981501580110a99a9999aab9f0022504a2304b33053357420066ae8800c11084d4004894cd4c050008854cd4cccd55cf80112827118279982b9aba100335744006090426a00244a66a606c00442a66a6666aae7c008941488c8c8c154008d5d10021aba100304c21533530370012130543333302100f00b0070030011505215051150501504d1504c150491504815045150441504115041250402504025040250402130413009001130034984c0092613002498c894cd4ccd5cd19b874801001014c14854cd4cccd55cf8019281f9191918210011aba20053574200807242a66a66666604c00244a66a666ae68cdc3a40000040ac0aa2a66a6666aae7c004941088c10ccc12cd5d08011aba200203c2135001225335302900221533533335573e0044a08c4608e6609e6ae8400cd5d1001820109a80091299a9981501580110a99a9999aab9f0022504a2304b33053357420066ae8800c11084d4004894cd4c050008854cd4cccd55cf80112827118279982b9aba100335744006090426a00244a66a606c00442a66a6666aae7c008941488c14ccc16cd5d08019aba200304c2135001225335303a00221533533335573e0044a0ac460ae660be6ae8400cd5d1001828109a80091299a981e80110a99a9999aab9f0022505a2305b33063357420066ae8800c15084d4004894cd4c104008854cd4cccd55cf8011282f1182f998339aba1003357440060b0426a00244a66a6608408a00442a66a6666aae7c008941888c8c8c194008d5d10021aba100305c215335304800121306433333333303001f01b01701300f00b0070030011506215061150601505d1505c1505915058150551505415051150501504d1504c15049150481504515044150411504125040250402504025040213041300c001130034984c009261300249894cd4ccd5cd19b874801800c1481444c0f8020540f4940ec940ec940ec940ec8cccccc080004894cd4ccd5cd19b874800000814013c54cd4cccd55cf8009281e11919181f8011aba20033574200406c42a66a604400242607c0022a0782a0762a0764a0744a0744a0744a074424444600800a24444006444424444666600401000e00c00a424444600200a4444444442466666666600201401201000e00c00a00800600444444246666600200c00a008006004644a66a6a6a002444006444444444444444401c2600493110a99a998029a80111110021a9a98038019100091110020980e8010980224c464c66ae71241034831310002d223500222350032232335005233500425335333573466e3c0080041381345400c413481348cd4010813494cd4ccd5cd19b8f00200104e04d15003104d153350032153350022133500223350022335002233500223303f00200120502335002205023303f00200122205022233500420502225335333573466e1c01800c14c14854cd4ccd5cd19b8700500205305213300f00400110521052104b153350012104b104b22333573466e1c00800411811494cd4c008004840044c98cd5ce24810248380002a23500122235003222222222222222233333350112201a20192201a20192322300201330592253350011504422135002225335350022235009225335333573466e3c0100081841804ccd5cd19b87003001061060106013049004130060032019233500123374a900019aba037520026ec40108cdd2a400466ae80dd48009bb1004225335001213374a900019aba030030013762008266e9520023762006932814981f91299a80089801180181c910a99a800880111098031803802981f11299a800881c110a99a800880191099a81d998038020011803000981e911299a8010800910a99a801880219110a999a9981f0028010a801899a81e001198040038008a801899a81c80119802800801981e11299a800880291099a801111b8a001300400122333573466e1d200230053300300235001222200303b03a232253355335300200121302800115026213303e225335001103822132533535003225335333573466e1d20020010430421302f0021502e2133503b001002100130040010011035303b2253350011502622135002225335333573466e3c00801c0fc0f84c0ac0044c01800d2201003038225335001148000884cdc02400460080024a66a646466666601400444a66a666ae68cdc3a40000040740722a66a6666aae7c004940988c09ccc0bcd5d08011aba20020202135001225335300b00221533533335573e0044a05446056660666ae8400cd5d1001812109a80091299a980500110a99a9999aab9f0022502e232323031002357440086ae8400c0a0854cd4c04c00484c0c0ccc04001c00c004540b8540b4540b0540a4540a0540945409494090940909409094090c0108cccccc028004894cd4ccd5cd19b87480000080e80e454cd4cccd55cf8009281311813998179aba100235744004040426a00244a66a601800442a66a6666aae7c008940a88c8c8c0b4008d5d10021aba1003024215335300f00121302c12330010040021502a150291502815025150252502425024250242502430090012135001222002103022212333001004003002232233333300800122502325022002250222502230362233335573e002460460624a66a60086ae84008854cd4c010d5d100190981299a8190010008a811899281198019aba200201c2533530030012130200011501e2333333004001225335333573466e1d20000020340331533533335573e0024a04046042660526ae84008d5d100100d109a80091299a980380110a99a9999aab9f00225024232323027002357440086ae8400c078854cd4c02800484c098cc0ec00c004540905408c540885407c5407c940789407894078940788cccccc00c0048940789407494074940748c0780048cccccc00800489407494070940708c07400494070888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801c06894ccd4d400488880084c98cd5ce2490248390001421001213263357389210348313000015302e22533500110282213350293500222330260023301b23370490008008009802000899319ab9c490103483333000112326335738921034833370001123232325335333573466e1d200000202d02c1375a6ae840044c014018d55cf0011aab9d0013754002464c66ae7000403d240103505431002375c002604e44a66a0022900011099b8048008c010004c098894cd4004520002213370090011802000899319ab9c49103483434000093024225335001148000884cdc0240046008002604644a66a002203a44266a0044444660220260066008002604444a66a00220424426a00444a66a666ae68cdc7a450b4879647261486561645631000020260251333573466e1d2002001026025130060033021225335001148000884cdc0240046008002264c66ae712410348323700004132633573892103483235000031326335738921034832340000223263357389210248310000212001301b225335001101522133500222223300900b00330040012322230033009333500b00a002001301b225335001101522133501635002223301300233008233350012330094800000488cc0280080048cc0240052000001300400123223002001301a2253350011014221335015350022233012002300700130040012233700004002424460040062244002602a44a66a002201e44266a0206a004446601a004666a0024601400244666a01401200400246016002600800244666ae68cdc780100080a00989911119191980c91299a800880191099a80a0011802000980100218029980c11299a800880911099299a9a80191911801005980f11299a800880f1109a80111299a99808001003881089803001899a80a00180088009802000801180b91299a800880891099a8091a8011119198080019800804180e91299a80089aa8078019109a80111299a998078010040891119801005002098030019802000980991299a800880691099a8071a801111980580118050009802000980911299a800880611099a8069a801111980500118048009802000980891299a800880591099a8061a80111198048011aa8038009802000909111801802089091118008021109198008018011a8019110009a8011110011a800911001999180080091091919980111801111180180211801111180100211801111180080211a998020020019a801800891111998021299a800899a803003803910a99a800899a804001804910a99199a998068028018a800899980400199a8058028060010a8008999803001119a805802800800911299a800899a80419a804001801180300499110a999a998068030010a801899980400119a8058030028008a801899a80419a804001801180300091129919a80109800a4c442a64666a6601c00e0062a00226008930a80089998038011180319a806003800800919a804980199a80480200518038010910010910911980080200199111a9a80111001111a9a80191001112999a998038020010a99a999ab9a3370e00600201801620142a66a666ae68cdc48018008060058804080489980380200109980380200111299a999ab9a3371e00400200e00c200a2a66a666ae68cdc8801000803803080188020911001891100109110008910010910009109198008018011191800800918011198010010009" } diff --git a/hydra-plutus/scripts/vInitial.plutus b/hydra-plutus/scripts/vInitial.plutus deleted file mode 100644 index 0240530f6a0..00000000000 --- a/hydra-plutus/scripts/vInitial.plutus +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "PlutusScriptV3", - "description": "hydra-vInitial-0.19.0-289-gad254dc10", - "cborHex": "5913cb5913c801010033232323232323232323232323232323232323232323232323232323232323232323232323232323223323222930030019114800c88c0a52410350543500918142490350543500911814a4810350543500918142490350543500912c800c8564ccc020dd70009919192a999ab9a3370e900000108c0004554ccd5cd19b8748008008460066603601a6ae8400422605a0346aae78008d55ce8009baa00530090078816c4c0a9241035054350044c0a52401035054350048c0a1240103505435000c8c8c8c8c8c8c8c8c88c8c8c954ccd5cd19b874800000844ca002646464aa666ae68cdc3a40000042264646464646464646464646464650013302e01a3574201f3302e01a3574201d3302e01b3574201b375a6ae8403266603eeb94078d5d0805ccc0b8060d5d08054ccc07c071d69aba10099919192a999ab9a3370e900000108c004c8c8c954ccd5cd19b87480000084600266062eb4d5d0800cc0c0d5d09aba20010898230199aab9e00235573a0026ea8d5d0800cc8c8c954ccd5cd19b87480000084600266062eb4d5d0800cc0c0d5d09aba20010898230199aab9e00235573a0026ea8d5d09aba20010898218181aab9e00235573a0026ea8d5d08044cc0b9d71aba100799980f91919192a999ab9a3370e900000108c00cdd71aba100108aa999ab9a3370e900100108c024c090d5d080084554ccd5cd19b87480100084600e60406ae8400422aa666ae68cdc3a400c00423001375a6ae8400660386ae84d5d100084554ccd5cd19b874802000846016603a6ae8400422aa666ae68cdc3a401400423005375a6ae8400660366ae84d5d1000844c1100c4d55cf0011aab9d00137540020526ae8401a66603eeb80a4d5d0802cdd71aba100499980f80c9980f81611919192a999ab9a3370e900000108c0084554ccd5cd19b87480080084600822aa666ae68cdc3a40080042300011304403135573c0046aae74004dd50009aba10039981700b9aba10029980ebad357420033301d75a6ae84d5d10008d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba200111303201f35573c0046aae74004dd51aba10029aba10019919192a999ab9a3370e900000108c00cdd71aba100108aa999ab9a3370e900100108c024c048d5d0800ccc03c06cd5d09aba200108aa999ab9a3370e900200108c01cc038d5d080084554ccd5cd19b8748018008460026eb4d5d0800cc028d5d09aba200108aa999ab9a3370e900400108c02cc02cd5d080084554ccd5cd19b87480280084600a6eb4d5d0800cc024d5d09aba200108981900f9aab9e00235573a0026ea8d5d09aba20011aba200111302e01b35573c0046aae74004dd500091919192a999ab9a3370e900000108994004dd69aba100298051aba10019919192a999ab9a3370e900000108994024cc03c078d5d08014d5d0800ccc03dd71aba1357440023574400222aa666ae68cdc3a4004004230013300e01d3574200332323255333573466e1d2000002118009bad35742003375a6ae84d5d1000844c0d0084d55cf0011aab9d00137546ae84d5d100084554ccd5cd19b87480100084601666602001aeb4d5d0800ccc039d71aba1357440021155333573466e1d2006002118039980700e9aba100108aa999ab9a3370e90040010899194034cc04007cd5d0801ccc08403cd5d08014ccc04803dd69aba1001c9919192a999ab9a3370e900000108c004dd69aba10019bad357426ae8800422606c0466aae78008d55ce8009baa357426ae88006446602e0040021aba20013574400222aa666ae68cdc3a4014004230053300e01d3574200332323255333573466e1d2000002113301175c6ae8400444c0d0084d55cf0011aab9d00137546ae84d5d100084554ccd5cd19b87480300084600422606203c6aae78008d55ce8009baa357426ae880046ae8800444c0b4068d55cf0011aab9d0013754002644646464aa666ae68cdc3a40000042300d3009357420033300a75a6ae84d5d100084554ccd5cd19b87480080084602660126ae8400666014eb4d5d09aba200108aa999ab9a3370e900200108c00cc024d5d0800cc014d5d09aba200108aa999ab9a3370e90030010899402cc028d5d08014c018d5d0800cdd69aba1357440023574400222aa666ae68cdc3a401000423009300935742003375a6ae84d5d100084554ccd5cd19b87480280084602a60126ae8400422aa666ae68cdc3a401800423011300935742003375a6ae84d5d100084554ccd5cd19b87480380084600a6eb8d5d0800cdd71aba1357440021155333573466e1d2010002118039bae35742003375a6ae84d5d100084554ccd5cd19b87480480084600260126ae8400660126ae84d5d100084554ccd5cd19b87480500084601e60126ae8400422605a0346aae78008d55ce8009baa00132232323255333573466e1d2000002118009bae357420021155333573466e1d20020021180298029aba100108aa999ab9a3370e900200108c00cdd71aba100198029aba13574400211302d01a35573c0046aae74004dd500091919192a999ab9a3370e900000108c004c020d5d080084554ccd5cd19b87480080084600422aa666ae68cdc3a40080042300411302c01935573c0046aae74004dd500091919192a999ab9a3370e900000108c004c01cd5d080084554ccd5cd19b874800800846006600e6ae8400422aa666ae68cdc3a400800423005375c6ae840042260560306aae78008d55ce8009baa001232323255333573466e1d20000021180098051aba100198029aba13574400211302a01735573c0046aae74004dd500091919192a999ab9a3370e90000010899194004c8c8c954ccd5cd19b87480000084600260146ae84006660164646464aa666ae68cdc3a400000423001300e357420021155333573466e1d200200211328019bad35742005375a6ae840066eb4d5d09aba20011aba200111303201f35573c0046aae74004dd50009aba13574400211302e01b35573c0046aae74004dd51aba10039998053ae50093574200532323255333573466e1d20000021180008aa999ab9a3370e900100108c014dd71aba100108aa999ab9a3370e900200108c00cd5d0800844c0b806cd55cf0011aab9d00137546ae8400666010eb8d5d09aba20011aba20013574400222605202c6aae78008d55ce8009baa001232323255333573466e1d2000002118009bae357420021155333573466e1d2002002118019bae3574200211302801535573c0046aae74004dd5000911919192a999ab9a3370e900100108c0084554ccd5cd19b874800000846002600a6ae8400422605002a6aae78008d55ce8009baa00113300175ceb488c88c008dd58009816111999aab9f0012800119400e002600c6aae74006600a6aae7800530043574400635742005000232323255333573466e1d2000002118009bae35742003375a6ae84d5d1000844c090044d55cf0011aab9d001375400246444b200513300a49103493031003003300b9001911001a64646442a6526601e92010349303300323230283302100200133301f0215004332323223002001303522590018801c884ce401a440043015301400230040014800c88005001301f021c000a00464603c604c66024016002a00b1593300f490103493034003028800a800e54012440044564cc03d24103493133003302f950049100080262b26601e92103493032003232323303522590018c00a442b2600a005180044c01000400230310023031950069111111111111111004164cc0c889640063002910c80148964cc0d400803e300100144c01800c2801c8564006260549210349303600910c8014896400e2aa666ae68cdc3a40040022200422605c92010349303600910981824903493036001130294901034930350044cc03d24103493134003031301050058c0091801230024600413303122590018c002443003325995009911111111111111118088082420031302d49010349313500181a912c800c60052219002912c9981b80100446002008898030018980200080022b32007222900391111111111111114808c8a005280148a005280148c88c00804cc10c89640063002910c80148964cc11400801e300100444c01800c4a0042426018601600318000564cc03401940062604a92010349313200910c8014896400e2b2005130294901034930390090ac99999980e800912a999ab9a3370e900000108ac9999aab9f0012801140060026ae8400a6ae88008800486400644b2b2604200521800800a300248564cccd55cf80114008a0030013574200735744006400243200322593333330260022280114008090a004500290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2604e00321800c00401e00700123002460048c0088c0091801118010460045002280114008a005219001911400400a00244c0a92410349313100484c0a924103493130004884c0ad240103493132000320032220030c0a889640063002910c80148954ccd5cd19b8f0020071130160011130060030c09c88954ccd5cd19b87001011113021490103505433001155333573466e2000404444cc00ccdc080880119b81011001113280099b8400300199b840020011980200100098131112a999ab9a3370e00202022004226600600266e18008004a400644002290019111001889640063000899ab9c0028010a40064444444444444444018223302322590018c00244264b32007222290049148014a005255333573466e3c00403846003001005803023002121801800c00910011802000a4006444444444444444401c2001232323255333573466e1d20000021180108aa999ab9a3370e900100108c00044c06801cd55cf0011aab9d001375400244646464aa666ae68cdc3a4000004230021155333573466e1d20020021180098029aba100108aa999ab9a3370e900200108c01044c06801cd55cf0011aab9d00137540024646464aa666ae68cdc3a400000423001375c6ae840066eb4d5d09aba200108980c0029aab9e00235573a0026ea800524103505431002322300237580026038446666aae7c004a0005003300435742005300335744004800180d112c800c60052219002912a999ab9a3371e9110b48796472614865616456310000211333573466e1c004cdc0803a400500080108980300189000180c111999aab9f0012800c0004b266666600a6ae840088954ccd5cd19b87480000084564cccd55cf80094008a00300135742005357440044002432003225933333300a0022255333573466e1d2000002115933335573e00250022800c004d5d08014d5d1001100090c800c8964c03800a42b26666aae7c008a004464650010021aba20043574200700090ac999999808800914008a004500228008008a00521800c00400e002460048c0091801118010460045002280114008a005215933335573e0045002232328008010d5d10021aba100380048564c02c00643001800801c0048c0091801230022300208c008a004500228011400a42b260086ae8800e4300180180140048c00913280118019aba200240008cccccc0080048a0045002280114008a0020022222223333333574800c4646600e6aae74004d55cf0009baa00723005375600e460086eb001c8c00cdd6803918011bae007800180a912c800c6001221333005007002300400111911180199802801000980a912c800c6001221801c80148a0020053301b22590018c002443003900291400400b200323300e48000006446601e00400323300e001480004c01000400126008002111802199a8028090010009119b80002001301122590018c002443003900291400400b20032300900191199a80480b001000c8c0280044c01000413222232323301622590018801c88600600530040010c008010c014cc05489640063000910992cc801c8c88c00802cc06c89640063000910c80148964cc04000801e300289803001846006007001440046008002002301422590018c002443003900291400400a6603444b20031802801a443200522593300f0020088c00c01e002898030018007260080021808112c800c6001221801c80148a002005800800898020008601e44b2003180048860072005228008016002002260080021807112c800c6001221801c80148a002005802800898020008601a44b2003180048860072005220014c010004300c22590018c0024464320072230030011808112c800c4c01800e44320052259900191980624000003223300d002001919806000a400089803001c6004044666ae68cdc4001000c00a000601445200322590028ac800c600122130074901034930370048856400e2600e92010349303800910c80248a401244b2660266ece400e444466e9520003357412009223374a900019aba030140023357406602a5200323374a900019aba0301600137620312223374a900119aba0375000666ae80dd400119aba037500026ec40680026ec405866ae80ccc055d49980aba92375000200666ae816400a266e9520003762029213374a900219aba0001376202b213374a900119aba037520026ec405466ae80cc04dd48009bb1014000c564cc04801000a26019001007802a3002460040119319ab9c00180014800c8cdd2a400066ae80dd48009bb1004919ba548008cd5d01ba9001376200822590019099ba548000cd5d018018009bb1004899ba548008dd880192622322374c6004002600e4520034bd6f7b63048a400a4466ae80cdd81804001180380098030018452005229003912a999ab9a3371e00800422666ae68cdc3801800c00200423002088ccd5cd19b8f0020018004008c00889640063000910c00c00a60080021800912c800c60012232190039118018008c01489640062600c0072219002912a999ab9a3370e900000088980300188c008119180080091801119801001000a4411cea444d37d226e71eef73ac78d149750da977feb588900135bf9e82210001" -} diff --git a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs index 1f89d36921e..d3b75471ab7 100644 --- a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs +++ b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs @@ -13,6 +13,8 @@ module Hydra.Plutus.GoldenSpec where import Hydra.Prelude import Test.Hydra.Prelude +import Control.Lens ((^?!)) +import Data.Aeson.Lens (key, nth, _String) import Hydra.Cardano.Api ( AsType (AsPlutusScriptV3, AsScript), File (..), @@ -26,23 +28,26 @@ import Hydra.Cardano.Api ( import Hydra.Contract.Deposit qualified as Deposit import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadTokens qualified as HeadTokens -import Hydra.Plutus (initialValidatorScript) import Hydra.Version (gitDescribe) import PlutusLedgerApi.V3 (serialiseCompiledCode) import PlutusLedgerApi.V3 qualified as Plutus +import System.IO.Streams qualified as Stream import System.Process (readProcess) import Test.Hspec.Golden (Golden (..)) spec :: Spec spec = do - it "Commit validator script" $ do + it "Commit and initial validator scripts" $ do original <- readFileBS "plutus.json" -- This re-generate plutus.json + let commitHash = encodeUtf8 $ original ^?! key "validators" . nth 0 . key "hash" . _String void $ readProcess "aiken" ["build", "-t", "compact"] "" + (outStream, _, _, _) <- Stream.runInteractiveProcess "aiken" ["blueprint", "apply", "-v", "initial.initial.spend", "-o", "plutus.json"] Nothing Nothing + Stream.write (Just commitHash) outStream + (outStream2, _, _, _) <- Stream.runInteractiveProcess "aiken" ["blueprint", "apply", "-v", "initial.initial.else", "-o", "plutus.json"] Nothing Nothing + Stream.write (Just commitHash) outStream2 regenerated <- readFileBS "plutus.json" regenerated `shouldBe` original - it "Initial validator script" $ - goldenScript "vInitial" initialValidatorScript it "Head validator script" $ goldenScript "vHead" Head.validatorScript it "Head minting policy script" $ diff --git a/hydra-plutus/validators/commit.ak b/hydra-plutus/validators/commit.ak index a8a6abd1912..5ab64d65d49 100644 --- a/hydra-plutus/validators/commit.ak +++ b/hydra-plutus/validators/commit.ak @@ -1,7 +1,7 @@ use aiken/collection/list use cardano/assets.{PolicyId, Value} use cardano/transaction.{OutputReference, Transaction} -use util.{trace_if_false, must_burn_st, hydra_head_v1} +use util.{hydra_head_v1, must_burn_st, trace_if_false} // TODO: Party is not used on-chain but is needed off-chain while it's still // based on mock crypto. When we move to real crypto we could simply use @@ -9,7 +9,7 @@ use util.{trace_if_false, must_burn_st, hydra_head_v1} pub type Datum { party: Data, commits: Data, - head_id: PolicyId + head_id: PolicyId, } pub type Redeemer { @@ -38,7 +38,12 @@ fn toErrorCode(err: CommitError) -> String { // // * ST is present in the output if the redeemer is 'ViaCollectCom' validator commit { - spend(datum: Option, redeemer: Redeemer, _utxo: OutputReference, self: Transaction) -> Bool { + spend( + datum: Option, + redeemer: Redeemer, + _utxo: OutputReference, + self: Transaction, + ) { expect Some(datum) = datum when redeemer is { // NOTE: The reimbursement of the committed output 'commit' is @@ -46,7 +51,7 @@ validator commit { ViaAbort -> trace_if_false( toErrorCode(STNotBurnedError), - must_burn_st(datum.head_id, self.mint)? + must_burn_st(datum.head_id, self.mint)?, ) ViaCollectCom -> { expect Some(head_output) = self.outputs |> list.head @@ -57,9 +62,12 @@ validator commit { } } } + + else(_) { + fail + } } fn has_st(head_id: PolicyId, value: Value) -> Bool { assets.quantity_of(value, head_id, hydra_head_v1) == 1 } - diff --git a/hydra-plutus/validators/initial.ak b/hydra-plutus/validators/initial.ak index 74c8ebf1d85..165a4296e83 100644 --- a/hydra-plutus/validators/initial.ak +++ b/hydra-plutus/validators/initial.ak @@ -6,10 +6,10 @@ use aiken/crypto.{ScriptHash, VerificationKeyHash} use aiken/option use cardano/assets.{PolicyId, Value} use cardano/transaction.{ - DatumHash, InlineDatum, Input, Output, NoDatum, OutputReference, Transaction, + DatumHash, InlineDatum, Input, NoDatum, Output, OutputReference, Transaction, } use commit -use util.{trace_if_false, trace_fail, must_burn_st} +use util.{must_burn_st, trace_fail, trace_if_false} pub type Datum = PolicyId @@ -41,7 +41,6 @@ pub type Redeemer { // MintingOrBurningIsForbidden -> @"I14" // OutRefNotFound -> @"I15" - // | The v_initial validator verifies that: // // * spent in a transaction also consuming a v_head output @@ -62,11 +61,7 @@ validator initial(commit_validator: ScriptHash) { ) { expect Some(head_id) = datum when redeemer is { - ViaAbort -> - trace_if_false( - @"I01" , - must_burn_st(head_id, self.mint)? - ) + ViaAbort -> trace_if_false(@"I01", must_burn_st(head_id, self.mint)?) ViaCommit(committed_refs) -> check_commit(head_id, commit_validator, committed_refs, utxo, self) } @@ -91,8 +86,7 @@ fn check_commit( [dat] -> when dat is { NoDatum -> trace_fail(@"I09") - DatumHash(_dataHash) -> - trace_fail(@"I10") + DatumHash(_dataHash) -> trace_fail(@"I10") InlineDatum(data) -> if data is commit.Datum { data @@ -103,7 +97,6 @@ fn check_commit( _otherwise -> trace_fail(@"I12") } if commit_datum.commits is locked_commits: List { - let committed_utxo = committed_refs |> list.map( @@ -122,19 +115,23 @@ fn check_commit( |> transaction.find_input(utxo) |> option.map(fn(i) { i.output.value }) |> option.or_else(assets.zero) - check_head_id(head_id, commit_datum.head_id) - && must_be_signed_by_participant( head_id, initial_value, self.extra_signatories) - && must_not_mint_or_burn(self.mint) - && check_committed_value(committed_utxo, initial_value, tx_outputs) - && check_locked_commit(committed_utxo, locked_commits) + check_head_id(head_id, commit_datum.head_id) && must_be_signed_by_participant( + head_id, + initial_value, + self.extra_signatories, + ) && must_not_mint_or_burn(self.mint) && check_committed_value( + committed_utxo, + initial_value, + tx_outputs, + ) && check_locked_commit(committed_utxo, locked_commits) } else { trace_fail(@"Failed to decode locked_commits") } } -fn get_script_outputs (commit_validator: ScriptHash, self : Transaction){ - self.outputs - |> transaction.find_script_outputs(commit_validator) +fn get_script_outputs(commit_validator: ScriptHash, self: Transaction) { + self.outputs + |> transaction.find_script_outputs(commit_validator) } fn check_committed_value( @@ -145,7 +142,8 @@ fn check_committed_value( let initial_lovelace = initial_value |> assets.lovelace_of - let locked_value = commit_outputs + let locked_value = + commit_outputs |> list.map(fn(output) { output.value }) |> list.reduce(assets.zero, assets.merge) |> assets.lovelace_of @@ -193,10 +191,7 @@ fn check_locked_commit( } fn check_head_id(self_head_id: PolicyId, committed_head_id: PolicyId) -> Bool { - trace_if_false( - @"I13", - self_head_id == committed_head_id, - ) + trace_if_false(@"I13", self_head_id == committed_head_id) } fn must_be_signed_by_participant( @@ -208,8 +203,7 @@ fn must_be_signed_by_participant( initial_value |> assets.tokens(head_id) when dict.size(token_map) is { - 0 -> - trace_fail(@"I05") + 0 -> trace_fail(@"I05") 1 -> { let participation_tokens = token_map @@ -222,19 +216,13 @@ fn must_be_signed_by_participant( signatories |> list.has(our_participation_token_name), ) - _more_than_one_token -> - trace_fail(@"I06") + _more_than_one_token -> trace_fail(@"I06") } } - _more_than_one_token -> - trace_fail(@"I06") + _more_than_one_token -> trace_fail(@"I06") } } fn must_not_mint_or_burn(mint: Value) -> Bool { - trace_if_false( - @"I14" , - assets.is_zero(mint), - ) + trace_if_false(@"I14", assets.is_zero(mint)) } - diff --git a/hydra-plutus/validators/util.ak b/hydra-plutus/validators/util.ak index e7b3a6a0959..607329e81f5 100644 --- a/hydra-plutus/validators/util.ak +++ b/hydra-plutus/validators/util.ak @@ -1,4 +1,3 @@ - use cardano/assets.{PolicyId, Value} pub const hydra_head_v1: ByteArray = "HydraHeadV1" From 780c691ce34c1c6100ebd2f4702acc33b14b4b8f Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Wed, 6 Nov 2024 21:59:22 +0100 Subject: [PATCH 13/24] Add changelog entry --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c5c0091a79..20295059680 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,10 @@ changes. in a new maximum number of head participants being `8`. - Changes script hashes in `hydra-plutus` +- **BREAKING** Rewrite of the initial script in aiken and update to Plutus V3: + - This makes the initial script smaller by 1337 bytes + - Changes script hashes in `hydra-plutus` + - Fix the bug where commit endpoint drops withdraw redeemers [#1643](https://github.com/cardano-scaling/hydra/issues/1643) - **BREAKING** Change to `SnapshotConfirmed` and `TxValid` server outputs, as @@ -44,6 +48,8 @@ changes. - Update mithril to `2442.0` + + ## [0.19.0] - 2024-09-13 - Tested with `cardano-node 9.1.1` and `cardano-cli 9.2.1.0` From 32ccbc658690949c0afc053191ec590a85a7863c Mon Sep 17 00:00:00 2001 From: Franco Testagrossa Date: Thu, 7 Nov 2024 10:58:03 +0100 Subject: [PATCH 14/24] fix aiken blueprint cmd call in plutus golden specs --- hydra-plutus/hydra-plutus.cabal | 1 + hydra-plutus/scripts/mHead.plutus | 2 +- hydra-plutus/scripts/vCommit.plutus | 5 +++++ hydra-plutus/scripts/vInitial.plutus | 5 +++++ hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs | 20 +++++--------------- 5 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 hydra-plutus/scripts/vCommit.plutus create mode 100644 hydra-plutus/scripts/vInitial.plutus diff --git a/hydra-plutus/hydra-plutus.cabal b/hydra-plutus/hydra-plutus.cabal index 0a7a15a3fc1..7393148f19a 100644 --- a/hydra-plutus/hydra-plutus.cabal +++ b/hydra-plutus/hydra-plutus.cabal @@ -111,6 +111,7 @@ test-suite tests , plutus-ledger-api , process , QuickCheck + , text build-tool-depends: hspec-discover:hspec-discover diff --git a/hydra-plutus/scripts/mHead.plutus b/hydra-plutus/scripts/mHead.plutus index afecd2605dd..ff7cd569ac9 100644 --- a/hydra-plutus/scripts/mHead.plutus +++ b/hydra-plutus/scripts/mHead.plutus @@ -1,5 +1,5 @@ { "type": "PlutusScriptV3", "description": "hydra-mHead-0.19.0-284-g2f3d76240", - "cborHex": "592b2d592b2a0101003332323232323232323232323232323232323232322222932323232553335734002226464646464646500132323232553335734002226464646464646464646464646464646466666666666646664664664444444444444445001010807c03a01b00c805c02a013008803c01a00b004801c00a00230013574202a60026ae8404cc0b08c8c8c8c954ccd5cd00088c004c084d5d08014c018d5d09aba200208981ea4903505431003370e90000011aab9e00235573a0026ea8004cc0b0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981a1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304849103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c109240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089822248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303075c6ae84d5d10008d5d10009aba200211303c490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0a805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089820248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304049103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089820a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae6800446008226084920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303a49103505431003370e90000011aab9e00235573a0026ea8d5d0805198153ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c10124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d001375400204e6ae84020cc00409cd5d08039bae3574200c66602c0306602c052464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022607a92103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605402a6ae84010c008d5d080198011aba135744006602aeb8c099d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422604c92103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980c80c1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302b49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a00111328049980f00f9aba10039aba10019980f3ae357426ae880046ae8800844c954ccd5cd00088c004cc07807cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606092103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093301f75c6ae84d5d1002044c954ccd5cd00088c01ccc080084d5d0802844c954ccd5cd0008899194034cc08c090d5d08044cc094050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0d5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981080100086ae88004d5d100308992a999ab9a00111802998110119aba1007991919192a999ab9a001113302675c6ae8400844c0d1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a00111801089818a4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c099240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009811911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301675a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc05dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089817a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089817248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a00111802089819a48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c09524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c08d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302149103505431003370e90000011aab9e00235573a0026ea8004d5d100108980da48103505431003370e90000011aab9e00235573a0026ea8006445200322500c92c992c991919192a999ab9a0011180108992a999ab9a00111800089810a4903505431003370e900100199b8748000008d55cf0011aab9d0013754009133014491034d303600593330122232333573400300080119b8f002001301300130159001911001a426603c44b200318004886400a44b264666ae6800600100233710002900044c01800e30020003180122b266028921034d303100323301e22590018c00a442b3201922900491192a999ab9a0011132333573400300080119b870040021180119b8f004002230008980200080026603a44b2003180048860072005220024c01000499001911001a44444444444444440208a999191919149980ca49034d30320032333573400300080119b8732593330182232333573400300080119b8f0020015006301b9007911001a4260040031480006466446446004002604a44b20031003910c801488cc020004c01800c90019100124006440028009119b80002001a4000337012b32a0072200245407642b26666660420024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0cc00a42b26666aae7c008a004464650010021aba20043574200700090ac99999981b00091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0ec00a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302c001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981880148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac981f800c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0b800488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26066005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c11c00a42b26666aae7c008a00450018009aba10039aba20032001219001912c982580148564cccd55cf80114008a0030013574200735744006400243200322593302b04f00290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981400091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999813800914008a004500228008008a004464466666605000245002280100114008a0046050446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302400190c00400518010cdc3a40000045002280114008a005215900190a80fc5407a44443001002800ccc0204488c88c008004c0a889640062007221330060023004001001a42a03e89811249034d30390048540792220012400513232593301b4901034d3033003302422590018c00a4432005223255333573400222603e00422600e00866e3c008020900191000a264b2b266038921034d30340032333573400300080119b8795990029100122a04121593333330240012232532323232325333573400c22b26666aae7c01ca00450018009aba10089aba20082001219001912c980280148564cccd55cf80114008a0030013574200735744006400243200322593300b00c00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e0045002232328008010d5d10021aba100380048564cccccc0e400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2607c005215933335573e0045002232328008010d5d10021aba100380048564c06000643001800801c0048c0091801230022300208c008cdc3a40000045002280114008a00521800c01402e00f00380091300e4991300d4991300c49889804a4c8980424c44c0152644c0112622600293044c005262325325333573400422b26666aae7c024a004464650010021aba200b3574201500090ac99999981780091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d000a42b26666aae7c008a00450018009aba10039aba20032001219001912c9980880900148564cccd55cf80114008a003001357420073574400640024320032259301300290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26030005215933335573e0045002232328008010d5d10021aba100380048564c10800643001800807c02e00f003800918012300246004460048c0088c009180111801230022300208c008cdc3a40000045002280114008a00521800c01c0048980124c89800a4c1130014988c94c94ccd5cd00108ac9999aab9f00b28011191940040086ae88034d5d0806400242b26666660620024464aa666ae680044564cccd55cf80114008a003001357420073574400640024320032259303600290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266026028005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c05400a42b26666aae7c008a00450018009aba10039aba20032001219001912c980d00148564cccd55cf80114008a003001357420073574400640024320032259301e00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26094005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c13800a42b26666aae7c008a00450018009aba10039aba20032001219001912c9981582900148564cccd55cf801140088c8ca002004357440086ae8400e0012159302c00190c00600203f01b80bc04e01f00b803c00e002460048c009180111801230022300246004460048c0088c009180111801230022300246004460048c0088c008230023370e900000114008a004500228014860030010012260049322600293044c005262325533357340022300180104600466e1d200600c3370e900200519b87480080208cccccc0ac00488c954ccd5cd00088ac9999aab9f00228011191940040086ae88010d5d0801c00242b2600c00321800800a3002460041180119b8748000008a00450022801140088cccccc0a80048a00450022801140040045002232233333302b0012280114008008a0045002302b2233335573e00250018000964c010d5d080148564c010d5d1001c8600300300280091801226500230033574400480012c9813800c860020028c00866e1d2000002280114008a004500290ac800c85408a2a0432222180080140066601622446446004002605a44b20031003910998030011802000800d21502244c095241034d303900485408522200119802889119118010009813912c800c400e4426600c00460080023302522590018c002443003900291000a60080021800c804c88800d13302125933301b2232333573400300080119b8f00200100400190ac800c4c0992401034d303800910c8014896400e2b264666ae680060010023370e0029001460011302a4901034d3038004884c0b12401034d3038001130254901034d30370019812912c800c6001221801c80148800530040010c00640264440068c009159330212590018a80fc8564c090006426603e9201034d31320032333573400300080119b8f001006898132481034d31320048540806604a44b2003180048860072005220024c01000430019009911001a2646603a9201034d3035005932333573400300080119b8f9001911001801233200322200248a404a4464aa666ae6800444c8ccd5cd000c00200466e1c0100084600466e3c0100088c008b320052200245408242b26666660480024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d800a42b26666aae7c008a004464650010021aba20043574200700090ac99999981c80091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0f800a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302f001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981a00148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac9821000c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0c400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c12800a42b26666aae7c008a00450018009aba10039aba20032001219001912c982700148564cccd55cf80114008a0030013574200735744006400243200322593302b05200290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981580091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999815000914008a004500228008008a004464466666605600245002280100114008a0046056446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302700190c00400518010cdc3a40000045002280114008a005215900190a81145408644443001002800ccc02c4488c88c008004c0b489640062007221330060023004001001a42a04489812a481034d30390048540851801230021803008460045004500580088cd5400488cdc0000a400490000ac998008054801c88800d1301e491034d313100910ac800c400a44260449201034d313100088cc08089640063000910992cc801c888a4012452005280148c954ccd5cd00088c00600200d00704600466e3c0040384860060030024400460080029001911111111111111100704c04c00460051801064646464aa666ae6800444c8c8c8c8c8c8ca00264646464aa666ae6800444c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccccccccccc8ccc8cc8cc888888888888888a00202100f807403601900b80540260110078034016009003801400460026ae84054c004d5d080998181191919192a999ab9a0011180098109aba100298031aba13574400411304149103505431003370e90000011aab9e00235573a0026ea8004cc0c0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981c1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304c49103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c119240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089824248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303475c6ae84d5d10008d5d10009aba2002113040490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0b805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089822248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304449103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089822a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae680044600822608c920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303e49103505431003370e90000011aab9e00235573a0026ea8d5d0805198173ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c11124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137540020566ae84020cc0040acd5d08039bae3574200c66602c0306602c05a464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022608292103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605c02a6ae84010c008d5d080198011aba135744006602aeb8c0a9d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422605492103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980e80e1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302f49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a0011132804998110119aba10039aba1001998113ae357426ae880046ae8800844c954ccd5cd00088c004cc08808cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606892103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093302375c6ae84d5d1002044c954ccd5cd00088c01ccc090094d5d0802844c954ccd5cd0008899194034cc09c0a0d5d08044cc0a4050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0e5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981280100086ae88004d5d100308992a999ab9a00111802998130139aba1007991919192a999ab9a001113302a75c6ae8400844c0e1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a0011180108981aa4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c0a9240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009813911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301a75a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc06dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089819a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089819248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a0011180208981ba48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c0a524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c09d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302549103505431003370e90000011aab9e00235573a0026ea8004d5d100108980fa48103505431003370e90000011aab9e00235573a0026ea801629345402d22500c92805c8940324a0161809911192a999ab9a001113016490103505433001132553335734002226600a66e05200000433702900000188994004cdc2002800ccdc20020008cc01801000ccdc40012400066e1c005200030122223255333573400222006226600800466e1800c008cdc3800a400026020920103505435002001223232323255333573400223002113255333573400223001300735742006113015490103505431003370e900000199b8748008008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411301249103505431003370e90000011aab9e00235573a0026ea80048c88c008dd60009807111999aab9f00128001400cc010d5d08014c00cd5d10012000601844b200318014886400a4464aa666ae6800444c8ccd5cd000c00200466e1c00920021130070043371e0049110b487964726148656164563100088c88c008004c03489640063002910c80148964cc02000801e300100144c01800c14800c888ca400a44a0072001912801c9400a44a00725002099319ab9c491024c6800800089640063000899ab9c0028010a40064444444444444444018130064901034d31320013005491034d30390013004491034d31300023223002001300522590018c002442b2600a005130040018c00823333330020012280114008a004500228008008888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801e000464c66ae7000600046460020024600446600400400291011c34fb9b172543b510ce248fc3faf6530e9cb828a7016add1759f39e290048811c00e0e6aceb51fcb4fcc5dc6032cc524a641163f0723b25d995de3ae80001" + "cborHex": "592b2d592b2a0101003332323232323232323232323232323232323232322222932323232553335734002226464646464646500132323232553335734002226464646464646464646464646464646466666666666646664664664444444444444445001010807c03a01b00c805c02a013008803c01a00b004801c00a00230013574202a60026ae8404cc0b08c8c8c8c954ccd5cd00088c004c084d5d08014c018d5d09aba200208981ea4903505431003370e90000011aab9e00235573a0026ea8004cc0b0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981a1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304849103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c109240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089822248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303075c6ae84d5d10008d5d10009aba200211303c490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0a805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089820248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304049103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089820a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae6800446008226084920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303a49103505431003370e90000011aab9e00235573a0026ea8d5d0805198153ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c10124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d001375400204e6ae84020cc00409cd5d08039bae3574200c66602c0306602c052464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022607a92103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605402a6ae84010c008d5d080198011aba135744006602aeb8c099d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422604c92103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980c80c1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302b49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a00111328049980f00f9aba10039aba10019980f3ae357426ae880046ae8800844c954ccd5cd00088c004cc07807cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606092103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093301f75c6ae84d5d1002044c954ccd5cd00088c01ccc080084d5d0802844c954ccd5cd0008899194034cc08c090d5d08044cc094050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0d5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981080100086ae88004d5d100308992a999ab9a00111802998110119aba1007991919192a999ab9a001113302675c6ae8400844c0d1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a00111801089818a4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c099240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009811911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301675a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc05dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089817a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089817248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a00111802089819a48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c09524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c08d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302149103505431003370e90000011aab9e00235573a0026ea8004d5d100108980da48103505431003370e90000011aab9e00235573a0026ea8006445200322500c92c992c991919192a999ab9a0011180108992a999ab9a00111800089810a4903505431003370e900100199b8748000008d55cf0011aab9d0013754009133014491034d303600593330122232333573400300080119b8f002001301300130159001911001a426603c44b200318004886400a44b264666ae6800600100233710002900044c01800e30020003180122b266028921034d303100323301e22590018c00a442b3201922900491192a999ab9a0011132333573400300080119b870040021180119b8f004002230008980200080026603a44b2003180048860072005220024c01000499001911001a44444444444444440208a999191919149980ca49034d30320032333573400300080119b8732593330182232333573400300080119b8f0020015006301b9007911001a4260040031480006466446446004002604a44b20031003910c801488cc020004c01800c90019100124006440028009119b80002001a4000337012b32a0072200245407642b26666660420024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0cc00a42b26666aae7c008a004464650010021aba20043574200700090ac99999981b00091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0ec00a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302c001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981880148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac981f800c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0b800488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26066005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c11c00a42b26666aae7c008a00450018009aba10039aba20032001219001912c982580148564cccd55cf80114008a0030013574200735744006400243200322593302b04f00290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981400091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999813800914008a004500228008008a004464466666605000245002280100114008a0046050446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302400190c00400518010cdc3a40000045002280114008a005215900190a80fc5407a44443001002800ccc0204488c88c008004c0a889640062007221330060023004001001a42a03e89811249034d30390048540792220012400513232593301b4901034d3033003302422590018c00a4432005223255333573400222603e00422600e00866e3c008020900191000a264b2b266038921034d30340032333573400300080119b8795990029100122a04121593333330240012232532323232325333573400c22b26666aae7c01ca00450018009aba10089aba20082001219001912c980280148564cccd55cf80114008a0030013574200735744006400243200322593300b00c00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e0045002232328008010d5d10021aba100380048564cccccc0e400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2607c005215933335573e0045002232328008010d5d10021aba100380048564c06000643001800801c0048c0091801230022300208c008cdc3a40000045002280114008a00521800c01402e00f00380091300e4991300d4991300c49889804a4c8980424c44c0152644c0112622600293044c005262325325333573400422b26666aae7c024a004464650010021aba200b3574201500090ac99999981780091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d000a42b26666aae7c008a00450018009aba10039aba20032001219001912c9980880900148564cccd55cf80114008a003001357420073574400640024320032259301300290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26030005215933335573e0045002232328008010d5d10021aba100380048564c10800643001800807c02e00f003800918012300246004460048c0088c009180111801230022300208c008cdc3a40000045002280114008a00521800c01c0048980124c89800a4c1130014988c94c94ccd5cd00108ac9999aab9f00b28011191940040086ae88034d5d0806400242b26666660620024464aa666ae680044564cccd55cf80114008a003001357420073574400640024320032259303600290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266026028005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c05400a42b26666aae7c008a00450018009aba10039aba20032001219001912c980d00148564cccd55cf80114008a003001357420073574400640024320032259301e00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26094005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c13800a42b26666aae7c008a00450018009aba10039aba20032001219001912c9981582900148564cccd55cf801140088c8ca002004357440086ae8400e0012159302c00190c00600203f01b80bc04e01f00b803c00e002460048c009180111801230022300246004460048c0088c009180111801230022300246004460048c0088c008230023370e900000114008a004500228014860030010012260049322600293044c005262325533357340022300180104600466e1d200600c3370e900200519b87480080208cccccc0ac00488c954ccd5cd00088ac9999aab9f00228011191940040086ae88010d5d0801c00242b2600c00321800800a3002460041180119b8748000008a00450022801140088cccccc0a80048a00450022801140040045002232233333302b0012280114008008a0045002302b2233335573e00250018000964c010d5d080148564c010d5d1001c8600300300280091801226500230033574400480012c9813800c860020028c00866e1d2000002280114008a004500290ac800c85408a2a0432222180080140066601622446446004002605a44b20031003910998030011802000800d21502244c095241034d303900485408522200119802889119118010009813912c800c400e4426600c00460080023302522590018c002443003900291000a60080021800c804c88800d13302125933301b2232333573400300080119b8f00200100400190ac800c4c0992401034d303800910c8014896400e2b264666ae680060010023370e0029001460011302a4901034d3038004884c0b12401034d3038001130254901034d30370019812912c800c6001221801c80148800530040010c00640264440068c009159330212590018a80fc8564c090006426603e9201034d31320032333573400300080119b8f001006898132481034d31320048540806604a44b2003180048860072005220024c01000430019009911001a2646603a9201034d3035005932333573400300080119b8f9001911001801233200322200248a404a4464aa666ae6800444c8ccd5cd000c00200466e1c0100084600466e3c0100088c008b320052200245408242b26666660480024464a6464646464a666ae680184564cccd55cf80394008a003001357420113574401040024320032259300500290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b266016018005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0d800a42b26666aae7c008a004464650010021aba20043574200700090ac99999981c80091192a999ab9a001115933335573e00450022800c004d5d0801cd5d1001900090c800c8964c0f800a42b26666aae7c008a004464650010021aba20043574200700090ac980c000c86003001003800918012300246004460041180119b8748000008a004500228011400a43001802805c01e00700122601c9322601a93226018931130094991300849889802a4c8980224c44c00526089800a4c464a64a666ae680084564cccd55cf804940088c8ca002004357440166ae8402a001215933333302f001223255333573400222b26666aae7c008a00450018009aba10039aba20032001219001912c981a00148564cccd55cf80114008a0030013574200735744006400243200322593301101200290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b26026005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c06000a42b26666aae7c008a004464650010021aba20043574200700090ac9821000c8600300100f805c01e00700123002460048c0088c009180111801230022300246004460041180119b8748000008a004500228011400a4300180380091300249913001498226002931192992999ab9a002115933335573e0165002232328008010d5d10069aba100c80048564cccccc0c400488c954ccd5cd00088ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2606c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964cc04c05000a42b26666aae7c008a00450018009aba10039aba20032001219001912c980a80148564cccd55cf80114008a003001357420073574400640024320032259301a00290ac9999aab9f0022801140060026ae8400e6ae8800c800486400644b2603c005215933335573e00450022800c004d5d0801cd5d1001900090c800c8964c12800a42b26666aae7c008a00450018009aba10039aba20032001219001912c982700148564cccd55cf80114008a0030013574200735744006400243200322593302b05200290ac9999aab9f00228011191940040086ae88010d5d0801c00242b2605800321800c00407e037017809c03e017007801c0048c0091801230022300246004460048c0088c009180111801230022300246004460048c0088c00918011180104600466e1d2000002280114008a004500290c00600200244c0092644c00526089800a4c464aa666ae680044600300208c008cdc3a400c01866e1d200400a3370e9001004119999981580091192a999ab9a001115933335573e0045002232328008010d5d10021aba100380048564c01800643001001460048c008230023370e900000114008a004500228011199999815000914008a004500228008008a004464466666605600245002280100114008a0046056446666aae7c004a00300012c98021aba100290ac98021aba200390c0060060050012300244ca00460066ae88009000259302700190c00400518010cdc3a40000045002280114008a005215900190a81145408644443001002800ccc02c4488c88c008004c0b489640062007221330060023004001001a42a04489812a481034d30390048540851801230021803008460045004500580088cd5400488cdc0000a400490000ac998008054801c88800d1301e491034d313100910ac800c400a44260449201034d313100088cc08089640063000910992cc801c888a4012452005280148c954ccd5cd00088c00600200d00704600466e3c0040384860060030024400460080029001911111111111111100704c04c00460051801064646464aa666ae6800444c8c8c8c8c8c8ca00264646464aa666ae6800444c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8cccccccccccc8ccc8cc8cc888888888888888a00202100f807403601900b80540260110078034016009003801400460026ae84054c004d5d080998181191919192a999ab9a0011180098109aba100298031aba13574400411304149103505431003370e90000011aab9e00235573a0026ea8004cc0c0004d5d08089191919192a999ab9a001113232800991919192a999ab9a0011180098129aba10029981c1191919192a999ab9a0011180098151aba100208992a999ab9a00111328019bad35742009375a6ae840066eb4d5d09aba20011aba200311304c49103505431003370e900100199b8748000008d55cf0011aab9d00137540026ae84d5d1001044c119240103505431003370e90000011aab9e00235573a0026ea8d5d08024c020d5d08014c8c8c8c954ccd5cd00088c00044c954ccd5cd00088c014dd71aba100308992a999ab9a001118019aba1004089824248103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357420033303475c6ae84d5d10008d5d10009aba2002113040490103505431003370e90000011aab9e00235573a0026ea8004dd69aba100f30013574201c60026002eb4cc0b805cd5d080619980b00cbad3574201664646464aa666ae6800444c8ca00264646464aa666ae68004460026600ceb4d5d08014c014d5d09aba2002089822248103505431003370e90000011aab9e00235573a0026ea8d5d08024c8c8c8c954ccd5cd00088c004cc019d69aba100298029aba13574400411304449103505431003370e90000011aab9e00235573a0026ea8d5d09aba20041191919192a999ab9a0011180108992a999ab9a00111800089822a4903505431003370e900100199b8748000008d55cf0011aab9d00137540024464646464aa666ae68004460042264aa666ae6800446002600e6ae8400c2264aa666ae680044600822608c920103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00111303e49103505431003370e90000011aab9e00235573a0026ea8d5d0805198173ae3574201266602c464646464aa666ae68004460066eb8d5d0801044c954ccd5cd00088c024c080d5d0801844c954ccd5cd00088c01cc080d5d0802044c954ccd5cd00088c004dd69aba1005980f9aba13574400a11325533357340022300b30213574200c113255333573400223005375a6ae8401e603e6ae84d5d1003844c11124103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137540020566ae84020cc0040acd5d08039bae3574200c66602c0306602c05a464646464aa666ae68004460042264aa666ae68004460082264aa666ae680044600022608292103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013574200a6605c02a6ae84010c008d5d080198011aba135744006602aeb8c0a9d69aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400422605492103505431003370e90000011aab9e00235573a0026ea8d5d0804cd5d0803cc8c8c8c954ccd5cd00088c00cdd71aba100208992a999ab9a0011180498059aba10039980e80e1aba135744006113255333573400223007300b35742008113255333573400223001375a6ae8401660146ae84d5d1002844c954ccd5cd00088c02cc030d5d0803044c954ccd5cd00088c014dd69aba100798051aba13574400e11302f49103505431003370e900500399b8748020018cdc3a400c00a66e1d20040043370e900100199b8748000008d55cf0011aab9d00137546ae84d5d100388c8c8c8c954ccd5cd00088994004dd69aba100398051aba1001991919192a999ab9a0011132804998110119aba10039aba1001998113ae357426ae880046ae8800844c954ccd5cd00088c004cc08808cd5d0801cc8c8c8c954ccd5cd00088c004dd69aba10029bad357426ae8800822606892103505431003370e90000011aab9e00235573a0026ea8d5d09aba200308992a999ab9a001118059998068083ad357420093302375c6ae84d5d1002044c954ccd5cd00088c01ccc090094d5d0802844c954ccd5cd0008899194034cc09c0a0d5d08044cc0a4050d5d08014ccc044051d69aba1001c991919192a999ab9a001118009bad35742005375a6ae84d5d1001044c0e5240103505431003370e90000011aab9e00235573a0026ea8d5d09aba2001911981280100086ae88004d5d100308992a999ab9a00111802998130139aba1007991919192a999ab9a001113302a75c6ae8400844c0e1240103505431003370e90000011aab9e00235573a0026ea8d5d09aba200708992a999ab9a0011180108981aa4903505431003370e900600419b874802801ccdc3a401000c66e1d20060053370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa357426ae880046ae8800844c0a9240103505431003370e90000011aab9e00235573a0026ea800488c88c008dd58009813911999aab9f0012800119400e002600c6aae74006600a6aae78005300435744006357420050002323232325533357340022300d3007357420053301a75a6ae84d5d1001044c954ccd5cd00088c04cc020d5d0801ccc06dd69aba13574400611325325333573400423003300a3574200b3001357426ae880142264aa666ae6800444ca01660186ae8401e60066ae840066eb4d5d09aba20011aba2006113255333573400223009300c3574200f375a6ae84d5d1003844c954ccd5cd00088c054c034d5d0804044c954ccd5cd00088c044c038d5d0804cdd69aba135744012113255333573400223005375c6ae8402a6eb8d5d09aba200a08992a999ab9a001118039bae35742017375a6ae84d5d1005844c954ccd5cd00088c004c044d5d08064c044d5d09aba200c08992a999ab9a0011180798091aba100d089819a4903505431003370e900a00699b8748048030cdc3a402001666e1d200e00a3370e900600499b8748028020cdc3a401000e66e1d200600623232323255333573400223001375c6ae840082264a64a666ae680084600a60026ae840102264aa666ae68004460066eb8d5d0802cc008d5d09aba2005089819248103505431003370e90020029191919192a999ab9a00111800980a1aba100208992a999ab9a0011180108992a999ab9a0011180208981ba48103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa0013370e900100199b8748000008d55cf0011aab9d001375400266e1d20040043370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae6800446002600c6ae840082264aa666ae6800446006600e6ae8400c2264aa666ae680044600a6eb8d5d0802044c0a524103505431003370e900200219b874800800ccdc3a40000046aae78008d55ce8009baa00123232323255333573400223001375c6ae840082264aa666ae68004460066eb8d5d0801844c09d240103505431003370e900100199b8748000008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411302549103505431003370e90000011aab9e00235573a0026ea8004d5d100108980fa48103505431003370e90000011aab9e00235573a0026ea801629345402d22500c92805c8940324a0161809911192a999ab9a001113016490103505433001132553335734002226600a66e05200000433702900000188994004cdc2002800ccdc20020008cc01801000ccdc40012400066e1c005200030122223255333573400222006226600800466e1800c008cdc3800a400026020920103505435002001223232323255333573400223002113255333573400223001300735742006113015490103505431003370e900000199b8748008008d55cf0011aab9d0013754002464646464aa666ae68004460026eb8d5d08014dd69aba13574400411301249103505431003370e90000011aab9e00235573a0026ea80048c88c008dd60009807111999aab9f00128001400cc010d5d08014c00cd5d10012000601844b200318014886400a4464aa666ae6800444c8ccd5cd000c00200466e1c00920021130070043371e0049110b487964726148656164563100088c88c008004c03489640063002910c80148964cc02000801e300100144c01800c14800c888ca400a44a0072001912801c9400a44a00725002099319ab9c491024c6800800089640063000899ab9c0028010a40064444444444444444018130064901034d31320013005491034d30390013004491034d31300023223002001300522590018c002442b2600a005130040018c00823333330020012280114008a004500228008008888888ccccccd5d2003119198039aab9d00135573c0026ea801c8c014dd5803918021bac00723003375a00e460046eb801e000464c66ae7000600046460020024600446600400400291011c00a6ddbc130ab92f5b7cb8d1ccd8d79eca5bfe25f6843c07b62841f00048811c00e0e6aceb51fcb4fcc5dc6032cc524a641163f0723b25d995de3ae80001" } diff --git a/hydra-plutus/scripts/vCommit.plutus b/hydra-plutus/scripts/vCommit.plutus new file mode 100644 index 00000000000..672a6052a1a --- /dev/null +++ b/hydra-plutus/scripts/vCommit.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV3", + "description": "hydra-vCommit-0.19.0-284-g2f3d76240", + "cborHex": "5902af5902ac010100323232323232323232322533300332323232325332330093001300b37540042646464a66666602800c2646464a66601e60060022a66602660246ea80245400803854ccc03cc01c00454ccc04cc048dd50048a80100700718081baa0081533300d3001300f37540042646464646464a6660266016602a6ea80344cc00cc01130103d87980003370e6660026eacc064c068c068c068c068c058dd50079bae30053016375400c91010b487964726148656164563100480044c94ccc050c020c058dd50008998021802a6103d87a8000300c333002375660346036602e6ea8c068c05cdd50009bae30063017375400e9110b4879647261486561645631001533015491054c35373b39001632533301800114c103d87a80001300333019301a0014bd701bac30053016375401e44464a66602c601c60306ea8004520001375a603860326ea8004c94ccc058c038c060dd50008a6103d87a8000132330010013756603a60346ea8008894ccc070004530103d87a8000132323232533301c337220100042a66603866e3c0200084c02ccc084dd4000a5eb80530103d87a8000133006006003375a603c0066eb8c070008c080008c078004c8cc004004010894ccc06c0045300103d87a8000132323232533301b337220100042a66603666e3c0200084c028cc080dd3000a5eb80530103d87a80001330060060033756603a0066eb8c06c008c07c008c074004dd2a400044a666024002294454cc04c0085894ccc040c010c048dd50008a4903433031001491034330320023015301630160013013301037540042a6601c9201054c34373b350016370e900000580580580598089809001180800098061baa002370e90010b1806980700118060009806001180500098031baa00114984d95854cc0092401054c34333b3500165734ae7155ceaab9e5573eae815d0aba257481" +} diff --git a/hydra-plutus/scripts/vInitial.plutus b/hydra-plutus/scripts/vInitial.plutus new file mode 100644 index 00000000000..e92599025e1 --- /dev/null +++ b/hydra-plutus/scripts/vInitial.plutus @@ -0,0 +1,5 @@ +{ + "type": "PlutusScriptV3", + "description": "hydra-vInitial-0.19.0-284-g2f3d76240", + "cborHex": "590a68590a6501010033232323232323232323223225333005323232323253323300b3001300d37540042646464a66666602c00c26464646464a66602660080022a66602e602c6ea802c5400804854ccc04cc0240044c94ccc06000404c4c94cccccc0740040500504c94ccc068c07400c4cc020004894ccc0700085401c4c94cccccc0840044ccc0240044c008c08000c060060060060060c078008054dd600080a00a180d000980b1baa00b012301437540142a666022600460266ea80104c8c8c8c8c8c8c94ccc060c024c068dd5008099802248103493031003370e6660026eacc018c06cdd5009003a4410b487964726148656164563100480044cc8c8c8c8c8c8c8c8c8c8c8c8c8c8c88c8c8c8c8c94cccccc0d40040080084c8cc080004894ccc0d00084c8c94ccc0c8cc07924103493133003371e0426eb8c058c0d4dd50040a999819191919299981a981300089811249034930350015333035302b001132533303a0011302349103493036001533303a303d001133022491034930320032323300100100622533303d00114a0264a66607466e3cdd718200010020a511330030030013040001375c60780022604692010349303600323300100100322533303b00114bd700991919299981d18181bad303d00313303f37520026600a00a00426600a00a0046eb8c0ec008c0fc008c0f40044c08924010349303600301a001330183301d0020224bd6f7b6301bac303830393039303930393039303930393039303537540582a6660646603c92103493134003375e6040606a6ea80b1300101a000153330323301e49103493033003371266e00c048004c048ccc050cc04c00894ccc0ccc090c0d4dd500089bab3010303637546020606c6ea8c0e4c0d8dd50008a5eb7bdb1812f5bded8c002a60246660286602601446eacc040c0d8dd5000a5eb7bdb1800544cc0300080145280a5014a02940cc058c94ccc0c8c0a0c0d0dd50008a60103d87a80001301d33037300f30353754601e606a6ea8c0e0c0d4dd5000a5eb80cc034dd6180c981a1baa02b0254bd6f7b6301980780491929998191811981a1baa0011301d3303730383035375400297ae013010490103493135003300d3758603260686ea80ac0044c94cccccc0e400454ccc0c4c088c0ccdd5000899299981b000803899299999981d800899299981c000804899299999981e800805005005005099299981d181e801899981300209803981e8040058059bae001303a001303a00200800800800830380013034375400200c00c00c00c00c606c0046eb0004008008c024c0bcdd50010980c2491f4661696c656420746f206465636f6465206c6f636b65645f636f6d6d69747300533302e0011300849103493132001533302e303100113232533302c301d0011300a49103493039001533302c30220011300a490103493130001323253333330360021533302e301f30303754004264a66606600200426464a66606a00200826464a66606e00200c264a66666607800200e00e00e00e264a666072607800620120106eb8004c0e4004c0e4008c0dc004c0dc008c0d4004c0c4dd500100080080080080089805a4903493131003032302f3754004605a6ea8004c0c00044c02124010349313200330080012300e302d375400264660020026eb0c034c0b0dd50119129998170008a5eb804c8c94ccc0b0c94ccc0b4c08cc0bcdd5000899b8f02a375c606660606ea8004528180a18179baa3014302f37540042660620046600800800226600800800260640046060002600200244464646464a6660600042a666060006294400400454ccc0bc0044c06124103493037001533302f0021301849010349303800132323232533302f30203031375400826466038921034930340053330303371e6eccc034c0ccdd50009bae300d303337540062a66606066ebcc060c0ccdd5000980c18199baa003133300b00b00400214a02940c0d4c0c8dd50020a503035005303300430330023031001375860600046eb0c0bcc0c0004cc0b4dd3801198169ba70014bd701119198008008019129998160008a6103d87a800013232533302a3375e6024605a6ea80080144c054cc0bc0092f5c02660080080026060004605c0024605460560024a660480022c44646600200200644a666052002297ae013302a3003302b00133002002302c001233300a00148810048810022323300100100322533302700114bd700998141ba63003302900133002002302a00122232333001001004003222533302800210011333003003302b00233004001375660540044464666002002006004444a66604c004200226466600800860540066644646600200200a44a66605600226605866ec0dd48021ba60034bd6f7b630099191919299981599b90008002133030337606ea4020dd30038028a99981599b8f008002132533302c301d302e375400226606266ec0dd4804981918179baa001004100432533302c533303000114a22940530103d87a80001301733031374c00297ae03233300100100800222253330320021001132333004004303600333223233001001005225333037001133038337606ea4010dd4001a5eb7bdb1804c8c8c8c94ccc0dccdc800400109981e19bb037520106ea001c01454ccc0dccdc7804001099299981c1814981d1baa00113303d337606ea4024c0f8c0ecdd5000802080219299981c18148008a60103d87a8000130233303d375000297ae03370000e00226607866ec0dd48011ba800133006006003375a60720066eb8c0dc008c0ec008c0e4004dd718188009bad30320013034002133030337606ea4008dd3000998030030019bab302d003375c6056004605e004605a0026eb8c094004dd598130009814001118119812181200091299980e9809980f9baa002100113756604660406ea8008c004004894ccc07c0045200013370090011980100118110009180f8009bac301e301b375402044464a6660366022603a6ea8004520001375a6042603c6ea8004c94ccc06cc044c074dd50008a6103d87a80001323300100137566044603e6ea8008894ccc084004530103d87a80001323232325333021337220100042a66604266e3c0200084c030cc098dd4000a5eb80530103d87a8000133006006003375a60460066eb8c084008c094008c08c004cc01000c00888c8cc00400400c894ccc078004530103d87a8000132323232533301e3372200e0042a66603c66e3c01c0084c024cc08cdd3000a5eb80530103d87a8000133006006003375660400066eb8c078008c088008c080004dd2a400044a66602c00229444c00c00894cc054004588c064c068c068c068c068004dd7180b980a1baa0041533012491054c36323b3500162225333013300430153754006264a666030002004264a66666603a00200600600600626464a66603600200a264a66666604000200c00c00c264a66603a60400062a01000e6eb4004018c074004c07400cdd7000980d000980b1baa003001370e9000111919800800801911980180098010010068068068069809980a001180900098071baa002370e90010b1807980800118070009807001180600098041baa00114984d958dd70008a998012481054c35383b3500165734ae7155ceaab9e5573eae815d0aba257489811e581c3e5a776bcee213e3dfd15806952a10ac5590e3e97d09d62eb99266b20001" +} diff --git a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs index d3b75471ab7..c636a8afc16 100644 --- a/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs +++ b/hydra-plutus/test/Hydra/Plutus/GoldenSpec.hs @@ -13,8 +13,6 @@ module Hydra.Plutus.GoldenSpec where import Hydra.Prelude import Test.Hydra.Prelude -import Control.Lens ((^?!)) -import Data.Aeson.Lens (key, nth, _String) import Hydra.Cardano.Api ( AsType (AsPlutusScriptV3, AsScript), File (..), @@ -28,32 +26,24 @@ import Hydra.Cardano.Api ( import Hydra.Contract.Deposit qualified as Deposit import Hydra.Contract.Head qualified as Head import Hydra.Contract.HeadTokens qualified as HeadTokens +import Hydra.Plutus (commitValidatorScript, initialValidatorScript) import Hydra.Version (gitDescribe) import PlutusLedgerApi.V3 (serialiseCompiledCode) import PlutusLedgerApi.V3 qualified as Plutus -import System.IO.Streams qualified as Stream -import System.Process (readProcess) import Test.Hspec.Golden (Golden (..)) spec :: Spec spec = do - it "Commit and initial validator scripts" $ do - original <- readFileBS "plutus.json" - -- This re-generate plutus.json - let commitHash = encodeUtf8 $ original ^?! key "validators" . nth 0 . key "hash" . _String - void $ readProcess "aiken" ["build", "-t", "compact"] "" - (outStream, _, _, _) <- Stream.runInteractiveProcess "aiken" ["blueprint", "apply", "-v", "initial.initial.spend", "-o", "plutus.json"] Nothing Nothing - Stream.write (Just commitHash) outStream - (outStream2, _, _, _) <- Stream.runInteractiveProcess "aiken" ["blueprint", "apply", "-v", "initial.initial.else", "-o", "plutus.json"] Nothing Nothing - Stream.write (Just commitHash) outStream2 - regenerated <- readFileBS "plutus.json" - regenerated `shouldBe` original it "Head validator script" $ goldenScript "vHead" Head.validatorScript it "Head minting policy script" $ goldenScript "mHead" (serialiseCompiledCode HeadTokens.unappliedMintingPolicy) it "Deposit validator script" $ goldenScript "vDeposit" Deposit.validatorScript + it "Initial validator script" $ + goldenScript "vInitial" initialValidatorScript + it "Commit validator script" $ + goldenScript "vCommit" commitValidatorScript -- | Write a golden script on first run and ensure it stays the same on -- subsequent runs. From 0d53738f10115f40f8c627629eb94fa21d85a725 Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 11:42:21 +0100 Subject: [PATCH 15/24] Add a Dummy plutus contract for testing --- hydra-plutus/hydra-plutus.cabal | 1 + hydra-plutus/src/Hydra/Contract/Dummy.hs | 60 ++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 hydra-plutus/src/Hydra/Contract/Dummy.hs diff --git a/hydra-plutus/hydra-plutus.cabal b/hydra-plutus/hydra-plutus.cabal index 7393148f19a..1d6b4794eb5 100644 --- a/hydra-plutus/hydra-plutus.cabal +++ b/hydra-plutus/hydra-plutus.cabal @@ -47,6 +47,7 @@ library Hydra.Contract.Commit Hydra.Contract.CommitError Hydra.Contract.Deposit + Hydra.Contract.Dummy Hydra.Contract.DepositError Hydra.Contract.Error Hydra.Contract.Head diff --git a/hydra-plutus/src/Hydra/Contract/Dummy.hs b/hydra-plutus/src/Hydra/Contract/Dummy.hs new file mode 100644 index 00000000000..729d5b6c5f5 --- /dev/null +++ b/hydra-plutus/src/Hydra/Contract/Dummy.hs @@ -0,0 +1,60 @@ +{-# LANGUAGE TemplateHaskell #-} +{-# OPTIONS_GHC -fno-specialize #-} +{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:conservative-optimisation #-} +{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:defer-errors #-} +-- Plutus core version to compile to. In babbage era, that is Cardano protocol +-- version 7 and 8, only plutus-core version 1.0.0 is available. +{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.0.0 #-} + +module Hydra.Contract.Dummy where + +import Hydra.Cardano.Api (PlutusScriptVersion (PlutusScriptV3)) +import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) +import Hydra.Prelude + +import PlutusLedgerApi.V3 (ScriptContext (scriptContextScriptInfo), ScriptHash, ScriptInfo (RewardingScript), SerialisedScript, UnsafeFromData (unsafeFromBuiltinData), getRedeemer, scriptContextRedeemer, serialiseCompiledCode, toBuiltinData) +import PlutusTx (CompiledCode, compile) +import PlutusTx.Prelude (check) + +type D = () +type R = () + +dummyValidator :: D -> R -> ScriptContext -> Bool +dummyValidator _ _ _ = True + +compiledDummyValidator :: CompiledCode ValidatorType +compiledDummyValidator = + $$(PlutusTx.compile [||wrap dummyValidator||]) + where + wrap = wrapValidator @D @R + +wrapFakeStakeValidator :: + (UnsafeFromData datum, UnsafeFromData redeemer) => + (datum -> redeemer -> ScriptContext -> Bool) -> + ValidatorType +wrapFakeStakeValidator f c = + let + context = unsafeFromBuiltinData c + in + check $ case scriptContextScriptInfo context of + RewardingScript _cred -> + let datum = unsafeFromBuiltinData $ toBuiltinData () + redeemer = unsafeFromBuiltinData $ getRedeemer $ scriptContextRedeemer context + in f datum redeemer context + _ -> False +{-# INLINEABLE wrapFakeStakeValidator #-} + +compiledDummyStakeValidator :: CompiledCode ValidatorType +compiledDummyStakeValidator = + $$(PlutusTx.compile [||wrapFakeStakeValidator dummyValidator||]) + where + wrap = wrapValidator @D @R + +dummyValidatorScript :: SerialisedScript +dummyValidatorScript = serialiseCompiledCode compiledDummyValidator + +dummyStakeValidatorScript :: SerialisedScript +dummyStakeValidatorScript = serialiseCompiledCode compiledDummyStakeValidator + +dummyValidatorHash :: ScriptHash +dummyValidatorHash = scriptValidatorHash PlutusScriptV3 dummyValidatorScript From cf1135db8f2c178256858221296f0798274e8abc Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 11:42:55 +0100 Subject: [PATCH 16/24] Use new Dummy V3 validator in TxTraceSpec --- hydra-node/test/Hydra/Chain/Direct/TxSpec.hs | 14 +++++++------- hydra-plutus/hydra-plutus.cabal | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs b/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs index a7ec55a3f3b..f84b1e6ec17 100644 --- a/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs +++ b/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs @@ -42,6 +42,7 @@ import Hydra.Chain.Direct.Tx ( observeHeadTx, txInToHeadSeed, ) +import Hydra.Contract.Dummy (dummyStakeValidatorScript, dummyValidatorScript) import Hydra.Contract.HeadTokens (headPolicyId) import Hydra.Ledger.Cardano.Builder (addInputs, addReferenceInputs, addVkInputs, emptyTxBody, unsafeBuildTransaction) import Hydra.Ledger.Cardano.Evaluate (propTransactionEvaluates) @@ -51,7 +52,6 @@ import Hydra.Tx.HeadId (headIdToCurrencySymbol, mkHeadId) import Hydra.Tx.Init (mkInitialOutput) import Hydra.Tx.ScriptRegistry (registryUTxO) import Hydra.Tx.Utils (verificationKeyToOnChainId) -import PlutusLedgerApi.Test.Examples qualified as Plutus import Test.Cardano.Ledger.Shelley.Arbitrary (genMetadata') import Test.Hydra.Prelude import Test.Hydra.Tx.Fixture ( @@ -238,9 +238,9 @@ genBlueprintTxWithUTxO = ) spendSomeScriptInputs (utxo, txbody) = do - let alwaysSucceedingScript = PlutusScriptSerialised $ Plutus.alwaysSucceedingNAryFunction 3 - datum <- unsafeHashableScriptData . fromPlutusData <$> arbitrary - redeemer <- unsafeHashableScriptData . fromPlutusData <$> arbitrary + let alwaysSucceedingScript = PlutusScriptSerialised dummyValidatorScript + let datum = toScriptData () + let redeemer = toScriptData () let genTxOut = do value <- genValue let scriptAddress = mkScriptAddress testNetworkId alwaysSucceedingScript @@ -288,9 +288,9 @@ genBlueprintTxWithUTxO = [ pure (utxo, txbody) , do lovelace <- arbitrary - let scriptWitness = mkScriptWitness alwaysSucceedingScript NoScriptDatumForStake redeemer - alwaysSucceedingScript = PlutusScriptSerialised $ Plutus.alwaysSucceedingNAryFunction 2 - redeemer = toScriptData (123 :: Integer) + let redeemer = toScriptData () + alwaysSucceedingScript = PlutusScriptSerialised dummyStakeValidatorScript + scriptWitness = mkScriptWitness alwaysSucceedingScript NoScriptDatumForStake redeemer stakeAddress = mkScriptStakeAddress testNetworkId alwaysSucceedingScript pure ( utxo diff --git a/hydra-plutus/hydra-plutus.cabal b/hydra-plutus/hydra-plutus.cabal index 1d6b4794eb5..c10d0f3fb48 100644 --- a/hydra-plutus/hydra-plutus.cabal +++ b/hydra-plutus/hydra-plutus.cabal @@ -47,8 +47,8 @@ library Hydra.Contract.Commit Hydra.Contract.CommitError Hydra.Contract.Deposit - Hydra.Contract.Dummy Hydra.Contract.DepositError + Hydra.Contract.Dummy Hydra.Contract.Error Hydra.Contract.Head Hydra.Contract.HeadError From 2abe1aa7b8cbd61365e2cc1199a8578af872897f Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 12:14:08 +0100 Subject: [PATCH 17/24] Use dummyValidatorScript in the cluster scenario --- hydra-cluster/src/Hydra/Cluster/Scenarios.hs | 4 ++-- hydra-tx/src/Hydra/Tx/Utils.hs | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/hydra-cluster/src/Hydra/Cluster/Scenarios.hs b/hydra-cluster/src/Hydra/Cluster/Scenarios.hs index 753ddcdf531..5432c72cb0d 100644 --- a/hydra-cluster/src/Hydra/Cluster/Scenarios.hs +++ b/hydra-cluster/src/Hydra/Cluster/Scenarios.hs @@ -76,7 +76,7 @@ import Hydra.Logging (Tracer, traceWith) import Hydra.Options (DirectChainConfig (..), networkId, startChainFrom) import Hydra.Tx (HeadId, IsTx (balance), Party, txId) import Hydra.Tx.ContestationPeriod (ContestationPeriod (UnsafeContestationPeriod), fromNominalDiffTime) -import Hydra.Tx.Utils (verificationKeyToOnChainId) +import Hydra.Tx.Utils (verificationKeyToOnChainId, dummyValidatorScript) import HydraNode ( HydraClient (..), HydraNodeLog, @@ -445,7 +445,7 @@ singlePartyCommitsScriptBlueprint tracer workDir node hydraScriptsTxId = output "GetUTxOResponse" ["headId" .= headId, "utxo" .= (scriptUTxO <> scriptUTxO')] where prepareScriptPayload = do - let script = alwaysSucceedingNAryFunction 3 + let script = dummyValidatorScript let serializedScript = PlutusScriptSerialised script let scriptAddress = mkScriptAddress networkId serializedScript let datumHash = mkTxOutDatumHash () diff --git a/hydra-tx/src/Hydra/Tx/Utils.hs b/hydra-tx/src/Hydra/Tx/Utils.hs index 92c35f0decc..1c5c851b9ec 100644 --- a/hydra-tx/src/Hydra/Tx/Utils.hs +++ b/hydra-tx/src/Hydra/Tx/Utils.hs @@ -1,4 +1,7 @@ -module Hydra.Tx.Utils where +module Hydra.Tx.Utils + ( module Hydra.Tx.Utils + , dummyValidatorScript + ) where import Hydra.Cardano.Api import Hydra.Prelude hiding (toList) @@ -10,6 +13,7 @@ import Control.Lens ((.~), (^.)) import Data.Map.Strict qualified as Map import Data.Maybe.Strict (StrictMaybe (..)) import GHC.IsList (IsList (..)) +import Hydra.Contract.Dummy (dummyValidatorScript) import Hydra.Contract.Util (hydraHeadV1) import Hydra.Tx.OnChainId (OnChainId (..)) import Ouroboros.Consensus.Shelley.Eras qualified as Ledger From 22b86b6d1c25a65fa71ed2e1e62f0862692142e9 Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 13:26:06 +0100 Subject: [PATCH 18/24] Drop number of fanout utxo to 44 --- hydra-node/test/Hydra/Chain/Direct/StateSpec.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs b/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs index 18ebfccf633..eaab5846bc7 100644 --- a/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs +++ b/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs @@ -736,7 +736,7 @@ forAllFanout action = in action utxo tx & label ("Fanout size: " <> prettyLength (countAssets $ txOuts' tx)) where - maxSupported = 58 + maxSupported = 44 countAssets = getSum . foldMap (Sum . valueSize . txOutValue) From a43d359b901a80ba2a2da427c7ce450cd607cf05 Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 13:26:41 +0100 Subject: [PATCH 19/24] Format --- hydra-cluster/src/Hydra/Cluster/Scenarios.hs | 2 +- hydra-tx/src/Hydra/Tx/Utils.hs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hydra-cluster/src/Hydra/Cluster/Scenarios.hs b/hydra-cluster/src/Hydra/Cluster/Scenarios.hs index 5432c72cb0d..af1726867c3 100644 --- a/hydra-cluster/src/Hydra/Cluster/Scenarios.hs +++ b/hydra-cluster/src/Hydra/Cluster/Scenarios.hs @@ -76,7 +76,7 @@ import Hydra.Logging (Tracer, traceWith) import Hydra.Options (DirectChainConfig (..), networkId, startChainFrom) import Hydra.Tx (HeadId, IsTx (balance), Party, txId) import Hydra.Tx.ContestationPeriod (ContestationPeriod (UnsafeContestationPeriod), fromNominalDiffTime) -import Hydra.Tx.Utils (verificationKeyToOnChainId, dummyValidatorScript) +import Hydra.Tx.Utils (dummyValidatorScript, verificationKeyToOnChainId) import HydraNode ( HydraClient (..), HydraNodeLog, diff --git a/hydra-tx/src/Hydra/Tx/Utils.hs b/hydra-tx/src/Hydra/Tx/Utils.hs index 1c5c851b9ec..e075fecf92a 100644 --- a/hydra-tx/src/Hydra/Tx/Utils.hs +++ b/hydra-tx/src/Hydra/Tx/Utils.hs @@ -1,7 +1,7 @@ -module Hydra.Tx.Utils - ( module Hydra.Tx.Utils - , dummyValidatorScript - ) where +module Hydra.Tx.Utils ( + module Hydra.Tx.Utils, + dummyValidatorScript, +) where import Hydra.Cardano.Api import Hydra.Prelude hiding (toList) From 40df1d9f9c5b3a6eb6b1679b970d9ea00cf02d8b Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 14:31:22 +0100 Subject: [PATCH 20/24] Simplify our dummy script to make all of the tests that use it pass --- hydra-node/hydra-node.cabal | 1 - .../test/Hydra/Chain/Direct/StateSpec.hs | 13 +++--- hydra-node/test/Hydra/Chain/Direct/TxSpec.hs | 8 ++-- hydra-plutus/hydra-plutus.cabal | 2 - hydra-plutus/src/Hydra/Contract/Dummy.hs | 41 +++---------------- 5 files changed, 16 insertions(+), 49 deletions(-) diff --git a/hydra-node/hydra-node.cabal b/hydra-node/hydra-node.cabal index b76c5eb0e14..9ce891ab605 100644 --- a/hydra-node/hydra-node.cabal +++ b/hydra-node/hydra-node.cabal @@ -360,7 +360,6 @@ test-suite tests , lens-aeson , network-simple-wss , plutus-ledger-api >=1.1.1.0 - , plutus-ledger-api:plutus-ledger-api-testlib , plutus-tx , QuickCheck , quickcheck-dynamic >=3.4 && <3.5 diff --git a/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs b/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs index eaab5846bc7..ea0f66182f6 100644 --- a/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs +++ b/hydra-node/test/Hydra/Chain/Direct/StateSpec.hs @@ -117,8 +117,7 @@ import Hydra.Tx.Deposit (DepositObservation (..), observeDepositTx) import Hydra.Tx.Recover (RecoverObservation (..), observeRecoverTx) import Hydra.Tx.Snapshot (ConfirmedSnapshot (InitialSnapshot, initialUTxO)) import Hydra.Tx.Snapshot qualified as Snapshot -import Hydra.Tx.Utils (splitUTxO) -import PlutusLedgerApi.Test.Examples qualified as Plutus +import Hydra.Tx.Utils (dummyValidatorScript, splitUTxO) import PlutusLedgerApi.V3 qualified as Plutus import Test.Aeson.GenericSpecs (roundtripAndGoldenSpecs) import Test.Hydra.Tx.Fixture (slotLength, systemStart, testNetworkId) @@ -384,17 +383,17 @@ genInitTxMutation seedInput tx = genChangeMintingPolicy = pure ( Changes $ - ChangeMintingPolicy alwaysSucceedsV2 + ChangeMintingPolicy alwaysSucceedsV3 : fmap changeMintingPolicy (zip changedOutputsValue [0 ..]) - , "new minting policy: " <> show (hashScript $ PlutusScript alwaysSucceedsV2) + , "new minting policy: " <> show (hashScript $ PlutusScript alwaysSucceedsV3) , NotAHeadPolicy ) -- We do replace the minting policy of all tokens and datum of a head output to -- simulate a faked init transaction. - alwaysSucceedsV2 = PlutusScriptSerialised $ Plutus.alwaysSucceedingNAryFunction 2 + alwaysSucceedsV3 = PlutusScriptSerialised dummyValidatorScript originalPolicyId = HeadTokens.headPolicyId seedInput - fakePolicyId = scriptPolicyId $ PlutusScript alwaysSucceedsV2 + fakePolicyId = scriptPolicyId $ PlutusScript alwaysSucceedsV3 changeMintingPolicy (out, idx) | idx == 0 = ChangeOutput idx $ modifyInlineDatum (replaceHeadId $ toPlutusCurrencySymbol fakePolicyId) out | otherwise = ChangeOutput idx out @@ -428,7 +427,7 @@ genCommitTxMutation utxo tx = fakeScriptAddress = mkScriptAddress @PlutusScriptV3 testNetworkId fakeScript - fakeScript = fromPlutusScript $ Plutus.alwaysSucceedingNAryFunction 3 + fakeScript = fromPlutusScript dummyValidatorScript genAdaOnlyUTxOOnMainnetWithAmountBiggerThanOutLimit :: Gen UTxO genAdaOnlyUTxOOnMainnetWithAmountBiggerThanOutLimit = do diff --git a/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs b/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs index f84b1e6ec17..41c4b812fb1 100644 --- a/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs +++ b/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs @@ -42,7 +42,7 @@ import Hydra.Chain.Direct.Tx ( observeHeadTx, txInToHeadSeed, ) -import Hydra.Contract.Dummy (dummyStakeValidatorScript, dummyValidatorScript) +import Hydra.Contract.Dummy (dummyValidatorScript) import Hydra.Contract.HeadTokens (headPolicyId) import Hydra.Ledger.Cardano.Builder (addInputs, addReferenceInputs, addVkInputs, emptyTxBody, unsafeBuildTransaction) import Hydra.Ledger.Cardano.Evaluate (propTransactionEvaluates) @@ -239,8 +239,8 @@ genBlueprintTxWithUTxO = spendSomeScriptInputs (utxo, txbody) = do let alwaysSucceedingScript = PlutusScriptSerialised dummyValidatorScript - let datum = toScriptData () - let redeemer = toScriptData () + datum <- unsafeHashableScriptData . fromPlutusData <$> arbitrary + redeemer <- unsafeHashableScriptData . fromPlutusData <$> arbitrary let genTxOut = do value <- genValue let scriptAddress = mkScriptAddress testNetworkId alwaysSucceedingScript @@ -289,7 +289,7 @@ genBlueprintTxWithUTxO = , do lovelace <- arbitrary let redeemer = toScriptData () - alwaysSucceedingScript = PlutusScriptSerialised dummyStakeValidatorScript + alwaysSucceedingScript = PlutusScriptSerialised dummyValidatorScript scriptWitness = mkScriptWitness alwaysSucceedingScript NoScriptDatumForStake redeemer stakeAddress = mkScriptStakeAddress testNetworkId alwaysSucceedingScript pure diff --git a/hydra-plutus/hydra-plutus.cabal b/hydra-plutus/hydra-plutus.cabal index c10d0f3fb48..50fe0ac73d1 100644 --- a/hydra-plutus/hydra-plutus.cabal +++ b/hydra-plutus/hydra-plutus.cabal @@ -106,13 +106,11 @@ test-suite tests , hydra-plutus , hydra-prelude , hydra-test-utils - , io-streams , lens , lens-aeson , plutus-ledger-api , process , QuickCheck - , text build-tool-depends: hspec-discover:hspec-discover diff --git a/hydra-plutus/src/Hydra/Contract/Dummy.hs b/hydra-plutus/src/Hydra/Contract/Dummy.hs index 729d5b6c5f5..4ca6a3f2c39 100644 --- a/hydra-plutus/src/Hydra/Contract/Dummy.hs +++ b/hydra-plutus/src/Hydra/Contract/Dummy.hs @@ -1,9 +1,4 @@ {-# LANGUAGE TemplateHaskell #-} -{-# OPTIONS_GHC -fno-specialize #-} -{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:conservative-optimisation #-} -{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:defer-errors #-} --- Plutus core version to compile to. In babbage era, that is Cardano protocol --- version 7 and 8, only plutus-core version 1.0.0 is available. {-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.0.0 #-} module Hydra.Contract.Dummy where @@ -12,49 +7,25 @@ import Hydra.Cardano.Api (PlutusScriptVersion (PlutusScriptV3)) import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) import Hydra.Prelude -import PlutusLedgerApi.V3 (ScriptContext (scriptContextScriptInfo), ScriptHash, ScriptInfo (RewardingScript), SerialisedScript, UnsafeFromData (unsafeFromBuiltinData), getRedeemer, scriptContextRedeemer, serialiseCompiledCode, toBuiltinData) +import PlutusLedgerApi.V3 (BuiltinData, ScriptContext, ScriptHash, SerialisedScript, serialiseCompiledCode, toOpaque) import PlutusTx (CompiledCode, compile) -import PlutusTx.Prelude (check) -type D = () -type R = () - -dummyValidator :: D -> R -> ScriptContext -> Bool +dummyValidator :: BuiltinData -> BuiltinData -> ScriptContext -> Bool dummyValidator _ _ _ = True compiledDummyValidator :: CompiledCode ValidatorType compiledDummyValidator = - $$(PlutusTx.compile [||wrap dummyValidator||]) + $$(PlutusTx.compile [||fakeWrap dummyValidator||]) where - wrap = wrapValidator @D @R + wrap = wrapValidator @BuiltinData @BuiltinData -wrapFakeStakeValidator :: - (UnsafeFromData datum, UnsafeFromData redeemer) => +fakeWrap :: (datum -> redeemer -> ScriptContext -> Bool) -> ValidatorType -wrapFakeStakeValidator f c = - let - context = unsafeFromBuiltinData c - in - check $ case scriptContextScriptInfo context of - RewardingScript _cred -> - let datum = unsafeFromBuiltinData $ toBuiltinData () - redeemer = unsafeFromBuiltinData $ getRedeemer $ scriptContextRedeemer context - in f datum redeemer context - _ -> False -{-# INLINEABLE wrapFakeStakeValidator #-} - -compiledDummyStakeValidator :: CompiledCode ValidatorType -compiledDummyStakeValidator = - $$(PlutusTx.compile [||wrapFakeStakeValidator dummyValidator||]) - where - wrap = wrapValidator @D @R +fakeWrap _ _ = toOpaque () dummyValidatorScript :: SerialisedScript dummyValidatorScript = serialiseCompiledCode compiledDummyValidator -dummyStakeValidatorScript :: SerialisedScript -dummyStakeValidatorScript = serialiseCompiledCode compiledDummyStakeValidator - dummyValidatorHash :: ScriptHash dummyValidatorHash = scriptValidatorHash PlutusScriptV3 dummyValidatorScript From c3d184ba7e89700132b973c2686d93e2b3a963df Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 14:40:43 +0100 Subject: [PATCH 21/24] Format --- hydra-node/hydra-node.cabal | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hydra-node/hydra-node.cabal b/hydra-node/hydra-node.cabal index 9ce891ab605..7288dbbacdc 100644 --- a/hydra-node/hydra-node.cabal +++ b/hydra-node/hydra-node.cabal @@ -359,10 +359,10 @@ test-suite tests , lens , lens-aeson , network-simple-wss - , plutus-ledger-api >=1.1.1.0 + , plutus-ledger-api >=1.1.1.0 , plutus-tx , QuickCheck - , quickcheck-dynamic >=3.4 && <3.5 + , quickcheck-dynamic >=3.4 && <3.5 , quickcheck-instances , random , regex-tdfa @@ -372,7 +372,7 @@ test-suite tests , text , time , tls - , typed-protocols-examples >=0.1.0.0 + , typed-protocols-examples >=0.1.0.0 , vector , websockets From 25274978b2a4011f143ac2afebfe99b7668ead20 Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 15:03:51 +0100 Subject: [PATCH 22/24] Reduce number of parties to 7 --- hydra-node/src/Hydra/Chain.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hydra-node/src/Hydra/Chain.hs b/hydra-node/src/Hydra/Chain.hs index 4e1d3638966..468920cb7ac 100644 --- a/hydra-node/src/Hydra/Chain.hs +++ b/hydra-node/src/Hydra/Chain.hs @@ -47,7 +47,7 @@ maxMainnetLovelace = Coin 100_000_000 -- validators (see 'computeCollectComCost' 'computeAbortCost'). A too high -- enough number would be detected by property and acceptance tests. maximumNumberOfParties :: Int -maximumNumberOfParties = 8 +maximumNumberOfParties = 7 -- | Data type used to post transactions on chain. It holds everything to -- construct corresponding Head protocol transactions. From 42eef1a53d4ec42c65c8040284bccb141cf14ec2 Mon Sep 17 00:00:00 2001 From: Sasha Bogicevic Date: Fri, 8 Nov 2024 16:25:40 +0100 Subject: [PATCH 23/24] PR review comments --- hydra-cluster/src/Hydra/Cluster/Scenarios.hs | 1 - hydra-node/test/Hydra/Chain/Direct/TxSpec.hs | 2 +- hydra-tx/test/Hydra/Tx/Contract/Commit.hs | 6 ++---- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/hydra-cluster/src/Hydra/Cluster/Scenarios.hs b/hydra-cluster/src/Hydra/Cluster/Scenarios.hs index af1726867c3..32655d5b5ca 100644 --- a/hydra-cluster/src/Hydra/Cluster/Scenarios.hs +++ b/hydra-cluster/src/Hydra/Cluster/Scenarios.hs @@ -110,7 +110,6 @@ import Network.HTTP.Req ( ) import Network.HTTP.Simple (getResponseBody, httpJSON, setRequestBodyJSON) import Network.HTTP.Types (urlEncode) -import PlutusLedgerApi.Test.Examples (alwaysSucceedingNAryFunction) import System.Directory (removeDirectoryRecursive) import System.FilePath (()) import Test.Hydra.Tx.Fixture (testNetworkId) diff --git a/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs b/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs index 41c4b812fb1..f08d9d55c5f 100644 --- a/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs +++ b/hydra-node/test/Hydra/Chain/Direct/TxSpec.hs @@ -288,7 +288,7 @@ genBlueprintTxWithUTxO = [ pure (utxo, txbody) , do lovelace <- arbitrary - let redeemer = toScriptData () + let redeemer = arbitrary `generateWith` 42 alwaysSucceedingScript = PlutusScriptSerialised dummyValidatorScript scriptWitness = mkScriptWitness alwaysSucceedingScript NoScriptDatumForStake redeemer stakeAddress = mkScriptStakeAddress testNetworkId alwaysSucceedingScript diff --git a/hydra-tx/test/Hydra/Tx/Contract/Commit.hs b/hydra-tx/test/Hydra/Tx/Contract/Commit.hs index cad4d7e674e..77afd1c7501 100644 --- a/hydra-tx/test/Hydra/Tx/Contract/Commit.hs +++ b/hydra-tx/test/Hydra/Tx/Contract/Commit.hs @@ -127,8 +127,8 @@ genCommitMutation (tx, _utxo) = (party, mCommit, toPlutusCurrencySymbol otherHeadId) pure $ ChangeOutput 0 $ mutateHeadId commitTxOut , SomeMutation (pure $ toErrorCode LockedValueDoesNotMatch) MutateCommitOutputValue . ChangeOutput 0 <$> do - mutatedValue <- scale (`div` 2) genValue `suchThat` (/= commitOutputValue) - pure $ commitTxOut{txOutValue = mutatedValue <> negateValue mutatedValue} + let totalValueMinusOneLovelace = negateValue (lovelaceToValue 1) <> txOutValue healthyInitialTxOut <> foldMap (txOutValue . snd) (UTxO.pairs healthyCommittedUTxO) + pure $ commitTxOut{txOutValue = totalValueMinusOneLovelace} , SomeMutation (pure $ toErrorCode LockedValueDoesNotMatch) MutateCommittedValue <$> do mutatedValue <- scale (`div` 2) genValue `suchThat` (/= aCommittedOutputValue) let mutatedOutput = modifyTxOutValue (const mutatedValue) aCommittedTxOut @@ -169,8 +169,6 @@ genCommitMutation (tx, _utxo) = <$> (changeMintedTokens tx =<< genMintedOrBurnedValue) ] where - TxOut{txOutValue = commitOutputValue} = commitTxOut - commitTxOut = fromJust $ txOuts' tx !!? 0 allComittedTxIn = UTxO.inputSet healthyCommittedUTxO & toList From ea6d6741c3a434c86e7bfb483fa38e530debc98f Mon Sep 17 00:00:00 2001 From: Noon van der Silk Date: Mon, 11 Nov 2024 11:28:24 +0000 Subject: [PATCH 24/24] Fix dummy script haddock error; remove un-needed dep --- hydra-cluster/hydra-cluster.cabal | 3 +-- hydra-plutus/src/Hydra/Contract/Dummy.hs | 4 +++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hydra-cluster/hydra-cluster.cabal b/hydra-cluster/hydra-cluster.cabal index bf8abd36b15..fa22cf36d6c 100644 --- a/hydra-cluster/hydra-cluster.cabal +++ b/hydra-cluster/hydra-cluster.cabal @@ -85,7 +85,7 @@ library build-depends: , aeson , async - , base >=4.7 && <5 + , base >=4.7 && <5 , bytestring , cardano-slotting , containers @@ -106,7 +106,6 @@ library , lens , lens-aeson , optparse-applicative - , plutus-ledger-api:plutus-ledger-api-testlib , process , QuickCheck , req diff --git a/hydra-plutus/src/Hydra/Contract/Dummy.hs b/hydra-plutus/src/Hydra/Contract/Dummy.hs index 4ca6a3f2c39..31900509520 100644 --- a/hydra-plutus/src/Hydra/Contract/Dummy.hs +++ b/hydra-plutus/src/Hydra/Contract/Dummy.hs @@ -1,5 +1,7 @@ {-# LANGUAGE TemplateHaskell #-} -{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.0.0 #-} +{-# OPTIONS_GHC -fplugin PlutusTx.Plugin #-} +{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:defer-errors #-} +{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:target-version=1.1.0 #-} module Hydra.Contract.Dummy where