From b7933d14dca9ff354404aa8cccfb2fc48845a1e6 Mon Sep 17 00:00:00 2001 From: Daniel Farrelly Date: Thu, 30 Mar 2023 19:33:52 +0100 Subject: [PATCH] Ignore proposal ID in governor mutation effect --- agora-specs/Spec/Effect/GovernorMutation.hs | 20 ++- agora-test/goldens/agora-golden.json | 4 +- agora-test/goldens/agoraDebug-golden.json | 4 +- agora/Agora/Effect/GovernorMutation.hs | 149 +++++++++++--------- agora/Agora/Utils.hs | 23 +++ 5 files changed, 121 insertions(+), 79 deletions(-) diff --git a/agora-specs/Spec/Effect/GovernorMutation.hs b/agora-specs/Spec/Effect/GovernorMutation.hs index 7b0f271..32d8c20 100644 --- a/agora-specs/Spec/Effect/GovernorMutation.hs +++ b/agora-specs/Spec/Effect/GovernorMutation.hs @@ -34,14 +34,14 @@ specs = governorValidator ( GovernorDatum def - (ProposalId 0) + nextProposalId def def 3 ) MutateGovernor ( ScriptContext - (mkEffectTxInfo validNewGovernorDatum) + (mkEffectTxInfo validNewGovernorDatum') (Spending govRef) ) , effectSucceedsWith @@ -50,14 +50,14 @@ specs = ( mkEffectDatum ( GovernorDatum def - (ProposalId 0) + nextProposalId def def 3 ) validNewGovernorDatum ) - (ScriptContext (mkEffectTxInfo validNewGovernorDatum) (Spending effectRef)) + (ScriptContext (mkEffectTxInfo validNewGovernorDatum') (Spending effectRef)) ] , group "invalid new governor datum" @@ -66,7 +66,7 @@ specs = governorValidator ( GovernorDatum def - (ProposalId 0) + nextProposalId def def 3 @@ -82,7 +82,7 @@ specs = ( mkEffectDatum ( GovernorDatum def - (ProposalId 0) + nextProposalId def def 3 @@ -93,3 +93,11 @@ specs = ] ] ] + where + validNewGovernorDatum' :: GovernorDatum + validNewGovernorDatum' = validNewGovernorDatum {nextProposalId} + -- \^ The datum value pinned by the effect, disregarding the proposal ID and + -- taking this field from the governor input instead + + nextProposalId :: ProposalId + nextProposalId = ProposalId 0 diff --git a/agora-test/goldens/agora-golden.json b/agora-test/goldens/agora-golden.json index 39f650a..651834d 100644 --- a/agora-test/goldens/agora-golden.json +++ b/agora-test/goldens/agora-golden.json @@ -35,14 +35,14 @@ "version": "ScriptV2" }, "agora:mutateGovernorValidator": { - "cborHex": "590aaa590aa701000032323232323232323232323232323232323232323232323232323232323232323222222232323232323232323232323232323232323232323232323232323232323232533303e3371290000008991919299982099b89480000044c8c8c94ccc110cdc4a40000022646464a66608e66e2520000011323232533304a3371290000008991919299982699b89480000044c8c8c8c8c94ccc148cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660e866e252000001132323253330773371290000008991919299983d19b89480000044c8c8c94ccc1f4cdc4a40000022646464a6661000266e25200000113232325333083013371290000008991919191929998440099b89480000044c8c8c8c8c8c8c8c8c8c94ccc24804cdc3a400400426464a66612802a660f866e1ccc1f81d4dd5984d00984a80984c808009919b8148000005200213370e66446661260244466a66613a02002244a0022644460040066464466002006004613e02004613e0200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc25804c8cccccc20c042680427c04dd483c1bab309d01309c010012323232533309b013370e90000010a5014a26144020046138020026ea8c27804c27c04c27804008528984e808008998400083b9bab309c01309b01309d010011632309c01309b01001309c010013758613402002900109919191919299984c8099b873330960122253330a0010011002133003337000049001185080800a400000290020a99984c80999184b80912999850008008a50153323309d0100114a2600661440200226004614202002464a6610602a661060266e1ccc21404dd704080991bab30a20130a10130a30100130a10130a001001480084cc22c04dd6198460099185100984f009851808009850809850008009bab30a10130a001004375861420200e266e3cc23404c8c8c8c94ccc27c04cdc3a40040042644460040066eb8c294040044894004c29804008c28004004dd5185100985180800991851009851808009850809850008009bae0820130a10100100115333099013322533309b013370e00490000a99984d8099b87001480005288a99984d8099b87001480085280a99984d8099b87001480105280a501533309b013370e00490010a99984d8099b87001480005280a99984d8099b87001480085288a99984d8099b87001480105280a501533309b013370e00490020a99984d8099b87001480005280a99984d8099b87001480085280a99984d8099b87001480105288a511533309b013370e00290000a501533309b013370e00290010a501533309b013370e00290020a5114a26eb4cc88cc00480045924123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308f01232002375a00266612a0212c0200400266e9520023309801308b0133223308f01230a20130a3010013330980122253330a20100112250011533309e01300230a40100113222300200330a40100113300300230a3010012337109000191802111984e00912999852808008a4000264a6661440266ebcc294040040144c94ccc29c040045854ccc28c04c27c04c2a00400454ccc28c04cdd798530098548080080289bad30ab0130a9010011616375661540200226006614e02004614e02002006646eacc28c04c28804c29004004c28804c28404c28c04004004cc88c8c88cc00400c008dd48011ba9002375c0fe9101003758613e0200812e026eacc27c0400920041533309901330890137586611402646140026138026142020026612c0244a66613e020022c2a66613602612e0261400200226142020022c6eb0c27c0400cdd5984f80984f008011bac309f01309e01005149858585858cc8c25804894ccc27c040044264044c94ccc27004c0100044cc26c04004c00cc284040084c00cc28404008c284040048c8c8ccc26c040052825132323232533309e013370e90010010a5014a2614a02004613e020026ea8004c28004c28404004c8c28004c28404004c27c04c27804c28004004dd6184f0080199184e80984e80984e80984c80800984e00800984d80984d80800984e00984d8083a9bac07816309a01309901073309801001163099010023093010013754612a026128020dea666124020022930b18490081b2999848008008a4c2c6120020066eb4004c23c04004c2340400c58dd680098460080098450080b2999844008008a4c2c6110020062c6eb4004c21c04004c2140400c58dd68009842008009841008018b1bad001308101001307f00316375a00260fc00260f80062c6eb4004c1ec004c1e400c58dd6800983c0009bac00130760013074003375a00260e600260e2026a6660de0022930b18378019bad001306e001306c003375a00260d600260d20066eb4004c1a0004c19800cdd6800983280098318019bad0013062001375800260c00026eb0004c178004c1700d94ccc16800452616305a003375a00260b200260ae0062c6eb4004c158004c1500594ccc14800452616305200316375a00260a2002609e0062c6eb4004c138004c13000c58dd6800982580098248018b1bad0013048001304600316375a002608a00260860062c6eb4004c108004dd60009820000981f0019bad001303d001303b0135333039001149858c0e400cdd6800981c000981b0019bad00130350013033003375a002606400260600066eb4004c0bc004c0b400cdd680098160009bac001302a001375800260500026eb0014c09c008dd70021119980d0010008018a500012233333300301a01f3752004002466600e4466e00dd69811001000a40006eac004520002222333300533006004002001232223002003300400112250012301122533301a00112250011333003301c001222300200313002301b00122253330153375e00460060022446004006244a00244602044a66603200220062660086036002600460340024466ebcdd38011ba700122300333004002001233001200116223300300433005002001223300123222300200330030011225001232323232323232323232323232323232323232323232323232323253330273371290000008991919299981519b89480000044c8c8c94ccc0b4cdc4a40000022646464a66606066e252000001132323253330333371290000008991919299981b19b89480000044c8c8c8c8c94ccc0eccdc4a40000022646464646406aa6660860022930b18218019bad0013042001304000316375a002607e002607a02ca6660760022930b181d8018b1bad001303a001303800316375a002606e002606a0062c6eb4004c0d0004c0c800c58dd6800981880098178018b1bad001302e001302c00316375a00260560026eb0004c0a4004c09c00cdd680098130009812009a9998110008a4c2c60440066eb4004c084004c07c00cdd6800980f000980e0019bad001301b0013019003375a0026030002602c0066eb4004c054004dd600098098009bac00122323232533300f3370e900000108030a99980799b87480100084c01cc0540044cc020dd7180a800802180b00118080009baa002225001222300200323300200337520024446600c44a66601e002244a0022a66601666ebcc038c0440040104c014c0440044c008c0400040048c888c00800cc0380055d1919180111980100100091801119801001000a5eb815d02b9a2300530020012300430040015573aaae7d5d12ba1230023754002aae781", + "cborHex": "590bcc590bc901000032323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330403371290000008991919299982199b89480000044c8c8c94ccc118cdc4a40000022646464a66609266e2520000011323232533304c3371290000008991919299982799b89480000044c8c8c8c8c94ccc150cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660ec66e252000001132323253330793371290000008991919299983e19b89480000044c8c8c94ccc1fccdc4a40000022646464a6661040266e25200000113232325333085013371290000008991919191929998450099b89480000044c8c8c8c8c8c8c8c8c8c94ccc25004cdc3a400400426464a66612c02a660f866e1ccc234041d4dd5984e00984b80984d808009919b8148000005200213370e664466612a0244466a66613e02002244a002264446004006646446600200600461420200461420200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc26004c8cccccc248042700428404dd483c1bab309f01309e010012323232533309d013370e90000010a5014a2614802004613c020026ea8c28004c28404c28004008528984f808008998478083b9bab309e01309d01309f010011632309e01309d01001309e010013758613802002900109919191919299984d8099b873330980122253330a2010011002133003337000049001185180800a400000290020a99984d80992998410099842009bac33085013230a301309f0130a4010013230a30130a20130a4010013309001091013322330940123370e6612c02006646eacc29804c29404c29c04004c29404c29004c298040052002001375c100026eb0c28804014dd598510098508080199911919191985000985380802998500080219850009853808011985000985380800998500098538098530080084f809852808009852008009851808011bac30a2010063230a30130a20100137586610a0264614602613e026148020026461460261440261480200266120021220266446612802466e1ccc2580400cc8dd5985300985280985380800985280985200985300800a40040026eb820004dd61851008029bab30a20130a10100313371e610c0264646464a6661400266e1d2002002132223002003375c614c02002244a002614e020046142020026ea8c28c04c29004004c8c28c04c29004004c28804c28404004dd70408098510099847808480099911984980919b873309501003323756614a02614802614c02002614802614602614a0200290010009bae07f37586142020082a666136026644a66613a0266e1c00920001533309d013370e00290000a511533309d013370e00290010a501533309d013370e00290020a5014a02a66613a0266e1c00920021533309d013370e00290000a501533309d013370e00290010a511533309d013370e00290020a5014a02a66613a0266e1c00920041533309d013370e00290000a501533309d013370e00290010a501533309d013370e00290020a5114a22a66613a0266e1c005200014a02a66613a0266e1c005200214a02a66613a0266e1c005200414a22944dd69984780a48123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308901232002375a00266611e021200200400266e9520023309a013230a20130a3010013308f01090013322330930123370e6612a02006646eacc29404c29004c29804004c29004c28c04c294040052002001375c0fe6eb0c2840401026404dd5985080801240082a6661360266106026eb0cc21004c8c28804c27804c28c04004cc26004894ccc284040045854ccc27404d5d198510080089851808008b1bac30a101003375661420261400200466446464646613e02614c0200a6613e020086613e02614c020046613e02614c020026613e02614c02614a0200213c026148020026146020026144020046eb0c28404c28004014c8c28804c28404004dd6198420099185100984f009851808009918510098508098518080099847808480099911984980919b873309501003323756614a02614802614c02002614802614602614a0200290010009bae07f37586142020086eacc28404c28004008526161616163323098012253330a101001109b01132533309e01300400113309d01001300330a3010021300330a30100230a3010012323233309d010014a0944c8c8c8c94ccc28004cdc3a400400429405289853808011850808009baa00130a20130a3010013230a20130a30100130a10130a00130a201001375861400200664613e02613e02613e02613602002613c02002613a02613a02002613c02613a020ea6eb01e058c27004c26c041ccc2680400458c26c04008c25404004dd5184b80984b00837a99984a008008a4c2c61280206ca666124020022930b1849008019bad001309101001308f0100316375a002611c0200261180202ca666114020022930b1845008018b1bad00130890100130870100316375a002610c020026108020062c6eb4004c20c04004c2040400c58dd6800984000800983f0018b1bad001307d001307b00316375a00260f40026eb0004c1e0004c1d800cdd6800983a8009839809a9998388008a4c2c60e20066eb4004c1c0004c1b800cdd6800983680098358019bad001306a0013068003375a00260ce00260ca0066eb4004c190004dd600098310009bac0013060001305e036533305c001149858c17000cdd6800982d800982c8018b1bad001305800130560165333054001149858c15000c58dd6800982980098288018b1bad0013050001304e00316375a002609a00260960062c6eb4004c128004c12000c58dd6800982380098228018b1bad00130440013758002608400260800066eb4004c0fc004c0f404d4ccc0ec00452616303b003375a002607400260700066eb4004c0dc004c0d400cdd6800981a00098190019bad0013031001302f003375a002605c0026eb0004c0b0004dd600098150009bac0053029002375c00844666038004002006294088cdd79ba7002374e0024460066600800400246600240022c44660060086600a00400244660024644460040066006002244a0024646464646464646464646464646464646464646464646464646464a66605e66e252000001132323253330323371290000008991919299981a99b89480000044c8c8c94ccc0e0cdc4a40000022646464a66607666e2520000011323232533303e33712900000089919191919299982199b89480000044c8c8c8c8c80d54ccc12c00452616304b003375a002609400260900062c6eb4004c11c004c1140594ccc10c00452616304300316375a002608400260800062c6eb4004c0fc004c0f400c58dd6800981e000981d0018b1bad0013039001303700316375a002606c00260680062c6eb4004c0cc004dd6000981880098178019bad001302e001302c013533302a001149858c0a800cdd6800981480098138019bad00130260013024003375a002604600260420066eb4004c080004c07800cdd6800980e8009bac001301b001375800244646464a66602e66e1d20000021006153330173370e900200109803980e8008998041bae301d001004301e0023018001375400444a00244460040064660040066ea4004888cc038894ccc05c004489400454ccc04ccdd7980b180c80080209802980c80089801180c000800919111801001980b000911980090008b24811e476f7665726e6f72205554584f2073686f756c6420636172727920475354003007222533301100112250011533300d30023013001132223002003301300113300300230120010012233333300300d0123752004002466600e4466e00dd6980a801000a40006eac004520002222333300533006004002001232223002003300400112250012300422533300d00112250011333003300f001222300200313002300e00122253330083375e00460060022446004006244a00244600644a6660180022006266008601c0026004601a00246460044660040040024600446600400400297ae05740ae688c014c0080048c010c01000555ceaab9f5744ae848c008dd5000aab9e1", "description": "agora:mutateGovernorValidator", "params": [ "Ply.Core.Types:AsData#PlutusLedgerApi.V1.Scripts:ScriptHash", "Ply.Core.Types:AsData#Data.Tagged:Tagged#GHC.TypeLits:\"GovernorSTTag\"#PlutusLedgerApi.V1.Value:CurrencySymbol", "Ply.Core.Types:AsData#Data.Tagged:Tagged#GHC.TypeLits:\"AuthorityTokenTag\"#PlutusLedgerApi.V1.Value:CurrencySymbol" ], - "rawHex": "590aa701000032323232323232323232323232323232323232323232323232323232323232323222222232323232323232323232323232323232323232323232323232323232323232533303e3371290000008991919299982099b89480000044c8c8c94ccc110cdc4a40000022646464a66608e66e2520000011323232533304a3371290000008991919299982699b89480000044c8c8c8c8c94ccc148cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660e866e252000001132323253330773371290000008991919299983d19b89480000044c8c8c94ccc1f4cdc4a40000022646464a6661000266e25200000113232325333083013371290000008991919191929998440099b89480000044c8c8c8c8c8c8c8c8c8c94ccc24804cdc3a400400426464a66612802a660f866e1ccc1f81d4dd5984d00984a80984c808009919b8148000005200213370e66446661260244466a66613a02002244a0022644460040066464466002006004613e02004613e0200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc25804c8cccccc20c042680427c04dd483c1bab309d01309c010012323232533309b013370e90000010a5014a26144020046138020026ea8c27804c27c04c27804008528984e808008998400083b9bab309c01309b01309d010011632309c01309b01001309c010013758613402002900109919191919299984c8099b873330960122253330a0010011002133003337000049001185080800a400000290020a99984c80999184b80912999850008008a50153323309d0100114a2600661440200226004614202002464a6610602a661060266e1ccc21404dd704080991bab30a20130a10130a30100130a10130a001001480084cc22c04dd6198460099185100984f009851808009850809850008009bab30a10130a001004375861420200e266e3cc23404c8c8c8c94ccc27c04cdc3a40040042644460040066eb8c294040044894004c29804008c28004004dd5185100985180800991851009851808009850809850008009bae0820130a10100100115333099013322533309b013370e00490000a99984d8099b87001480005288a99984d8099b87001480085280a99984d8099b87001480105280a501533309b013370e00490010a99984d8099b87001480005280a99984d8099b87001480085288a99984d8099b87001480105280a501533309b013370e00490020a99984d8099b87001480005280a99984d8099b87001480085280a99984d8099b87001480105288a511533309b013370e00290000a501533309b013370e00290010a501533309b013370e00290020a5114a26eb4cc88cc00480045924123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308f01232002375a00266612a0212c0200400266e9520023309801308b0133223308f01230a20130a3010013330980122253330a20100112250011533309e01300230a40100113222300200330a40100113300300230a3010012337109000191802111984e00912999852808008a4000264a6661440266ebcc294040040144c94ccc29c040045854ccc28c04c27c04c2a00400454ccc28c04cdd798530098548080080289bad30ab0130a9010011616375661540200226006614e02004614e02002006646eacc28c04c28804c29004004c28804c28404c28c04004004cc88c8c88cc00400c008dd48011ba9002375c0fe9101003758613e0200812e026eacc27c0400920041533309901330890137586611402646140026138026142020026612c0244a66613e020022c2a66613602612e0261400200226142020022c6eb0c27c0400cdd5984f80984f008011bac309f01309e01005149858585858cc8c25804894ccc27c040044264044c94ccc27004c0100044cc26c04004c00cc284040084c00cc28404008c284040048c8c8ccc26c040052825132323232533309e013370e90010010a5014a2614a02004613e020026ea8004c28004c28404004c8c28004c28404004c27c04c27804c28004004dd6184f0080199184e80984e80984e80984c80800984e00800984d80984d80800984e00984d8083a9bac07816309a01309901073309801001163099010023093010013754612a026128020dea666124020022930b18490081b2999848008008a4c2c6120020066eb4004c23c04004c2340400c58dd680098460080098450080b2999844008008a4c2c6110020062c6eb4004c21c04004c2140400c58dd68009842008009841008018b1bad001308101001307f00316375a00260fc00260f80062c6eb4004c1ec004c1e400c58dd6800983c0009bac00130760013074003375a00260e600260e2026a6660de0022930b18378019bad001306e001306c003375a00260d600260d20066eb4004c1a0004c19800cdd6800983280098318019bad0013062001375800260c00026eb0004c178004c1700d94ccc16800452616305a003375a00260b200260ae0062c6eb4004c158004c1500594ccc14800452616305200316375a00260a2002609e0062c6eb4004c138004c13000c58dd6800982580098248018b1bad0013048001304600316375a002608a00260860062c6eb4004c108004dd60009820000981f0019bad001303d001303b0135333039001149858c0e400cdd6800981c000981b0019bad00130350013033003375a002606400260600066eb4004c0bc004c0b400cdd680098160009bac001302a001375800260500026eb0014c09c008dd70021119980d0010008018a500012233333300301a01f3752004002466600e4466e00dd69811001000a40006eac004520002222333300533006004002001232223002003300400112250012301122533301a00112250011333003301c001222300200313002301b00122253330153375e00460060022446004006244a00244602044a66603200220062660086036002600460340024466ebcdd38011ba700122300333004002001233001200116223300300433005002001223300123222300200330030011225001232323232323232323232323232323232323232323232323232323253330273371290000008991919299981519b89480000044c8c8c94ccc0b4cdc4a40000022646464a66606066e252000001132323253330333371290000008991919299981b19b89480000044c8c8c8c8c94ccc0eccdc4a40000022646464646406aa6660860022930b18218019bad0013042001304000316375a002607e002607a02ca6660760022930b181d8018b1bad001303a001303800316375a002606e002606a0062c6eb4004c0d0004c0c800c58dd6800981880098178018b1bad001302e001302c00316375a00260560026eb0004c0a4004c09c00cdd680098130009812009a9998110008a4c2c60440066eb4004c084004c07c00cdd6800980f000980e0019bad001301b0013019003375a0026030002602c0066eb4004c054004dd600098098009bac00122323232533300f3370e900000108030a99980799b87480100084c01cc0540044cc020dd7180a800802180b00118080009baa002225001222300200323300200337520024446600c44a66601e002244a0022a66601666ebcc038c0440040104c014c0440044c008c0400040048c888c00800cc0380055d1919180111980100100091801119801001000a5eb815d02b9a2300530020012300430040015573aaae7d5d12ba1230023754002aae781", + "rawHex": "590bc901000032323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330403371290000008991919299982199b89480000044c8c8c94ccc118cdc4a40000022646464a66609266e2520000011323232533304c3371290000008991919299982799b89480000044c8c8c8c8c94ccc150cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660ec66e252000001132323253330793371290000008991919299983e19b89480000044c8c8c94ccc1fccdc4a40000022646464a6661040266e25200000113232325333085013371290000008991919191929998450099b89480000044c8c8c8c8c8c8c8c8c8c94ccc25004cdc3a400400426464a66612c02a660f866e1ccc234041d4dd5984e00984b80984d808009919b8148000005200213370e664466612a0244466a66613e02002244a002264446004006646446600200600461420200461420200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc26004c8cccccc248042700428404dd483c1bab309f01309e010012323232533309d013370e90000010a5014a2614802004613c020026ea8c28004c28404c28004008528984f808008998478083b9bab309e01309d01309f010011632309e01309d01001309e010013758613802002900109919191919299984d8099b873330980122253330a2010011002133003337000049001185180800a400000290020a99984d80992998410099842009bac33085013230a301309f0130a4010013230a30130a20130a4010013309001091013322330940123370e6612c02006646eacc29804c29404c29c04004c29404c29004c298040052002001375c100026eb0c28804014dd598510098508080199911919191985000985380802998500080219850009853808011985000985380800998500098538098530080084f809852808009852008009851808011bac30a2010063230a30130a20100137586610a0264614602613e026148020026461460261440261480200266120021220266446612802466e1ccc2580400cc8dd5985300985280985380800985280985200985300800a40040026eb820004dd61851008029bab30a20130a10100313371e610c0264646464a6661400266e1d2002002132223002003375c614c02002244a002614e020046142020026ea8c28c04c29004004c8c28c04c29004004c28804c28404004dd70408098510099847808480099911984980919b873309501003323756614a02614802614c02002614802614602614a0200290010009bae07f37586142020082a666136026644a66613a0266e1c00920001533309d013370e00290000a511533309d013370e00290010a501533309d013370e00290020a5014a02a66613a0266e1c00920021533309d013370e00290000a501533309d013370e00290010a511533309d013370e00290020a5014a02a66613a0266e1c00920041533309d013370e00290000a501533309d013370e00290010a501533309d013370e00290020a5114a22a66613a0266e1c005200014a02a66613a0266e1c005200214a02a66613a0266e1c005200414a22944dd69984780a48123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308901232002375a00266611e021200200400266e9520023309a013230a20130a3010013308f01090013322330930123370e6612a02006646eacc29404c29004c29804004c29004c28c04c294040052002001375c0fe6eb0c2840401026404dd5985080801240082a6661360266106026eb0cc21004c8c28804c27804c28c04004cc26004894ccc284040045854ccc27404d5d198510080089851808008b1bac30a101003375661420261400200466446464646613e02614c0200a6613e020086613e02614c020046613e02614c020026613e02614c02614a0200213c026148020026146020026144020046eb0c28404c28004014c8c28804c28404004dd6198420099185100984f009851808009918510098508098518080099847808480099911984980919b873309501003323756614a02614802614c02002614802614602614a0200290010009bae07f37586142020086eacc28404c28004008526161616163323098012253330a101001109b01132533309e01300400113309d01001300330a3010021300330a30100230a3010012323233309d010014a0944c8c8c8c94ccc28004cdc3a400400429405289853808011850808009baa00130a20130a3010013230a20130a30100130a10130a00130a201001375861400200664613e02613e02613e02613602002613c02002613a02613a02002613c02613a020ea6eb01e058c27004c26c041ccc2680400458c26c04008c25404004dd5184b80984b00837a99984a008008a4c2c61280206ca666124020022930b1849008019bad001309101001308f0100316375a002611c0200261180202ca666114020022930b1845008018b1bad00130890100130870100316375a002610c020026108020062c6eb4004c20c04004c2040400c58dd6800984000800983f0018b1bad001307d001307b00316375a00260f40026eb0004c1e0004c1d800cdd6800983a8009839809a9998388008a4c2c60e20066eb4004c1c0004c1b800cdd6800983680098358019bad001306a0013068003375a00260ce00260ca0066eb4004c190004dd600098310009bac0013060001305e036533305c001149858c17000cdd6800982d800982c8018b1bad001305800130560165333054001149858c15000c58dd6800982980098288018b1bad0013050001304e00316375a002609a00260960062c6eb4004c128004c12000c58dd6800982380098228018b1bad00130440013758002608400260800066eb4004c0fc004c0f404d4ccc0ec00452616303b003375a002607400260700066eb4004c0dc004c0d400cdd6800981a00098190019bad0013031001302f003375a002605c0026eb0004c0b0004dd600098150009bac0053029002375c00844666038004002006294088cdd79ba7002374e0024460066600800400246600240022c44660060086600a00400244660024644460040066006002244a0024646464646464646464646464646464646464646464646464646464a66605e66e252000001132323253330323371290000008991919299981a99b89480000044c8c8c94ccc0e0cdc4a40000022646464a66607666e2520000011323232533303e33712900000089919191919299982199b89480000044c8c8c8c8c80d54ccc12c00452616304b003375a002609400260900062c6eb4004c11c004c1140594ccc10c00452616304300316375a002608400260800062c6eb4004c0fc004c0f400c58dd6800981e000981d0018b1bad0013039001303700316375a002606c00260680062c6eb4004c0cc004dd6000981880098178019bad001302e001302c013533302a001149858c0a800cdd6800981480098138019bad00130260013024003375a002604600260420066eb4004c080004c07800cdd6800980e8009bac001301b001375800244646464a66602e66e1d20000021006153330173370e900200109803980e8008998041bae301d001004301e0023018001375400444a00244460040064660040066ea4004888cc038894ccc05c004489400454ccc04ccdd7980b180c80080209802980c80089801180c000800919111801001980b000911980090008b24811e476f7665726e6f72205554584f2073686f756c6420636172727920475354003007222533301100112250011533300d30023013001132223002003301300113300300230120010012233333300300d0123752004002466600e4466e00dd6980a801000a40006eac004520002222333300533006004002001232223002003300400112250012300422533300d00112250011333003300f001222300200313002300e00122253330083375e00460060022446004006244a00244600644a6660180022006266008601c0026004601a00246460044660040040024600446600400400297ae05740ae688c014c0080048c010c01000555ceaab9f5744ae848c008dd5000aab9e1", "role": "ValidatorRole", "version": "ScriptV2" }, diff --git a/agora-test/goldens/agoraDebug-golden.json b/agora-test/goldens/agoraDebug-golden.json index c0cc554..7835e53 100644 --- a/agora-test/goldens/agoraDebug-golden.json +++ b/agora-test/goldens/agoraDebug-golden.json @@ -35,14 +35,14 @@ "version": "ScriptV2" }, "agora:mutateGovernorValidator": { - "cborHex": "591019591016010000323232323232323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330423371290000008991919299982299b89480000044c8c8c94ccc120cdc4a40000022646464a66609666e2520000011323232533304e3371290000008991919299982899b89480000044c8c8c8c8c94ccc158cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660f066e2520000011323232533307b3371290000008991919299983f19b89480000044c8c8c94ccc20404cdc4a40000022646464a6661080266e25200000113232325333087013371290000008991919191929998460099b89480000044c8c8c8c8c8c8c8c8c8c94ccc25804cdc3a400400426464a66613002a660f864a66613202002200226613e029213373696e676c65417574686f72697479546f6b656e4275726e65643a204d757374206275726e2065786163746c79203120474154000013370e660fc0ea6eacc28404c26404c28004004c8cdc0a40000029001099299984c80800880089984f80a481254f6e6c79206f6e6520474154206d7573742065786973742061742074686520696e70757473000013370e664466612e0244466a66614402002244a0022644460040066464466002006004614c02004614c0200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc26804c8cccccc20c042780429804dd483c1bab30a40130a3010012323232533309f013370e9000001099299985000800880089985300a4937617574686f72697479546f6b656e7356616c6964496e3a2047415420696e636f72726563746c79206c69766573206174205075624b6579000014a02944c2a404008c28004004dd51852809853009852808010a5130a4010011330800107737566146026144026148020022a66140029201355768696c6520636f756e74696e67204741547320617420696e707574733a20616c6c2047415473206d7573742062652076616c696400163230a30130a20100130a3010013758614202002900109919191919299984e8099b8733309a0122253330a5010011002133003337000049001185400800a400000290020a99984e80999184d80912999852808008a5015332330a10100114a2600661520200226004615002002464a6610602a661060264a66614002002200226614c0292011e476f7665726e6f72205554784f2073686f756c6420636172727920475354000013370e6610a026eb820404c8dd5985480985400985500800985400985380800a4004264a66614002002200226614c029212343616e206f6e6c79206d6f64696679207468652070696e6e656420676f7665726e6f72000013308b015330a50149011c5265736f6c766520676f7665726e6f7220696e70757420646174756d0013758661180264615202614402615402002615002614e020026eacc2a004c29c04010dd6185400803899299985000800880089985300a48116476f7665726e6f722076616c696461746f722072756e000013371e611a0264646464a6661460266e1d2002002132223002003375c615802002244a002615a020046148020026ea8c2a404c2a804004c8c2a404c2a804004c2a004c29c04004dd7041009854008008008a99984e809991299984f8099b870024800054ccc27c04cdc3800a4000294454ccc27c04cdc3800a4004294054ccc27c04cdc3800a400829405280a99984f8099b870024800854ccc27c04cdc3800a4000294054ccc27c04cdc3800a4004294454ccc27c04cdc3800a400829405280a99984f8099b870024801054ccc27c04cdc3800a4000294054ccc27c04cdc3800a4004294054ccc27c04cdc3800a400829445288a99984f8099b87001480005280a99984f8099b87001480085280a99984f8099b87001480105288a51375a66446600240022a6614a020042c920123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223309001232002375a00266612e021300200400266e9520023309c01308b0133223309001230a90130aa0100133309c0122253330a7010011225001153330a201300230ab0100113222300200330ab0100113300300230aa010012337109000191802111985000912999855008008a4000264a66614c0266ebcc2a4040040144c94ccc2b00400454cc2b40524012670747279456c696d53696e676c653a20466f756e6420656d707479206c6973742d6c696b652e0016153330a70130a30130af01001153330a7013375e61540261600200200a26eb4c2c804c2c00400454cc2b4052412766696e6456616c75653a20556e65787065637465646c79206d697373696e6720726573756c742e001615330ad014912e70747279456c696d53696e676c653a20466f756e64206e6f6e2d73696e676c65746f6e206c6973742d6c696b652e0016375661620200226006615c02004615c02002006646eacc2a804c2a404c2ac04004c2a404c2a004c2a804004004cc88c8c88cc00400c008dd48011ba9002375c0fe9101003758614c02008136026eacc2980400920041533309d0133089015330a30149011e5265736f6c766520676f7665726e6f72206f75746f70757420646174756d0013758661140264614e02614002615002002a66146029211f4f6e6c7920676f7665726e6f72206f757470757420697320616c6c6f7765640013309a012253330a40100115330a5014910a456d707479206c69737400161533309f01309b0130a701001130a80100115330a5014901154d6f7265207468616e206f6e6520656c656d656e7400163758614c020066eacc29804c29404008dd61853009852808028a4c2a66146029211a4e657720676f7665726e6f7220646174756d20636f7272656374001615330a3014912b5370656e6420676f7665726e6f7220776974682072656465656d6572204d7574617465476f7665726e6f72001615330a3014911d476f7665726e6f7220696e7075742073686f756c642070726573656e74001615330a301491304f6e6c792073656c6620616e6420676f7665726e6f722073637269707420696e707574732061726520616c6c6f7765640016332309a012253330a401001109d0113253330a001300400113309f01001300330a8010021300330a80100230a8010012323233309f010014a0944c8c8c8c94ccc28804cdc3a400400429405289856008011851808009baa00130a70130a8010013230a70130a80100130a60130a50130a7010013758614a0200664614802614802614802613a020026146020026144026144020026146026144020ea6eb01e054cc27805240128412073696e676c6520617574686f7269747920746f6b656e20686173206265656e206275726e6564001630a10130a001073309f01001153309c01491445061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b2061742061676f72612f41676f72612f4566666563742e68733a36333a352d3232001630a00100230970100137546138026136020dea66612e020022930a9984c0084c808b184c8081b299984a808008a4c2a6612c0212e022c612e020066eb4004c25804004c2500400c54cc248042400458dd680098498080098488080b2999846808008a4c2a6611c0211e022c611e020062a6611a02116022c6eb4004c23804004c2300400c54cc228042200458dd68009845808009844808018a9984380842808b1bad0013088010013086010031533084010820116375a002610a020026106020062a66102020fe2c6eb4004c20804004c2000400c54cc1f81f058dd6800983f8009bac001307d001307b003375a00260f400260f0026a6660e80022930a9983a83b0b183b0019bad00130750013073003375a00260e400260e00066eb4004c1bc004c1b400cdd6800983600098350019bad0013069001375800260ce0026eb0004c194004c18c0d94ccc17c0045261533060061163061003375a00260c000260bc0062a660b80b42c6eb4004c174004c16c0594ccc15c0045261533058059163059003153305705516375a00260b000260ac0062a660a80a42c6eb4004c154004c14c00c54cc14413c58dd6800982900098280018a998270260b1bad001304f001304d003153304b04916375a002609800260940062a6609008c2c6eb4004c124004dd6000982380098228019bad00130440013042013533303e001149854cc0fc10058c10000cdd6800981f800981e8019bad001303c001303a003375a0026072002606e0066eb4004c0d8004c0d000cdd680098198009bac00130310013758002605e0026eb0014c0b8008dd70021119980f0010008018a500012233333300301e0263752004002466600e4466e00dd69814801000a40006eac004520002222333300533006004002001232223002003300400112250012301522533301f001122500113330033023001222300200313002302200122253330193375e00460060022446004006244a00244602844a66603c00220062660086044002600460420024466ebcdd38011ba70012230033300500200123300120011533019002164901197066726f6d4a7573743a20666f756e6420504e6f7468696e67002233003004330050020012233001232223002003300300112250012323232323232323232323232323232323232323232323232323232533302a3371290000008991919299981699b89480000044c8c8c94ccc0c0cdc4a40000022646464a66606666e252000001132323253330363371290000008991919299981c99b89480000044c8c8c8c8c94ccc0f8cdc4a40000022646464646406aa66608e0022930a998240248b18248019bad00130480013046003153304404216375a002608a002608602ca66607e0022930a998200208b18208018a9981f81e8b1bad0013040001303e003153303c03a16375a002607a00260760062a6607206e2c6eb4004c0e8004c0e000c54cc0d80d058dd6800981b800981a8018a998198188b1bad00130340013032003153303002e16375a00260620026eb0004c0bc004c0b400cdd680098160009815009a9998130008a4c2a6604e0502c60500066eb4004c09c004c09400cdd6800981200098110019bad0013021001301f003375a002603c00260380066eb4004c06c004dd6000980c8009bac0012232323253330123370e90000010a9980c00308038a99980919b874800800854cc0600204cc024dd7180d80080209a9980c0060806980d800980e00118098009baa002491086e6f20646174756d0022500149010a646174756d20686173680023300200337520024446601044a666024002244a0022a66601a66ebcc040c0580040104c014c0580044c008c0540040048c888c00800cc04c00524010c696e6c696e6520646174756d002223002003574646460044660040040024600446600400400297ae05740ae688c020c0080048c01cc01c00555cea49257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665005573eae71241317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f005744ae848c008dd5000aab9e01", + "cborHex": "59108f59108c010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330453371290000008991919299982419b89480000044c8c8c94ccc12ccdc4a40000022646464a66609c66e252000001132323253330513371290000008991919299982a19b89480000044c8c8c8c8c94ccc164cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660f666e2520000011323232533307e337129000000899191929998408099b89480000044c8c8c94ccc21004cdc4a40000022646464a66610e0266e2520000011323232533308a013371290000008991919191929998478099b89480000044c8c8c8c8c8c8c8c8c8c94ccc26404cdc3a400400426464a66613602a660f864a666138020022002266144029213373696e676c65417574686f72697479546f6b656e4275726e65643a204d757374206275726e2065786163746c79203120474154000013370e66124020ea6eacc29004c27004c28c04004c8cdc0a40000029001099299984e00800880089985100a481254f6e6c79206f6e6520474154206d7573742065786973742061742074686520696e70757473000013370e66446661340244466a66614a02002244a002264446004006646446600200600461520200461520200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc27404c8cccccc25c04284042a404dd483c1bab30a70130a601001232323253330a2013370e9000001099299985180800880089985480a4937617574686f72697479546f6b656e7356616c6964496e3a2047415420696e636f72726563746c79206c69766573206174205075624b6579000014a02944c2b004008c28c04004dd51854009854809854008010a5130a701001133094010773756614c02614a02614e020022a66146029201355768696c6520636f756e74696e67204741547320617420696e707574733a20616c6c2047415473206d7573742062652076616c696400163230a60130a50100130a601001375861480200290010991919191929998500099b8733309d0122253330a8010011002133003337000049001185580800a400000290020a99985000992998410099299985100800880089985400a4812943616e206f6e6c79206d6f64696679207468652070696e6e656420676f7665726e6f7220646174756d0000133084015330a70108501137586610c0264615602614802615802002646156026154026158020026612a0212c0266446613202466e1ccc26c0400cc8dd5985700985680985780800985680985600985700800a40040026eb820004dd61855008029bab30aa0130a9010033322323232330a50130af01005330a501004330a50130af01002330a50130af01001330a50130af0130ae010010a40130ad0100130ac0100130ab01002375861540200c64615602615402002a6614e0210a0226eb0cc21804c8c2ac04c29004c2b004004c8c2ac04c2a804c2b004004cc2540425804cc88cc264048cdc39984d80801991bab30ae0130ad0130af0100130ad0130ac0130ae0100148008004dd7040009bac30aa010053756615402615202006264a6661440200220022661500292116476f7665726e6f722076616c696461746f722072756e000013371e610e0264646464a66614a0266e1d2002002132223002003375c615c02002244a002615e02004614c020026ea8c2ac04c2b004004c8c2ac04c2b004004c2a804c2a404004dd7040809855009984a0084a8099911984c00919b873309a01003323756615a02615802615c02002615802615602615a0200290010009bae07f37586152020082a666140026644a6661440266e1c0092000153330a2013370e00290000a51153330a2013370e00290010a50153330a2013370e00290020a5014a02a6661440266e1c0092002153330a2013370e00290000a50153330a2013370e00290010a51153330a2013370e00290020a5014a02a6661440266e1c0092004153330a2013370e00290000a50153330a2013370e00290010a50153330a2013370e00290020a5114a22a6661440266e1c005200014a02a6661440266e1c005200214a02a6661440266e1c005200414a22944dd69984a00a4923476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308b01232002375a002666124021260200400266e9520023309f013230aa0130ab010013309401095013322330980123370e6613402006646eacc2b404c2b004c2b804004c2b004c2ac04c2b4040052002001375c0fe6eb0c2a40401027804dd5985480801240082a666140026610602a6614c029211e5265736f6c766520676f7665726e6f72206f75746f70757420646174756d00137586610a0264615402614602615602002a6614c029211f4f6e6c7920676f7665726e6f72206f757470757420697320616c6c6f7765640013309d012253330a70100115330a8014910a456d707479206c6973740016153330a2013574661540200226156020022a6615002921154d6f7265207468616e206f6e6520656c656d656e74001637586152020066eacc2a404c2a004008cc88c8c8c8cc29004c2b804014cc29004010cc29004c2b804008cc29004c2b804004cc29004c2b804c2b40400428c04c2b004004c2ac04004c2a804008dd618548098540080299185500985480800a99853008420089bac33085013230aa0130a30130ab010013230aa0130a90130ab010013309401095013322330980123370e6613402006646eacc2b404c2b004c2b804004c2b004c2ac04c2b4040052002001375c0fe6eb0c2a404010dd59854809854008010a4c2a6614c029211a4e657720676f7665726e6f7220646174756d20636f7272656374001615330a6014912b5370656e6420676f7665726e6f7220776974682072656465656d6572204d7574617465476f7665726e6f72001615330a6014911e476f7665726e6f7220696e7075742073686f756c642062652076616c6964001615330a601491304f6e6c792073656c6620616e6420676f7665726e6f722073637269707420696e707574732061726520616c6c6f7765640016332309d012253330a70100110a00113253330a30130040011330a201001300330ab010021300330ab0100230ab01001232323330a2010014a0944c8c8c8c94ccc29404cdc3a400400429405289857808011853008009baa00130aa0130ab010013230aa0130ab0100130a90130a80130aa01001375861500200664614e02614e02614e02614002002614c02002614a02614a02002614c02614a020ea6eb01e054cc28405240128412073696e676c6520617574686f7269747920746f6b656e20686173206265656e206275726e6564001630a40130a30107330a201001153309f01491445061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b2061742061676f72612f41676f72612f4566666563742e68733a36333a352d3232001630a301002309a010013754613e02613c020dea666134020022930a9984d8084e008b184e0081b299984c008008a4c2a6613202134022c6134020066eb4004c26404004c25c0400c54cc2540424c0458dd6800984b00800984a0080b2999848008008a4c2a6612202124022c6124020062a661200211c022c6eb4004c24404004c23c0400c54cc2340422c0458dd68009847008009846008018a9984500844008b1bad001308b010013089010031533087010850116375a002611002002610c020062a6610802104022c6eb4004c21404004c20c0400c54cc204041fc58dd68009841008009bac001308001001307e003375a00260fa00260f6026a6660ee0022930a9983c03c8b183c8019bad00130780013076003375a00260ea00260e60066eb4004c1c8004c1c000cdd6800983780098368019bad001306c001375800260d40026eb0004c1a0004c1980d94ccc1880045261533063064163064003375a00260c600260c20062a660be0ba2c6eb4004c180004c1780594ccc168004526153305b05c16305c003153305a05816375a00260b600260b20062a660ae0aa2c6eb4004c160004c15800c54cc15014858dd6800982a80098298018a998288278b1bad00130520013050003153304e04c16375a002609e002609a0062a660960922c6eb4004c130004dd6000982500098240019bad001304700130450135333041001149854cc10810c58c10c00cdd6800982100098200019bad001303f001303d003375a002607800260740066eb4004c0e4004c0dc00cdd6800981b0009bac0013034001375800260640026eb0014c0c4008dd7002111998108010008018a50223375e6e9c008dd3800a4811c5265736f6c766520676f7665726e6f7220696e70757420646174756d00223003330050020012330012001153302100216491197066726f6d4a7573743a20666f756e6420504e6f7468696e6700223300300433005002001223300123222300200330030011225001232323232323232323232323232323232323232323232323232323253330323371290000008991919299981a99b89480000044c8c8c94ccc0e0cdc4a40000022646464a66607666e2520000011323232533303e3371290000008991919299982099b89480000044c8c8c8c8c94ccc118cdc4a40000022646464646406aa66609e0022930a998280288b18288019bad0013050001304e003153304c04a16375a002609a002609602ca66608e0022930a998240248b18248018a998238228b1bad00130480013046003153304404216375a002608a00260860062a6608207e2c6eb4004c108004c10000c54cc0f80f058dd6800981f800981e8018a9981d81c8b1bad001303c001303a003153303803616375a00260720026eb0004c0dc004c0d400cdd6800981a0009819009a9998170008a4c2a6605e0602c60600066eb4004c0bc004c0b400cdd6800981600098150019bad00130290013027003375a002604c00260480066eb4004c08c004dd600098108009bac00122323232533301a3370e90000010a9981000308038a99980d19b874800800854cc0800204cc024dd7181180080209a99810006080698118009812001180d8009baa002491086e6f20646174756d0022500149010a646174756d20686173680023300200337520024446602044a666034002244a0022a66602a66ebcc060c0780040104c014c0780044c008c0740040048c888c00800cc06c00524010c696e6c696e6520646174756d002223002003223300120011533014002164911e476f7665726e6f72205554584f2073686f756c6420636172727920475354003007222533301200112250011533300d30023016001132223002003301600113300300230150010012233333300300d0153752004002466600e4466e00dd6980c001000a40006eac004520002222333300533006004002001232223002003300400112250012300422533300e001122500113330033012001222300200313002301100122253330083375e00460060022446004006244a00244600644a66601a002200626600860220026004602000246460044660040040024600446600400400297ae05740ae688c020c0080048c01cc01c00555cea481257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665005573eae71241317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f005744ae848c008dd5000aab9e01", "description": "agora:mutateGovernorValidator", "params": [ "Ply.Core.Types:AsData#PlutusLedgerApi.V1.Scripts:ScriptHash", "Ply.Core.Types:AsData#Data.Tagged:Tagged#GHC.TypeLits:\"GovernorSTTag\"#PlutusLedgerApi.V1.Value:CurrencySymbol", "Ply.Core.Types:AsData#Data.Tagged:Tagged#GHC.TypeLits:\"AuthorityTokenTag\"#PlutusLedgerApi.V1.Value:CurrencySymbol" ], - "rawHex": "591016010000323232323232323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330423371290000008991919299982299b89480000044c8c8c94ccc120cdc4a40000022646464a66609666e2520000011323232533304e3371290000008991919299982899b89480000044c8c8c8c8c94ccc158cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660f066e2520000011323232533307b3371290000008991919299983f19b89480000044c8c8c94ccc20404cdc4a40000022646464a6661080266e25200000113232325333087013371290000008991919191929998460099b89480000044c8c8c8c8c8c8c8c8c8c94ccc25804cdc3a400400426464a66613002a660f864a66613202002200226613e029213373696e676c65417574686f72697479546f6b656e4275726e65643a204d757374206275726e2065786163746c79203120474154000013370e660fc0ea6eacc28404c26404c28004004c8cdc0a40000029001099299984c80800880089984f80a481254f6e6c79206f6e6520474154206d7573742065786973742061742074686520696e70757473000013370e664466612e0244466a66614402002244a0022644460040066464466002006004614c02004614c0200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc26804c8cccccc20c042780429804dd483c1bab30a40130a3010012323232533309f013370e9000001099299985000800880089985300a4937617574686f72697479546f6b656e7356616c6964496e3a2047415420696e636f72726563746c79206c69766573206174205075624b6579000014a02944c2a404008c28004004dd51852809853009852808010a5130a4010011330800107737566146026144026148020022a66140029201355768696c6520636f756e74696e67204741547320617420696e707574733a20616c6c2047415473206d7573742062652076616c696400163230a30130a20100130a3010013758614202002900109919191919299984e8099b8733309a0122253330a5010011002133003337000049001185400800a400000290020a99984e80999184d80912999852808008a5015332330a10100114a2600661520200226004615002002464a6610602a661060264a66614002002200226614c0292011e476f7665726e6f72205554784f2073686f756c6420636172727920475354000013370e6610a026eb820404c8dd5985480985400985500800985400985380800a4004264a66614002002200226614c029212343616e206f6e6c79206d6f64696679207468652070696e6e656420676f7665726e6f72000013308b015330a50149011c5265736f6c766520676f7665726e6f7220696e70757420646174756d0013758661180264615202614402615402002615002614e020026eacc2a004c29c04010dd6185400803899299985000800880089985300a48116476f7665726e6f722076616c696461746f722072756e000013371e611a0264646464a6661460266e1d2002002132223002003375c615802002244a002615a020046148020026ea8c2a404c2a804004c8c2a404c2a804004c2a004c29c04004dd7041009854008008008a99984e809991299984f8099b870024800054ccc27c04cdc3800a4000294454ccc27c04cdc3800a4004294054ccc27c04cdc3800a400829405280a99984f8099b870024800854ccc27c04cdc3800a4000294054ccc27c04cdc3800a4004294454ccc27c04cdc3800a400829405280a99984f8099b870024801054ccc27c04cdc3800a4000294054ccc27c04cdc3800a4004294054ccc27c04cdc3800a400829445288a99984f8099b87001480005280a99984f8099b87001480085280a99984f8099b87001480105288a51375a66446600240022a6614a020042c920123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223309001232002375a00266612e021300200400266e9520023309c01308b0133223309001230a90130aa0100133309c0122253330a7010011225001153330a201300230ab0100113222300200330ab0100113300300230aa010012337109000191802111985000912999855008008a4000264a66614c0266ebcc2a4040040144c94ccc2b00400454cc2b40524012670747279456c696d53696e676c653a20466f756e6420656d707479206c6973742d6c696b652e0016153330a70130a30130af01001153330a7013375e61540261600200200a26eb4c2c804c2c00400454cc2b4052412766696e6456616c75653a20556e65787065637465646c79206d697373696e6720726573756c742e001615330ad014912e70747279456c696d53696e676c653a20466f756e64206e6f6e2d73696e676c65746f6e206c6973742d6c696b652e0016375661620200226006615c02004615c02002006646eacc2a804c2a404c2ac04004c2a404c2a004c2a804004004cc88c8c88cc00400c008dd48011ba9002375c0fe9101003758614c02008136026eacc2980400920041533309d0133089015330a30149011e5265736f6c766520676f7665726e6f72206f75746f70757420646174756d0013758661140264614e02614002615002002a66146029211f4f6e6c7920676f7665726e6f72206f757470757420697320616c6c6f7765640013309a012253330a40100115330a5014910a456d707479206c69737400161533309f01309b0130a701001130a80100115330a5014901154d6f7265207468616e206f6e6520656c656d656e7400163758614c020066eacc29804c29404008dd61853009852808028a4c2a66146029211a4e657720676f7665726e6f7220646174756d20636f7272656374001615330a3014912b5370656e6420676f7665726e6f7220776974682072656465656d6572204d7574617465476f7665726e6f72001615330a3014911d476f7665726e6f7220696e7075742073686f756c642070726573656e74001615330a301491304f6e6c792073656c6620616e6420676f7665726e6f722073637269707420696e707574732061726520616c6c6f7765640016332309a012253330a401001109d0113253330a001300400113309f01001300330a8010021300330a80100230a8010012323233309f010014a0944c8c8c8c94ccc28804cdc3a400400429405289856008011851808009baa00130a70130a8010013230a70130a80100130a60130a50130a7010013758614a0200664614802614802614802613a020026146020026144026144020026146026144020ea6eb01e054cc27805240128412073696e676c6520617574686f7269747920746f6b656e20686173206265656e206275726e6564001630a10130a001073309f01001153309c01491445061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b2061742061676f72612f41676f72612f4566666563742e68733a36333a352d3232001630a00100230970100137546138026136020dea66612e020022930a9984c0084c808b184c8081b299984a808008a4c2a6612c0212e022c612e020066eb4004c25804004c2500400c54cc248042400458dd680098498080098488080b2999846808008a4c2a6611c0211e022c611e020062a6611a02116022c6eb4004c23804004c2300400c54cc228042200458dd68009845808009844808018a9984380842808b1bad0013088010013086010031533084010820116375a002610a020026106020062a66102020fe2c6eb4004c20804004c2000400c54cc1f81f058dd6800983f8009bac001307d001307b003375a00260f400260f0026a6660e80022930a9983a83b0b183b0019bad00130750013073003375a00260e400260e00066eb4004c1bc004c1b400cdd6800983600098350019bad0013069001375800260ce0026eb0004c194004c18c0d94ccc17c0045261533060061163061003375a00260c000260bc0062a660b80b42c6eb4004c174004c16c0594ccc15c0045261533058059163059003153305705516375a00260b000260ac0062a660a80a42c6eb4004c154004c14c00c54cc14413c58dd6800982900098280018a998270260b1bad001304f001304d003153304b04916375a002609800260940062a6609008c2c6eb4004c124004dd6000982380098228019bad00130440013042013533303e001149854cc0fc10058c10000cdd6800981f800981e8019bad001303c001303a003375a0026072002606e0066eb4004c0d8004c0d000cdd680098198009bac00130310013758002605e0026eb0014c0b8008dd70021119980f0010008018a500012233333300301e0263752004002466600e4466e00dd69814801000a40006eac004520002222333300533006004002001232223002003300400112250012301522533301f001122500113330033023001222300200313002302200122253330193375e00460060022446004006244a00244602844a66603c00220062660086044002600460420024466ebcdd38011ba70012230033300500200123300120011533019002164901197066726f6d4a7573743a20666f756e6420504e6f7468696e67002233003004330050020012233001232223002003300300112250012323232323232323232323232323232323232323232323232323232533302a3371290000008991919299981699b89480000044c8c8c94ccc0c0cdc4a40000022646464a66606666e252000001132323253330363371290000008991919299981c99b89480000044c8c8c8c8c94ccc0f8cdc4a40000022646464646406aa66608e0022930a998240248b18248019bad00130480013046003153304404216375a002608a002608602ca66607e0022930a998200208b18208018a9981f81e8b1bad0013040001303e003153303c03a16375a002607a00260760062a6607206e2c6eb4004c0e8004c0e000c54cc0d80d058dd6800981b800981a8018a998198188b1bad00130340013032003153303002e16375a00260620026eb0004c0bc004c0b400cdd680098160009815009a9998130008a4c2a6604e0502c60500066eb4004c09c004c09400cdd6800981200098110019bad0013021001301f003375a002603c00260380066eb4004c06c004dd6000980c8009bac0012232323253330123370e90000010a9980c00308038a99980919b874800800854cc0600204cc024dd7180d80080209a9980c0060806980d800980e00118098009baa002491086e6f20646174756d0022500149010a646174756d20686173680023300200337520024446601044a666024002244a0022a66601a66ebcc040c0580040104c014c0580044c008c0540040048c888c00800cc04c00524010c696e6c696e6520646174756d002223002003574646460044660040040024600446600400400297ae05740ae688c020c0080048c01cc01c00555cea49257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665005573eae71241317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f005744ae848c008dd5000aab9e01", + "rawHex": "59108c010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330453371290000008991919299982419b89480000044c8c8c94ccc12ccdc4a40000022646464a66609c66e252000001132323253330513371290000008991919299982a19b89480000044c8c8c8c8c94ccc164cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660f666e2520000011323232533307e337129000000899191929998408099b89480000044c8c8c94ccc21004cdc4a40000022646464a66610e0266e2520000011323232533308a013371290000008991919191929998478099b89480000044c8c8c8c8c8c8c8c8c8c94ccc26404cdc3a400400426464a66613602a660f864a666138020022002266144029213373696e676c65417574686f72697479546f6b656e4275726e65643a204d757374206275726e2065786163746c79203120474154000013370e66124020ea6eacc29004c27004c28c04004c8cdc0a40000029001099299984e00800880089985100a481254f6e6c79206f6e6520474154206d7573742065786973742061742074686520696e70757473000013370e66446661340244466a66614a02002244a002264446004006646446600200600461520200461520200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc27404c8cccccc25c04284042a404dd483c1bab30a70130a601001232323253330a2013370e9000001099299985180800880089985480a4937617574686f72697479546f6b656e7356616c6964496e3a2047415420696e636f72726563746c79206c69766573206174205075624b6579000014a02944c2b004008c28c04004dd51854009854809854008010a5130a701001133094010773756614c02614a02614e020022a66146029201355768696c6520636f756e74696e67204741547320617420696e707574733a20616c6c2047415473206d7573742062652076616c696400163230a60130a50100130a601001375861480200290010991919191929998500099b8733309d0122253330a8010011002133003337000049001185580800a400000290020a99985000992998410099299985100800880089985400a4812943616e206f6e6c79206d6f64696679207468652070696e6e656420676f7665726e6f7220646174756d0000133084015330a70108501137586610c0264615602614802615802002646156026154026158020026612a0212c0266446613202466e1ccc26c0400cc8dd5985700985680985780800985680985600985700800a40040026eb820004dd61855008029bab30aa0130a9010033322323232330a50130af01005330a501004330a50130af01002330a50130af01001330a50130af0130ae010010a40130ad0100130ac0100130ab01002375861540200c64615602615402002a6614e0210a0226eb0cc21804c8c2ac04c29004c2b004004c8c2ac04c2a804c2b004004cc2540425804cc88cc264048cdc39984d80801991bab30ae0130ad0130af0100130ad0130ac0130ae0100148008004dd7040009bac30aa010053756615402615202006264a6661440200220022661500292116476f7665726e6f722076616c696461746f722072756e000013371e610e0264646464a66614a0266e1d2002002132223002003375c615c02002244a002615e02004614c020026ea8c2ac04c2b004004c8c2ac04c2b004004c2a804c2a404004dd7040809855009984a0084a8099911984c00919b873309a01003323756615a02615802615c02002615802615602615a0200290010009bae07f37586152020082a666140026644a6661440266e1c0092000153330a2013370e00290000a51153330a2013370e00290010a50153330a2013370e00290020a5014a02a6661440266e1c0092002153330a2013370e00290000a50153330a2013370e00290010a51153330a2013370e00290020a5014a02a6661440266e1c0092004153330a2013370e00290000a50153330a2013370e00290010a50153330a2013370e00290020a5114a22a6661440266e1c005200014a02a6661440266e1c005200214a02a6661440266e1c005200414a22944dd69984a00a4923476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308b01232002375a002666124021260200400266e9520023309f013230aa0130ab010013309401095013322330980123370e6613402006646eacc2b404c2b004c2b804004c2b004c2ac04c2b4040052002001375c0fe6eb0c2a40401027804dd5985480801240082a666140026610602a6614c029211e5265736f6c766520676f7665726e6f72206f75746f70757420646174756d00137586610a0264615402614602615602002a6614c029211f4f6e6c7920676f7665726e6f72206f757470757420697320616c6c6f7765640013309d012253330a70100115330a8014910a456d707479206c6973740016153330a2013574661540200226156020022a6615002921154d6f7265207468616e206f6e6520656c656d656e74001637586152020066eacc2a404c2a004008cc88c8c8c8cc29004c2b804014cc29004010cc29004c2b804008cc29004c2b804004cc29004c2b804c2b40400428c04c2b004004c2ac04004c2a804008dd618548098540080299185500985480800a99853008420089bac33085013230aa0130a30130ab010013230aa0130a90130ab010013309401095013322330980123370e6613402006646eacc2b404c2b004c2b804004c2b004c2ac04c2b4040052002001375c0fe6eb0c2a404010dd59854809854008010a4c2a6614c029211a4e657720676f7665726e6f7220646174756d20636f7272656374001615330a6014912b5370656e6420676f7665726e6f7220776974682072656465656d6572204d7574617465476f7665726e6f72001615330a6014911e476f7665726e6f7220696e7075742073686f756c642062652076616c6964001615330a601491304f6e6c792073656c6620616e6420676f7665726e6f722073637269707420696e707574732061726520616c6c6f7765640016332309d012253330a70100110a00113253330a30130040011330a201001300330ab010021300330ab0100230ab01001232323330a2010014a0944c8c8c8c94ccc29404cdc3a400400429405289857808011853008009baa00130aa0130ab010013230aa0130ab0100130a90130a80130aa01001375861500200664614e02614e02614e02614002002614c02002614a02614a02002614c02614a020ea6eb01e054cc28405240128412073696e676c6520617574686f7269747920746f6b656e20686173206265656e206275726e6564001630a40130a30107330a201001153309f01491445061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b2061742061676f72612f41676f72612f4566666563742e68733a36333a352d3232001630a301002309a010013754613e02613c020dea666134020022930a9984d8084e008b184e0081b299984c008008a4c2a6613202134022c6134020066eb4004c26404004c25c0400c54cc2540424c0458dd6800984b00800984a0080b2999848008008a4c2a6612202124022c6124020062a661200211c022c6eb4004c24404004c23c0400c54cc2340422c0458dd68009847008009846008018a9984500844008b1bad001308b010013089010031533087010850116375a002611002002610c020062a6610802104022c6eb4004c21404004c20c0400c54cc204041fc58dd68009841008009bac001308001001307e003375a00260fa00260f6026a6660ee0022930a9983c03c8b183c8019bad00130780013076003375a00260ea00260e60066eb4004c1c8004c1c000cdd6800983780098368019bad001306c001375800260d40026eb0004c1a0004c1980d94ccc1880045261533063064163064003375a00260c600260c20062a660be0ba2c6eb4004c180004c1780594ccc168004526153305b05c16305c003153305a05816375a00260b600260b20062a660ae0aa2c6eb4004c160004c15800c54cc15014858dd6800982a80098298018a998288278b1bad00130520013050003153304e04c16375a002609e002609a0062a660960922c6eb4004c130004dd6000982500098240019bad001304700130450135333041001149854cc10810c58c10c00cdd6800982100098200019bad001303f001303d003375a002607800260740066eb4004c0e4004c0dc00cdd6800981b0009bac0013034001375800260640026eb0014c0c4008dd7002111998108010008018a50223375e6e9c008dd3800a4811c5265736f6c766520676f7665726e6f7220696e70757420646174756d00223003330050020012330012001153302100216491197066726f6d4a7573743a20666f756e6420504e6f7468696e6700223300300433005002001223300123222300200330030011225001232323232323232323232323232323232323232323232323232323253330323371290000008991919299981a99b89480000044c8c8c94ccc0e0cdc4a40000022646464a66607666e2520000011323232533303e3371290000008991919299982099b89480000044c8c8c8c8c94ccc118cdc4a40000022646464646406aa66609e0022930a998280288b18288019bad0013050001304e003153304c04a16375a002609a002609602ca66608e0022930a998240248b18248018a998238228b1bad00130480013046003153304404216375a002608a00260860062a6608207e2c6eb4004c108004c10000c54cc0f80f058dd6800981f800981e8018a9981d81c8b1bad001303c001303a003153303803616375a00260720026eb0004c0dc004c0d400cdd6800981a0009819009a9998170008a4c2a6605e0602c60600066eb4004c0bc004c0b400cdd6800981600098150019bad00130290013027003375a002604c00260480066eb4004c08c004dd600098108009bac00122323232533301a3370e90000010a9981000308038a99980d19b874800800854cc0800204cc024dd7181180080209a99810006080698118009812001180d8009baa002491086e6f20646174756d0022500149010a646174756d20686173680023300200337520024446602044a666034002244a0022a66602a66ebcc060c0780040104c014c0780044c008c0740040048c888c00800cc06c00524010c696e6c696e6520646174756d002223002003223300120011533014002164911e476f7665726e6f72205554584f2073686f756c6420636172727920475354003007222533301200112250011533300d30023016001132223002003301600113300300230150010012233333300300d0153752004002466600e4466e00dd6980c001000a40006eac004520002222333300533006004002001232223002003300400112250012300422533300e001122500113330033012001222300200313002301100122253330083375e00460060022446004006244a00244600644a66601a002200626600860220026004602000246460044660040040024600446600400400297ae05740ae688c020c0080048c01cc01c00555cea481257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665005573eae71241317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f005744ae848c008dd5000aab9e01", "role": "ValidatorRole", "version": "ScriptV2" }, diff --git a/agora/Agora/Effect/GovernorMutation.hs b/agora/Agora/Effect/GovernorMutation.hs index 8a85ba1..f8e2d0c 100644 --- a/agora/Agora/Effect/GovernorMutation.hs +++ b/agora/Agora/Effect/GovernorMutation.hs @@ -22,32 +22,30 @@ import Agora.Effect (makeEffect) import Agora.Governor ( GovernorDatum, GovernorRedeemer (MutateGovernor), - PGovernorDatum, + PGovernorDatum (PGovernorDatum), PGovernorRedeemer, ) +import Agora.Proposal (PProposalId) import Agora.SafeMoney (AuthorityTokenTag, GovernorSTTag) -import Agora.Utils (ptaggedSymbolValueOf) +import Agora.Utils (pfindInputWithStateThreadToken) import Generics.SOP qualified as SOP -import Plutarch.Api.V1 (PCurrencySymbol, PTxOutRef) +import Plutarch.Api.V1 (PCurrencySymbol) import Plutarch.Api.V2 ( PScriptHash, PScriptPurpose (PSpending), - PTxInInfo, PValidator, ) import Plutarch.DataRepr ( PDataFields, ) -import Plutarch.Extra.AssetClass (PAssetClass, passetClass) import Plutarch.Extra.Field (pletAll, pletAllC) -import Plutarch.Extra.Functor (pfmap) import Plutarch.Extra.IsData ( DerivePConstantViaDataList (DerivePConstantViaDataList), PlutusTypeDataList, ProductIsData (ProductIsData), ) import Plutarch.Extra.Maybe (passertPJust, pfromJust) -import Plutarch.Extra.Record (mkRecordConstr, (.=)) +import Plutarch.Extra.Record (mkRecordConstr, (.&), (.=)) import Plutarch.Extra.ScriptContext ( pisScriptAddress, pscriptHashFromAddress, @@ -55,7 +53,6 @@ import Plutarch.Extra.ScriptContext ( ptryFromRedeemer, ) import Plutarch.Extra.Tagged (PTagged) -import Plutarch.Extra.Value (passetClassValueOf) import Plutarch.Lift (PConstantDecl, PLifted, PUnsafeLiftDecl) import PlutusTx qualified import "liqwid-plutarch-extra" Plutarch.Extra.List (ptryFromSingleton) @@ -196,50 +193,56 @@ mutateGovernorValidator = pguardC "Only self and governor script inputs are allowed" $ plength # scriptInputs #== 2 - pguardC "Governor input should present" $ - pany - # plam - ( flip pletAll $ \inputF -> - let governorInputDatum = - ptrace "Resolve governor input datum" $ - pfromData $ - ptryFromOutputDatum @(PAsData PGovernorDatum) - # (pfield @"datum" # inputF.resolved) - # txInfoF.datums - isGovernorInput = - foldl1 - (#&&) - [ ptraceIfFalse "Governor UTxO should carry GST" $ - ptaggedSymbolValueOf - # pfromData gstSymbol - # (pfield @"value" # inputF.resolved) - #== 1 - , ptraceIfFalse "Can only modify the pinned governor" $ - governorInputDatum #== effectDatumF.oldDatum - , ptraceIfFalse "Governor validator run" $ - let inputScriptHash = - pfromJust - #$ pscriptHashFromAddress - #$ pfield @"address" - # inputF.resolved - in inputScriptHash #== pfromData govValidatorHash - ] - in isGovernorInput - ) - # scriptInputs + let + governorInput = + passertPJust + # "Governor UTXO should carry GST" + # ( pfindInputWithStateThreadToken + # pfromData gstSymbol + # txInfoF.inputs + ) + + governorRef = pfield @"outRef" # governorInput + + governorInputDatum = + ptrace "Resolve governor input datum" $ + pfromData $ + ptryFromOutputDatum @(PAsData PGovernorDatum) + # (pfield @"datum" #$ pfield @"resolved" # governorInput) + # txInfoF.datums + + inputProposalId = pfield @"nextProposalId" # governorInputDatum + + expectedInputDatum = + replaceProposalId # effectDatumF.oldDatum # inputProposalId + + pguardC "Governor input should be valid" $ + ( pletAll governorInput $ \inputF -> + let + isGovernorInput = + foldl1 + (#&&) + [ ptraceIfFalse "Can only modify the pinned governor datum" $ + governorInputDatum #== expectedInputDatum + , ptraceIfFalse "Governor validator run" $ + let inputScriptHash = + pfromJust + #$ pscriptHashFromAddress + #$ pfield @"address" + # inputF.resolved + in inputScriptHash #== pfromData govValidatorHash + ] + in + isGovernorInput + ) let - governorRef = - pfromJust - #$ findInputWithToken - # (passetClass # pfromData (pto gstSymbol) # pconstant "") - # txInfoF.inputs governorRedeemer = pfromData $ passertPJust # "Govenor redeemer should be resolved" #$ ptryFromRedeemer @(PAsData PGovernorRedeemer) - # mkRecordConstr PSpending (#_0 .= pdata governorRef) + # mkRecordConstr PSpending (#_0 .= governorRef) # txInfoF.redeemers pguardC "Spend governor with redeemer MutateGovernor" $ @@ -247,36 +250,44 @@ mutateGovernorValidator = ---------------------------------------------------------------------------- - let governorOutput = - ptrace "Only governor output is allowed" $ - ptryFromSingleton # pfromData txInfoF.outputs + let + governorOutput = + ptrace "Only governor output is allowed" $ + ptryFromSingleton # pfromData txInfoF.outputs - governorOutputDatum = - ptrace "Resolve governor outoput datum" $ - pfromData $ - ptryFromOutputDatum @(PAsData PGovernorDatum) - # (pfield @"datum" # governorOutput) - # txInfoF.datums + governorOutputDatum = + ptrace "Resolve governor outoput datum" $ + pfromData $ + ptryFromOutputDatum @(PAsData PGovernorDatum) + # (pfield @"datum" # governorOutput) + # txInfoF.datums + + expectedOutputDatum = + replaceProposalId # effectDatumF.newDatum # inputProposalId pguardC "New governor datum correct" $ - governorOutputDatum #== effectDatumF.newDatum + governorOutputDatum #== expectedOutputDatum return $ popaque $ pconstant () where - findInputWithToken :: + replaceProposalId :: ClosedTerm - ( PAssetClass - :--> PBuiltinList PTxInInfo - :--> PMaybe PTxOutRef + ( PGovernorDatum + :--> PAsData PProposalId + :--> PGovernorDatum ) - findInputWithToken = plam $ \tokenClass inputs -> - pfmap - # pfield @"outRef" - #$ pfind - # ( plam $ \input -> - 0 - #< passetClassValueOf - # tokenClass - # (pfield @"value" # (pfield @"resolved" # input)) + replaceProposalId = plam $ \datum proposalId -> + pletAll datum $ \datumF -> + mkRecordConstr + PGovernorDatum + ( #proposalThresholds + .= datumF.proposalThresholds + .& #nextProposalId + .= proposalId + .& #proposalTimings + .= datumF.proposalTimings + .& #createProposalTimeRangeMaxWidth + .= datumF.createProposalTimeRangeMaxWidth + .& #maximumCreatedProposalsPerStake + .= datumF.maximumCreatedProposalsPerStake ) - # inputs diff --git a/agora/Agora/Utils.hs b/agora/Agora/Utils.hs index 25178d4..5bd6b19 100644 --- a/agora/Agora/Utils.hs +++ b/agora/Agora/Utils.hs @@ -21,6 +21,7 @@ module Agora.Utils ( puncurryTuple, psubtractSortedValue, pisSubValueOf, + pfindInputWithStateThreadToken, ) where import Plutarch.Api.V1 (AmountGuarantees (Positive), KeyGuarantees (Sorted)) @@ -32,6 +33,7 @@ import Plutarch.Api.V2 ( PCurrencySymbol, PMaybeData (PDNothing), PTuple, + PTxInInfo, PValue, ) import Plutarch.Builtin (pforgetData, pserialiseData) @@ -198,3 +200,24 @@ pisSubValueOf = phoistAcyclic $ plam $ \vl vr -> #$ psubtractSortedValue # vl # vr + +{- | Find an input containing exactly one token with the given currency symbol + + @since 1.0.0 +-} +pfindInputWithStateThreadToken :: + forall tag. + ClosedTerm + ( PTagged tag PCurrencySymbol + :--> PBuiltinList PTxInInfo + :--> PMaybe PTxInInfo + ) +pfindInputWithStateThreadToken = plam $ \tokenSymbol inputs -> + pfind + # ( plam $ \input -> + ptaggedSymbolValueOf + # tokenSymbol + # (pfield @"value" # (pfield @"resolved" # input)) + #== 1 + ) + # inputs