From eb407b98c4843f03cb9098864635fce98c5ec655 Mon Sep 17 00:00:00 2001 From: Hongrui Fang Date: Wed, 20 Jul 2022 20:44:20 +0800 Subject: [PATCH] add tests for governor mutation --- agora-specs/Sample/Governor/Mutate.hs | 264 ++++++++++++++++++++++++++ agora-specs/Spec/Governor.hs | 48 ++--- agora-testlib/Test/Util.hs | 12 ++ agora.cabal | 1 + agora/Agora/Governor/Scripts.hs | 5 +- bench.csv | 63 +++--- 6 files changed, 329 insertions(+), 64 deletions(-) create mode 100644 agora-specs/Sample/Governor/Mutate.hs diff --git a/agora-specs/Sample/Governor/Mutate.hs b/agora-specs/Sample/Governor/Mutate.hs new file mode 100644 index 0000000..8b789b0 --- /dev/null +++ b/agora-specs/Sample/Governor/Mutate.hs @@ -0,0 +1,264 @@ +module Sample.Governor.Mutate ( + -- * Testing Utilities + GovernorOutputDatumValidity (..), + GATValidity (..), + GovernorParameters (..), + MockEffectParameters (..), + ParameterBundle (..), + + -- * Testing Utilities + Validity (..), + mutate, + mkTestCase, + + -- * Parameters Bundles + totallyValidBundle, + invalidBundles, +) where + +import Agora.Effect.NoOp (noOpValidator) +import Agora.Governor (GovernorDatum (..), GovernorRedeemer (MutateGovernor)) +import Agora.Governor.Scripts (governorValidator) +import Agora.Proposal (ProposalId (ProposalId), ProposalThresholds (..)) +import Agora.Utils (validatorHashToTokenName) +import Data.Default (def) +import Plutarch.Api.V1 (PValidator, mkValidator, validatorHash) +import Plutarch.Context ( + BaseBuilder, + buildTxInfoUnsafe, + input, + mint, + output, + pubKey, + script, + withDatum, + withOutRef, + withValue, + ) +import PlutusLedgerApi.V1 ( + Data, + ScriptContext (ScriptContext), + ScriptPurpose (Spending), + TxInfo, + TxOutRef (TxOutRef), + ValidatorHash, + Value, + toData, + ) +import PlutusLedgerApi.V1.Value qualified as Value +import Sample.Shared ( + authorityTokenSymbol, + govAssetClass, + govValidatorHash, + governor, + minAda, + ) +import Test.Specification (SpecificationTree, testValidator) +import Test.Util (pubKeyHashes, sortValue, validatorHashes, withOptional) + +-------------------------------------------------------------------------------- + +data GovernorOutputDatumValidity + = DatumValid + | ValueInvalid + | WrongType + | NoDatum + deriving stock (Bounded, Enum) + +data GATValidity + = GATValid + | WrongTag + | NoGAT + deriving stock (Bounded, Enum) + +data GovernorParameters = GovernorParameters + { governorOutputDatumValidity :: GovernorOutputDatumValidity + , stealGST :: Bool + } + +data MockEffectParameters = MockEffectParameters + { gatValidity :: GATValidity + , burnGAT :: Bool + } + +data ParameterBundle = ParameterBundle + { governorParameters :: GovernorParameters + , mockEffectParameters :: MockEffectParameters + } + +newtype Validity = Validity {forGovernorValidator :: Bool} + +-------------------------------------------------------------------------------- + +governorInputDatum :: GovernorDatum +governorInputDatum = + GovernorDatum + { proposalThresholds = def + , nextProposalId = ProposalId 0 + , proposalTimings = def + , createProposalTimeRangeMaxWidth = def + , maximumProposalsPerStake = 3 + } + +mkGovernorOutputDatum :: + GovernorOutputDatumValidity -> + Maybe Data +mkGovernorOutputDatum DatumValid = + Just $ + toData $ + governorInputDatum + { maximumProposalsPerStake = 4 + } +mkGovernorOutputDatum ValueInvalid = + let invalidProposalThresholds = + ProposalThresholds + { execute = -1 + , create = -1 + , vote = -1 + } + in Just $ + toData $ + governorInputDatum + { proposalThresholds = + invalidProposalThresholds + } +mkGovernorOutputDatum WrongType = Just $ toData () +mkGovernorOutputDatum NoDatum = Nothing + +governorRef :: TxOutRef +governorRef = + TxOutRef + "6cce6dfbb697f9e2c4fe9786bb576eb7bd6cbcf7801a4ba13d596006c2d5b957" + 1 + +governorScriptPurpose :: ScriptPurpose +governorScriptPurpose = Spending governorRef + +governorRedeemer :: GovernorRedeemer +governorRedeemer = MutateGovernor + +mkGovernorBuilder :: GovernorParameters -> BaseBuilder +mkGovernorBuilder ps = + let gst = Value.assetClassValue govAssetClass 1 + value = sortValue $ gst <> minAda + gstOutput = + if ps.stealGST + then pubKey $ head pubKeyHashes + else script govValidatorHash + withGSTDatum = + withOptional withDatum $ + mkGovernorOutputDatum ps.governorOutputDatumValidity + in mconcat + [ input $ + script govValidatorHash + . withDatum governorInputDatum + . withValue value + . withOutRef governorRef + , output $ + gstOutput + . withGSTDatum + . withValue value + ] + +-------------------------------------------------------------------------------- + +mockEffectValidator :: ClosedTerm PValidator +mockEffectValidator = noOpValidator authorityTokenSymbol + +mockEffectValidatorHash :: ValidatorHash +mockEffectValidatorHash = validatorHash $ mkValidator mockEffectValidator + +mkGATValue :: GATValidity -> Integer -> Value +mkGATValue NoGAT _ = mempty +mkGATValue v q = + let gatOwner = case v of + GATValid -> mockEffectValidatorHash + WrongTag -> head validatorHashes + in Value.singleton + authorityTokenSymbol + (validatorHashToTokenName gatOwner) + q + +mkMockEffectBuilder :: MockEffectParameters -> BaseBuilder +mkMockEffectBuilder ps = + let mkGATValue' = mkGATValue ps.gatValidity + inputValue = mkGATValue' 1 + outputValue = inputValue <> burnt + burnt = + if ps.burnGAT + then mkGATValue' (-1) + else mempty + in mconcat + [ mint burnt + , input $ + script mockEffectValidatorHash + . withValue inputValue + , output $ + script mockEffectValidatorHash + . withValue outputValue + ] + +-------------------------------------------------------------------------------- + +mutate :: ParameterBundle -> TxInfo +mutate pb = + buildTxInfoUnsafe $ + mconcat + [ mkGovernorBuilder pb.governorParameters + , mkMockEffectBuilder pb.mockEffectParameters + ] + +-------------------------------------------------------------------------------- + +mkTestCase :: String -> ParameterBundle -> Validity -> SpecificationTree +mkTestCase name pb (Validity forGov) = + testValidator + forGov + name + (governorValidator governor) + governorInputDatum + governorRedeemer + ( ScriptContext + (mutate pb) + governorScriptPurpose + ) + +-------------------------------------------------------------------------------- + +totallyValidBundle :: ParameterBundle +totallyValidBundle = + ParameterBundle + { governorParameters = + GovernorParameters + { governorOutputDatumValidity = DatumValid + , stealGST = False + } + , mockEffectParameters = + MockEffectParameters + { gatValidity = GATValid + , burnGAT = True + } + } + +-------------------------------------------------------------------------------- + +invalidBundles :: [ParameterBundle] +invalidBundles = do + gdv <- enumFrom ValueInvalid + sg <- [True, False] + gtv <- enumFrom WrongTag + bgt <- [True, False] + + pure $ + ParameterBundle + { governorParameters = + GovernorParameters + { governorOutputDatumValidity = gdv + , stealGST = sg + } + , mockEffectParameters = + MockEffectParameters + { gatValidity = gtv + , burnGAT = bgt + } + } diff --git a/agora-specs/Spec/Governor.hs b/agora-specs/Spec/Governor.hs index 532dd2e..215cc0a 100644 --- a/agora-specs/Spec/Governor.hs +++ b/agora-specs/Spec/Governor.hs @@ -13,17 +13,11 @@ TODO: Add negative test cases, see [#76](https://github.com/Liqwid-Labs/agora/is -} module Spec.Governor (specs) where -import Agora.Governor (GovernorDatum (..), GovernorRedeemer (..)) -import Agora.Governor.Scripts (governorValidator) -import Agora.Proposal (ProposalId (..)) -import Data.Default.Class (Default (def)) -import Sample.Governor (mintGATs, mutateState) import Sample.Governor.Initialize qualified as GST -import Sample.Shared qualified as Shared +import Sample.Governor.Mutate qualified as Mutate import Test.Specification ( SpecificationTree, group, - validatorSucceedsWith, ) -- | The SpecificationTree exported by this module. @@ -48,29 +42,21 @@ specs = ] , group "validator" - [ validatorSucceedsWith - "GATs minting" - (governorValidator Shared.governor) - ( GovernorDatum - def - (ProposalId 5) - def - def - 3 - ) - MintGATs - mintGATs - , validatorSucceedsWith - "mutate governor state" - (governorValidator Shared.governor) - ( GovernorDatum - def - (ProposalId 5) - def - def - 3 - ) - MutateGovernor - mutateState + [ group + "mutate" + [ Mutate.mkTestCase + "legal" + Mutate.totallyValidBundle + (Mutate.Validity True) + , group "illegal" $ + map + ( \b -> + Mutate.mkTestCase + "(negative test)" + b + (Mutate.Validity False) + ) + Mutate.invalidBundles + ] ] ] diff --git a/agora-testlib/Test/Util.hs b/agora-testlib/Test/Util.hs index 4187dae..e7914b7 100644 --- a/agora-testlib/Test/Util.hs +++ b/agora-testlib/Test/Util.hs @@ -19,6 +19,7 @@ module Test.Util ( scriptCredentials, validatorHashes, groupsOfN, + withOptional, ) where -------------------------------------------------------------------------------- @@ -31,6 +32,7 @@ import Data.ByteString qualified as BS import Data.ByteString.Char8 qualified as C import Data.ByteString.Lazy qualified as ByteString.Lazy import Data.List (sortOn) +import Plutarch.Context (UTXO) import Plutarch.Crypto (pblake2b_256) import PlutusLedgerApi.V1 (Credential (PubKeyCredential, ScriptCredential), PubKeyHash (..), ValidatorHash (ValidatorHash)) import PlutusLedgerApi.V1.Interval qualified as PlutusTx @@ -156,3 +158,13 @@ groupsOfN n xs = next n (x : xs) = let (xs', rest) = next (n - 1) xs in (x : xs', rest) + +-------------------------------------------------------------------------------- + +withOptional :: + (a -> UTXO -> UTXO) -> + Maybe a -> + UTXO -> + UTXO +withOptional f (Just b) = f b +withOptional _ _ = id diff --git a/agora.cabal b/agora.cabal index 6485c15..6e82deb 100644 --- a/agora.cabal +++ b/agora.cabal @@ -189,6 +189,7 @@ library agora-specs Sample.Effect.TreasuryWithdrawal Sample.Governor Sample.Governor.Initialize + Sample.Governor.Mutate Sample.Proposal.Advance Sample.Proposal.Cosign Sample.Proposal.Create diff --git a/agora/Agora/Governor/Scripts.hs b/agora/Agora/Governor/Scripts.hs index c226474..13ae7e1 100644 --- a/agora/Agora/Governor/Scripts.hs +++ b/agora/Agora/Governor/Scripts.hs @@ -593,7 +593,10 @@ governorValidator gov = Just MutateGovernor -> unTermCont $ do -- Check that a GAT is burnt. - pure $ popaque $ singleAuthorityTokenBurned patSymbol txInfoF.inputs txInfoF.mint + pguardC "One valid GAT burnt" $ + singleAuthorityTokenBurned patSymbol txInfoF.inputs txInfoF.mint + + pure $ popaque $ pconstant () -------------------------------------------------------------------------- Nothing -> ptraceError "Unknown redeemer" diff --git a/bench.csv b/bench.csv index da6f322..e5c5b9b 100644 --- a/bench.csv +++ b/bench.csv @@ -2,18 +2,18 @@ name,cpu,mem,size Agora/Effects/Treasury Withdrawal Effect/effect/Simple,333137234,829671,3674 Agora/Effects/Treasury Withdrawal Effect/effect/Simple with multiple treasuries ,492197164,1196783,3986 Agora/Effects/Treasury Withdrawal Effect/effect/Mixed Assets,455817227,1103968,3859 -Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,92825132,256078,8257 +Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,93089688,256879,8290 Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,112671240,312571,3751 Agora/Stake/policy/stakeCreation,51008580,149029,2522 Agora/Stake/validator/stakeDepositWithdraw deposit,183506412,498838,4745 Agora/Stake/validator/stakeDepositWithdraw withdraw,183506412,498838,4733 Agora/Proposal/policy (proposal creation)/legal/proposal,33689644,100286,2005 -Agora/Proposal/policy (proposal creation)/legal/governor,324511293,861435,8736 +Agora/Proposal/policy (proposal creation)/legal/governor,324511293,861435,8769 Agora/Proposal/policy (proposal creation)/legal/stake,153960499,403133,5407 Agora/Proposal/policy (proposal creation)/illegal/invalid next proposal id/proposal,33689644,100286,2005 Agora/Proposal/policy (proposal creation)/illegal/invalid next proposal id/stake,153960499,403133,5407 Agora/Proposal/policy (proposal creation)/illegal/use other's stake/proposal,33689644,100286,1974 -Agora/Proposal/policy (proposal creation)/illegal/use other's stake/governor,324511293,861435,8705 +Agora/Proposal/policy (proposal creation)/illegal/use other's stake/governor,324511293,861435,8738 Agora/Proposal/policy (proposal creation)/illegal/altered stake/proposal,33689644,100286,2005 Agora/Proposal/policy (proposal creation)/illegal/invalid stake locks/proposal,33689644,100286,2013 Agora/Proposal/policy (proposal creation)/illegal/invalid stake locks/stake,159394159,417783,5415 @@ -53,7 +53,7 @@ Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,5558 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,340029740,936478,10019 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,6710 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,458676371,1153000,10052 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,458676371,1153000,10085 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,3653 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,243781894,681753,8860 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,5553 @@ -71,9 +71,9 @@ Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/ambigu Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,129324200,334140,5553 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,5558 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/stake,180556487,455715,6710 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,458676371,1153000,10052 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,458676371,1153000,10085 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15806303,48240,3653 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/altered output stake datum/from Locked/governor,458676371,1153000,10053 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/altered output stake datum/from Locked/governor,458676371,1153000,10086 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,3654 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/forget to mint GATs/proposal,315778694,863869,9307 Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/forget to mint GATs/stake,167456328,430104,5998 @@ -94,7 +94,7 @@ Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,5951 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,385431088,1054570,10609 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,7104 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,478594542,1207445,10446 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,478594542,1207445,10479 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,4047 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,289183242,799845,9449 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,5946 @@ -112,9 +112,9 @@ Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/ambigu Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,129324200,334140,5946 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,5951 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/stake,180556487,455715,7104 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,478594542,1207445,10446 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,478594542,1207445,10479 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15806303,48240,4047 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/altered output stake datum/from Locked/governor,478594542,1207445,10447 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/altered output stake datum/from Locked/governor,478594542,1207445,10480 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,4048 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/forget to mint GATs/proposal,361180042,981961,9897 Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/forget to mint GATs/stake,167456328,430104,6392 @@ -135,7 +135,7 @@ Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,7132 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,521635132,1408846,12380 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,8284 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,538349055,1370780,11626 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,538349055,1370780,11659 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,5227 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,425387286,1154121,11221 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,7127 @@ -153,9 +153,9 @@ Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/ambigu Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,129324200,334140,7127 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,7132 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/stake,180556487,455715,8284 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,538349055,1370780,11626 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,538349055,1370780,11659 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15806303,48240,5227 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/altered output stake datum/from Locked/governor,538349055,1370780,11627 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/altered output stake datum/from Locked/governor,538349055,1370780,11660 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,5228 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/forget to mint GATs/proposal,497384086,1336237,11669 Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/forget to mint GATs/stake,167456328,430104,7573 @@ -176,7 +176,7 @@ Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,5794 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,362399088,998542,10376 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,6946 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,465864319,1173688,10289 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,465864319,1173688,10322 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,3890 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,266151242,743817,9217 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,5789 @@ -194,9 +194,9 @@ Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/ambigu Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,546746396,1437604,8178 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,5794 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/stake,180556487,455715,6946 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,465864319,1173688,10289 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,465864319,1173688,10322 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15806303,48240,3890 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/altered output stake datum/from Locked/governor,465864319,1173688,10290 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/altered output stake datum/from Locked/governor,465864319,1173688,10323 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,3891 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/forget to mint GATs/proposal,338148042,925933,9664 Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/forget to mint GATs/stake,167456328,430104,6234 @@ -217,7 +217,7 @@ Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,6187 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,407800436,1116634,10967 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,7340 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,485782490,1228133,10683 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,485782490,1228133,10716 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,4284 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,311552590,861909,9807 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,6182 @@ -235,9 +235,9 @@ Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/ambigu Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,546746396,1437604,8572 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,6187 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/stake,180556487,455715,7340 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,485782490,1228133,10683 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,485782490,1228133,10716 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15806303,48240,4284 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/altered output stake datum/from Locked/governor,485782490,1228133,10684 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/altered output stake datum/from Locked/governor,485782490,1228133,10717 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,4285 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/forget to mint GATs/proposal,383549390,1044025,10255 Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/forget to mint GATs/stake,167456328,430104,6628 @@ -258,7 +258,7 @@ Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,7368 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,544004480,1470910,12737 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,8520 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,545537003,1391468,11863 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,545537003,1391468,11896 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,5464 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,447756634,1216185,11578 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,7363 @@ -276,9 +276,9 @@ Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/ambigu Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,546746396,1437604,9752 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,7368 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/stake,180556487,455715,8520 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,545537003,1391468,11863 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,545537003,1391468,11896 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15806303,48240,5464 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/altered output stake datum/from Locked/governor,545537003,1391468,11864 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/altered output stake datum/from Locked/governor,545537003,1391468,11897 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,5465 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/forget to mint GATs/proposal,519753434,1398301,12026 Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/forget to mint GATs/stake,167456328,430104,7809 @@ -299,7 +299,7 @@ Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,6095 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,390360773,1076122,10828 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,7247 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,474849254,1199548,10590 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,474849254,1199548,10623 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,4191 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,294112927,821397,9669 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,6090 @@ -317,9 +317,9 @@ Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/ambig Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,1161583697,3085109,11466 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,6095 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/stake,180556487,455715,7247 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,474849254,1199548,10590 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,474849254,1199548,10623 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15806303,48240,4191 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/altered output stake datum/from Locked/governor,474849254,1199548,10591 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/altered output stake datum/from Locked/governor,474849254,1199548,10624 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,4192 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/forget to mint GATs/proposal,366109727,1003513,10117 Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/forget to mint GATs/stake,167456328,430104,6536 @@ -340,7 +340,7 @@ Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,6488 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,435762121,1194214,11418 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,7641 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,494767425,1253993,10984 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,494767425,1253993,11017 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,4585 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,339514275,939489,10258 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,6483 @@ -358,9 +358,9 @@ Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/ambig Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,1161583697,3085109,11859 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,6488 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/stake,180556487,455715,7641 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,494767425,1253993,10984 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,494767425,1253993,11017 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15806303,48240,4585 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/altered output stake datum/from Locked/governor,494767425,1253993,10985 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/altered output stake datum/from Locked/governor,494767425,1253993,11018 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,4586 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/forget to mint GATs/proposal,411511075,1121605,10706 Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/forget to mint GATs/stake,167456328,430104,6929 @@ -381,7 +381,7 @@ Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/stake,130046736,336404,7669 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,571966165,1548490,13190 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/stake,180556487,455715,8822 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,554521938,1417328,12165 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,554521938,1417328,12198 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15806303,48240,5765 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,475718319,1293765,12030 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Draft to Finished/stake,130046736,336404,7664 @@ -399,9 +399,9 @@ Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/ambig Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,1161583697,3085109,13040 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from VotingReady/stake,130046736,336404,7669 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/stake,180556487,455715,8822 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,554521938,1417328,12165 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,554521938,1417328,12198 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15806303,48240,5765 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/altered output stake datum/from Locked/governor,554521938,1417328,12166 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/altered output stake datum/from Locked/governor,554521938,1417328,12199 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/altered output stake datum/from Locked/authority,15806303,48240,5766 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/forget to mint GATs/proposal,547715119,1475881,12478 Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/forget to mint GATs/stake,167456328,430104,8110 @@ -574,5 +574,4 @@ Agora/Treasury/Validator/Positive/Allows for effect changes,31277082,80782,1450 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct simple,20570665,54655,725 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,32757063,87013,825 Agora/Governor/policy/totally legal,60002734,167736,2268 -Agora/Governor/validator/GATs minting,255848615,684194,8883 -Agora/Governor/validator/mutate governor state,93971983,261537,8356 +Agora/Governor/validator/mutate/legal,100216324,268169,8154