diff --git a/Makefile b/Makefile index 7ad8fcb..750f70e 100644 --- a/Makefile +++ b/Makefile @@ -31,4 +31,4 @@ bidder_deposit_validator: cabal v2-run hydra-auction-onchain-exe -- --script bidder_deposit auction_metadata_validator: - cabal v2-run hydra-auction-onchain-exe -- --script metadata + cabal v2-run hydra-auction-onchain-exe -- --script auction_metadata diff --git a/app/Main.hs b/app/Main.hs index cb4f2c9..d3b1f90 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -5,6 +5,8 @@ import HydraAuctionOnchain.Scripts , auctionMetadataValidatorUntyped , auctionMintingPolicyUntyped , bidderDepositValidatorUntyped + , delegateGroupMetadataValidatorUntyped + , delegateGroupMintingPolicyUntyped , standingBidValidatorUntyped , writeScript ) @@ -30,6 +32,8 @@ main = writeStandingBidValidator writeBidderDepositValidator writeAuctionMetadataValidator + writeDelegateGroupMintingPolicy + writeDelegateGroupMetadataValidator AuctionMintingPolicy -> writeAuctionMintingPolicy AuctionEscrowValidator -> @@ -40,6 +44,10 @@ main = writeBidderDepositValidator AuctionMetadataValidator -> writeAuctionMetadataValidator + DelegateGroupMintingPolicy -> + writeDelegateGroupMintingPolicy + DelegateGroupMetadataValidator -> + writeDelegateGroupMetadataValidator writeAuctionMintingPolicy :: IO () writeAuctionMintingPolicy = @@ -76,6 +84,20 @@ writeAuctionMetadataValidator = "compiled/auction_metadata_validator.plutus" auctionMetadataValidatorUntyped +writeDelegateGroupMintingPolicy :: IO () +writeDelegateGroupMintingPolicy = + writeScript + "Delegate group minting policy" + "compiled/delegate_group_minting_policy.plutus" + delegateGroupMintingPolicyUntyped + +writeDelegateGroupMetadataValidator :: IO () +writeDelegateGroupMetadataValidator = + writeScript + "Delegate group metadata validator" + "compiled/delegate_group_metadata_validator.plutus" + delegateGroupMetadataValidatorUntyped + data ScriptToCompile = AllScripts | AuctionMintingPolicy @@ -83,6 +105,8 @@ data ScriptToCompile | StandingBidValidator | BidderDepositValidator | AuctionMetadataValidator + | DelegateGroupMintingPolicy + | DelegateGroupMetadataValidator deriving stock (Show, Eq) toScript :: String -> Maybe ScriptToCompile @@ -92,7 +116,9 @@ toScript = \case "auction_escrow" -> Just AuctionEscrowValidator "standing_bid" -> Just StandingBidValidator "bidder_deposit" -> Just BidderDepositValidator - "metadata" -> Just AuctionMetadataValidator + "auction_metadata" -> Just AuctionMetadataValidator + "delegate_group_mp" -> Just DelegateGroupMintingPolicy + "delegate_group_metadata" -> Just DelegateGroupMetadataValidator _ -> Nothing scriptToCompile :: Parser ScriptToCompile diff --git a/compiled/delegate_group_metadata_validator.plutus b/compiled/delegate_group_metadata_validator.plutus new file mode 100644 index 0000000..147e45a --- /dev/null +++ b/compiled/delegate_group_metadata_validator.plutus @@ -0,0 +1,8 @@ +{ + "cborHex": "5902df5902dc0100003232323232323232323232323232322223232533300e3370e666444666601200490001199980500124000eb4dd58008019bab301230113013001002008480084c94ccc03ccc88cc0088cc0088cdd79ba6002374c00229404cc0049280a51333222330102253330130011225001153330143375e602c60300020082600a603000226004602e0020024644460040066eacc058004dd4801800991118010019919911980799bb000200100e37520146ea0004c8cdc0a400000290010a4c2a660209210544474d4431001632332300b233300237560024644460040066e9800448940048c94ccc044d5d180089128008911801001998059299980899baf0013750900009128008911801001800800991bab3013323013301330133013001301400130123013003153300f4910544474d44300016323012301130130013232323333300e222533301200112250011533301330023017001132223002003301700113300300230160012323375e6e9cc05c010dd3980b800980a980b00080090008a99808a4929707472794f776e496e7075743a20436f756c64206e6f742066696e64206d79206f776e20696e7075740016375860266028004646464a66602266e1d2002002130150011533012491525061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b206174207372632f506c7574617263682f45787472612f536372697074436f6e746578742e68733a37383a352d31350016301600230110013754602460226026006602260240046eb8c040c04400c8c008dd480091111980491299980600088028a99980699baf300f301100100613004301330110011300230100010014890e44454c45474154455f47524f555000223300522533300800110051323330053010300e00223300833760601a601e00600200420026004601800200297adef6c605740464600446600400400246004466004004002aae7d5cd2b9c5573aae895d0918011baa0015573d", + "description": "Delegate group metadata validator", + "params": [], + "rawHex": "5902dc0100003232323232323232323232323232322223232533300e3370e666444666601200490001199980500124000eb4dd58008019bab301230113013001002008480084c94ccc03ccc88cc0088cc0088cdd79ba6002374c00229404cc0049280a51333222330102253330130011225001153330143375e602c60300020082600a603000226004602e0020024644460040066eacc058004dd4801800991118010019919911980799bb000200100e37520146ea0004c8cdc0a400000290010a4c2a660209210544474d4431001632332300b233300237560024644460040066e9800448940048c94ccc044d5d180089128008911801001998059299980899baf0013750900009128008911801001800800991bab3013323013301330133013001301400130123013003153300f4910544474d44300016323012301130130013232323333300e222533301200112250011533301330023017001132223002003301700113300300230160012323375e6e9cc05c010dd3980b800980a980b00080090008a99808a4929707472794f776e496e7075743a20436f756c64206e6f742066696e64206d79206f776e20696e7075740016375860266028004646464a66602266e1d2002002130150011533012491525061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b206174207372632f506c7574617263682f45787472612f536372697074436f6e746578742e68733a37383a352d31350016301600230110013754602460226026006602260240046eb8c040c04400c8c008dd480091111980491299980600088028a99980699baf300f301100100613004301330110011300230100010014890e44454c45474154455f47524f555000223300522533300800110051323330053010300e00223300833760601a601e00600200420026004601800200297adef6c605740464600446600400400246004466004004002aae7d5cd2b9c5573aae895d0918011baa0015573d", + "role": "ValidatorRole", + "version": "ScriptV2" +} \ No newline at end of file diff --git a/compiled/delegate_group_minting_policy.plutus b/compiled/delegate_group_minting_policy.plutus new file mode 100644 index 0000000..d58f17e --- /dev/null +++ b/compiled/delegate_group_minting_policy.plutus @@ -0,0 +1,11 @@ +{ + "cborHex": "59063b590638010000323232323232323232323232323232323232323232323232323232323232323232322222333322223232323253330273370e90010010992999814198071980800280098149980980b9919b81480000052002149854cc09d2410544474d50380016301b323756605864605c604a002605c0026056605a00a264646464a666056660226602601000260586602c03490010a9998159919800925114a064664604a44a666050002244a0022666006606600244460040062600460680024a66605a66ebc034c0c4c0cc004488c00800c4894004004dd61817801899299981619b87333222333301c002480008cccc074009200075a6eac00400cdd598181818981900080480da400426464a66605c66e3cdd718190008058a99981719918139129998150008a5115332233303300200114a06006606a00226004606c002466446605244a666058002294054ccc0cccdd7981b8008018a51130023038001002375860666056606800c0026eb0c0c8c0cc004526153302d49010544474d50370016153302d4910544474d5036001630330013302a49010544474d5035003232323253330303370e9002001098189919191919002a99981a19b87480000084c8c8c94ccc0dd4cc8cc0e000452899b87001480004cdc3800a40702646464646464646464646464646493299981e8008a4c2a660860682c60900066eb8004c114004c1140194ccc0fccdc3a400000426464646464646493299981f0008a4c2a6608806a2c6092006660684640046eb8004dd600098230009823001998189190011bae001375800260860022a6607c0622c608a00460800026ea8004c0fc004c0fc00ccc0a88c94ccc0eccdc39b8d001480e0400854cc0e92412c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e670016375c0026eb0004c0f0004c0f001054cc0d9241387074727946726f6d2843757272656e637953796d626f6c293a206d757374206265203238206279746573206c6f6e67206f7220656d7074790016371a0026eb8004c0e000454cc0cc09858c0e8008c0d4004dd5000981a0008819181b00118188009baa001303030293032001153302b4910544474d50340016330294910544474d50330033223302522533302800110311533302f3025303400113030303300110313302522533302800110221325333030300500113302b001300330350021300330350023033001001233223232323253330323370e90000010a5013371e6eb8c0d8004014c0e0008c0cc004dd50009819181a001181818190008069bac302f30283031004153302a4910544474d50320016153302a4910544474d50310016301e3756605c002604a605c002605c0026056605a00a605a00460500026ea800ccc08524010544474d50300032323253330263370e9000001098139bae302a0011028302c00230270013754604e605060520026eb801000c00800488cc0088cc0088cc014008004528099800925014a24466ebcdd30011ba600123300200337520024446602444a66602a002244a0022a66603866ebcc07cc0800040104c014c0800044c008c0840040048c888c00800cdd5980f00091198019ba90023750002446602266ec00080040408c008dd480091111980711299980880088028a99980c19baf301b301c00100613004301f301c00113002301d0010014890e44454c45474154455f47524f5550004901317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f002300822533300b001100513300d30033016001300230170014913f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72004bd701198011192999807980280089128008911801001998029299980799baf00137509000091280089118010018008009180191998011bab001232223002003374c002244a002ae8c88cc00c894ccc018004401c4c8ccc014c054c0480088cc028cdd818091809801800801080098011809000800919180111980100100091801119801001000aab9f4bd6f7b6302ba02300a3002001230093009001223300120011533003002165738ae68888c00800c89400555ceaba15744460046ea800555cf01", + "description": "Delegate group minting policy", + "params": [ + "Ply.Core.Types:AsData#PlutusLedgerApi.V1.Scripts:ScriptHash", + "Ply.Core.Types:AsData#PlutusLedgerApi.V1.Tx:TxOutRef" + ], + "rawHex": "590638010000323232323232323232323232323232323232323232323232323232323232323232322222333322223232323253330273370e90010010992999814198071980800280098149980980b9919b81480000052002149854cc09d2410544474d50380016301b323756605864605c604a002605c0026056605a00a264646464a666056660226602601000260586602c03490010a9998159919800925114a064664604a44a666050002244a0022666006606600244460040062600460680024a66605a66ebc034c0c4c0cc004488c00800c4894004004dd61817801899299981619b87333222333301c002480008cccc074009200075a6eac00400cdd598181818981900080480da400426464a66605c66e3cdd718190008058a99981719918139129998150008a5115332233303300200114a06006606a00226004606c002466446605244a666058002294054ccc0cccdd7981b8008018a51130023038001002375860666056606800c0026eb0c0c8c0cc004526153302d49010544474d50370016153302d4910544474d5036001630330013302a49010544474d5035003232323253330303370e9002001098189919191919002a99981a19b87480000084c8c8c94ccc0dd4cc8cc0e000452899b87001480004cdc3800a40702646464646464646464646464646493299981e8008a4c2a660860682c60900066eb8004c114004c1140194ccc0fccdc3a400000426464646464646493299981f0008a4c2a6608806a2c6092006660684640046eb8004dd600098230009823001998189190011bae001375800260860022a6607c0622c608a00460800026ea8004c0fc004c0fc00ccc0a88c94ccc0eccdc39b8d001480e0400854cc0e92412c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e670016375c0026eb0004c0f0004c0f001054cc0d9241387074727946726f6d2843757272656e637953796d626f6c293a206d757374206265203238206279746573206c6f6e67206f7220656d7074790016371a0026eb8004c0e000454cc0cc09858c0e8008c0d4004dd5000981a0008819181b00118188009baa001303030293032001153302b4910544474d50340016330294910544474d50330033223302522533302800110311533302f3025303400113030303300110313302522533302800110221325333030300500113302b001300330350021300330350023033001001233223232323253330323370e90000010a5013371e6eb8c0d8004014c0e0008c0cc004dd50009819181a001181818190008069bac302f30283031004153302a4910544474d50320016153302a4910544474d50310016301e3756605c002604a605c002605c0026056605a00a605a00460500026ea800ccc08524010544474d50300032323253330263370e9000001098139bae302a0011028302c00230270013754604e605060520026eb801000c00800488cc0088cc0088cc014008004528099800925014a24466ebcdd30011ba600123300200337520024446602444a66602a002244a0022a66603866ebcc07cc0800040104c014c0800044c008c0840040048c888c00800cdd5980f00091198019ba90023750002446602266ec00080040408c008dd480091111980711299980880088028a99980c19baf301b301c00100613004301f301c00113002301d0010014890e44454c45474154455f47524f5550004901317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f002300822533300b001100513300d30033016001300230170014913f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72004bd701198011192999807980280089128008911801001998029299980799baf00137509000091280089118010018008009180191998011bab001232223002003374c002244a002ae8c88cc00c894ccc018004401c4c8ccc014c054c0480088cc028cdd818091809801800801080098011809000800919180111980100100091801119801001000aab9f4bd6f7b6302ba02300a3002001230093009001223300120011533003002165738ae68888c00800c89400555ceaba15744460046ea800555cf01", + "role": "MintingPolicyRole", + "version": "ScriptV2" +} \ No newline at end of file diff --git a/compiled/standing_bid_validator.plutus b/compiled/standing_bid_validator.plutus index 661d810..dc67886 100644 --- a/compiled/standing_bid_validator.plutus +++ b/compiled/standing_bid_validator.plutus @@ -1,11 +1,11 @@ { - "cborHex": "59100d59100a0100003232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323222222333332222232325333058332232323370e6660b4444a6660bc002200426600666e00009200230620014800000520023304e23303132306130620013060305f3061001004001375860bc60be002605c0020042a6660b06602000e60b860b660ba002264a6660b2664466064460066eacc188004004c88cc0c88c00cdd69831000800919b8700148000cc88ccc8c04488dd3198019bab002375600244666024446ea0cdc09bad002375a0020040020040026eac0052f5bded8c02646464a6660b866e1d2000002132533305d3301500c001132533305e3330304a04a660726464646464646464a66082666660446eb8c1acc1a801400c0200092201014000133333022375c60d600a6eb8c1acc1a8010c1ac0100052210145003322332232533306b3371200290000801099b8a333069222533306d00110021330033371400460e400260e20020746660d2444a6660dc66e24009200014bd620998318009980199b81002480080040040ec008cdc08011b8d0014822804cdc5181c80b99b8a303900137666ea0008dd6983500299191919299983519b874800800854cc19d24013470616464725061796d656e744b657948617368556e736166653a206661696c656420746f20676574207061796d656e7420706b6800161375c60dc00260de00460d40026ea8c1acc1b0004c1a800cc8cdc5181b80a981b8009bae30693068002375c60d060be60d202460d060ce00660ca00260c800260ca00460c660c460c801a2666062646466e24008004dd69832183198328011bad30633049306400d23232323371266e0000c004008dd69833191833182680098338081bad306530643066003375a60c860c660ca002018002264a6660be6606e608601a0022930a9982e248105535442443800163062304a3063008153305b4901055354424437001633059491055354424436003232323253330613370e9002001098299919191919002a99983299b87480000084c8c8c8c8c8c8c926533306a001149854cc1a014c58c1b40194ccc1a4cdc3a400000426464646464646464646464646464646493299983b8008a4c2a660ea0c02c60f40066eb8004c1e4004c1dc00cdd7000983b000983a0019bad00130730013071006533306d3370e900000109919191919191919191924ca6660ea0022930a9983982f0b183c0019bae0013077001307500653330713370e900000109919191919191919191919191924ca6660f80022930a9983d0328b183f803299983d99b87480000084c8c8c8c8c8c8c926533308001001149854cc1f81a458c20c040194ccc1fccdc3a4000004264646464646464932999842008008a4c2a66104020da2c610e0200ca6661060266e1d2000002132325333085013370e6e340052038132324994ccc2140400452615330830106e1630880100315330820105816375c002610e020022a6661060266e1d2002002132325333085013370e6e340052038132324994ccc2140400452615330830106e1630880100315330820105916375c002610e020022a66100020d82c6110020046106020026ea8004c20c0400454ccc1fccdc3a4004004264646464646464646464932999843808008a4c2a6610a020e02c6114020066eb4004c22404004c21c0400cdd68009843008009842008019bad001308301001153307c06816308401002307f001375400260fe0022a6660f666e1d20020021324994ccc1e8004526153307806316153307806416308001002307b001375400260f600260f200ca6660ea66e1d20000021323253330773370e6e340052038132324994ccc1dc004526153307506016307a003153307404a16375c00260f20022a6660ea66e1d20020021323253330773370e6e340052038132324994ccc1dc004526153307506016307a003153307404b16375c00260f20022a660e40bc2c60f400460ea0026ea8004c1d400454cc1b816858c1d8008c1c4004dd500098388008a9983502b0b183900118368009baa001306d001153306605216306e0023069001375400260d20022a6660ca66e1d20020021324994ccc190004526153306204d16153306204e16306a0023065001375400260ca00220c460cc00460c20026ea8004c184c160c18800454cc16924010553544244350016330584910553544244340033223304d23303430633064001003375860c460b260c6002606400a00c2a6660b866e1d200200213232533305e33035233223305f22533306200114a02a6660c666ebcc19c00400c5288980118330008011bac306330620030010011533305e33036304200c3062002149854cc16d241065354424431300016153305b4910553544244390016375860c260ae60c4016609060c200c264a6660ba66644464646464666444660024600600220069408c020004004cc88cc0048c888c00800cc00c00448940048c8c8c8c80154ccc19ccdc3a40000042649329998330008a4c2a660c809e2c2a6660ce66e1d20020021324994ccc198004526153306404f16153330673370e900200109924ca6660cc0022930a998320278b0a99983399b87480180084c9265333066001149854cc19013c5854cc19014058c1b0008c19c004dd50009999111983211299983380089128008a99983419baf306a306c00100413005306c00113002306b001001232223002003306a0010010033374a90011982b80082b183298330011bab3064304a3065002232323253330613370e90000010a50153330613370e90030010a5014a260cc00460c20026ea800401c004526153305a490106535442443132001633058491065354424431310033223304d23370e6660aa646eacc190c18cc194004c18cc188c19000403800d2002375860c460c600291010741554354494f4e000063061002305c001375400a2a660ac9210553544244330016305c3051305d002153305549010553544244320016153305549105535442443100163305349105535442443000323232533305a3370e90010010991919982d111299982f00089128008a99982f9801183180089911180100198318008998018011831000919baf3061306200100300137586460c060c200260be60c000c60bc00220b660be00460b40026ea8c16cc168c170008c168c16c004dd700280200180100091119998020019100100100091824980100091191911980080180111129998270008998220018010991919299982919baf002001133047337600046601260b000c60b00066660104400400a60aa0082a6660a466e40dd70011bae0011330470063333008220010033055004005133047003333300822001006005305500430530023052004305300122533304c0021001133330032200130510023050002001223330030020040012223370e6660806eacc138c134c13c00400c00920024890c5354414e44494e475f42494400222223253302930014a0260029448cccccc01c00401000c0088ccdca8030008038a5022223333005004003232303c3371402c66e28dd71827182680099b8a017337146eb8c138004cdc500c19b8a00333714008032609c00220924466600600246600a0024464607666e9520003303e37520026607c6ea40080f4cdc500619b8a002337146601a00a00666e28c04c00c05c41188c8c8c8c94ccc11ccdc3a400400420902646464a66609466e1d20000021323232533304d3370e900100108270991919299982819b87480080084c108c8c8888cc008014010dd7182a8011bae305400a13042323222233003005004375c60aa0046eb8c150028c154008c140004dd51828800982900118268009baa304e0011303c322223001004375c609c008609e00460940026ea8c12cc128010c130008c11c004dd518240009824000919980091119800802803111198008028031119800803003a44101390048810146004881011d004881012a0048810158002233300122533303f0041005100f22533303f004100610072533303e0031007100848901010048810121004881012000488101610048810160002333001714e2880052210d846a5369676e617475726531580048810ba201276761646472657373004881024058004881004881010000237666ea4004888c8c8c94ccc0d0cdc3a4004004200c2600a6070002607200460680026ea80052412c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e670049012c7074727946726f6d285053637269707448617368293a206d757374206265203238206279746573206c6f6e6700223375e6e9cc0c8008dd3981900091918181818800981798171818000918141129998158008a5115330063003303000113002302f00122323253300633005300f3030002300f3030001133005300f3030302f001300f3030302f0023030002302f0022232323232533302d53300b5330070021001153300730090021300900113300a00400313300e004003300e3030302f004300d302f302e004302e002302d0022233302800200100314a0466604a0029412891299801998030010008998028010009198118008010a512232323253330253370e90000010991919299981419b87480000085288a50302d002302800137540082a66604a66e1d2002002132323253330283370e900100109919b87375a605a00a0026eb4c0b0004528181680118140009baa004132323253330283370e90020010a5114a0605a00460500026ea8010c0a8008c094004dd500111191919299981219b87480000085288a99981219b87480080084c8c8c94ccc09ccdc3a4000004294054ccc09ccdc3a400800429444cdc41bad302b004375a60560026058004604e0026ea80104c8c8c94ccc09ccdc3a40080042944528181600118138009baa004302900230240013754004466e1cc084dd5000a4004044464660066eb4c088004dd698111810800980b18110009119ba548000cc048cdd2a40006602466e952002330123750004022660240060226602466e952000330123374a9001198091ba8001011330120040110114c0103d87a80004c0103d87980004901317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f0049013f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72002301a300200123019300200123018300200123017300200123016300c00122300333006002001300e225333011001101315333012300330150011300430160011013574644460040064601844a66601e0022008264a666022600800226600c00260066028004260066028004602800297ae05740444666600800490001199980280124000eb4dd5800801918011ba900122223300a22533300d00110051533300e3375e6020602400200c2600860286024002260046022002002460166004002460146004002460126012002446600240022a660060042cae708c8c0088cc0080080048c0088cc00800800555cfab9a2250015573aae895d0918011baa0015573d", + "cborHex": "59104159103e0100003232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323222222333332222232325333055332232323370e6660ae444a6660b6002200426600666e000092002305f0014800000520023304b23303132305e305f001305d305c305e001004001375860b660b8002605c0020042a6660aa6602000e60b260b060b4002264a6660ac664466064460066eacc17c004004c88cc0c88c00cdd6982f800800919b8700148000cc88ccc8c04488dd3198019bab002375600244666024446ea0cdc09bad002375a0020040020040026eac0052f5bded8c02646464a6660b266e1d2000002132533305a3301500c001132533305b3330304a04a660726464646464646464a66082666660446eb8c1a0c19c01400c0200092201014000133333022375c60d000a6eb8c1a0c19c010c1a0010005221014500332233223253330683371200290000801099b8a333066222533306a00110021330033371400460de00260dc0020746660cc444a6660d666e24009200014bd620998300009980199b81002480080040040ec008cdc08011b8d0014822804cdc5181c80b99b8a303900137666ea0008dd6983380299191919299983399b874800800854cc19124013470616464725061796d656e744b657948617368556e736166653a206661696c656420746f20676574207061796d656e7420706b6800161375c60d600260d800460ce0026ea8c1a0c1a4004c19c00cc8cdc5181b80a981b8009bae30663065002375c60ca60b860cc02460ca60c800660c400260c200260c400460c060be60c201a2666062646466e24008004dd69830983018310011bad30603046306100d23232323371266e0000c004008dd69831991831982500098320081bad306230613063003375a60c260c060c4002018002264a6660b86606e646644664466e95200033056002330560010553374a90001982a0011982a02302999ba548000cc150004cc15011814ccdd2a40000a266e952002330520010513060304a306100d001149854cc16524010553544244380016305f30473060008153305849010553544244370016330564910553544244360032323232533305e3370e9002001098281919191919002a99983119b87480000084c8c8c8c8c8c8c9265333067001149854cc19414058c1a80194ccc198cdc3a400000426464646464646464646464646464646493299983a0008a4c2a660e40ba2c60ee0066eb8004c1d8004c1d000cdd7000983980098388019bad0013070001306e006533306a3370e900000109919191919191919191924ca6660e40022930a9983802d8b183a8019bae00130740013072006533306e3370e900000109919191919191919191919191924ca6660f20022930a9983b8310b183e003299983c19b87480000084c8c8c8c8c8c8c926533307d001149854cc1ec19858c200040194ccc1f0cdc3a4000004264646464646464932999840808008a4c2a660fe0d42c61080200ca6661000266e1d2000002132325333082013370e6e340052038132324994ccc2080400452615330800106b16308501003153307f05816375c0026108020022a6661000266e1d2002002132325333082013370e6e340052038132324994ccc2080400452615330800106b16308501003153307f05916375c0026108020022a660fa0d22c610a020046100020026ea8004c2000400454ccc1f0cdc3a4004004264646464646464646464932999842008008a4c2a66104020da2c610e020066eb4004c21804004c2100400cdd68009841808009840808019bad001308001001153307906516308101002307c001375400260f80022a6660f066e1d20020021324994ccc1dc004526153307506016153307506116307d0023078001375400260f000260ec00ca6660e466e1d20000021323253330743370e6e340052038132324994ccc1d0004526153307205d163077003153307104a16375c00260ec0022a6660e466e1d20020021323253330743370e6e340052038132324994ccc1d0004526153307205d163077003153307104b16375c00260ec0022a660de0b62c60ee00460e40026ea8004c1c800454cc1ac15c58c1cc008c1b8004dd500098370008a998338298b183780118350009baa001306a001153306304f16306b0023066001375400260cc0022a6660c466e1d20020021324994ccc184004526153305f04a16153305f04b1630670023062001375400260c400220be60c600460bc0026ea8004c178c154c17c00454cc15d24010553544244350016330554910553544244340033223304a23303430603061001003375860be60ac60c0002606400a00c2a6660b266e1d200200213232533305b33035233223305c22533305f00114a02a6660c066ebcc19000400c5288980118318008011bac3060305f0030010011533305b330363233223374a90001982999ba548000cc14ccdd2a4004660a66ea0008148cc14c114148cc14ccdd2a4000660a666e9520023305337500020a4660a6980103d8798000052052375a60c00026eb4c180c17c004c150c180030c17c0085261533058490106535442443130001615330584910553544244390016375860bc60a860be016608a60bc00c264a6660b466644464646464666444660024600600220069408c020004004cc88cc0048c888c00800cc00c00448940048c8c8c8c80154ccc190cdc3a40000042649329998318008a4c2a660c20982c2a6660c866e1d20020021324994ccc18c004526153306104c16153330643370e900200109924ca6660c60022930a998308260b0a99983219b87480180084c9265333063001149854cc1841305854cc18413458c1a4008c190004dd50009999111983091299983200089128008a99983299baf3067306900100413005306900113002306800100123222300200330670010010033374a90011982a000829983118318011bab3061304730620022323232533305e3370e90000010a501533305e3370e90030010a5014a260c600460bc0026ea800401c0045261533057490106535442443132001633055491065354424431310033223304a23370e6660a4646eacc184c180c188004c180c17cc18400403800d2002375860be60c000291010741554354494f4e00006305e0023059001375400a2a660a692105535442443300163059304e305a00215330524901055354424432001615330524910553544244310016330504910553544244300032323253330573370e90010010991919982b911299982d80089128008a99982e180118300008991118010019830000899801801182f800919baf305e305f00100300137586460ba60bc00260b860ba00c60b600220b060b800460ae0026ea8c160c15cc164008c15cc160004dd700280200180100091119998020019100100100091823180100091191911980080180111129998258008998208018010991919299982799baf002001133044337600046601260aa00c60aa0066660104400400a60a40082a66609e66e40dd70011bae001133044006333300822001003305200400513304400333330082200100600530520043050002304f004305000122533304900210011333300322001304e002304d002001223330030020040012223370e66607a6eacc12cc128c13000400c00920024890c5354414e44494e475f42494400222223253302930014a0260029448cccccc01c00401000c0088ccdca8030008038a502222333300500400323230393371402c66e28dd71825982500099b8a017337146eb8c12c004cdc500c19b8a003337140080326096002208c4466600600246600a0024464607066e9520003303b3752002660766ea40080e8cdc500619b8a002337146601a00a00666e28c04c00c05c410c8c8c8c8c94ccc110cdc3a4004004208a2646464a66608e66e1d20000021323232533304a3370e900100108258991919299982699b87480080084c0fcc8c8888cc008014010dd718290011bae305100a1303f323222233003005004375c60a40046eb8c144028c148008c134004dd51827000982780118250009baa304b00113039322223001004375c60960086098004608e0026ea8c120c11c010c124008c110004dd518228009822800919980091119800802803111198008028031119800803003a44101390048810146004881011d004881012a0048810158002233300122533303c0041005100f22533303c004100610072533303b0031007100848901010048810121004881012000488101610048810160002333001714e2880052210d846a5369676e617475726531580048810ba201276761646472657373004881024058004881004881010000237666ea4004888c8c8c94ccc0c4cdc3a4004004200c2600a606a002606c00460620026ea80052412c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e670049012c7074727946726f6d285053637269707448617368293a206d757374206265203238206279746573206c6f6e6700223375e6e9cc0bc008dd3981780091918169817000981618159816800918129129998140008a5115330063003302d00113002302c00122323253300633005300f302d002300f302d001133005300f302d302c001300f302d302c002302d002302c0022232323232533302a53300b5330070021001153300730090021300900113300a00400313300e004003300e302d302c004300d302c302b004302b002302a0022233302500200100314a046660440029412891299801998030010008998028010009198100008010a512232323253330223370e90000010991919299981299b87480000085288a50302a002302500137540082a66604466e1d2002002132323253330253370e900100109919b87375a605400a0026eb4c0a4004528181500118128009baa004132323253330253370e90020010a5114a06054004604a0026ea8010c09c008c088004dd500111191919299981099b87480000085288a99981099b87480080084c8c8c94ccc090cdc3a4000004294054ccc090cdc3a400800429444cdc41bad3028004375a6050002605200460480026ea80104c8c8c94ccc090cdc3a40080042944528181480118120009baa004302600230210013754004466e1cc078dd5000a400403e98103d87a80004901317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f0049013f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72002301a300200123019300200123018300200123017300200123016300c00122300333006002001300e225333011001101315333012300330150011300430160011013574644460040064601844a66601e0022008264a666022600800226600c00260066028004260066028004602800297ae05740444666600800490001199980280124000eb4dd5800801918011ba900122223300a22533300d00110051533300e3375e6020602400200c2600860286024002260046022002002460166004002460146004002460126012002446600240022a660060042cae708c8c0088cc0080080048c0088cc00800800555cfab9a2250015573aae895d0918011baa0015573d", "description": "Standing bid validator", "params": [ "Ply.Core.Types:AsData#PlutusLedgerApi.V1.Value:CurrencySymbol", "Ply.Core.Types:AsData#HydraAuctionOnchain.Types.AuctionTerms:AuctionTerms" ], - "rawHex": "59100a0100003232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323222222333332222232325333058332232323370e6660b4444a6660bc002200426600666e00009200230620014800000520023304e23303132306130620013060305f3061001004001375860bc60be002605c0020042a6660b06602000e60b860b660ba002264a6660b2664466064460066eacc188004004c88cc0c88c00cdd69831000800919b8700148000cc88ccc8c04488dd3198019bab002375600244666024446ea0cdc09bad002375a0020040020040026eac0052f5bded8c02646464a6660b866e1d2000002132533305d3301500c001132533305e3330304a04a660726464646464646464a66082666660446eb8c1acc1a801400c0200092201014000133333022375c60d600a6eb8c1acc1a8010c1ac0100052210145003322332232533306b3371200290000801099b8a333069222533306d00110021330033371400460e400260e20020746660d2444a6660dc66e24009200014bd620998318009980199b81002480080040040ec008cdc08011b8d0014822804cdc5181c80b99b8a303900137666ea0008dd6983500299191919299983519b874800800854cc19d24013470616464725061796d656e744b657948617368556e736166653a206661696c656420746f20676574207061796d656e7420706b6800161375c60dc00260de00460d40026ea8c1acc1b0004c1a800cc8cdc5181b80a981b8009bae30693068002375c60d060be60d202460d060ce00660ca00260c800260ca00460c660c460c801a2666062646466e24008004dd69832183198328011bad30633049306400d23232323371266e0000c004008dd69833191833182680098338081bad306530643066003375a60c860c660ca002018002264a6660be6606e608601a0022930a9982e248105535442443800163062304a3063008153305b4901055354424437001633059491055354424436003232323253330613370e9002001098299919191919002a99983299b87480000084c8c8c8c8c8c8c926533306a001149854cc1a014c58c1b40194ccc1a4cdc3a400000426464646464646464646464646464646493299983b8008a4c2a660ea0c02c60f40066eb8004c1e4004c1dc00cdd7000983b000983a0019bad00130730013071006533306d3370e900000109919191919191919191924ca6660ea0022930a9983982f0b183c0019bae0013077001307500653330713370e900000109919191919191919191919191924ca6660f80022930a9983d0328b183f803299983d99b87480000084c8c8c8c8c8c8c926533308001001149854cc1f81a458c20c040194ccc1fccdc3a4000004264646464646464932999842008008a4c2a66104020da2c610e0200ca6661060266e1d2000002132325333085013370e6e340052038132324994ccc2140400452615330830106e1630880100315330820105816375c002610e020022a6661060266e1d2002002132325333085013370e6e340052038132324994ccc2140400452615330830106e1630880100315330820105916375c002610e020022a66100020d82c6110020046106020026ea8004c20c0400454ccc1fccdc3a4004004264646464646464646464932999843808008a4c2a6610a020e02c6114020066eb4004c22404004c21c0400cdd68009843008009842008019bad001308301001153307c06816308401002307f001375400260fe0022a6660f666e1d20020021324994ccc1e8004526153307806316153307806416308001002307b001375400260f600260f200ca6660ea66e1d20000021323253330773370e6e340052038132324994ccc1dc004526153307506016307a003153307404a16375c00260f20022a6660ea66e1d20020021323253330773370e6e340052038132324994ccc1dc004526153307506016307a003153307404b16375c00260f20022a660e40bc2c60f400460ea0026ea8004c1d400454cc1b816858c1d8008c1c4004dd500098388008a9983502b0b183900118368009baa001306d001153306605216306e0023069001375400260d20022a6660ca66e1d20020021324994ccc190004526153306204d16153306204e16306a0023065001375400260ca00220c460cc00460c20026ea8004c184c160c18800454cc16924010553544244350016330584910553544244340033223304d23303430633064001003375860c460b260c6002606400a00c2a6660b866e1d200200213232533305e33035233223305f22533306200114a02a6660c666ebcc19c00400c5288980118330008011bac306330620030010011533305e33036304200c3062002149854cc16d241065354424431300016153305b4910553544244390016375860c260ae60c4016609060c200c264a6660ba66644464646464666444660024600600220069408c020004004cc88cc0048c888c00800cc00c00448940048c8c8c8c80154ccc19ccdc3a40000042649329998330008a4c2a660c809e2c2a6660ce66e1d20020021324994ccc198004526153306404f16153330673370e900200109924ca6660cc0022930a998320278b0a99983399b87480180084c9265333066001149854cc19013c5854cc19014058c1b0008c19c004dd50009999111983211299983380089128008a99983419baf306a306c00100413005306c00113002306b001001232223002003306a0010010033374a90011982b80082b183298330011bab3064304a3065002232323253330613370e90000010a50153330613370e90030010a5014a260cc00460c20026ea800401c004526153305a490106535442443132001633058491065354424431310033223304d23370e6660aa646eacc190c18cc194004c18cc188c19000403800d2002375860c460c600291010741554354494f4e000063061002305c001375400a2a660ac9210553544244330016305c3051305d002153305549010553544244320016153305549105535442443100163305349105535442443000323232533305a3370e90010010991919982d111299982f00089128008a99982f9801183180089911180100198318008998018011831000919baf3061306200100300137586460c060c200260be60c000c60bc00220b660be00460b40026ea8c16cc168c170008c168c16c004dd700280200180100091119998020019100100100091824980100091191911980080180111129998270008998220018010991919299982919baf002001133047337600046601260b000c60b00066660104400400a60aa0082a6660a466e40dd70011bae0011330470063333008220010033055004005133047003333300822001006005305500430530023052004305300122533304c0021001133330032200130510023050002001223330030020040012223370e6660806eacc138c134c13c00400c00920024890c5354414e44494e475f42494400222223253302930014a0260029448cccccc01c00401000c0088ccdca8030008038a5022223333005004003232303c3371402c66e28dd71827182680099b8a017337146eb8c138004cdc500c19b8a00333714008032609c00220924466600600246600a0024464607666e9520003303e37520026607c6ea40080f4cdc500619b8a002337146601a00a00666e28c04c00c05c41188c8c8c8c94ccc11ccdc3a400400420902646464a66609466e1d20000021323232533304d3370e900100108270991919299982819b87480080084c108c8c8888cc008014010dd7182a8011bae305400a13042323222233003005004375c60aa0046eb8c150028c154008c140004dd51828800982900118268009baa304e0011303c322223001004375c609c008609e00460940026ea8c12cc128010c130008c11c004dd518240009824000919980091119800802803111198008028031119800803003a44101390048810146004881011d004881012a0048810158002233300122533303f0041005100f22533303f004100610072533303e0031007100848901010048810121004881012000488101610048810160002333001714e2880052210d846a5369676e617475726531580048810ba201276761646472657373004881024058004881004881010000237666ea4004888c8c8c94ccc0d0cdc3a4004004200c2600a6070002607200460680026ea80052412c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e670049012c7074727946726f6d285053637269707448617368293a206d757374206265203238206279746573206c6f6e6700223375e6e9cc0c8008dd3981900091918181818800981798171818000918141129998158008a5115330063003303000113002302f00122323253300633005300f3030002300f3030001133005300f3030302f001300f3030302f0023030002302f0022232323232533302d53300b5330070021001153300730090021300900113300a00400313300e004003300e3030302f004300d302f302e004302e002302d0022233302800200100314a0466604a0029412891299801998030010008998028010009198118008010a512232323253330253370e90000010991919299981419b87480000085288a50302d002302800137540082a66604a66e1d2002002132323253330283370e900100109919b87375a605a00a0026eb4c0b0004528181680118140009baa004132323253330283370e90020010a5114a0605a00460500026ea8010c0a8008c094004dd500111191919299981219b87480000085288a99981219b87480080084c8c8c94ccc09ccdc3a4000004294054ccc09ccdc3a400800429444cdc41bad302b004375a60560026058004604e0026ea80104c8c8c94ccc09ccdc3a40080042944528181600118138009baa004302900230240013754004466e1cc084dd5000a4004044464660066eb4c088004dd698111810800980b18110009119ba548000cc048cdd2a40006602466e952002330123750004022660240060226602466e952000330123374a9001198091ba8001011330120040110114c0103d87a80004c0103d87980004901317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f0049013f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72002301a300200123019300200123018300200123017300200123016300c00122300333006002001300e225333011001101315333012300330150011300430160011013574644460040064601844a66601e0022008264a666022600800226600c00260066028004260066028004602800297ae05740444666600800490001199980280124000eb4dd5800801918011ba900122223300a22533300d00110051533300e3375e6020602400200c2600860286024002260046022002002460166004002460146004002460126012002446600240022a660060042cae708c8c0088cc0080080048c0088cc00800800555cfab9a2250015573aae895d0918011baa0015573d", + "rawHex": "59103e0100003232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323222222333332222232325333055332232323370e6660ae444a6660b6002200426600666e000092002305f0014800000520023304b23303132305e305f001305d305c305e001004001375860b660b8002605c0020042a6660aa6602000e60b260b060b4002264a6660ac664466064460066eacc17c004004c88cc0c88c00cdd6982f800800919b8700148000cc88ccc8c04488dd3198019bab002375600244666024446ea0cdc09bad002375a0020040020040026eac0052f5bded8c02646464a6660b266e1d2000002132533305a3301500c001132533305b3330304a04a660726464646464646464a66082666660446eb8c1a0c19c01400c0200092201014000133333022375c60d000a6eb8c1a0c19c010c1a0010005221014500332233223253330683371200290000801099b8a333066222533306a00110021330033371400460de00260dc0020746660cc444a6660d666e24009200014bd620998300009980199b81002480080040040ec008cdc08011b8d0014822804cdc5181c80b99b8a303900137666ea0008dd6983380299191919299983399b874800800854cc19124013470616464725061796d656e744b657948617368556e736166653a206661696c656420746f20676574207061796d656e7420706b6800161375c60d600260d800460ce0026ea8c1a0c1a4004c19c00cc8cdc5181b80a981b8009bae30663065002375c60ca60b860cc02460ca60c800660c400260c200260c400460c060be60c201a2666062646466e24008004dd69830983018310011bad30603046306100d23232323371266e0000c004008dd69831991831982500098320081bad306230613063003375a60c260c060c4002018002264a6660b86606e646644664466e95200033056002330560010553374a90001982a0011982a02302999ba548000cc150004cc15011814ccdd2a40000a266e952002330520010513060304a306100d001149854cc16524010553544244380016305f30473060008153305849010553544244370016330564910553544244360032323232533305e3370e9002001098281919191919002a99983119b87480000084c8c8c8c8c8c8c9265333067001149854cc19414058c1a80194ccc198cdc3a400000426464646464646464646464646464646493299983a0008a4c2a660e40ba2c60ee0066eb8004c1d8004c1d000cdd7000983980098388019bad0013070001306e006533306a3370e900000109919191919191919191924ca6660e40022930a9983802d8b183a8019bae00130740013072006533306e3370e900000109919191919191919191919191924ca6660f20022930a9983b8310b183e003299983c19b87480000084c8c8c8c8c8c8c926533307d001149854cc1ec19858c200040194ccc1f0cdc3a4000004264646464646464932999840808008a4c2a660fe0d42c61080200ca6661000266e1d2000002132325333082013370e6e340052038132324994ccc2080400452615330800106b16308501003153307f05816375c0026108020022a6661000266e1d2002002132325333082013370e6e340052038132324994ccc2080400452615330800106b16308501003153307f05916375c0026108020022a660fa0d22c610a020046100020026ea8004c2000400454ccc1f0cdc3a4004004264646464646464646464932999842008008a4c2a66104020da2c610e020066eb4004c21804004c2100400cdd68009841808009840808019bad001308001001153307906516308101002307c001375400260f80022a6660f066e1d20020021324994ccc1dc004526153307506016153307506116307d0023078001375400260f000260ec00ca6660e466e1d20000021323253330743370e6e340052038132324994ccc1d0004526153307205d163077003153307104a16375c00260ec0022a6660e466e1d20020021323253330743370e6e340052038132324994ccc1d0004526153307205d163077003153307104b16375c00260ec0022a660de0b62c60ee00460e40026ea8004c1c800454cc1ac15c58c1cc008c1b8004dd500098370008a998338298b183780118350009baa001306a001153306304f16306b0023066001375400260cc0022a6660c466e1d20020021324994ccc184004526153305f04a16153305f04b1630670023062001375400260c400220be60c600460bc0026ea8004c178c154c17c00454cc15d24010553544244350016330554910553544244340033223304a23303430603061001003375860be60ac60c0002606400a00c2a6660b266e1d200200213232533305b33035233223305c22533305f00114a02a6660c066ebcc19000400c5288980118318008011bac3060305f0030010011533305b330363233223374a90001982999ba548000cc14ccdd2a4004660a66ea0008148cc14c114148cc14ccdd2a4000660a666e9520023305337500020a4660a6980103d8798000052052375a60c00026eb4c180c17c004c150c180030c17c0085261533058490106535442443130001615330584910553544244390016375860bc60a860be016608a60bc00c264a6660b466644464646464666444660024600600220069408c020004004cc88cc0048c888c00800cc00c00448940048c8c8c8c80154ccc190cdc3a40000042649329998318008a4c2a660c20982c2a6660c866e1d20020021324994ccc18c004526153306104c16153330643370e900200109924ca6660c60022930a998308260b0a99983219b87480180084c9265333063001149854cc1841305854cc18413458c1a4008c190004dd50009999111983091299983200089128008a99983299baf3067306900100413005306900113002306800100123222300200330670010010033374a90011982a000829983118318011bab3061304730620022323232533305e3370e90000010a501533305e3370e90030010a5014a260c600460bc0026ea800401c0045261533057490106535442443132001633055491065354424431310033223304a23370e6660a4646eacc184c180c188004c180c17cc18400403800d2002375860be60c000291010741554354494f4e00006305e0023059001375400a2a660a692105535442443300163059304e305a00215330524901055354424432001615330524910553544244310016330504910553544244300032323253330573370e90010010991919982b911299982d80089128008a99982e180118300008991118010019830000899801801182f800919baf305e305f00100300137586460ba60bc00260b860ba00c60b600220b060b800460ae0026ea8c160c15cc164008c15cc160004dd700280200180100091119998020019100100100091823180100091191911980080180111129998258008998208018010991919299982799baf002001133044337600046601260aa00c60aa0066660104400400a60a40082a66609e66e40dd70011bae001133044006333300822001003305200400513304400333330082200100600530520043050002304f004305000122533304900210011333300322001304e002304d002001223330030020040012223370e66607a6eacc12cc128c13000400c00920024890c5354414e44494e475f42494400222223253302930014a0260029448cccccc01c00401000c0088ccdca8030008038a502222333300500400323230393371402c66e28dd71825982500099b8a017337146eb8c12c004cdc500c19b8a003337140080326096002208c4466600600246600a0024464607066e9520003303b3752002660766ea40080e8cdc500619b8a002337146601a00a00666e28c04c00c05c410c8c8c8c8c94ccc110cdc3a4004004208a2646464a66608e66e1d20000021323232533304a3370e900100108258991919299982699b87480080084c0fcc8c8888cc008014010dd718290011bae305100a1303f323222233003005004375c60a40046eb8c144028c148008c134004dd51827000982780118250009baa304b00113039322223001004375c60960086098004608e0026ea8c120c11c010c124008c110004dd518228009822800919980091119800802803111198008028031119800803003a44101390048810146004881011d004881012a0048810158002233300122533303c0041005100f22533303c004100610072533303b0031007100848901010048810121004881012000488101610048810160002333001714e2880052210d846a5369676e617475726531580048810ba201276761646472657373004881024058004881004881010000237666ea4004888c8c8c94ccc0c4cdc3a4004004200c2600a606a002606c00460620026ea80052412c7074727946726f6d28505075624b657948617368293a206d757374206265203238206279746573206c6f6e670049012c7074727946726f6d285053637269707448617368293a206d757374206265203238206279746573206c6f6e6700223375e6e9cc0bc008dd3981780091918169817000981618159816800918129129998140008a5115330063003302d00113002302c00122323253300633005300f302d002300f302d001133005300f302d302c001300f302d302c002302d002302c0022232323232533302a53300b5330070021001153300730090021300900113300a00400313300e004003300e302d302c004300d302c302b004302b002302a0022233302500200100314a046660440029412891299801998030010008998028010009198100008010a512232323253330223370e90000010991919299981299b87480000085288a50302a002302500137540082a66604466e1d2002002132323253330253370e900100109919b87375a605400a0026eb4c0a4004528181500118128009baa004132323253330253370e90020010a5114a06054004604a0026ea8010c09c008c088004dd500111191919299981099b87480000085288a99981099b87480080084c8c8c94ccc090cdc3a4000004294054ccc090cdc3a400800429444cdc41bad3028004375a6050002605200460480026ea80104c8c8c94ccc090cdc3a40080042944528181480118120009baa004302600230210013754004466e1cc078dd5000a400403e98103d87a80004901317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f0049013f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72002301a300200123019300200123018300200123017300200123016300c00122300333006002001300e225333011001101315333012300330150011300430160011013574644460040064601844a66601e0022008264a666022600800226600c00260066028004260066028004602800297ae05740444666600800490001199980280124000eb4dd5800801918011ba900122223300a22533300d00110051533300e3375e6020602400200c2600860286024002260046022002002460166004002460146004002460126012002446600240022a660060042cae708c8c0088cc0080080048c0088cc00800800555cfab9a2250015573aae895d0918011baa0015573d", "role": "ValidatorRole", "version": "ScriptV2" } \ No newline at end of file diff --git a/hydra-auction-onchain.cabal b/hydra-auction-onchain.cabal index e7edb1a..f97777c 100644 --- a/hydra-auction-onchain.cabal +++ b/hydra-auction-onchain.cabal @@ -103,9 +103,11 @@ library import: common-lang exposed-modules: HydraAuctionOnchain.Errors.MintingPolicies.Auction + HydraAuctionOnchain.Errors.MintingPolicies.DelegateGroup HydraAuctionOnchain.Errors.Types.AuctionTerms HydraAuctionOnchain.Errors.Validators.AuctionEscrow HydraAuctionOnchain.Errors.Validators.BidderDeposit + HydraAuctionOnchain.Errors.Validators.DelegateGroupMetadata HydraAuctionOnchain.Errors.Validators.StandingBid HydraAuctionOnchain.Helpers HydraAuctionOnchain.Lib.Address @@ -114,12 +116,14 @@ library HydraAuctionOnchain.Lib.Serialization HydraAuctionOnchain.Lib.Value HydraAuctionOnchain.MintingPolicies.Auction + HydraAuctionOnchain.MintingPolicies.DelegateGroup HydraAuctionOnchain.Scripts HydraAuctionOnchain.Types.AuctionEscrowState HydraAuctionOnchain.Types.AuctionInfo HydraAuctionOnchain.Types.AuctionTerms HydraAuctionOnchain.Types.BidderInfo HydraAuctionOnchain.Types.BidTerms + HydraAuctionOnchain.Types.DelegateGroupInfo HydraAuctionOnchain.Types.DelegateInfo HydraAuctionOnchain.Types.Error HydraAuctionOnchain.Types.Scripts @@ -128,6 +132,7 @@ library HydraAuctionOnchain.Validators.AuctionEscrow HydraAuctionOnchain.Validators.AuctionMetadata HydraAuctionOnchain.Validators.BidderDeposit + HydraAuctionOnchain.Validators.DelegateGroupMetadata HydraAuctionOnchain.Validators.StandingBid build-depends: diff --git a/src/HydraAuctionOnchain/Errors/MintingPolicies/DelegateGroup.hs b/src/HydraAuctionOnchain/Errors/MintingPolicies/DelegateGroup.hs new file mode 100644 index 0000000..b41e156 --- /dev/null +++ b/src/HydraAuctionOnchain/Errors/MintingPolicies/DelegateGroup.hs @@ -0,0 +1,31 @@ +module HydraAuctionOnchain.Errors.MintingPolicies.DelegateGroup + ( PDelegateGroupMpError (..) + ) where + +import Data.Universe (Universe (universe), universeGeneric) +import HydraAuctionOnchain.Types.Error (ErrorCodePrefix (errorCodePrefix)) + +data PDelegateGroupMpError (s :: S) + = -- Common errors + DelegateGroupMp'Error'MissingOwnCurrencySymbol + | -- MintDelegateGroup errors + DelegateGroupMp'Mint'Error'DelegateGroupTokenNotMinted + | DelegateGroupMp'Mint'Error'MissingUtxoNonceInput + | DelegateGroupMp'Mint'Error'MissingMetadataOutput + | DelegateGroupMp'Mint'Error'MetadataOutputMissingToken + | DelegateGroupMp'Mint'Error'FailedToDecodeDelegateGroupInfo + | DelegateGroupMp'Mint'Error'DelegateGroupCurrencySymbolMismatch + | DelegateGroupMp'Mint'Error'MissingDelegateSignatures + | -- BurnDelegateGroup errors + DelegateGroupMp'Burn'Error'DelegateGroupTokenNotBurned + deriving stock (Generic, Eq) + deriving anyclass (PlutusType) + +instance DerivePlutusType PDelegateGroupMpError where + type DPTStrat _ = PlutusTypeScott + +instance Universe (PDelegateGroupMpError s) where + universe = universeGeneric + +instance ErrorCodePrefix (PDelegateGroupMpError s) where + errorCodePrefix = "DGMP" diff --git a/src/HydraAuctionOnchain/Errors/Validators/DelegateGroupMetadata.hs b/src/HydraAuctionOnchain/Errors/Validators/DelegateGroupMetadata.hs new file mode 100644 index 0000000..22d6199 --- /dev/null +++ b/src/HydraAuctionOnchain/Errors/Validators/DelegateGroupMetadata.hs @@ -0,0 +1,22 @@ +module HydraAuctionOnchain.Errors.Validators.DelegateGroupMetadata + ( PDelegateGroupMetadataError (..) + ) where + +import Data.Universe (Universe (universe), universeGeneric) +import HydraAuctionOnchain.Types.Error (ErrorCodePrefix (errorCodePrefix)) + +data PDelegateGroupMetadataError (s :: S) + = -- RemoveDelegateGroup errors + DelegateGroupMetadata'Remove'Error'MetadataOutputMissingToken + | DelegateGroupMetadata'Remove'Error'DelegateGroupTokenNotBurned + deriving stock (Generic, Eq) + deriving anyclass (PlutusType) + +instance DerivePlutusType PDelegateGroupMetadataError where + type DPTStrat _ = PlutusTypeScott + +instance Universe (PDelegateGroupMetadataError s) where + universe = universeGeneric + +instance ErrorCodePrefix (PDelegateGroupMetadataError s) where + errorCodePrefix = "DGMD" diff --git a/src/HydraAuctionOnchain/MintingPolicies/DelegateGroup.hs b/src/HydraAuctionOnchain/MintingPolicies/DelegateGroup.hs new file mode 100644 index 0000000..de03d10 --- /dev/null +++ b/src/HydraAuctionOnchain/MintingPolicies/DelegateGroup.hs @@ -0,0 +1,139 @@ +{-# LANGUAGE TemplateHaskell #-} + +module HydraAuctionOnchain.MintingPolicies.DelegateGroup + ( delegateGroupMintingPolicy + ) where + +import HydraAuctionOnchain.Errors.MintingPolicies.DelegateGroup (PDelegateGroupMpError (..)) +import HydraAuctionOnchain.Helpers (pdecodeInlineDatum, pfindUniqueOutputWithScriptHash) +import HydraAuctionOnchain.Lib.ScriptContext (pownCurrencySymbol) +import HydraAuctionOnchain.Types.DelegateGroupInfo (PDelegateGroupInfo) +import HydraAuctionOnchain.Types.Error (errCode, passert, passertMaybe) +import HydraAuctionOnchain.Types.Tokens + ( delegateGroupTokenName + , ptxOutContainsDelegateGroupToken + ) +import Plutarch.Api.V1.AssocMap qualified as Map (plookup, psingleton) +import Plutarch.Api.V1.Value (pnormalize) +import Plutarch.Api.V2 (PCurrencySymbol, PScriptContext, PScriptHash, PTxOutRef) +import Plutarch.Extra.Maybe (pisJust, pjust) +import Plutarch.Extra.ScriptContext (pfindTxInByTxOutRef, ptxSignedBy) +import Plutarch.Monadic qualified as P + +data PDelegateGroupMpRedeemer (s :: S) + = MintDelegateGroupRedeemer (Term s (PDataRecord '[])) + | BurnDelegateGroupRedeemer (Term s (PDataRecord '[])) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PShow, PEq) + +instance DerivePlutusType PDelegateGroupMpRedeemer where + type DPTStrat _ = PlutusTypeData + +delegateGroupMintingPolicy + :: Term + s + ( PScriptHash + :--> PTxOutRef + :--> PDelegateGroupMpRedeemer + :--> PScriptContext + :--> PUnit + ) +delegateGroupMintingPolicy = phoistAcyclic $ + plam $ \delegateGroupMetadataSh nonceOref redeemer ctx -> P.do + -- Script purpose should contain own currency symbol. Always + -- true for minting policies. + delegateGroupCs <- + plet $ + passertMaybe + $(errCode DelegateGroupMp'Error'MissingOwnCurrencySymbol) + (pownCurrencySymbol # ctx) + + pmatch redeemer $ \case + MintDelegateGroupRedeemer _ -> + pcheckMintDelegateGroup + # delegateGroupMetadataSh + # nonceOref + # ctx + # delegateGroupCs + BurnDelegateGroupRedeemer _ -> + pcheckBurnDelegateGroup + # ctx + # delegateGroupCs + +pcheckMintDelegateGroup + :: Term + s + ( PScriptHash + :--> PTxOutRef + :--> PScriptContext + :--> PCurrencySymbol + :--> PUnit + ) +pcheckMintDelegateGroup = phoistAcyclic $ + plam $ \delegateGroupMetadataSh nonceOref ctx delegateGroupCs -> P.do + txInfo <- plet $ pfield @"txInfo" # ctx + txInfoFields <- pletFields @["inputs", "mint", "signatories"] txInfo + mintValue <- plet $ pnormalize # txInfoFields.mint + + -- The delegate group token should be minted. + -- No other tokens should be minted or burned using this policy. + passert $(errCode DelegateGroupMp'Mint'Error'DelegateGroupTokenNotMinted) $ + (Map.plookup # delegateGroupCs # pto mintValue) + #== (pjust #$ Map.psingleton # delegateGroupTokenName # 1) + + -- The utxo nonce parameter of the minting policy should be a + -- reference to a utxo input spent by the transaction. + passert $(errCode DelegateGroupMp'Mint'Error'MissingUtxoNonceInput) $ + pisJust #$ pfindTxInByTxOutRef # nonceOref # txInfoFields.inputs + + -- There should be exactly one delegate group metadata output. + delegateGroupMetadataOutput <- + plet $ + passertMaybe + $(errCode DelegateGroupMp'Mint'Error'MissingMetadataOutput) + (pfindUniqueOutputWithScriptHash # delegateGroupMetadataSh # txInfo) + + -- The delegate group metadata output should contain a delegate group + -- metadata token. + passert $(errCode DelegateGroupMp'Mint'Error'MetadataOutputMissingToken) $ + ptxOutContainsDelegateGroupToken + # delegateGroupCs + # delegateGroupMetadataOutput + + -- The delegate group metadata output contains a datum that can be + -- decoded as a delegate group info metadata record. + (delegateGroupInfo :: Term s PDelegateGroupInfo) <- + plet $ + passertMaybe + $(errCode DelegateGroupMp'Mint'Error'FailedToDecodeDelegateGroupInfo) + (pdecodeInlineDatum # delegateGroupMetadataOutput) + + -- The metadata record should contain an ID that matches the currency symbol + -- of this minting policy. + delegateGroupInfoFields <- + pletFields + @["delegateGroupId", "delegateGroupMasterKeys"] + delegateGroupInfo + passert $(errCode DelegateGroupMp'Mint'Error'DelegateGroupCurrencySymbolMismatch) $ + delegateGroupInfoFields.delegateGroupId #== delegateGroupCs + + -- The transaction should be signed by the delegate master keys. + passert $(errCode DelegateGroupMp'Mint'Error'MissingDelegateSignatures) $ + pall + # plam (\sig -> ptxSignedBy # txInfoFields.signatories # sig) + # delegateGroupInfoFields.delegateGroupMasterKeys + + pcon PUnit + +pcheckBurnDelegateGroup :: Term s (PScriptContext :--> PCurrencySymbol :--> PUnit) +pcheckBurnDelegateGroup = phoistAcyclic $ + plam $ \ctx delegateGroupCs -> P.do + mintValue <- plet $ pnormalize #$ pfield @"mint" #$ pfield @"txInfo" # ctx + + -- The delegate group metadata token should be burned. + -- No other tokens should be minted or burned. + passert $(errCode DelegateGroupMp'Burn'Error'DelegateGroupTokenNotBurned) $ + (Map.plookup # delegateGroupCs # pto mintValue) + #== (pjust #$ Map.psingleton # delegateGroupTokenName # (-1)) + + pcon PUnit diff --git a/src/HydraAuctionOnchain/Scripts.hs b/src/HydraAuctionOnchain/Scripts.hs index 7245271..72a3dab 100644 --- a/src/HydraAuctionOnchain/Scripts.hs +++ b/src/HydraAuctionOnchain/Scripts.hs @@ -8,6 +8,10 @@ module HydraAuctionOnchain.Scripts , bidderDepositValidatorScript , bidderDepositValidatorUntyped , compileScript + , delegateGroupMintingPolicyScript + , delegateGroupMintingPolicyUntyped + , delegateGroupMetadataValidatorScript + , delegateGroupMetadataValidatorUntyped , standingBidValidatorScript , standingBidValidatorUntyped , writeScript @@ -16,6 +20,7 @@ module HydraAuctionOnchain.Scripts import Data.Text (Text) import Data.Text qualified as T (unpack) import HydraAuctionOnchain.MintingPolicies.Auction (auctionMintingPolicy) +import HydraAuctionOnchain.MintingPolicies.DelegateGroup (delegateGroupMintingPolicy) import HydraAuctionOnchain.Types.AuctionTerms (PAuctionTerms) import HydraAuctionOnchain.Types.Scripts ( PAuctionEscrowScriptHash @@ -25,6 +30,7 @@ import HydraAuctionOnchain.Types.Scripts import HydraAuctionOnchain.Validators.AuctionEscrow (auctionEscrowValidator) import HydraAuctionOnchain.Validators.AuctionMetadata (auctionMetadataValidator) import HydraAuctionOnchain.Validators.BidderDeposit (bidderDepositValidator) +import HydraAuctionOnchain.Validators.DelegateGroupMetadata (delegateGroupMetadataValidator) import HydraAuctionOnchain.Validators.StandingBid (standingBidValidator) import Plutarch (Config (Config), Script, TracingMode (DoTracing), compile) import Plutarch.Api.V2 (PCurrencySymbol, PMintingPolicy, PScriptHash, PTxOutRef, PValidator) @@ -141,6 +147,42 @@ auctionMetadataValidatorUntyped = phoistAcyclic $ auctionMetadataValidatorScript :: Script auctionMetadataValidatorScript = compileScript auctionMetadataValidatorUntyped +---------------------------------------------------------------------- +-- DelegateGroup MP + +delegateGroupMintingPolicyUntyped + :: ClosedTerm + ( PAsData PScriptHash + :--> PAsData PTxOutRef + :--> PMintingPolicy + ) +delegateGroupMintingPolicyUntyped = phoistAcyclic $ + plam $ \delegateGroupMetadataSh nonceOref redeemer ctx -> + popaque $ + delegateGroupMintingPolicy + # pfromData delegateGroupMetadataSh + # pfromData nonceOref + # punsafeCoerce redeemer + # ctx + +delegateGroupMintingPolicyScript :: Script +delegateGroupMintingPolicyScript = compileScript delegateGroupMintingPolicyUntyped + +---------------------------------------------------------------------- +-- DelegateGroupMetadata + +delegateGroupMetadataValidatorUntyped :: ClosedTerm PValidator +delegateGroupMetadataValidatorUntyped = phoistAcyclic $ + plam $ \datum redeemer ctx -> + popaque $ + delegateGroupMetadataValidator + # punsafeCoerce datum + # punsafeCoerce redeemer + # ctx + +delegateGroupMetadataValidatorScript :: Script +delegateGroupMetadataValidatorScript = compileScript delegateGroupMetadataValidatorUntyped + -- config :: Config diff --git a/src/HydraAuctionOnchain/Types/AuctionTerms.hs b/src/HydraAuctionOnchain/Types/AuctionTerms.hs index 0069f56..9083894 100644 --- a/src/HydraAuctionOnchain/Types/AuctionTerms.hs +++ b/src/HydraAuctionOnchain/Types/AuctionTerms.hs @@ -6,6 +6,7 @@ module HydraAuctionOnchain.Types.AuctionTerms , pcleanupPeriod , ppostBiddingPeriod , ppostPurchasePeriod + , pprePurchasePeriod , ppurchasePeriod , ptotalAuctionFees , pvalidateAuctionTerms @@ -27,7 +28,7 @@ import Plutarch.Api.V2 ) import Plutarch.DataRepr (PDataFields) import Plutarch.Extra.Field (pletAll) -import Plutarch.Extra.Interval qualified as Interval (pfrom) +import Plutarch.Extra.Interval qualified as Interval (pfrom, pto) import Plutarch.Extra.Maybe (pisJust) import Plutarch.Extra.Value (padaOf) import Plutarch.Monadic qualified as P @@ -161,6 +162,11 @@ ppostBiddingPeriod = phoistAcyclic $ plam $ \auctionTerms -> Interval.pfrom #$ pfield @"biddingEnd" # auctionTerms +pprePurchasePeriod :: Term s (PAuctionTerms :--> PPOSIXTimeRange) +pprePurchasePeriod = phoistAcyclic $ + plam $ \auctionTerms -> + Interval.pto #$ pfield @"biddingEnd" # auctionTerms + ppostPurchasePeriod :: Term s (PAuctionTerms :--> PPOSIXTimeRange) ppostPurchasePeriod = phoistAcyclic $ plam $ \auctionTerms -> diff --git a/src/HydraAuctionOnchain/Types/DelegateGroupInfo.hs b/src/HydraAuctionOnchain/Types/DelegateGroupInfo.hs new file mode 100644 index 0000000..85260d9 --- /dev/null +++ b/src/HydraAuctionOnchain/Types/DelegateGroupInfo.hs @@ -0,0 +1,27 @@ +module HydraAuctionOnchain.Types.DelegateGroupInfo + ( PDelegateGroupInfo (PDelegateGroupInfo) + ) where + +import HydraAuctionOnchain.Types.DelegateInfo (PDelegateInfo) +import Plutarch.Api.V2 (PCurrencySymbol, PPubKeyHash) +import Plutarch.DataRepr (PDataFields) + +newtype PDelegateGroupInfo (s :: S) + = PDelegateGroupInfo + ( Term + s + ( PDataRecord + '[ "delegateGroupId" ':= PCurrencySymbol + , "delegateGroupMasterKeys" ':= PBuiltinList (PAsData PPubKeyHash) + , "delegateGroupServers" ':= PDelegateInfo + , "delegateGroupMetadata" ':= PByteString + ] + ) + ) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PDataFields, PShow, PEq) + +instance DerivePlutusType PDelegateGroupInfo where + type DPTStrat _ = PlutusTypeData + +instance PTryFrom PData PDelegateGroupInfo diff --git a/src/HydraAuctionOnchain/Types/Tokens.hs b/src/HydraAuctionOnchain/Types/Tokens.hs index 25b343f..4a4bd93 100644 --- a/src/HydraAuctionOnchain/Types/Tokens.hs +++ b/src/HydraAuctionOnchain/Types/Tokens.hs @@ -1,12 +1,14 @@ module HydraAuctionOnchain.Types.Tokens ( auctionEscrowTokenName , auctionMetadataTokenName + , delegateGroupTokenName , pauctionTokenBundleBurned , pauctionTokenBundleMinted , pauctionTokenBundleValueBurned , pauctionTokenBundleValueMinted , ptxOutContainsAuctionEscrowToken , ptxOutContainsAuctionMetadataToken + , ptxOutContainsDelegateGroupToken , ptxOutContainsStandingBidToken , standingBidTokenName ) where @@ -35,25 +37,34 @@ auctionMetadataTokenName = pconstant "AUCTION_METADATA" standingBidTokenName :: Term s PTokenName standingBidTokenName = pconstant "STANDING_BID" -ptxOutContainsAuctionToken :: Term s (PCurrencySymbol :--> PTokenName :--> PTxOut :--> PBool) -ptxOutContainsAuctionToken = phoistAcyclic $ +-- | Delegate group token, identifying the true delegate group. +delegateGroupTokenName :: Term s PTokenName +delegateGroupTokenName = pconstant "DELEGATE_GROUP" + +ptxOutContainsToken :: Term s (PCurrencySymbol :--> PTokenName :--> PTxOut :--> PBool) +ptxOutContainsToken = phoistAcyclic $ plam $ \auctionCs tn txOut -> (pvalueOf # (pfield @"value" # txOut) # auctionCs # tn) #== 1 ptxOutContainsAuctionMetadataToken :: Term s (PCurrencySymbol :--> PTxOut :--> PBool) ptxOutContainsAuctionMetadataToken = phoistAcyclic $ plam $ \auctionCs txOut -> - ptxOutContainsAuctionToken # auctionCs # auctionMetadataTokenName # txOut + ptxOutContainsToken # auctionCs # auctionMetadataTokenName # txOut ptxOutContainsAuctionEscrowToken :: Term s (PCurrencySymbol :--> PTxOut :--> PBool) ptxOutContainsAuctionEscrowToken = phoistAcyclic $ plam $ \auctionCs txOut -> - ptxOutContainsAuctionToken # auctionCs # auctionEscrowTokenName # txOut + ptxOutContainsToken # auctionCs # auctionEscrowTokenName # txOut ptxOutContainsStandingBidToken :: Term s (PCurrencySymbol :--> PTxOut :--> PBool) ptxOutContainsStandingBidToken = phoistAcyclic $ plam $ \auctionCs txOut -> - ptxOutContainsAuctionToken # auctionCs # standingBidTokenName # txOut + ptxOutContainsToken # auctionCs # standingBidTokenName # txOut + +ptxOutContainsDelegateGroupToken :: Term s (PCurrencySymbol :--> PTxOut :--> PBool) +ptxOutContainsDelegateGroupToken = phoistAcyclic $ + plam $ \delegateGroupCs txOut -> + ptxOutContainsToken # delegateGroupCs # delegateGroupTokenName # txOut ---------------------------------------------------------------------- -- Token bundle diff --git a/src/HydraAuctionOnchain/Validators/DelegateGroupMetadata.hs b/src/HydraAuctionOnchain/Validators/DelegateGroupMetadata.hs new file mode 100644 index 0000000..91ca1ab --- /dev/null +++ b/src/HydraAuctionOnchain/Validators/DelegateGroupMetadata.hs @@ -0,0 +1,73 @@ +{-# LANGUAGE TemplateHaskell #-} + +module HydraAuctionOnchain.Validators.DelegateGroupMetadata + ( delegateGroupMetadataValidator + ) where + +import HydraAuctionOnchain.Errors.Validators.DelegateGroupMetadata + ( PDelegateGroupMetadataError (..) + ) +import HydraAuctionOnchain.Types.DelegateGroupInfo (PDelegateGroupInfo) +import HydraAuctionOnchain.Types.Error (errCode, passert) +import HydraAuctionOnchain.Types.Tokens + ( delegateGroupTokenName + , ptxOutContainsDelegateGroupToken + ) +import Plutarch.Api.V1.AssocMap qualified as Map (plookup, psingleton) +import Plutarch.Api.V1.Value (pnormalize) +import Plutarch.Api.V2 (PScriptContext) +import Plutarch.Extra.Maybe (pjust) +import Plutarch.Extra.ScriptContext (ptryOwnInput) +import Plutarch.Monadic qualified as P + +data PDelegateGroupMetadataRedeemer (s :: S) + = RetireDelegateGroupRedeemer (Term s (PDataRecord '[])) + deriving stock (Generic) + deriving anyclass (PlutusType, PIsData, PShow, PEq) + +instance DerivePlutusType PDelegateGroupMetadataRedeemer where + type DPTStrat _ = PlutusTypeData + +delegateGroupMetadataValidator + :: Term + s + ( PDelegateGroupInfo + :--> PDelegateGroupMetadataRedeemer + :--> PScriptContext + :--> PUnit + ) +delegateGroupMetadataValidator = phoistAcyclic $ + plam $ \delegateGroupInfo redeemer ctx -> + pmatch redeemer $ \case + RetireDelegateGroupRedeemer _ -> + pcheckRetireDelegateGroup + # delegateGroupInfo + # ctx + +pcheckRetireDelegateGroup + :: Term + s + ( PDelegateGroupInfo + :--> PScriptContext + :--> PUnit + ) +pcheckRetireDelegateGroup = phoistAcyclic $ + plam $ \delegateGroupInfo ctx -> P.do + delegateGroupCs <- plet $ pfield @"delegateGroupId" # delegateGroupInfo + + -- The metadata output must contain exactly one delegate group + -- metadata token. + delegateGroupMetadataOutput <- plet $ pfield @"resolved" #$ ptryOwnInput # ctx + passert $(errCode DelegateGroupMetadata'Remove'Error'MetadataOutputMissingToken) $ + ptxOutContainsDelegateGroupToken + # delegateGroupCs + # delegateGroupMetadataOutput + + -- The delegate group metadata token should be burned. + -- No other tokens should be minted or burned. + mintValue <- plet $ pnormalize #$ pfield @"mint" #$ pfield @"txInfo" # ctx + passert $(errCode DelegateGroupMetadata'Remove'Error'DelegateGroupTokenNotBurned) $ + (Map.plookup # delegateGroupCs # pto mintValue) + #== (pjust #$ Map.psingleton # delegateGroupTokenName # (-1)) + + pcon PUnit diff --git a/src/HydraAuctionOnchain/Validators/StandingBid.hs b/src/HydraAuctionOnchain/Validators/StandingBid.hs index 5a05ece..8ae7334 100644 --- a/src/HydraAuctionOnchain/Validators/StandingBid.hs +++ b/src/HydraAuctionOnchain/Validators/StandingBid.hs @@ -15,7 +15,11 @@ import HydraAuctionOnchain.Helpers , putxoAddress ) import HydraAuctionOnchain.Lib.ScriptContext (pinputSpentWithRedeemer) -import HydraAuctionOnchain.Types.AuctionTerms (PAuctionTerms, pbiddingPeriod) +import HydraAuctionOnchain.Types.AuctionTerms + ( PAuctionTerms + , pbiddingPeriod + , pprePurchasePeriod + ) import HydraAuctionOnchain.Types.Error (errCode, passert, passertMaybe) import HydraAuctionOnchain.Types.StandingBidState (PStandingBidState, pvalidateNewBid) import HydraAuctionOnchain.Types.Tokens @@ -128,11 +132,11 @@ pcheckNewBid = phoistAcyclic $ passert $(errCode StandingBid'NewBid'Error'InvalidNewBidState) $ pvalidateNewBid # auctionCs # auctionTerms # oldBidState # newBidState - -- (STBD8) This redeemer can only be used during - -- the bidding period. + -- (STBD8) This redeemer can only be used before + -- the bidding end time. txInfoValidRange <- plet $ pfield @"validRange" # txInfo passert $(errCode StandingBid'NewBid'Error'IncorrectValidityInterval) $ - pcontains # (pbiddingPeriod # auctionTerms) # txInfoValidRange + pcontains # (pprePurchasePeriod # auctionTerms) # txInfoValidRange pcon PUnit