diff --git a/CHANGELOG.md b/CHANGELOG.md index d5aa835..595303b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -181,6 +181,11 @@ the stake validator easily. The behaviour of the default stake validator remains Included by [#156](https://github.com/Liqwid-Labs/agora/pull/156). +- Expected input datum value is pinned instead of out ref for governor mutation + effect. + + Included by [#238](https://github.com/Liqwid-Labs/agora/pull/238). + ## 0.2.0 -- 2022-08-13 ### Added diff --git a/agora-specs/Sample/Effect/GovernorMutation.hs b/agora-specs/Sample/Effect/GovernorMutation.hs index c7520f3..8557c23 100644 --- a/agora-specs/Sample/Effect/GovernorMutation.hs +++ b/agora-specs/Sample/Effect/GovernorMutation.hs @@ -86,10 +86,10 @@ effectRef = 1 -- | The input effect datum in 'mkEffectTransaction'. -mkEffectDatum :: GovernorDatum -> MutateGovernorDatum -mkEffectDatum newGovDatum = +mkEffectDatum :: GovernorDatum -> GovernorDatum -> MutateGovernorDatum +mkEffectDatum oldGovDatum newGovDatum = MutateGovernorDatum - { governorRef = govRef + { oldDatum = oldGovDatum , newDatum = newGovDatum } @@ -131,7 +131,7 @@ mkEffectTxInfo newGovDatum = -- The effect should update 'nextProposalId' effectInputDatum' :: MutateGovernorDatum - effectInputDatum' = mkEffectDatum newGovDatum + effectInputDatum' = mkEffectDatum governorInputDatum' newGovDatum effectInputDatum :: Datum effectInputDatum = Datum $ toBuiltinData effectInputDatum' effectInput :: TxOut diff --git a/agora-specs/Spec/Effect/GovernorMutation.hs b/agora-specs/Spec/Effect/GovernorMutation.hs index 2190aed..32d8c20 100644 --- a/agora-specs/Spec/Effect/GovernorMutation.hs +++ b/agora-specs/Spec/Effect/GovernorMutation.hs @@ -34,21 +34,30 @@ specs = governorValidator ( GovernorDatum def - (ProposalId 0) + nextProposalId def def 3 ) MutateGovernor ( ScriptContext - (mkEffectTxInfo validNewGovernorDatum) + (mkEffectTxInfo validNewGovernorDatum') (Spending govRef) ) , effectSucceedsWith "effect validator should pass" effectValidator - (mkEffectDatum validNewGovernorDatum) - (ScriptContext (mkEffectTxInfo validNewGovernorDatum) (Spending effectRef)) + ( mkEffectDatum + ( GovernorDatum + def + nextProposalId + def + def + 3 + ) + validNewGovernorDatum + ) + (ScriptContext (mkEffectTxInfo validNewGovernorDatum') (Spending effectRef)) ] , group "invalid new governor datum" @@ -57,7 +66,7 @@ specs = governorValidator ( GovernorDatum def - (ProposalId 0) + nextProposalId def def 3 @@ -70,8 +79,25 @@ specs = , effectFailsWith "effect validator should fail" effectValidator - (mkEffectDatum validNewGovernorDatum) + ( mkEffectDatum + ( GovernorDatum + def + nextProposalId + def + def + 3 + ) + validNewGovernorDatum + ) (ScriptContext (mkEffectTxInfo invalidNewGovernorDatum) (Spending effectRef)) ] ] ] + 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 80a9402..bdde1fb 100644 --- a/agora-test/goldens/agora-golden.json +++ b/agora-test/goldens/agora-golden.json @@ -35,14 +35,14 @@ "version": "ScriptV2" }, "agora:mutateGovernorValidator": { - "cborHex": "59083d59083a01000032323232323232323232323232323232323232323232323222222232323232323232323232323232323232323232323232323232323232323232323232323232533303d3371290000008991919299982019b89480000044c8c8c94ccc10ccdc4a40000022646464a66608c66e252000001132323253330493371290000008991919299982619b89480000044c8c8c8c8c94ccc144cdc4a4000002264646464646464646464a6660b666e1d200200213232533305d53304c3370e6609c08a6eacc184c168c17c004c8cdc0a40000029001099b87332233305a22233533306300112250011322230020033232233001003002306500230660012300122333270044002600a0046600c00a002264900024c46006002002464a6660be646666660a60c60cc6ea4120dd5983218310009191919299983219b87480000085280a5130690023065001375460ca60cc60ca0042944c1900044cc14011cdd59831983098320008b191831983080098318009bac3061001480084c8c8c8c8c94ccc188cdc399982e9112999833000880109980199b8000248008c19c00520000014801054ccc188cc8c178894ccc1980045280a999198330008a51300330690011300230670012325330535330533370e660aa6eb8144c8dd598349833983500098341833000a4004266ebcc1a0004c1a001c4cdc7982d99191919299983419b87480080084c888c00800cdd718360008912800983680118348009baa3069306a001323069306a00130683066001375c0a460d00020022a6660c46644a6660c866e1c0092000153330643370e00290000a51153330643370e00290010a50153330643370e00290020a5014a02a6660c866e1c0092002153330643370e00290000a50153330643370e00290010a51153330643370e00290020a5014a02a6660c866e1c0092004153330643370e00290000a50153330643370e00290010a50153330643370e00290020a5114a22a6660c866e1c005200014a02a6660c866e1c005200214a02a6660c866e1c005200414a22944dd699911980090008b248123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223305c232002375a0026660ba0bc00400266e9520023305e3066005061375660cc00490020a999831199119baf374e0046e9c004dd61991182d9982e119191919191919191919191919191919191919191919191919191929998400099b89480000044c8c8c94ccc20c04cdc4a40000022646464a66610c0266e2520000011323232533308901337129000000899191929998460099b89480000044c8c8c94ccc23c04cdc4a400000226464646464a6661280266e25200000113232323232035533309901001149858c2640400cdd6800984c80800984b008018b1bad001309601001309301016533309101001149858c2440400c58dd68009848808009847008018b1bad001308e01001308b0100316375a0026116020026110020062c6eb4004c22004004c2140400c58dd68009842808009841008018b1bad001308201001375800261000200260fa0066eb4004c1f4004c1e804d4ccc1e0004526163078003375a00260f000260ea0066eb4004c1d4004c1c800cdd6800983900098378019bad001306f001306c003375a00260d80026eb0004c1a8004dd6000991919299983399b8748000008489400454ccc19ccdc3a400800426444600400660d60022664660c20c46ea4004dd71835800802183600118340009baa002323067306130680013305d22533306500116153330643574660cc002260d00022c6eb0c19800cdd5983318320011bac30663064005149858585858cc8c174894ccc194004418c4c94ccc194c0100044cc184004c00cc19c0084c00cc19c008c1a00048c8c8ccc190005282513232323253330673370e90010010a5014a260d800460d00026ea8004c19cc1a0004c8c19cc1a0004c198c190c19c004dd6183280199183198319831982f000983100098309830800983198310229bac0481630613060043305f001163060002305c001375460b860b407ea6660b00022930b182c01b299982b0008a4c2c60ac0066eb4004c158004c14c00c58dd68009829800982800b29998270008a4c2c609c0062c6eb4004c138004c12c00c58dd6800982580098240018b1bad0013048001304500316375a002608a00260840062c6eb4004c108004c0fc00c58dd6800981f8009bac001303d001303a003375a0026074002606e026a66606a0022930b181a8019bad00130350013032003375a0026064002605e0066eb4004c0bc004c0b000cdd6800981600098148019bad00130290013758002604e0026eb0004c094004c0880194ccc07ccdc3a400000426464a66604266e1cc090005200013253330223375e6e9c084dd39812000899299981199b87371a00290200991919191924ca6660500022930b18140019bad0013028001302500516375c604c0022c604e0022c6ea8004c08c00458c090008c080004dd5000980f8009bac005301e002375c00844666026004002006294000488cccccc00c04c058dd480100091998039119b80375a603200400290001bab0011480008888cccc014cc0180100080048c888c00800cc01000448940048c020894ccc04000448940044ccc00cc04c004888c00800c4c008c0440048894ccc038cdd7801180180089118010018912800911803912999807800880189980218090009801180800091980090008b1119800919111801001980180089128009111980291299980680089128008a99980619baf300f301000100413005301000113002300e001001232223002003300d00123230022330020020012300223300200200157404600c60040024600a600a00297ae05734aae7d5d12ab9d5742460046ea800555cf01", + "cborHex": "590bd7590bd401000032323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330403371290000008991919299982199b89480000044c8c8c94ccc118cdc4a40000022646464a66609266e2520000011323232533304c3371290000008991919299982799b89480000044c8c8c8c8c94ccc150cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660ec66e252000001132323253330793371290000008991919299983e19b89480000044c8c8c94ccc1fccdc4a40000022646464a6661040266e25200000113232325333085013371290000008991919191929998450099b89480000044c8c8c8c8c8c8c8c8c8c94ccc25004cdc3a400400426464a66612c02a660f866e1ccc234041d4dd5984e00984b80984d808009919b8148000005200213370e664466612a0244466a66613e02002244a002264446004006646446600200600461420200461420200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc26004c8cccccc248042700428404dd483c1bab309f01309e010012323232533309d013370e90000010a5014a2614802004613c020026ea8c28004c28404c28004008528984f808008998478083b9bab309e01309d01309f010011632309e01309d01001309e010013758613802002900109919191919299984d8099b873330980122253330a2010011002133003337000049001185180800a400000290020a99984d80992998410099842009bac33085013230a301309f0130a4010013230a30130a20130a4010013309001091013322330940123370e6612c02006646eacc29804c29404c29c04004c29404c29004c298040052002001375c100020046eacc28804c2840400ccc88c8c8c8cc28004c29c04014cc28004010cc28004c29c04008cc28004c29c04004cc28004c29c04c2980400427c04c29404004c29004004c28c04008dd6185100803191851809851008009bac33085013230a301309f0130a4010013230a30130a20130a4010013309001091013322330940123370e6612c02006646eacc29804c29404c29c04004c29404c29004c298040052002001375c100020046eacc28804c2840400c4cdc79843009919191929998500099b87480080084c888c00800cdd718530080089128009853808011850808009baa30a30130a4010013230a30130a40100130a20130a101001375c102026144026611e021200266446612602466e1ccc2540400cc8dd5985280985200985300800985200985180985280800a40040026eb81fc00454ccc26c04cc894ccc27404cdc3801240002a66613a0266e1c005200014a22a66613a0266e1c005200214a02a66613a0266e1c005200414a0294054ccc27404cdc3801240042a66613a0266e1c005200014a02a66613a0266e1c005200214a22a66613a0266e1c005200414a0294054ccc27404cdc3801240082a66613a0266e1c005200014a02a66613a0266e1c005200214a02a66613a0266e1c005200414a2294454ccc27404cdc3800a4000294054ccc27404cdc3800a4004294054ccc27404cdc3800a400829445289bad3308f0149124476f7665726e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308901232002375a00266611e021200200400266e9520023309a013230a20130a3010013308f01090013322330930123370e6612a02006646eacc29404c29004c29804004c29004c28c04c294040052002001375c0fe002132026eacc2840400920041533309b0133083013758661080264614402613c026146020026611e029201184e6f20676f7665726e6f72206f757470757420666f756e64003322330930123370e6612a020066eacc29004c28c04c294040052002001375c0fe6eb0c2840400cdd598508098500080119911919191984f809853008029984f808021984f809853008011984f809853008009984f8098530098528080084f009852008009851808009851008011bac30a10130a0010053230a20130a1010013758661080264614402613c02614602002646144026142026146020026611e021200266446612602466e1ccc2540400cc8dd5985280985200985300800985200985180985280800a40040026eb81fc004dd59850809850008010a4c2c2c2c2c66461300244a66614202002213602264a66613c02600800226613a020026006614602004260066146020046146020024646466613a02002941289919191929998500099b87480080085280a5130a70100230a1010013754002614402614602002646144026146020026142026140026144020026eb0c2800400cc8c27c04c27c04c27c04c26c04004c27804004c27404c27404004c27804c274041d4dd603c0b184e00984d80839984d008008b184d80801184a808009baa30970130960106f533309401001149858c250040d94ccc2480400452616309201003375a002612202002611e020062c6eb4004c23804004c230040594ccc2280400452616308a0100316375a002611202002610e020062c6eb4004c21804004c2100400c58dd68009841808009840808018b1bad001308001001307e00316375a00260fa00260f60062c6eb4004c1e8004dd6000983c000983b0019bad001307500130730135333071001149858c1c400cdd6800983800098370019bad001306d001306b003375a00260d400260d00066eb4004c19c004c19400cdd680098320009bac0013062001375800260c000260bc06ca6660b80022930b182e0019bad001305b001305900316375a00260b000260ac02ca6660a80022930b182a0018b1bad0013053001305100316375a00260a0002609c0062c6eb4004c134004c12c00c58dd6800982500098240018b1bad0013047001304500316375a00260880026eb0004c108004c10000cdd6800981f800981e809a99981d8008a4c2c60760066eb4004c0e8004c0e000cdd6800981b800981a8019bad00130340013032003375a0026062002605e0066eb4004c0b8004dd600098160009bac001302a001375800a60520046eb801088ccc07000800400c5281119baf374e0046e9c00488c00ccc0100080048cc00480045888cc00c010cc01400800488cc0048c888c00800cc00c00448940048c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94ccc0bccdc4a40000022646464a66606466e252000001132323253330353371290000008991919299981c19b89480000044c8c8c94ccc0eccdc4a40000022646464a66607c66e2520000011323232323253330433371290000008991919191901aa9998258008a4c2c60960066eb4004c128004c12000c58dd68009823800982280b29998218008a4c2c60860062c6eb4004c108004c10000c58dd6800981f800981e8018b1bad001303c001303a00316375a0026072002606e0062c6eb4004c0d8004c0d000c58dd680098198009bac0013031001302f003375a002605c0026058026a6660540022930b18150019bad00130290013027003375a002604c00260480066eb4004c08c004c08400cdd68009810000980f0019bad001301d001375800260360026eb000488c8c8c94ccc05ccdc3a4000004200c2a66602e66e1d200400213007301d001133008375c603a002008603c00460300026ea8008894004888c00800c8cc00800cdd48009111980711299980b80089128008a99980999baf30163019001004130053019001130023018001001232223002003301600122330012001164911e476f7665726e6f72205554584f2073686f756c6420636172727920475354003007222533301100112250011533300d30023013001132223002003301300113300300230120010012233333300300d0123752004002466600e4466e00dd6980a801000a40006eac004520002222333300533006004002001232223002003300400112250012300422533300d00112250011333003300f001222300200313002300e00122253330083375e00460060022446004006244a00244600644a6660180022006266008601c0026004601a00246460044660040040024600446600400400297ae05740ae688c014c0080048c010c01000555ceaab9f5744ae848c008dd5000aab9e1", "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": "59083a01000032323232323232323232323232323232323232323232323222222232323232323232323232323232323232323232323232323232323232323232323232323232533303d3371290000008991919299982019b89480000044c8c8c94ccc10ccdc4a40000022646464a66608c66e252000001132323253330493371290000008991919299982619b89480000044c8c8c8c8c94ccc144cdc4a4000002264646464646464646464a6660b666e1d200200213232533305d53304c3370e6609c08a6eacc184c168c17c004c8cdc0a40000029001099b87332233305a22233533306300112250011322230020033232233001003002306500230660012300122333270044002600a0046600c00a002264900024c46006002002464a6660be646666660a60c60cc6ea4120dd5983218310009191919299983219b87480000085280a5130690023065001375460ca60cc60ca0042944c1900044cc14011cdd59831983098320008b191831983080098318009bac3061001480084c8c8c8c8c94ccc188cdc399982e9112999833000880109980199b8000248008c19c00520000014801054ccc188cc8c178894ccc1980045280a999198330008a51300330690011300230670012325330535330533370e660aa6eb8144c8dd598349833983500098341833000a4004266ebcc1a0004c1a001c4cdc7982d99191919299983419b87480080084c888c00800cdd718360008912800983680118348009baa3069306a001323069306a00130683066001375c0a460d00020022a6660c46644a6660c866e1c0092000153330643370e00290000a51153330643370e00290010a50153330643370e00290020a5014a02a6660c866e1c0092002153330643370e00290000a50153330643370e00290010a51153330643370e00290020a5014a02a6660c866e1c0092004153330643370e00290000a50153330643370e00290010a50153330643370e00290020a5114a22a6660c866e1c005200014a02a6660c866e1c005200214a02a6660c866e1c005200414a22944dd699911980090008b248123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223305c232002375a0026660ba0bc00400266e9520023305e3066005061375660cc00490020a999831199119baf374e0046e9c004dd61991182d9982e119191919191919191919191919191919191919191919191919191929998400099b89480000044c8c8c94ccc20c04cdc4a40000022646464a66610c0266e2520000011323232533308901337129000000899191929998460099b89480000044c8c8c94ccc23c04cdc4a400000226464646464a6661280266e25200000113232323232035533309901001149858c2640400cdd6800984c80800984b008018b1bad001309601001309301016533309101001149858c2440400c58dd68009848808009847008018b1bad001308e01001308b0100316375a0026116020026110020062c6eb4004c22004004c2140400c58dd68009842808009841008018b1bad001308201001375800261000200260fa0066eb4004c1f4004c1e804d4ccc1e0004526163078003375a00260f000260ea0066eb4004c1d4004c1c800cdd6800983900098378019bad001306f001306c003375a00260d80026eb0004c1a8004dd6000991919299983399b8748000008489400454ccc19ccdc3a400800426444600400660d60022664660c20c46ea4004dd71835800802183600118340009baa002323067306130680013305d22533306500116153330643574660cc002260d00022c6eb0c19800cdd5983318320011bac30663064005149858585858cc8c174894ccc194004418c4c94ccc194c0100044cc184004c00cc19c0084c00cc19c008c1a00048c8c8ccc190005282513232323253330673370e90010010a5014a260d800460d00026ea8004c19cc1a0004c8c19cc1a0004c198c190c19c004dd6183280199183198319831982f000983100098309830800983198310229bac0481630613060043305f001163060002305c001375460b860b407ea6660b00022930b182c01b299982b0008a4c2c60ac0066eb4004c158004c14c00c58dd68009829800982800b29998270008a4c2c609c0062c6eb4004c138004c12c00c58dd6800982580098240018b1bad0013048001304500316375a002608a00260840062c6eb4004c108004c0fc00c58dd6800981f8009bac001303d001303a003375a0026074002606e026a66606a0022930b181a8019bad00130350013032003375a0026064002605e0066eb4004c0bc004c0b000cdd6800981600098148019bad00130290013758002604e0026eb0004c094004c0880194ccc07ccdc3a400000426464a66604266e1cc090005200013253330223375e6e9c084dd39812000899299981199b87371a00290200991919191924ca6660500022930b18140019bad0013028001302500516375c604c0022c604e0022c6ea8004c08c00458c090008c080004dd5000980f8009bac005301e002375c00844666026004002006294000488cccccc00c04c058dd480100091998039119b80375a603200400290001bab0011480008888cccc014cc0180100080048c888c00800cc01000448940048c020894ccc04000448940044ccc00cc04c004888c00800c4c008c0440048894ccc038cdd7801180180089118010018912800911803912999807800880189980218090009801180800091980090008b1119800919111801001980180089128009111980291299980680089128008a99980619baf300f301000100413005301000113002300e001001232223002003300d00123230022330020020012300223300200200157404600c60040024600a600a00297ae05734aae7d5d12ab9d5742460046ea800555cf01", + "rawHex": "590bd401000032323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330403371290000008991919299982199b89480000044c8c8c94ccc118cdc4a40000022646464a66609266e2520000011323232533304c3371290000008991919299982799b89480000044c8c8c8c8c94ccc150cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660ec66e252000001132323253330793371290000008991919299983e19b89480000044c8c8c94ccc1fccdc4a40000022646464a6661040266e25200000113232325333085013371290000008991919191929998450099b89480000044c8c8c8c8c8c8c8c8c8c94ccc25004cdc3a400400426464a66612c02a660f866e1ccc234041d4dd5984e00984b80984d808009919b8148000005200213370e664466612a0244466a66613e02002244a002264446004006646446600200600461420200461420200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc26004c8cccccc248042700428404dd483c1bab309f01309e010012323232533309d013370e90000010a5014a2614802004613c020026ea8c28004c28404c28004008528984f808008998478083b9bab309e01309d01309f010011632309e01309d01001309e010013758613802002900109919191919299984d8099b873330980122253330a2010011002133003337000049001185180800a400000290020a99984d80992998410099842009bac33085013230a301309f0130a4010013230a30130a20130a4010013309001091013322330940123370e6612c02006646eacc29804c29404c29c04004c29404c29004c298040052002001375c100020046eacc28804c2840400ccc88c8c8c8cc28004c29c04014cc28004010cc28004c29c04008cc28004c29c04004cc28004c29c04c2980400427c04c29404004c29004004c28c04008dd6185100803191851809851008009bac33085013230a301309f0130a4010013230a30130a20130a4010013309001091013322330940123370e6612c02006646eacc29804c29404c29c04004c29404c29004c298040052002001375c100020046eacc28804c2840400c4cdc79843009919191929998500099b87480080084c888c00800cdd718530080089128009853808011850808009baa30a30130a4010013230a30130a40100130a20130a101001375c102026144026611e021200266446612602466e1ccc2540400cc8dd5985280985200985300800985200985180985280800a40040026eb81fc00454ccc26c04cc894ccc27404cdc3801240002a66613a0266e1c005200014a22a66613a0266e1c005200214a02a66613a0266e1c005200414a0294054ccc27404cdc3801240042a66613a0266e1c005200014a02a66613a0266e1c005200214a22a66613a0266e1c005200414a0294054ccc27404cdc3801240082a66613a0266e1c005200014a02a66613a0266e1c005200214a02a66613a0266e1c005200414a2294454ccc27404cdc3800a4000294054ccc27404cdc3800a4004294054ccc27404cdc3800a400829445289bad3308f0149124476f7665726e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308901232002375a00266611e021200200400266e9520023309a013230a20130a3010013308f01090013322330930123370e6612a02006646eacc29404c29004c29804004c29004c28c04c294040052002001375c0fe002132026eacc2840400920041533309b0133083013758661080264614402613c026146020026611e029201184e6f20676f7665726e6f72206f757470757420666f756e64003322330930123370e6612a020066eacc29004c28c04c294040052002001375c0fe6eb0c2840400cdd598508098500080119911919191984f809853008029984f808021984f809853008011984f809853008009984f8098530098528080084f009852008009851808009851008011bac30a10130a0010053230a20130a1010013758661080264614402613c02614602002646144026142026146020026611e021200266446612602466e1ccc2540400cc8dd5985280985200985300800985200985180985280800a40040026eb81fc004dd59850809850008010a4c2c2c2c2c66461300244a66614202002213602264a66613c02600800226613a020026006614602004260066146020046146020024646466613a02002941289919191929998500099b87480080085280a5130a70100230a1010013754002614402614602002646144026146020026142026140026144020026eb0c2800400cc8c27c04c27c04c27c04c26c04004c27804004c27404c27404004c27804c274041d4dd603c0b184e00984d80839984d008008b184d80801184a808009baa30970130960106f533309401001149858c250040d94ccc2480400452616309201003375a002612202002611e020062c6eb4004c23804004c230040594ccc2280400452616308a0100316375a002611202002610e020062c6eb4004c21804004c2100400c58dd68009841808009840808018b1bad001308001001307e00316375a00260fa00260f60062c6eb4004c1e8004dd6000983c000983b0019bad001307500130730135333071001149858c1c400cdd6800983800098370019bad001306d001306b003375a00260d400260d00066eb4004c19c004c19400cdd680098320009bac0013062001375800260c000260bc06ca6660b80022930b182e0019bad001305b001305900316375a00260b000260ac02ca6660a80022930b182a0018b1bad0013053001305100316375a00260a0002609c0062c6eb4004c134004c12c00c58dd6800982500098240018b1bad0013047001304500316375a00260880026eb0004c108004c10000cdd6800981f800981e809a99981d8008a4c2c60760066eb4004c0e8004c0e000cdd6800981b800981a8019bad00130340013032003375a0026062002605e0066eb4004c0b8004dd600098160009bac001302a001375800a60520046eb801088ccc07000800400c5281119baf374e0046e9c00488c00ccc0100080048cc00480045888cc00c010cc01400800488cc0048c888c00800cc00c00448940048c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c94ccc0bccdc4a40000022646464a66606466e252000001132323253330353371290000008991919299981c19b89480000044c8c8c94ccc0eccdc4a40000022646464a66607c66e2520000011323232323253330433371290000008991919191901aa9998258008a4c2c60960066eb4004c128004c12000c58dd68009823800982280b29998218008a4c2c60860062c6eb4004c108004c10000c58dd6800981f800981e8018b1bad001303c001303a00316375a0026072002606e0062c6eb4004c0d8004c0d000c58dd680098198009bac0013031001302f003375a002605c0026058026a6660540022930b18150019bad00130290013027003375a002604c00260480066eb4004c08c004c08400cdd68009810000980f0019bad001301d001375800260360026eb000488c8c8c94ccc05ccdc3a4000004200c2a66602e66e1d200400213007301d001133008375c603a002008603c00460300026ea8008894004888c00800c8cc00800cdd48009111980711299980b80089128008a99980999baf30163019001004130053019001130023018001001232223002003301600122330012001164911e476f7665726e6f72205554584f2073686f756c6420636172727920475354003007222533301100112250011533300d30023013001132223002003301300113300300230120010012233333300300d0123752004002466600e4466e00dd6980a801000a40006eac004520002222333300533006004002001232223002003300400112250012300422533300d00112250011333003300f001222300200313002300e00122253330083375e00460060022446004006244a00244600644a6660180022006266008601c0026004601a00246460044660040040024600446600400400297ae05740ae688c014c0080048c010c01000555ceaab9f5744ae848c008dd5000aab9e1", "role": "ValidatorRole", "version": "ScriptV2" }, diff --git a/agora-test/goldens/agoraDebug-golden.json b/agora-test/goldens/agoraDebug-golden.json index 049061b..2d9bb19 100644 --- a/agora-test/goldens/agoraDebug-golden.json +++ b/agora-test/goldens/agoraDebug-golden.json @@ -35,14 +35,14 @@ "version": "ScriptV2" }, "agora:mutateGovernorValidator": { - "cborHex": "590d75590d720100003232323232323232323232323232323232323232323232323232323222222232323232323232323232323232323232323232323232323232323232323232323232323232533303f3371290000008991919299982119b89480000044c8c8c94ccc114cdc4a40000022646464a66609066e2520000011323232533304b3371290000008991919299982719b89480000044c8c8c8c8c94ccc14ccdc4a4000002264646464646464646464a6660ba66e1d200200213232533305f53304c32533306000110011330644913373696e676c65417574686f72697479546f6b656e4275726e65643a204d757374206275726e2065786163746c79203120474154000013370e6609c08a6eacc194c16cc188004c8cdc0a40000029001099299983000088008998322481254f6e6c79206f6e6520474154206d7573742065786973742061742074686520696e70757473000013370e66446660b644466a6660ca002244a002264446004006646446600200600460d000460d400246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc184c8cccccc14c19c1a8dd48241bab30683065001232323253330663370e900000109929998338008800899835a4937617574686f72697479546f6b656e7356616c6964496e3a2047415420696e636f72726563746c79206c69766573206174205075624b6579000014a02944c1b4008c1a4004dd51834983518348010a513068001133050047375660ce60c860d00022a660ca9201355768696c6520636f756e74696e67204741547320617420696e707574733a20616c6c2047415473206d7573742062652076616c6964001632306730640013067001375860ca002900109919191919299983219b8733305e222533306800110021330033370000490011835000a400000290020a999832199182f9129998340008a50153323306800114a2600660da0022600460d4002464a660a6a660a664a6660ce00220022660d692011e476f7665726e6f72205554784f2073686f756c6420636172727920475354000013370e660aa6eb8144c8dd598369835183700098361834800a4004264a6660ce00220022660d69212343616e206f6e6c79206d6f64696679207468652070696e6e656420676f7665726e6f72000013375e60d800260d800e264a6660ce00220022660d692116476f7665726e6f722076616c696461746f722072756e000013371e60b664646464a6660d466e1d2002002132223002003375c60e0002244a00260e200460da0026ea8c1b4c1b8004c8c1b4c1b8004c1b0c1a4004dd702918360008008a9998321991299983319b870024800054ccc198cdc3800a4000294454ccc198cdc3800a4004294054ccc198cdc3800a400829405280a99983319b870024800854ccc198cdc3800a4000294054ccc198cdc3800a4004294454ccc198cdc3800a400829405280a99983319b870024801054ccc198cdc3800a4000294054ccc198cdc3800a4004294054ccc198cdc3800a400829445288a99983319b87001480005280a99983319b87001480085280a99983319b87001480105288a51375a66446600240022a660d40042c920123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223305d232002375a0026660bc0be00400266e9520023305f306a005063375660d400490020a999832199119baf374e0046e9c0054cc1a12411e5265736f6c766520676f7665726e6f72206f75746f70757420646174756d0013758664460b6660ba4646464646464646464646464646464646464646464646464646464a6661040266e2520000011323232533308501337129000000899191929998440099b89480000044c8c8c94ccc22c04cdc4a40000022646464a66611c0266e252000001132323253330910133712900000089919191919299984b0099b89480000044c8c8c8c8c80d54ccc26c04004526153309e0109c0116309c01003375a002613a020026132020062a6613402128022c6eb4004c26804004c258040594ccc24c04004526153309601094011630940100315330950108f0116375a002612a020026122020062a6612402118022c6eb4004c24804004c2380400c54cc23c042240458dd68009847808009845808018a9984600843008b1bad001308c010013088010031533089010830116375a002611202002610a020062a6610c02100022c6eb4004c21804004dd60009842008009840008019bad001308101001307d013533307a001149854cc1f41ec58c1ec00cdd6800983e000983c0019bad00130790013075003375a00260ec00260e40066eb4004c1cc004c1bc00cdd680098380009bac001306e0013758002646464a6660d266e1d2000002153306d491086e6f20646174756d001225001153330693370e90010010a99836a4810a646174756d20686173680013323306206337520026eb8c1bc0040104d4cc1b52410c696e6c696e6520646174756d0012223002003306f0013070002306c00137540046460d660c460d8002a660d092011f4f6e6c7920676f7665726e6f72206f757470757420697320616c6c6f7765640013305e225333067001153306a4910a456d707479206c6973740016153330663574660d2002260d80022a660d4921154d6f7265207468616e206f6e6520656c656d656e740016375860d40066eacc1a8c19c008dd6183518338028a4c2a660d09211a4e657720676f7665726e6f7220646174756d20636f7272656374001615330684912b5370656e6420676f7665726e6f7220776974682072656465656d6572204d7574617465476f7665726e6f72001615330684911d476f7665726e6f7220696e7075742073686f756c642070726573656e7400161533068491304f6e6c792073656c6620616e6420676f7665726e6f722073637269707420696e707574732061726520616c6c6f7765640016332305e2253330670011065132533306730040011330620013003306a00213003306a002306c001232323330660014a0944c8c8c8c94ccc1a4cdc3a40040042940528983800118360009baa001306b306c00132306b306c001306a3067306b001375860d20066460cc60cc60cc60be00260ca00260c860c800260ce60cc08a6eb012054cc18d240128412073696e676c6520617574686f7269747920746f6b656e20686173206265656e206275726e656400163065306404330630011533061491445061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b2061742061676f72612f41676f72612f4566666563742e68733a36333a352d3232001630640023060001375460c060ba07ea6660b40022930a9982e82d8b182d81b299982c0008a4c2a660b60b22c60b20066eb4004c168004c15800c54cc15c14458dd6800982b800982980b29998280008a4c2a660a60a22c60a20062a660a40982c6eb4004c148004c13800c54cc13c12458dd6800982780098258018a998260230b1bad001304c0013048003153304904316375a0026092002608a0062a6608c0802c6eb4004c118004c10800c54cc10c0f458dd680098218009bac0013041001303d003375a002607c0026074026a66606e0022930a9981d01c0b181c0019bad00130390013035003375a002606c00260640066eb4004c0cc004c0bc00cdd6800981800098160019bad001302d001375800260560026eb0004c0a4004c0940194ccc084cdc3a400000426464a66604666e1cc0a0005200013253330243375e6e9c08cdd39813800899299981299b87371a00290200991919191924ca6660540022930a998168158b18158019bad001302c001302800515330294901257074727946726f6d2854784964293a206d757374206265203332206279746573206c6f6e670016375c60540022a6605092012a7074727946726f6d2854784964293a20636f6e7374727563746f72206669656c6473206c656e203e20310016302b00115330274901267074727946726f6d2854784964293a20696e76616c696420636f6e7374727563746f7220696400163754002604e0022a6604a9213f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72001630280023024001375400260460026eb0014c088008dd70021119980a8010008018a500012233333300301701a3752004002466600e4466e00dd6980e801000a40006eac0045200022223333005330060040020012322230020033004001122500123009225333012001122500113330033017001222300200313002301400122253330103375e00460060022446004006244a00244601044a6660220022006266008602c0026004602600246600240022a660200042c9201197066726f6d4a7573743a20666f756e6420504e6f7468696e67002233001232223002003300300112250012223300522533300e00112250011533300d3375e602460260020082600a60260022600460200020024644460040066020002464600446600400400246004466004004002ae808c020c0080048c01cc01c005241257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665004bd702b9a5573e9201317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f005744ae7155ceaba1230023754002aae781", + "cborHex": "591045591042010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330453371290000008991919299982419b89480000044c8c8c94ccc12ccdc4a40000022646464a66609c66e252000001132323253330513371290000008991919299982a19b89480000044c8c8c8c8c94ccc164cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660f666e2520000011323232533307e337129000000899191929998408099b89480000044c8c8c94ccc21004cdc4a40000022646464a66610e0266e2520000011323232533308a013371290000008991919191929998478099b89480000044c8c8c8c8c8c8c8c8c8c94ccc26404cdc3a400400426464a66613602a660f864a666138020022002266144029213373696e676c65417574686f72697479546f6b656e4275726e65643a204d757374206275726e2065786163746c79203120474154000013370e66124020ea6eacc29004c27004c28c04004c8cdc0a40000029001099299984e00800880089985100a481254f6e6c79206f6e6520474154206d7573742065786973742061742074686520696e70757473000013370e66446661340244466a66614a02002244a002264446004006646446600200600461520200461520200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc27404c8cccccc25c04284042a404dd483c1bab30a70130a601001232323253330a2013370e9000001099299985180800880089985480a4937617574686f72697479546f6b656e7356616c6964496e3a2047415420696e636f72726563746c79206c69766573206174205075624b6579000014a02944c2b004008c28c04004dd51854009854809854008010a5130a701001133094010773756614c02614a02614e020022a66146029201355768696c6520636f756e74696e67204741547320617420696e707574733a20616c6c2047415473206d7573742062652076616c696400163230a60130a50100130a601001375861480200290010991919191929998500099b8733309d0122253330a8010011002133003337000049001185580800a400000290020a99985000992998410099299985100800880089985400a4812943616e206f6e6c79206d6f64696679207468652070696e6e656420676f7665726e6f7220646174756d0000133084015330a70108501137586610c0264615602614802615802002646156026154026158020026612a0212c0266446613202466e1ccc26c0400cc8dd5985700985680985780800985680985600985700800a40040026eb820004008dd5985500985480801999119191919852809857808029985280802198528098578080119852809857808009985280985780985700800852009856808009856008009855808011bac30aa010063230ab0130aa010015330a70108501137586610c0264615602614802615802002646156026154026158020026612a0212c0266446613202466e1ccc26c0400cc8dd5985700985680985780800985680985600985700800a40040026eb820004008dd5985500985480801899299985100800880089985400a4916476f7665726e6f722076616c696461746f722072756e000013371e610e0264646464a66614a0266e1d2002002132223002003375c615c02002244a002615e02004614c020026ea8c2ac04c2b004004c8c2ac04c2b004004c2a804c2a404004dd7040809855009984a0084a8099911984c00919b873309a01003323756615a02615802615c02002615802615602615a0200290010009bae07f001153330a001332253330a2013370e00490000a9998510099b87001480005288a9998510099b87001480085280a9998510099b87001480105280a50153330a2013370e00490010a9998510099b87001480005280a9998510099b87001480085288a9998510099b87001480105280a50153330a2013370e00490020a9998510099b87001480005280a9998510099b87001480085280a9998510099b87001480105288a51153330a2013370e00290000a50153330a2013370e00290010a50153330a2013370e00290020a5114a26eb4cc25005240124476f7665726e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308b01232002375a002666124021260200400266e9520023309f013230aa0130ab010013309401095013322330980123370e6613402006646eacc2b404c2b004c2b804004c2b004c2ac04c2b4040052002001375c0fe00213c026eacc2a4040092004153330a00133083015330a6014911e5265736f6c766520676f7665726e6f72206f75746f70757420646174756d00137586610a026461540261460261560200266128029201184e6f20676f7665726e6f72206f757470757420666f756e64003322330980123370e66134020066eacc2b004c2ac04c2b4040052002001375c0fe6eb0c2a40400cdd5985480985400801199119191919852009857008029985200802198520098570080119852009857008009985200985700985680800851809856008009855808009855008011bac30a90130a8010053230aa0130a9010015330a60108401137586610a026461540261460261560200264615402615202615602002661280212a0266446613002466e1ccc2680400cc8dd5985680985600985700800985600985580985680800a40040026eb81fc004dd59854809854008010a4c2a6614c029211a4e657720676f7665726e6f7220646174756d20636f7272656374001615330a6014912b5370656e6420676f7665726e6f7220776974682072656465656d6572204d7574617465476f7665726e6f72001615330a6014911e476f7665726e6f7220696e7075742073686f756c642062652076616c6964001615330a601491304f6e6c792073656c6620616e6420676f7665726e6f722073637269707420696e707574732061726520616c6c6f7765640016332309d012253330a70100110a00113253330a30130040011330a201001300330ab010021300330ab0100230ab01001232323330a2010014a0944c8c8c8c94ccc29404cdc3a400400429405289857808011853008009baa00130aa0130ab010013230aa0130ab0100130a90130a80130aa01001375861500200664614e02614e02614e02614002002614c02002614a02614a02002614c02614a020ea6eb01e054cc28405240128412073696e676c6520617574686f7269747920746f6b656e20686173206265656e206275726e6564001630a40130a30107330a201001153309f01491445061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b2061742061676f72612f41676f72612f4566666563742e68733a36333a352d3232001630a301002309a010013754613e02613c020dea666134020022930a9984d8084e008b184e0081b299984c008008a4c2a6613202134022c6134020066eb4004c26404004c25c0400c54cc2540424c0458dd6800984b00800984a0080b2999848008008a4c2a6612202124022c6124020062a661200211c022c6eb4004c24404004c23c0400c54cc2340422c0458dd68009847008009846008018a9984500844008b1bad001308b010013089010031533087010850116375a002611002002610c020062a6610802104022c6eb4004c21404004c20c0400c54cc204041fc58dd68009841008009bac001308001001307e003375a00260fa00260f6026a6660ee0022930a9983c03c8b183c8019bad00130780013076003375a00260ea00260e60066eb4004c1c8004c1c000cdd6800983780098368019bad001306c001375800260d40026eb0004c1a0004c1980d94ccc1880045261533063064163064003375a00260c600260c20062a660be0ba2c6eb4004c180004c1780594ccc168004526153305b05c16305c003153305a05816375a00260b600260b20062a660ae0aa2c6eb4004c160004c15800c54cc15014858dd6800982a80098298018a998288278b1bad00130520013050003153304e04c16375a002609e002609a0062a660960922c6eb4004c130004dd6000982500098240019bad001304700130450135333041001149854cc10810c58c10c00cdd6800982100098200019bad001303f001303d003375a002607800260740066eb4004c0e4004c0dc00cdd6800981b0009bac0013034001375800260640026eb0014c0c4008dd7002111998108010008018a50223375e6e9c008dd3800a4811c5265736f6c766520676f7665726e6f7220696e70757420646174756d00223003330050020012330012001153302100216491197066726f6d4a7573743a20666f756e6420504e6f7468696e6700223300300433005002001223300123222300200330030011225001232323232323232323232323232323232323232323232323232323253330323371290000008991919299981a99b89480000044c8c8c94ccc0e0cdc4a40000022646464a66607666e2520000011323232533303e3371290000008991919299982099b89480000044c8c8c8c8c94ccc118cdc4a40000022646464646406aa66609e0022930a998280288b18288019bad0013050001304e003153304c04a16375a002609a002609602ca66608e0022930a998240248b18248018a998238228b1bad00130480013046003153304404216375a002608a00260860062a6608207e2c6eb4004c108004c10000c54cc0f80f058dd6800981f800981e8018a9981d81c8b1bad001303c001303a003153303803616375a00260720026eb0004c0dc004c0d400cdd6800981a0009819009a9998170008a4c2a6605e0602c60600066eb4004c0bc004c0b400cdd6800981600098150019bad00130290013027003375a002604c00260480066eb4004c08c004dd600098108009bac00122323232533301a3370e90000010a9981000308038a99980d19b874800800854cc0800204cc024dd7181180080209a99810006080698118009812001180d8009baa002491086e6f20646174756d0022500149010a646174756d20686173680023300200337520024446602044a666034002244a0022a66602a66ebcc060c0780040104c014c0780044c008c0740040048c888c00800cc06c00524010c696e6c696e6520646174756d002223002003223300120011533014002164911e476f7665726e6f72205554584f2073686f756c6420636172727920475354003007222533301200112250011533300d30023016001132223002003301600113300300230150010012233333300300d0153752004002466600e4466e00dd6980c001000a40006eac004520002222333300533006004002001232223002003300400112250012300422533300e001122500113330033012001222300200313002301100122253330083375e00460060022446004006244a00244600644a66601a002200626600860220026004602000246460044660040040024600446600400400297ae05740ae688c020c0080048c01cc01c00555cea481257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665005573eae71241317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f005744ae848c008dd5000aab9e01", "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": "590d720100003232323232323232323232323232323232323232323232323232323222222232323232323232323232323232323232323232323232323232323232323232323232323232533303f3371290000008991919299982119b89480000044c8c8c94ccc114cdc4a40000022646464a66609066e2520000011323232533304b3371290000008991919299982719b89480000044c8c8c8c8c94ccc14ccdc4a4000002264646464646464646464a6660ba66e1d200200213232533305f53304c32533306000110011330644913373696e676c65417574686f72697479546f6b656e4275726e65643a204d757374206275726e2065786163746c79203120474154000013370e6609c08a6eacc194c16cc188004c8cdc0a40000029001099299983000088008998322481254f6e6c79206f6e6520474154206d7573742065786973742061742074686520696e70757473000013370e66446660b644466a6660ca002244a002264446004006646446600200600460d000460d400246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc184c8cccccc14c19c1a8dd48241bab30683065001232323253330663370e900000109929998338008800899835a4937617574686f72697479546f6b656e7356616c6964496e3a2047415420696e636f72726563746c79206c69766573206174205075624b6579000014a02944c1b4008c1a4004dd51834983518348010a513068001133050047375660ce60c860d00022a660ca9201355768696c6520636f756e74696e67204741547320617420696e707574733a20616c6c2047415473206d7573742062652076616c6964001632306730640013067001375860ca002900109919191919299983219b8733305e222533306800110021330033370000490011835000a400000290020a999832199182f9129998340008a50153323306800114a2600660da0022600460d4002464a660a6a660a664a6660ce00220022660d692011e476f7665726e6f72205554784f2073686f756c6420636172727920475354000013370e660aa6eb8144c8dd598369835183700098361834800a4004264a6660ce00220022660d69212343616e206f6e6c79206d6f64696679207468652070696e6e656420676f7665726e6f72000013375e60d800260d800e264a6660ce00220022660d692116476f7665726e6f722076616c696461746f722072756e000013371e60b664646464a6660d466e1d2002002132223002003375c60e0002244a00260e200460da0026ea8c1b4c1b8004c8c1b4c1b8004c1b0c1a4004dd702918360008008a9998321991299983319b870024800054ccc198cdc3800a4000294454ccc198cdc3800a4004294054ccc198cdc3800a400829405280a99983319b870024800854ccc198cdc3800a4000294054ccc198cdc3800a4004294454ccc198cdc3800a400829405280a99983319b870024801054ccc198cdc3800a4000294054ccc198cdc3800a4004294054ccc198cdc3800a400829445288a99983319b87001480005280a99983319b87001480085280a99983319b87001480105288a51375a66446600240022a660d40042c920123476f76656e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223305d232002375a0026660bc0be00400266e9520023305f306a005063375660d400490020a999832199119baf374e0046e9c0054cc1a12411e5265736f6c766520676f7665726e6f72206f75746f70757420646174756d0013758664460b6660ba4646464646464646464646464646464646464646464646464646464a6661040266e2520000011323232533308501337129000000899191929998440099b89480000044c8c8c94ccc22c04cdc4a40000022646464a66611c0266e252000001132323253330910133712900000089919191919299984b0099b89480000044c8c8c8c8c80d54ccc26c04004526153309e0109c0116309c01003375a002613a020026132020062a6613402128022c6eb4004c26804004c258040594ccc24c04004526153309601094011630940100315330950108f0116375a002612a020026122020062a6612402118022c6eb4004c24804004c2380400c54cc23c042240458dd68009847808009845808018a9984600843008b1bad001308c010013088010031533089010830116375a002611202002610a020062a6610c02100022c6eb4004c21804004dd60009842008009840008019bad001308101001307d013533307a001149854cc1f41ec58c1ec00cdd6800983e000983c0019bad00130790013075003375a00260ec00260e40066eb4004c1cc004c1bc00cdd680098380009bac001306e0013758002646464a6660d266e1d2000002153306d491086e6f20646174756d001225001153330693370e90010010a99836a4810a646174756d20686173680013323306206337520026eb8c1bc0040104d4cc1b52410c696e6c696e6520646174756d0012223002003306f0013070002306c00137540046460d660c460d8002a660d092011f4f6e6c7920676f7665726e6f72206f757470757420697320616c6c6f7765640013305e225333067001153306a4910a456d707479206c6973740016153330663574660d2002260d80022a660d4921154d6f7265207468616e206f6e6520656c656d656e740016375860d40066eacc1a8c19c008dd6183518338028a4c2a660d09211a4e657720676f7665726e6f7220646174756d20636f7272656374001615330684912b5370656e6420676f7665726e6f7220776974682072656465656d6572204d7574617465476f7665726e6f72001615330684911d476f7665726e6f7220696e7075742073686f756c642070726573656e7400161533068491304f6e6c792073656c6620616e6420676f7665726e6f722073637269707420696e707574732061726520616c6c6f7765640016332305e2253330670011065132533306730040011330620013003306a00213003306a002306c001232323330660014a0944c8c8c8c94ccc1a4cdc3a40040042940528983800118360009baa001306b306c00132306b306c001306a3067306b001375860d20066460cc60cc60cc60be00260ca00260c860c800260ce60cc08a6eb012054cc18d240128412073696e676c6520617574686f7269747920746f6b656e20686173206265656e206275726e656400163065306404330630011533061491445061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b2061742061676f72612f41676f72612f4566666563742e68733a36333a352d3232001630640023060001375460c060ba07ea6660b40022930a9982e82d8b182d81b299982c0008a4c2a660b60b22c60b20066eb4004c168004c15800c54cc15c14458dd6800982b800982980b29998280008a4c2a660a60a22c60a20062a660a40982c6eb4004c148004c13800c54cc13c12458dd6800982780098258018a998260230b1bad001304c0013048003153304904316375a0026092002608a0062a6608c0802c6eb4004c118004c10800c54cc10c0f458dd680098218009bac0013041001303d003375a002607c0026074026a66606e0022930a9981d01c0b181c0019bad00130390013035003375a002606c00260640066eb4004c0cc004c0bc00cdd6800981800098160019bad001302d001375800260560026eb0004c0a4004c0940194ccc084cdc3a400000426464a66604666e1cc0a0005200013253330243375e6e9c08cdd39813800899299981299b87371a00290200991919191924ca6660540022930a998168158b18158019bad001302c001302800515330294901257074727946726f6d2854784964293a206d757374206265203332206279746573206c6f6e670016375c60540022a6605092012a7074727946726f6d2854784964293a20636f6e7374727563746f72206669656c6473206c656e203e20310016302b00115330274901267074727946726f6d2854784964293a20696e76616c696420636f6e7374727563746f7220696400163754002604e0022a6604a9213f7265616368656420656e64206f662073756d207768696c65207374696c6c206e6f7420686176696e6720666f756e642074686520636f6e7374727563746f72001630280023024001375400260460026eb0014c088008dd70021119980a8010008018a500012233333300301701a3752004002466600e4466e00dd6980e801000a40006eac0045200022223333005330060040020012322230020033004001122500123009225333012001122500113330033017001222300200313002301400122253330103375e00460060022446004006244a00244601044a6660220022006266008602c0026004602600246600240022a660200042c9201197066726f6d4a7573743a20666f756e6420504e6f7468696e67002233001232223002003300300112250012223300522533300e00112250011533300d3375e602460260020082600a60260022600460200020024644460040066020002464600446600400400246004466004004002ae808c020c0080048c01cc01c005241257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665004bd702b9a5573e9201317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f005744ae7155ceaba1230023754002aae781", + "rawHex": "591042010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232322222223232323232323232323232323232323232323232323232323232323232323253330453371290000008991919299982419b89480000044c8c8c94ccc12ccdc4a40000022646464a66609c66e252000001132323253330513371290000008991919299982a19b89480000044c8c8c8c8c94ccc164cdc4a4000002264646464646464646464646464646464646464646464646464646464646464646464a6660f666e2520000011323232533307e337129000000899191929998408099b89480000044c8c8c94ccc21004cdc4a40000022646464a66610e0266e2520000011323232533308a013371290000008991919191929998478099b89480000044c8c8c8c8c8c8c8c8c8c94ccc26404cdc3a400400426464a66613602a660f864a666138020022002266144029213373696e676c65417574686f72697479546f6b656e4275726e65643a204d757374206275726e2065786163746c79203120474154000013370e66124020ea6eacc29004c27004c28c04004c8cdc0a40000029001099299984e00800880089985100a481254f6e6c79206f6e6520474154206d7573742065786973742061742074686520696e70757473000013370e66446661340244466a66614a02002244a002264446004006646446600200600461520200461520200246002446664e0088004c014008cc0180140044c920004988c00c0040048c94ccc27404c8cccccc25c04284042a404dd483c1bab30a70130a601001232323253330a2013370e9000001099299985180800880089985480a4937617574686f72697479546f6b656e7356616c6964496e3a2047415420696e636f72726563746c79206c69766573206174205075624b6579000014a02944c2b004008c28c04004dd51854009854809854008010a5130a701001133094010773756614c02614a02614e020022a66146029201355768696c6520636f756e74696e67204741547320617420696e707574733a20616c6c2047415473206d7573742062652076616c696400163230a60130a50100130a601001375861480200290010991919191929998500099b8733309d0122253330a8010011002133003337000049001185580800a400000290020a99985000992998410099299985100800880089985400a4812943616e206f6e6c79206d6f64696679207468652070696e6e656420676f7665726e6f7220646174756d0000133084015330a70108501137586610c0264615602614802615802002646156026154026158020026612a0212c0266446613202466e1ccc26c0400cc8dd5985700985680985780800985680985600985700800a40040026eb820004008dd5985500985480801999119191919852809857808029985280802198528098578080119852809857808009985280985780985700800852009856808009856008009855808011bac30aa010063230ab0130aa010015330a70108501137586610c0264615602614802615802002646156026154026158020026612a0212c0266446613202466e1ccc26c0400cc8dd5985700985680985780800985680985600985700800a40040026eb820004008dd5985500985480801899299985100800880089985400a4916476f7665726e6f722076616c696461746f722072756e000013371e610e0264646464a66614a0266e1d2002002132223002003375c615c02002244a002615e02004614c020026ea8c2ac04c2b004004c8c2ac04c2b004004c2a804c2a404004dd7040809855009984a0084a8099911984c00919b873309a01003323756615a02615802615c02002615802615602615a0200290010009bae07f001153330a001332253330a2013370e00490000a9998510099b87001480005288a9998510099b87001480085280a9998510099b87001480105280a50153330a2013370e00490010a9998510099b87001480005280a9998510099b87001480085288a9998510099b87001480105280a50153330a2013370e00490020a9998510099b87001480005280a9998510099b87001480085280a9998510099b87001480105288a51153330a2013370e00290000a50153330a2013370e00290010a50153330a2013370e00290020a5114a26eb4cc25005240124476f7665726e6f722072656465656d65722073686f756c64206265207265736f6c7665640033223308b01232002375a002666124021260200400266e9520023309f013230aa0130ab010013309401095013322330980123370e6613402006646eacc2b404c2b004c2b804004c2b004c2ac04c2b4040052002001375c0fe00213c026eacc2a4040092004153330a00133083015330a6014911e5265736f6c766520676f7665726e6f72206f75746f70757420646174756d00137586610a026461540261460261560200266128029201184e6f20676f7665726e6f72206f757470757420666f756e64003322330980123370e66134020066eacc2b004c2ac04c2b4040052002001375c0fe6eb0c2a40400cdd5985480985400801199119191919852009857008029985200802198520098570080119852009857008009985200985700985680800851809856008009855808009855008011bac30a90130a8010053230aa0130a9010015330a60108401137586610a026461540261460261560200264615402615202615602002661280212a0266446613002466e1ccc2680400cc8dd5985680985600985700800985600985580985680800a40040026eb81fc004dd59854809854008010a4c2a6614c029211a4e657720676f7665726e6f7220646174756d20636f7272656374001615330a6014912b5370656e6420676f7665726e6f7220776974682072656465656d6572204d7574617465476f7665726e6f72001615330a6014911e476f7665726e6f7220696e7075742073686f756c642062652076616c6964001615330a601491304f6e6c792073656c6620616e6420676f7665726e6f722073637269707420696e707574732061726520616c6c6f7765640016332309d012253330a70100110a00113253330a30130040011330a201001300330ab010021300330ab0100230ab01001232323330a2010014a0944c8c8c8c94ccc29404cdc3a400400429405289857808011853008009baa00130aa0130ab010013230aa0130ab0100130a90130a80130aa01001375861500200664614e02614e02614e02614002002614c02002614a02614a02002614c02614a020ea6eb01e054cc28405240128412073696e676c6520617574686f7269747920746f6b656e20686173206265656e206275726e6564001630a40130a30107330a201001153309f01491445061747465726e206d61746368206661696c75726520696e2027646f2720626c6f636b2061742061676f72612f41676f72612f4566666563742e68733a36333a352d3232001630a301002309a010013754613e02613c020dea666134020022930a9984d8084e008b184e0081b299984c008008a4c2a6613202134022c6134020066eb4004c26404004c25c0400c54cc2540424c0458dd6800984b00800984a0080b2999848008008a4c2a6612202124022c6124020062a661200211c022c6eb4004c24404004c23c0400c54cc2340422c0458dd68009847008009846008018a9984500844008b1bad001308b010013089010031533087010850116375a002611002002610c020062a6610802104022c6eb4004c21404004c20c0400c54cc204041fc58dd68009841008009bac001308001001307e003375a00260fa00260f6026a6660ee0022930a9983c03c8b183c8019bad00130780013076003375a00260ea00260e60066eb4004c1c8004c1c000cdd6800983780098368019bad001306c001375800260d40026eb0004c1a0004c1980d94ccc1880045261533063064163064003375a00260c600260c20062a660be0ba2c6eb4004c180004c1780594ccc168004526153305b05c16305c003153305a05816375a00260b600260b20062a660ae0aa2c6eb4004c160004c15800c54cc15014858dd6800982a80098298018a998288278b1bad00130520013050003153304e04c16375a002609e002609a0062a660960922c6eb4004c130004dd6000982500098240019bad001304700130450135333041001149854cc10810c58c10c00cdd6800982100098200019bad001303f001303d003375a002607800260740066eb4004c0e4004c0dc00cdd6800981b0009bac0013034001375800260640026eb0014c0c4008dd7002111998108010008018a50223375e6e9c008dd3800a4811c5265736f6c766520676f7665726e6f7220696e70757420646174756d00223003330050020012330012001153302100216491197066726f6d4a7573743a20666f756e6420504e6f7468696e6700223300300433005002001223300123222300200330030011225001232323232323232323232323232323232323232323232323232323253330323371290000008991919299981a99b89480000044c8c8c94ccc0e0cdc4a40000022646464a66607666e2520000011323232533303e3371290000008991919299982099b89480000044c8c8c8c8c94ccc118cdc4a40000022646464646406aa66609e0022930a998280288b18288019bad0013050001304e003153304c04a16375a002609a002609602ca66608e0022930a998240248b18248018a998238228b1bad00130480013046003153304404216375a002608a00260860062a6608207e2c6eb4004c108004c10000c54cc0f80f058dd6800981f800981e8018a9981d81c8b1bad001303c001303a003153303803616375a00260720026eb0004c0dc004c0d400cdd6800981a0009819009a9998170008a4c2a6605e0602c60600066eb4004c0bc004c0b400cdd6800981600098150019bad00130290013027003375a002604c00260480066eb4004c08c004dd600098108009bac00122323232533301a3370e90000010a9981000308038a99980d19b874800800854cc0800204cc024dd7181180080209a99810006080698118009812001180d8009baa002491086e6f20646174756d0022500149010a646174756d20686173680023300200337520024446602044a666034002244a0022a66602a66ebcc060c0780040104c014c0780044c008c0740040048c888c00800cc06c00524010c696e6c696e6520646174756d002223002003223300120011533014002164911e476f7665726e6f72205554584f2073686f756c6420636172727920475354003007222533301200112250011533300d30023016001132223002003301600113300300230150010012233333300300d0153752004002466600e4466e00dd6980c001000a40006eac004520002222333300533006004002001232223002003300400112250012300422533300e001122500113330033012001222300200313002301100122253330083375e00460060022446004006244a00244600644a66601a002200626600860220026004602000246460044660040040024600446600400400297ae05740ae688c020c0080048c01cc01c00555cea481257074727946726f6d28504f53495854696d65293a206d75737420626520706f736974697665005573eae71241317074727946726f6d2850446174615265636f72645b5d293a206c697374206973206c6f6e676572207468616e207a65726f005744ae848c008dd5000aab9e01", "role": "ValidatorRole", "version": "ScriptV2" }, diff --git a/agora/Agora/Effect/GovernorMutation.hs b/agora/Agora/Effect/GovernorMutation.hs index 6f651df..4e4efc7 100644 --- a/agora/Agora/Effect/GovernorMutation.hs +++ b/agora/Agora/Effect/GovernorMutation.hs @@ -22,17 +22,17 @@ 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, pfindOutputWithStateThreadToken) import Generics.SOP qualified as SOP import Plutarch.Api.V1 (PCurrencySymbol) import Plutarch.Api.V2 ( PScriptHash, PScriptPurpose (PSpending), - PTxOutRef, PValidator, ) import Plutarch.DataRepr ( @@ -45,7 +45,7 @@ import Plutarch.Extra.IsData ( ProductIsData (ProductIsData), ) import Plutarch.Extra.Maybe (passertPJust, pfromJust) -import Plutarch.Extra.Record (mkRecordConstr, (.=)) +import Plutarch.Extra.Record (mkRecordConstr, (.&), (.=)) import Plutarch.Extra.ScriptContext ( pisScriptAddress, pscriptHashFromAddress, @@ -54,9 +54,8 @@ import Plutarch.Extra.ScriptContext ( ) import Plutarch.Extra.Tagged (PTagged) import Plutarch.Lift (PConstantDecl, PLifted, PUnsafeLiftDecl) -import PlutusLedgerApi.V1 (TxOutRef) import PlutusTx qualified -import "liqwid-plutarch-extra" Plutarch.Extra.List (ptryFromSingleton) + import "liqwid-plutarch-extra" Plutarch.Extra.TermCont (pguardC, pletC, pletFieldsC) -------------------------------------------------------------------------------- @@ -66,8 +65,8 @@ import "liqwid-plutarch-extra" Plutarch.Extra.TermCont (pguardC, pletC, pletFiel @since 0.1.0 -} data MutateGovernorDatum = MutateGovernorDatum - { governorRef :: TxOutRef - -- ^ Referenced governor state UTXO should be updated by the effect. + { oldDatum :: GovernorDatum + -- ^ The governor datum value on which this effect is valid , newDatum :: GovernorDatum -- ^ The new settings for the governor. } @@ -100,7 +99,7 @@ newtype PMutateGovernorDatum (s :: S) ( Term s ( PDataRecord - '[ "governorRef" ':= PTxOutRef + '[ "oldDatum" ':= PGovernorDatum , "newDatum" ':= PGovernorDatum ] ) @@ -194,57 +193,104 @@ mutateGovernorValidator = pguardC "Only self and governor script inputs are allowed" $ plength # scriptInputs #== 2 - pguardC "Governor input should present" $ - pany - # plam - ( flip pletAll $ \inputF -> - let isGovernorInput = - foldl1 - (#&&) - [ ptraceIfFalse "Governor UTxO should carry GST" $ - ptaggedSymbolValueOf - # pfromData gstSymbol - # (pfield @"value" # inputF.resolved) - #== 1 - , ptraceIfFalse "Can only modify the pinned governor" $ - inputF.outRef #== effectDatumF.governorRef - , 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 + # scriptInputs + ) - let governorRedeemer = + governorRef = pfield @"outRef" # governorInput + + governorInputDatum = + ptrace "Resolve governor input datum" $ pfromData $ - passertPJust - # "Govenor redeemer should be resolved" - #$ ptryFromRedeemer @(PAsData PGovernorRedeemer) - # mkRecordConstr PSpending (#_0 .= effectDatumF.governorRef) - # txInfoF.redeemers + 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 + governorRedeemer = + pfromData $ + passertPJust + # "Governor redeemer should be resolved" + #$ ptryFromRedeemer @(PAsData PGovernorRedeemer) + # mkRecordConstr PSpending (#_0 .= governorRef) + # txInfoF.redeemers pguardC "Spend governor with redeemer MutateGovernor" $ governorRedeemer #== pconstant MutateGovernor ---------------------------------------------------------------------------- - let governorOutput = - ptrace "Only governor output is allowed" $ - ptryFromSingleton # pfromData txInfoF.outputs + let + governorOutput = + passertPJust + # "No governor output found" + #$ pfindOutputWithStateThreadToken + # pfromData gstSymbol + # 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 + replaceProposalId :: + ClosedTerm + ( PGovernorDatum + :--> PAsData PProposalId + :--> PGovernorDatum + ) + replaceProposalId = plam $ \datum proposalId -> + pletAll datum $ \datumF -> + mkRecordConstr + PGovernorDatum + ( #proposalThresholds + .= datumF.proposalThresholds + .& #nextProposalId + .= proposalId + .& #proposalTimings + .= datumF.proposalTimings + .& #createProposalTimeRangeMaxWidth + .= datumF.createProposalTimeRangeMaxWidth + .& #maximumCreatedProposalsPerStake + .= datumF.maximumCreatedProposalsPerStake + ) diff --git a/agora/Agora/Utils.hs b/agora/Agora/Utils.hs index 25178d4..f41672e 100644 --- a/agora/Agora/Utils.hs +++ b/agora/Agora/Utils.hs @@ -20,6 +20,8 @@ module Agora.Utils ( phashDatum, puncurryTuple, psubtractSortedValue, + pfindInputWithStateThreadToken, + pfindOutputWithStateThreadToken, pisSubValueOf, ) where @@ -32,6 +34,8 @@ import Plutarch.Api.V2 ( PCurrencySymbol, PMaybeData (PDNothing), PTuple, + PTxInInfo, + PTxOut, PValue, ) import Plutarch.Builtin (pforgetData, pserialiseData) @@ -176,6 +180,49 @@ psubtractSortedValue = phoistAcyclic $ plam $ \a b -> # (pfmap # pnegate) # pto b +{- | 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 + +{- | Find an output containing exactly one token with the given currency symbol, + + @since 1.0.0 +-} +pfindOutputWithStateThreadToken :: + forall tag. + ClosedTerm + ( PTagged tag PCurrencySymbol + :--> PBuiltinList PTxOut + :--> PMaybe PTxOut + ) +pfindOutputWithStateThreadToken = plam $ \tokenSymbol outputs -> + pfind + # ( plam $ \output -> + ( ptaggedSymbolValueOf + # tokenSymbol + # (pfield @"value" # output) + #== 1 + ) + ) + # outputs + pisNonNegativeValue :: forall (kg :: KeyGuarantees) (am :: AmountGuarantees) (s :: S). Term s (PValue kg am :--> PBool)