diff --git a/agora-specs/Sample/Proposal/Advance.hs b/agora-specs/Sample/Proposal/Advance.hs index 8af1f9d..28ec0e9 100644 --- a/agora-specs/Sample/Proposal/Advance.hs +++ b/agora-specs/Sample/Proposal/Advance.hs @@ -6,17 +6,45 @@ Description: Generate sample data for testing the functionalities of advancing p Sample and utilities for testing the functionalities of advancing proposals. -} module Sample.Proposal.Advance ( - advanceToNextStateInTimeParameters, - advanceToFailedStateDueToTimeoutParameters, - insufficientVotesParameters, - insufficientCosignsParameters, - advanceFromFinishedParameters, - invalidOutputStakeParameters, + -- * Parameters + ParameterBundle (..), + GovernorParameters (..), + AuthorityTokenParameters (..), + ProposalParameters (..), + StakeParameters (..), + Winner (..), + + -- * Testing Utilities + Validity (..), + advance, mkTestTree, - Parameters (..), + mkTestTree', + + -- * Parameter Bundles + mkValidToNextStateBundle, + mkValidToNextStateBundles, + mkValidToFailedStateBundles, + mkInsufficientVotesBundle, + mkAmbiguousWinnerBundle, + mkFromFinishedBundles, + mkInsufficientCosignsBundle, + mkToNextStateTooLateBundles, + mkInvalidOutputStakeBundles, + mkMintGATsForWrongEffectsBundle, + mkNoGATMintedBundle, + mkGATsWithWrongDatumBundle, + mkMintGATsWithoutTagBundle, + mkBadGovernorOutputDatumBundle, ) where -import Agora.Governor +import Agora.AuthorityToken ( + AuthorityToken (AuthorityToken), + authorityTokenPolicy, + ) +import Agora.Governor ( + GovernorDatum (..), + GovernorRedeemer (MintGATs), + ) import Agora.Governor.Scripts (governorValidator) import Agora.Proposal ( ProposalDatum (..), @@ -38,158 +66,313 @@ import Agora.Proposal.Time ( votingTime ), ) -import Agora.SafeMoney (GTTag) import Agora.Stake ( - ProposalLock (..), Stake (gtClassRef), StakeDatum (..), StakeRedeemer (WitnessStake), ) import Agora.Stake.Scripts (stakeValidator) -import Data.Coerce (coerce) +import Agora.Utils (validatorHashToTokenName) +import Control.Monad.State (execState, modify, when) import Data.Default (def) -import Data.List (singleton, sort) -import Data.Maybe (fromJust) +import Data.List (sort) +import Data.Maybe (catMaybes, fromJust) import Data.Tagged (Tagged (..), untag) import Plutarch.Context ( BaseBuilder, buildTxInfoUnsafe, input, + mint, output, script, signedWith, timeRange, - txId, withDatum, withOutRef, - withTxId, withValue, ) +import Plutarch.Lift (PLifted, PUnsafeLiftDecl) import PlutusLedgerApi.V1 ( DatumHash, POSIXTime, POSIXTimeRange, PubKeyHash, ScriptContext (ScriptContext), - ScriptPurpose (Spending), + ScriptPurpose (Minting, Spending), TxInfo, TxOutRef (TxOutRef), ValidatorHash, - always, ) +import PlutusLedgerApi.V1.Value (AssetClass (..)) import PlutusLedgerApi.V1.Value qualified as Value import PlutusTx.AssocMap qualified as AssocMap -import Sample.Proposal.Shared (governorTxRef, proposalTxRef, stakeTxRef) +import Sample.Proposal.Shared ( + governorTxRef, + proposalTxRef, + stakeTxRef, + ) import Sample.Shared ( + authorityTokenSymbol, govAssetClass, govValidatorHash, minAda, proposalPolicySymbol, proposalValidatorHash, + signer, stake, stakeAssetClass, stakeValidatorHash, ) import Sample.Shared qualified as Shared -import Test.Specification (SpecificationTree, group, testValidator) -import Test.Util (closedBoundedInterval, pubKeyHashes, sortValue, updateMap) +import Test.Specification ( + SpecificationTree, + group, + testPolicy, + testValidator, + ) +import Test.Util ( + closedBoundedInterval, + datumHash, + groupsOfN, + pubKeyHashes, + sortValue, + toDatum, + updateMap, + validatorHashes, + ) --- | Parameters for state transition of proposals. -data Parameters = Parameters - { fromStatus :: ProposalStatus - -- ^ Initial state of the proposal. - , toStatus :: ProposalStatus - -- ^ Next state of the proposal. - , votes :: ProposalVotes - -- ^ Votes. - , includeAllStakes :: Bool - -- ^ Whether to add an extra cosigner without stake or not. - , validTimeRange :: POSIXTimeRange - -- ^ Valid time range of the transaction. - , alterOutputStakes :: Bool - -- ^ Whether to alter th output stakes or not. - , stakeCount :: Integer - -- ^ The number of stakes. - , signByAllCosigners :: Bool - -- ^ Whether the transaction is signed by all the cosigners. - , perStakeGTs :: Tagged GTTag Integer - -- ^ The staked amount of each stake. - , moveGovernorST :: Bool - -- ^ Whether the GST should be moved or not. - -- If this is set to true, the governor validator will be run in - -- the 'mkTestTree'. - , modifyGovernor :: Bool - -- ^ Whether to modify the governor output datum or not. +data ParameterBundle = ParameterBundle + { proposalParameters :: ProposalParameters + , stakeParameters :: StakeParameters + , governorParameters :: Maybe GovernorParameters + , authorityTokenParameters :: Maybe AuthorityTokenParameters + , transactionTimeRange :: POSIXTimeRange + , extraSignature :: Maybe PubKeyHash } ---- +newtype GovernorParameters = GovernorParameters + { invalidGovernorOutputDatum :: Bool + } + +data AuthorityTokenParameters = forall + (datum :: Type) + (pdatum :: S -> Type). + ( PUnsafeLiftDecl pdatum + , PLifted pdatum ~ datum + , PIsData pdatum + ) => + AuthorityTokenParameters + { mintGATsFor :: [ValidatorHash] + , carryDatum :: Maybe datum + , invalidTokenName :: Bool + } + +data Winner = EffectAt Index | All + +data ProposalParameters = ProposalParameters + { fromStatus :: ProposalStatus + , toStatus :: ProposalStatus + , effectList :: [AssocMap.Map ValidatorHash DatumHash] + , winnerAndVotes :: Maybe (Winner, Integer) + , numCosigners :: NumStake + , invalidProposalOutputDatum :: Bool + } + +data StakeParameters = StakeParameters + { numStake :: NumStake + , perStakeGTs :: Integer + , transactionSignedByOwners :: Bool + , invalidStakeOutputDatum :: Bool + } + +type NumStake = Int +type Index = Int + +data Validity = Validity + { forProposalValidator :: Bool + , forStakeValidator :: Bool + , forGovernorValidator :: Maybe Bool + , forAuthorityTokenPolicy :: Maybe Bool + } + +-------------------------------------------------------------------------------- + +-- * Proposal + +mkCosigners :: NumStake -> [PubKeyHash] +mkCosigners = sort . flip take pubKeyHashes + +outcomeIdxToResultTag :: Index -> ResultTag +outcomeIdxToResultTag = ResultTag . fromIntegral + +mkEffects :: + ProposalParameters -> + AssocMap.Map ResultTag (AssocMap.Map ValidatorHash DatumHash) +mkEffects ps = + let resultTags = map ResultTag [0 ..] + neutralEffect = AssocMap.empty + finalEffects = ps.effectList <> [neutralEffect] + in AssocMap.fromList $ zip resultTags finalEffects + +setWinner :: (Winner, Integer) -> ProposalVotes -> ProposalVotes +setWinner (All, votes) (ProposalVotes m) = + ProposalVotes $ AssocMap.mapMaybe (const $ Just votes) m +setWinner (EffectAt winnerIdx, votes) (ProposalVotes m) = + let winnerResultTag = outcomeIdxToResultTag winnerIdx + in ProposalVotes $ updateMap (const $ Just votes) winnerResultTag m + +mkVotes :: + ProposalParameters -> + ProposalVotes +mkVotes ps = + let effects = mkEffects ps + emptyVotes = emptyVotesFor effects + in maybe emptyVotes (`setWinner` emptyVotes) (ps.winnerAndVotes) + +proposalStartingTime :: POSIXTime +proposalStartingTime = 0 + +mkProposalInputDatum :: ProposalParameters -> ProposalDatum +mkProposalInputDatum ps = + let effects = mkEffects ps + votes = mkVotes ps + st = ProposalStartingTime proposalStartingTime + in ProposalDatum + { proposalId = ProposalId 0 + , effects = effects + , status = ps.fromStatus + , cosigners = mkCosigners ps.numCosigners + , thresholds = def + , votes = votes + , timingConfig = def + , startingTime = st + } + +mkProposalOutputDatum :: ProposalParameters -> ProposalDatum +mkProposalOutputDatum ps = + let inputDatum = mkProposalInputDatum ps + outputCosigners = + if ps.invalidProposalOutputDatum + then [] + else inputDatum.cosigners + in inputDatum + { status = ps.toStatus + , cosigners = outputCosigners + } -- | Reference to the proposal UTXO. proposalRef :: TxOutRef proposalRef = TxOutRef proposalTxRef 1 --- | Reference to the governor UTXO. -governorRef :: TxOutRef -governorRef = TxOutRef governorTxRef 2 +mkProposalBuilder :: ProposalParameters -> BaseBuilder +mkProposalBuilder ps = + let pst = Value.singleton proposalPolicySymbol "" 1 + value = sortValue $ minAda <> pst + in mconcat + [ input $ + script proposalValidatorHash + . withOutRef proposalRef + . withDatum (mkProposalInputDatum ps) + . withValue value + , output $ + script proposalValidatorHash + . withDatum (mkProposalOutputDatum ps) + . withValue value + ] --- | Create the reference to a particular stake UTXO. -mkStakeRef :: Int -> TxOutRef -mkStakeRef = TxOutRef stakeTxRef . (+ 3) . fromIntegral +-- | Script purpose of the proposal validator. +proposalScriptPurpose :: ScriptPurpose +proposalScriptPurpose = Spending proposalRef ---- - --- | Default effects of the propsoal. -defEffects :: AssocMap.Map ResultTag (AssocMap.Map ValidatorHash DatumHash) -defEffects = - AssocMap.fromList - [ (ResultTag 0, AssocMap.empty) - , (ResultTag 1, AssocMap.empty) - ] - --- | Empty votes for the default effects. -emptyVotes :: ProposalVotes -emptyVotes = emptyVotesFor defEffects - -{- | The default proposal statring time, which doesn't really matter in this - case. +{- | The proposal redeemer used to spend the proposal UTXO, which is always + 'AdvanceProposal' in this case. -} -proposalStartingTime :: POSIXTime -proposalStartingTime = 0 +proposalRedeemer :: ProposalRedeemer +proposalRedeemer = AdvanceProposal ---- +-------------------------------------------------------------------------------- --- | Create the input proposal datum given the parameters. -mkProposalInputDatum :: Parameters -> ProposalDatum -mkProposalInputDatum ps = - ProposalDatum - { proposalId = ProposalId 0 - , effects = defEffects - , status = ps.fromStatus - , cosigners = mkStakeOwners ps - , thresholds = def - , votes = ps.votes - , timingConfig = def - , startingTime = ProposalStartingTime proposalStartingTime - } +-- * Stake + +mkStakeOwners :: NumStake -> [PubKeyHash] +mkStakeOwners = mkCosigners -- | Create the input stake datums given the parameters. -mkStakeInputDatums :: Parameters -> [StakeDatum] +mkStakeInputDatums :: StakeParameters -> [StakeDatum] mkStakeInputDatums ps = - map - ( \pk -> + let template = StakeDatum - { stakedAmount = ps.perStakeGTs - , owner = pk - , lockedBy = existingLocks + { stakedAmount = Tagged ps.perStakeGTs + , owner = "" + , lockedBy = [] } - ) - $ mkStakeOwners ps - where - existingLocks :: [ProposalLock] - existingLocks = - [ Voted (ProposalId 0) (ResultTag 0) - , Voted (ProposalId 1) (ResultTag 2) - ] + in (\owner -> template {owner = owner}) + <$> mkStakeOwners ps.numStake + +mkStakeOutputDatums :: StakeParameters -> [StakeDatum] +mkStakeOutputDatums ps = + let inputDatums = mkStakeInputDatums ps + outputStakedAmount = + Tagged $ + if ps.invalidStakeOutputDatum + then ps.perStakeGTs * 10 + else ps.perStakeGTs + modify inp = inp {stakedAmount = outputStakedAmount} + in modify <$> inputDatums + +getStakeInputDatumAt :: StakeParameters -> Index -> StakeDatum +getStakeInputDatumAt ps = (!!) (mkStakeInputDatums ps) + +-- | Create the reference to a particular stake UTXO. +mkStakeRef :: Index -> TxOutRef +mkStakeRef = TxOutRef stakeTxRef . (+ 3) . fromIntegral + +mkStakeBuilder :: StakeParameters -> BaseBuilder +mkStakeBuilder ps = + let perStakeValue = + sortValue $ + minAda + <> Value.assetClassValue stakeAssetClass 1 + <> Value.assetClassValue + (untag stake.gtClassRef) + ps.perStakeGTs + perStake idx i o = + let withSig = + if ps.transactionSignedByOwners + then signedWith i.owner + else mempty + in mconcat + [ withSig + , input $ + script stakeValidatorHash + . withOutRef (mkStakeRef idx) + . withValue perStakeValue + . withDatum i + , output $ + script stakeValidatorHash + . withValue perStakeValue + . withDatum o + ] + in mconcat $ + zipWith3 + perStake + [0 :: Index ..] + (mkStakeInputDatums ps) + (mkStakeOutputDatums ps) + +-- | Script purpose of the stake validator, given which stake we want to spend. +getStakeScriptPurposeAt :: Index -> ScriptPurpose +getStakeScriptPurposeAt = Spending . mkStakeRef + +{- | The proposal redeemer used to spend the stake UTXO, which is always + 'WitnessStake' in this case. +-} +stakeRedeemer :: StakeRedeemer +stakeRedeemer = WitnessStake + +-------------------------------------------------------------------------------- + +-- * Governor governorInputDatum :: GovernorDatum governorInputDatum = @@ -201,177 +384,173 @@ governorInputDatum = , maximumProposalsPerStake = 3 } ---- +mkGovernorOutputDatum :: GovernorParameters -> GovernorDatum +mkGovernorOutputDatum ps = + if ps.invalidGovernorOutputDatum + then governorInputDatum {maximumProposalsPerStake = 15} + else governorInputDatum --- | Script purpose of the proposal validator. -proposalScriptPurpose :: ScriptPurpose -proposalScriptPurpose = Spending proposalRef +-- | Reference to the governor UTXO. +governorRef :: TxOutRef +governorRef = TxOutRef governorTxRef 2 + +mkGovernorBuilder :: GovernorParameters -> BaseBuilder +mkGovernorBuilder ps = + let gst = Value.assetClassValue govAssetClass 1 + value = sortValue $ gst <> minAda + in mconcat + [ input $ + script govValidatorHash + . withValue value + . withOutRef governorRef + . withDatum governorInputDatum + , output $ + script govValidatorHash + . withValue value + . withOutRef governorRef + . withDatum (mkGovernorOutputDatum ps) + ] governorScriptPurpose :: ScriptPurpose governorScriptPurpose = Spending governorRef --- | Script purpose of the stake validator, given which stake we want to spend. -mkStakeScriptPurpose :: Int -> ScriptPurpose -mkStakeScriptPurpose = Spending . mkStakeRef - ---- - -{- | The propsoal redeemer used to spend the proposal UTXO, which is always - 'AdvanceProposal' in this case. --} -proposalRedeemer :: ProposalRedeemer -proposalRedeemer = AdvanceProposal - -{- | The propsoal redeemer used to spend the governor UTXO, which is always +{- | The proposal redeemer used to spend the governor UTXO, which is always 'MintGATs' in this case. -} governorRedeemer :: GovernorRedeemer governorRedeemer = MintGATs -{- | The propsoal redeemer used to spend the stake UTXO, which is always - 'WitnessStake' in this case. --} -stakeRedeemer :: StakeRedeemer -stakeRedeemer = WitnessStake +-------------------------------------------------------------------------------- ---- +-- * Authority Token --- | Create some valid stake owners. -mkStakeOwners :: Parameters -> [PubKeyHash] -mkStakeOwners ps = - sort $ - take - (fromIntegral ps.stakeCount) - pubKeyHashes +mkAuthorityTokenBuilder :: AuthorityTokenParameters -> BaseBuilder +mkAuthorityTokenBuilder (AuthorityTokenParameters es mdt invalidTokenName) = + foldMap perEffect es + where + perEffect :: ValidatorHash -> BaseBuilder + perEffect vh = + let tn = + if invalidTokenName + then "" + else validatorHashToTokenName vh + ac = AssetClass (authorityTokenSymbol, tn) + minted = Value.assetClassValue ac 1 + value = sortValue $ minAda <> minted + in mconcat + [ mint minted + , output $ + script vh + . maybe id withDatum mdt + . withValue value + ] ---- +authorityTokenScriptPurepose :: ScriptPurpose +authorityTokenScriptPurepose = Minting authorityTokenSymbol + +authorityTokenRedeemer :: () +authorityTokenRedeemer = () + +-------------------------------------------------------------------------------- -- | Create a 'TxInfo' that update the status of a proposal. advance :: - Parameters -> + ParameterBundle -> TxInfo -advance ps = - let pst = Value.singleton proposalPolicySymbol "" 1 - sst = Value.assetClassValue stakeAssetClass 1 - gst = Value.assetClassValue govAssetClass 1 - - --- - - proposalInputDatum :: ProposalDatum - proposalInputDatum = - mkProposalInputDatum ps - - proposalOutputDatum :: ProposalDatum - proposalOutputDatum = - proposalInputDatum - { status = ps.toStatus - } - - --- - - stakeInputDatums :: [StakeDatum] - stakeInputDatums = mkStakeInputDatums ps - - mkStakeOutputDatum :: StakeDatum -> StakeDatum - mkStakeOutputDatum si = - if ps.alterOutputStakes - then - si - { stakedAmount = ps.perStakeGTs + 1 - } - else si - - stakeValue = - let gts = - if ps.perStakeGTs == 0 - then mempty - else - Value.assetClassValue - (untag stake.gtClassRef) - (untag ps.perStakeGTs) - in sortValue $ - sst <> minAda - <> gts - - stakeBuilder :: BaseBuilder - stakeBuilder = - foldMap - ( \(si, idx) -> - let so = mkStakeOutputDatum si - in mconcat @BaseBuilder - [ input $ - script stakeValidatorHash - . withValue stakeValue - . withDatum si - . withOutRef (mkStakeRef idx) - , output $ - script stakeValidatorHash - . withValue stakeValue - . withDatum so - ] - ) - $ let withIds = zip stakeInputDatums [0 ..] - in if ps.includeAllStakes - then withIds - else [head withIds] - --- - - governorOutputDatum :: GovernorDatum - governorOutputDatum = - if ps.modifyGovernor - then - governorInputDatum - { nextProposalId = ProposalId 41 - } - else governorInputDatum - - governorBuilder :: BaseBuilder - governorBuilder = - if ps.moveGovernorST - then - mconcat - [ input $ - script govValidatorHash - . withValue (sortValue $ gst <> minAda) - . withDatum governorInputDatum - . withOutRef governorRef - , output $ - script govValidatorHash - . withValue (sortValue $ gst <> minAda) - . withDatum governorOutputDatum - ] - else mempty - - --- - - sigBuilder :: BaseBuilder - sigBuilder = - let sos = mkStakeOwners ps - in if ps.signByAllCosigners - then foldMap signedWith sos - else signedWith $ head sos - - --- - - builder :: BaseBuilder - builder = +advance pb = + let mkBuilderMaybe = maybe mempty + in buildTxInfoUnsafe $ mconcat - [ txId "95ba4015e30aef16a3461ea97a779f814aeea6b8009d99a94add4b8293be737a" - , sigBuilder - , timeRange ps.validTimeRange - , input $ - script proposalValidatorHash - . withValue pst - . withDatum proposalInputDatum - . withTxId proposalTxRef - , output $ - script proposalValidatorHash - . withValue (pst <> minAda) - . withDatum proposalOutputDatum + [ mkProposalBuilder pb.proposalParameters + , mkStakeBuilder pb.stakeParameters + , mkBuilderMaybe mkGovernorBuilder pb.governorParameters + , mkBuilderMaybe mkAuthorityTokenBuilder pb.authorityTokenParameters + , timeRange pb.transactionTimeRange + , maybe mempty signedWith pb.extraSignature ] - in buildTxInfoUnsafe $ builder <> stakeBuilder <> governorBuilder ---- +-------------------------------------------------------------------------------- + +{- | Create a test tree that runs the stake validator and proposal validator to + test the advancing functionalities. +-} +mkTestTree :: + String -> + ParameterBundle -> + Validity -> + SpecificationTree +mkTestTree name params val = + group name $ catMaybes [proposal, stake, governor, authority] + where + txInfo = advance params + + proposal = + let proposalInputDatum = mkProposalInputDatum params.proposalParameters + in Just $ + testValidator + val.forProposalValidator + "proposal" + (proposalValidator Shared.proposal) + proposalInputDatum + proposalRedeemer + ( ScriptContext + txInfo + proposalScriptPurpose + ) + + stake = + let idx = 0 + in Just $ + testValidator + val.forStakeValidator + "stake" + (stakeValidator Shared.stake) + (getStakeInputDatumAt params.stakeParameters idx) + stakeRedeemer + ( ScriptContext + txInfo + (getStakeScriptPurposeAt idx) + ) + + governor = + testValidator + (fromJust val.forGovernorValidator) + "governor" + (governorValidator Shared.governor) + governorInputDatum + governorRedeemer + ( ScriptContext + txInfo + governorScriptPurpose + ) + <$ params.governorParameters + + authority = + testPolicy + (fromJust val.forAuthorityTokenPolicy) + "authority" + (authorityTokenPolicy $ AuthorityToken Shared.govAssetClass) + authorityTokenRedeemer + ( ScriptContext + txInfo + authorityTokenScriptPurepose + ) + <$ (params.authorityTokenParameters) + +mkTestTree' :: + String -> + (ParameterBundle -> String) -> + [ParameterBundle] -> + Validity -> + SpecificationTree +mkTestTree' groupName mkCaseName bundles val = + group groupName $ + (\b -> mkTestTree (mkCaseName b) b val) + <$> bundles + +-------------------------------------------------------------------------------- + +-- Utilities for creating parameter bundles {- | Given the proposal status, create a time range that is in time for advacing to the next state. @@ -464,8 +643,6 @@ mkTooLateTimeRange advanceFrom = ) Finished -> error "Cannot advance 'Finished' proposal" ---- - -- | Next state of the given proposal status. getNextState :: ProposalStatus -> ProposalStatus getNextState = \case @@ -474,170 +651,346 @@ getNextState = \case Locked -> Finished Finished -> error "Cannot advance 'Finished' proposal" +compPerStakeGTsForDraft :: NumStake -> Integer +compPerStakeGTsForDraft nCosigners = + untag (def :: ProposalThresholds).vote + `div` fromIntegral nCosigners + 1 + +dummyDatum :: () +dummyDatum = () + +dummyDatumHash :: DatumHash +dummyDatumHash = datumHash $ toDatum dummyDatum + +mkMockEffects :: Int -> [AssocMap.Map ValidatorHash DatumHash] +mkMockEffects = + flip + take + ( AssocMap.fromList + . flip zip (repeat dummyDatumHash) + <$> groupsOfN 3 validatorHashes + ) + +mkWinnerVotes :: Index -> (Winner, Integer) +mkWinnerVotes idx = (EffectAt idx, untag (def @ProposalThresholds).execute + 1) + +ambiguousWinnerVotes :: (Winner, Integer) +ambiguousWinnerVotes = (All, untag (def @ProposalThresholds).execute + 1) + +-------------------------------------------------------------------------------- + +-- * Parameter Bundles + --- -advanceToNextStateInTimeParameters :: Int -> [Parameters] -advanceToNextStateInTimeParameters nCosigners = - map - ( \from -> - let -- Set the vote count of outcome 0 to @def.countingVoting + 1@, - -- meaning that outcome 0 will be the winner. - outcome0WinningVotes = - ProposalVotes $ - updateMap - (\_ -> Just $ untag (def :: ProposalThresholds).execute + 1) - (ResultTag 0) - (coerce emptyVotes) +-- * Legal - votes = case from of - Draft -> emptyVotes - -- With sufficient votes - _ -> outcome0WinningVotes +defaultWinnerIdx :: Index +defaultWinnerIdx = 0 - includeAllStakes = case from of - Draft -> True - _ -> False +mkValidToNextStateBundle :: Word -> Word -> ProposalStatus -> ParameterBundle +mkValidToNextStateBundle nCosigners nEffects from = + let next = getNextState from + effects = mkMockEffects $ fromIntegral nEffects + winner = defaultWinnerIdx - signByAllCosigners = case from of - Draft -> True - _ -> False - - shouldIncludeGovernor = from == Locked - in Parameters - { fromStatus = from - , toStatus = getNextState from - , votes = votes - , includeAllStakes = includeAllStakes - , validTimeRange = mkInTimeTimeRange from - , alterOutputStakes = False - , stakeCount = fromIntegral nCosigners - , signByAllCosigners = signByAllCosigners - , perStakeGTs = - (def :: ProposalThresholds).vote - `div` fromIntegral nCosigners + 1 - , moveGovernorST = shouldIncludeGovernor - , modifyGovernor = False - } - ) - [Draft, VotingReady, Locked] - -advanceToFailedStateDueToTimeoutParameters :: Int -> [Parameters] -advanceToFailedStateDueToTimeoutParameters nCosigners = - map - ( \from -> - Parameters - { fromStatus = from - , toStatus = Finished - , votes = emptyVotes - , includeAllStakes = False - , validTimeRange = mkTooLateTimeRange from - , alterOutputStakes = False - , stakeCount = fromIntegral nCosigners - , signByAllCosigners = False - , perStakeGTs = 1 - , moveGovernorST = False - , modifyGovernor = False + template = + ParameterBundle + { proposalParameters = + ProposalParameters + { fromStatus = from + , toStatus = next + , effectList = effects + , winnerAndVotes = Nothing + , numCosigners = fromIntegral nCosigners + , invalidProposalOutputDatum = False + } + , stakeParameters = + StakeParameters + { numStake = 1 + , perStakeGTs = + compPerStakeGTsForDraft $ + fromIntegral nCosigners + , transactionSignedByOwners = False + , invalidStakeOutputDatum = False + } + , governorParameters = Nothing + , authorityTokenParameters = Nothing + , transactionTimeRange = mkInTimeTimeRange from + , extraSignature = Just signer } - ) - [Draft, VotingReady, Locked] -insufficientVotesParameters :: Parameters -insufficientVotesParameters = - let votes = emptyVotes - from = VotingReady - to = getNextState from - in Parameters - { fromStatus = from - , toStatus = to - , votes = votes - , includeAllStakes = False - , validTimeRange = mkInTimeTimeRange from - , alterOutputStakes = False - , stakeCount = 1 - , signByAllCosigners = True - , perStakeGTs = 20 - , moveGovernorST = False - , modifyGovernor = False - } + modifyTemplate = do + when (from == Draft) $ + modify $ \b -> + b + { stakeParameters = + b.stakeParameters + { transactionSignedByOwners = True + , numStake = fromIntegral nCosigners + } + , extraSignature = Nothing + } -insufficientCosignsParameters :: Int -> Parameters -insufficientCosignsParameters nCosigners = - (\ps -> ps {perStakeGTs = 0}) $ - head $ - advanceToNextStateInTimeParameters nCosigners + when (from == VotingReady || from == Locked) $ + modify $ \b -> + b + { proposalParameters = + b.proposalParameters + { winnerAndVotes = Just $ mkWinnerVotes winner + } + } -advanceFromFinishedParameters :: Parameters -advanceFromFinishedParameters = - Parameters - { fromStatus = Finished - , toStatus = Finished - , votes = emptyVotes - , includeAllStakes = False - , validTimeRange = always - , alterOutputStakes = False - , stakeCount = 1 - , signByAllCosigners = True - , perStakeGTs = 20 - , moveGovernorST = False - , modifyGovernor = False + when (from == Locked) $ + modify $ \b -> + let aut = + AuthorityTokenParameters + { mintGATsFor = AssocMap.keys $ effects !! winner + , carryDatum = Just dummyDatum + , invalidTokenName = False + } + gov = + GovernorParameters + { invalidGovernorOutputDatum = False + } + in b + { governorParameters = Just gov + , authorityTokenParameters = Just aut + } + in execState modifyTemplate template + +mkValidToNextStateBundles :: + -- | Number of cosigners + Word -> + -- | Number of effects + Word -> + [ParameterBundle] +mkValidToNextStateBundles nCosigners nEffects = + mkValidToNextStateBundle nCosigners nEffects + <$> [ Draft + , VotingReady + , Locked + ] + +mkValidToFailedStateBundles :: + -- | Number of cosigners + Word -> + -- | Number of effects + Word -> + [ParameterBundle] +mkValidToFailedStateBundles nCosigners nEffects = + mkBundle + <$> [ Draft + , VotingReady + , Locked + ] + where + mkBundle from = + let next = Finished + effects = mkMockEffects $ fromIntegral nEffects + in ParameterBundle + { proposalParameters = + ProposalParameters + { fromStatus = from + , toStatus = next + , effectList = effects + , winnerAndVotes = Nothing + , numCosigners = fromIntegral nCosigners + , invalidProposalOutputDatum = False + } + , stakeParameters = + StakeParameters + { numStake = 1 + , perStakeGTs = + compPerStakeGTsForDraft $ + fromIntegral nCosigners + , transactionSignedByOwners = False + , invalidStakeOutputDatum = False + } + , governorParameters = Nothing + , authorityTokenParameters = Nothing + , transactionTimeRange = mkTooLateTimeRange from + , extraSignature = Just signer + } + +-- * Illegal + +mkFromFinishedBundles :: + -- | Number of cosigners + Word -> + -- | Number of effects + Word -> + [ParameterBundle] +mkFromFinishedBundles nCosigners nEffects = + mkBundle + <$> [ Draft + , VotingReady + , Locked + ] + where + mkBundle from = + let template = mkValidToNextStateBundle nCosigners nEffects from + in template + { proposalParameters = + template.proposalParameters + { fromStatus = Finished + , toStatus = Finished + } + } + +mkToNextStateTooLateBundles :: Word -> Word -> [ParameterBundle] +mkToNextStateTooLateBundles nCosigners nEffects = + mkBundle + <$> [ Draft + , VotingReady + , Locked + ] + where + mkBundle from = + let template = mkValidToNextStateBundle nCosigners nEffects from + in template + { transactionTimeRange = mkTooLateTimeRange from + } + +mkInvalidOutputStakeBundles :: Word -> Word -> [ParameterBundle] +mkInvalidOutputStakeBundles nCosigners nEffects = + mkBundle <$> [Draft, VotingReady, Locked] + where + mkBundle from = + let template = mkValidToNextStateBundle nCosigners nEffects from + in template + { stakeParameters = + template.stakeParameters + { invalidStakeOutputDatum = True + } + } + +-- * From Draft + +mkInsufficientCosignsBundle :: Word -> Word -> ParameterBundle +mkInsufficientCosignsBundle nCosigners nEffects = + template + { stakeParameters = + template.stakeParameters + { perStakeGTs = insuffcientPerStakeGTs + } + } + where + insuffcientPerStakeGTs = + untag (def :: ProposalThresholds).vote + `div` fromIntegral nCosigners - 1 + template = mkValidToNextStateBundle nCosigners nEffects Draft + +-- * From VotingReady + +setWinnerAndVotes :: + ParameterBundle -> + Maybe (Winner, Integer) -> + ParameterBundle +setWinnerAndVotes pb wv = + pb + { proposalParameters = + pb.proposalParameters + { winnerAndVotes = wv + } } -invalidOutputStakeParameters :: Int -> [Parameters] -invalidOutputStakeParameters nCosigners = - (\ps -> ps {alterOutputStakes = True}) - <$> advanceToNextStateInTimeParameters nCosigners +mkInsufficientVotesBundle :: + Word -> + Word -> + ParameterBundle +mkInsufficientVotesBundle nCosigners nEffects = + mkValidToNextStateBundle nCosigners nEffects VotingReady + `setWinnerAndVotes` Nothing ---- +mkAmbiguousWinnerBundle :: + Word -> + Word -> + ParameterBundle +mkAmbiguousWinnerBundle nCosigners nEffects = + mkValidToNextStateBundle nCosigners nEffects VotingReady + `setWinnerAndVotes` Just ambiguousWinnerVotes -{- | Create a test tree that runs the stake validator and proposal validator to - test the advancing functionalities. --} -mkTestTree :: String -> Parameters -> Bool -> Maybe Bool -> SpecificationTree -mkTestTree name ps isValidForProposalValidator isValidForGovernorValidator = group name final +-- * From Locked + +mkValidFromLockedBundle :: Word -> Word -> ParameterBundle +mkValidFromLockedBundle nCosigners nEffects = mkValidToNextStateBundle nCosigners nEffects Locked + +mkMintGATsForWrongEffectsBundle :: + Word -> + Word -> + ParameterBundle +mkMintGATsForWrongEffectsBundle nCosigners nEffects = + template + { authorityTokenParameters = + ( \aut -> + aut + { mintGATsFor = + [ validatorHashes !! 1 + , validatorHashes !! 3 + , validatorHashes !! 5 + , validatorHashes !! 7 + ] + } + ) + <$> template.authorityTokenParameters + } where - txInfo = advance ps + template = mkValidFromLockedBundle nCosigners nEffects - proposal = - let proposalInputDatum = mkProposalInputDatum ps - in testValidator - isValidForProposalValidator - "propsoal" - (proposalValidator Shared.proposal) - proposalInputDatum - proposalRedeemer - ( ScriptContext - txInfo - proposalScriptPurpose - ) +mkNoGATMintedBundle :: + Word -> + Word -> + ParameterBundle +mkNoGATMintedBundle nCosigners nEffects = + template + { authorityTokenParameters = Nothing + } + where + template = mkValidFromLockedBundle nCosigners nEffects - stake = - let idx = 0 - stakeInputDatum = mkStakeInputDatums ps !! idx - isValid = not $ ps.alterOutputStakes - in testValidator - isValid - "stake" - (stakeValidator Shared.stake) - stakeInputDatum - stakeRedeemer - ( ScriptContext - txInfo - (mkStakeScriptPurpose idx) - ) +mkMintGATsWithoutTagBundle :: + Word -> + Word -> + ParameterBundle +mkMintGATsWithoutTagBundle nCosigners nEffects = + template + { authorityTokenParameters = + ( \aut -> + aut + { invalidTokenName = True + } + ) + <$> template.authorityTokenParameters + } + where + template = mkValidFromLockedBundle nCosigners nEffects - proposalAndStake = [proposal, stake] +mkGATsWithWrongDatumBundle :: + Word -> + Word -> + ParameterBundle +mkGATsWithWrongDatumBundle nCosigners nEffects = + template + { authorityTokenParameters = Just newAut + } + where + template = mkValidFromLockedBundle nCosigners nEffects + aut = fromJust template.authorityTokenParameters + newAut = + AuthorityTokenParameters + aut.mintGATsFor + (Just (1 :: Integer)) + False - governor = - if ps.moveGovernorST - then - singleton $ - testValidator - (fromJust isValidForGovernorValidator) - "governor" - (governorValidator Shared.governor) - governorInputDatum - governorRedeemer - (ScriptContext txInfo governorScriptPurpose) - else mempty - - final = proposalAndStake <> governor +mkBadGovernorOutputDatumBundle :: + Word -> + Word -> + ParameterBundle +mkBadGovernorOutputDatumBundle nCosigners nEffects = + template + { governorParameters = Just gov + } + where + template = mkValidFromLockedBundle nCosigners nEffects + gov = GovernorParameters True diff --git a/agora-specs/Sample/Proposal/Cosign.hs b/agora-specs/Sample/Proposal/Cosign.hs index f9a3865..a344af3 100644 --- a/agora-specs/Sample/Proposal/Cosign.hs +++ b/agora-specs/Sample/Proposal/Cosign.hs @@ -327,7 +327,7 @@ mkTestTree name ps isValid = group name [proposal, stake] let proposalInputDatum = mkProposalInputDatum ps in testValidator isValid - "propsoal" + "proposal" (proposalValidator Shared.proposal) proposalInputDatum (mkProposalRedeemer ps) diff --git a/agora-specs/Sample/Proposal/Create.hs b/agora-specs/Sample/Proposal/Create.hs index 3556256..8374920 100644 --- a/agora-specs/Sample/Proposal/Create.hs +++ b/agora-specs/Sample/Proposal/Create.hs @@ -242,7 +242,7 @@ mkTimeRange ps = in closedBoundedInterval s $ o + di else always --- | Get the starting time of the propsoal. +-- | Get the starting time of the proposal. mkProposalStartingTime :: Parameters -> ProposalStartingTime mkProposalStartingTime ps = if ps.timeRangeClosed @@ -413,7 +413,7 @@ invalidProposalStatusParameters = -------------------------------------------------------------------------------- -{- | Create a test tree that runs the propsoal minting policy, the governor +{- | Create a test tree that runs the proposal minting policy, the governor validator and the stake validator to test the functionalities of creting proposals -} diff --git a/agora-specs/Sample/Proposal/Shared.hs b/agora-specs/Sample/Proposal/Shared.hs index d2def9f..c73f1c9 100644 --- a/agora-specs/Sample/Proposal/Shared.hs +++ b/agora-specs/Sample/Proposal/Shared.hs @@ -1,15 +1,15 @@ {- | Module : Sample.Proposal.Shared Maintainer : connor@mlabs.city -Description: Shared constants for propsoal samples +Description: Shared constants for proposal samples -Shared constants for propsoal samples. +Shared constants for proposal samples. -} module Sample.Proposal.Shared (proposalTxRef, stakeTxRef, governorTxRef) where import PlutusLedgerApi.V1 (TxId) --- | 'TxId' of all the propsoal inputs in the samples. +-- | 'TxId' of all the proposal inputs in the samples. proposalTxRef :: TxId proposalTxRef = "0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be" diff --git a/agora-specs/Sample/Proposal/UnlockStake.hs b/agora-specs/Sample/Proposal/UnlockStake.hs index 20b1be5..3165a5e 100644 --- a/agora-specs/Sample/Proposal/UnlockStake.hs +++ b/agora-specs/Sample/Proposal/UnlockStake.hs @@ -540,7 +540,7 @@ mkTestTree name ps isValid = group name [stake, proposal] ref = mkProposalRef idx in testValidator isValid - "propsoal" + "proposal" (proposalValidator Shared.proposal) (mkProposalInputDatum ps pid) proposalRedeemer diff --git a/agora-specs/Sample/Proposal/Vote.hs b/agora-specs/Sample/Proposal/Vote.hs index 36ed93d..f841dd2 100644 --- a/agora-specs/Sample/Proposal/Vote.hs +++ b/agora-specs/Sample/Proposal/Vote.hs @@ -253,7 +253,7 @@ mkTestTree name ps isValid = group name [proposal, stake] proposal = testValidator isValid - "propsoal" + "proposal" (proposalValidator Shared.proposal) proposalInputDatum (mkProposalRedeemer ps) diff --git a/agora-specs/Sample/Shared.hs b/agora-specs/Sample/Shared.hs index 4cc917e..8e6c476 100644 --- a/agora-specs/Sample/Shared.hs +++ b/agora-specs/Sample/Shared.hs @@ -186,7 +186,7 @@ instance Default ProposalThresholds where ProposalThresholds { execute = Tagged 1000 , create = Tagged 1 - , vote = Tagged 10 + , vote = Tagged 100 } authorityToken :: AuthorityToken diff --git a/agora-specs/Spec/Proposal.hs b/agora-specs/Spec/Proposal.hs index d7a712a..6dd51b0 100644 --- a/agora-specs/Spec/Proposal.hs +++ b/agora-specs/Spec/Proposal.hs @@ -93,7 +93,7 @@ specs = mkLegalGroup nCosigners = Cosign.mkTestTree - ("with " <> show nCosigners <> " cosigners") + (unwords ["with", show nCosigners, "cosigners"]) (Cosign.validCosignNParameters nCosigners) True legalGroup = @@ -101,7 +101,7 @@ specs = map mkLegalGroup cosignerCases mkIllegalStatusNotDraftGroup nCosigners = - group ("with " <> show nCosigners <> " cosigners") $ + group (unwords ["with", show nCosigners, "cosigners"]) $ map ( \ps -> Cosign.mkTestTree @@ -133,99 +133,164 @@ specs = [ Vote.mkTestTree "legal" Vote.validVoteParameters True -- TODO: add negative test cases ] - , group "advancing" $ - let mkFromDraft nCosigners = - let name = "with " <> show nCosigners <> " cosigner(s)" + , group + "advancing" + $ let possibleCosigners = [1, 5, 10] + possibleEffects = [1, 2, 5] + in do + cs <- possibleCosigners + es <- possibleEffects - legalGroup = - group - "legal" - [ Advance.mkTestTree - "to next state" - ( head $ - Advance.advanceToNextStateInTimeParameters - nCosigners - ) - True - Nothing - , Advance.mkTestTree - "to failed state" - ( head $ - Advance.advanceToFailedStateDueToTimeoutParameters - nCosigners - ) - True - Nothing - ] + let groupName = + unwords + [ "with" + , show cs + , "cosigners" + , "and" + , show es + , "effects" + ] - illegalGroup = - group - "illegal" - [ Advance.mkTestTree - "insufficient cosigns" - (Advance.insufficientCosignsParameters nCosigners) - False - Nothing - , Advance.mkTestTree - "invalid stake output" - (head $ Advance.invalidOutputStakeParameters nCosigners) - False - Nothing - ] - in group name [legalGroup, illegalGroup] - - draftGroup = group "from draft" $ map mkFromDraft [1, 5, 10] - - legalGroup = - group - "legal" - [ group "advance to next state" $ - map - ( \ps -> - let name = "from: " <> show ps.fromStatus - in Advance.mkTestTree name ps True (Just True) - ) - (tail $ Advance.advanceToNextStateInTimeParameters 1) - , group "advance to failed state" $ - map - ( \ps -> - let name = "from: " <> show ps.fromStatus - in Advance.mkTestTree name ps True (Just True) - ) - (tail $ Advance.advanceToFailedStateDueToTimeoutParameters 1) - ] - - illegalGroup = - group - "illegal" - [ Advance.mkTestTree - "insufficient votes" - Advance.insufficientVotesParameters - False - Nothing - , Advance.mkTestTree - "initial state is Finished" - Advance.advanceFromFinishedParameters - False - Nothing - , group - "invalid stake output" - $ do - nStake <- [1, 5] - ps <- tail $ Advance.invalidOutputStakeParameters nStake - - let name = - "from " <> show ps.fromStatus <> "with " - <> show nStake - <> " stakes" - - pure $ Advance.mkTestTree name ps False (Just True) - ] - in [draftGroup, legalGroup, illegalGroup] + pure $ + group + groupName + [ group + "legal" + $ let allValid = + Advance.Validity + { forProposalValidator = True + , forStakeValidator = True + , forGovernorValidator = Just True + , forAuthorityTokenPolicy = Just True + } + mkName b = + unwords + [ "from" + , show b.proposalParameters.fromStatus + , "to" + , show b.proposalParameters.toStatus + ] + in [ Advance.mkTestTree' + "to next state" + mkName + (Advance.mkValidToNextStateBundles cs es) + allValid + , Advance.mkTestTree' + "to failed state" + mkName + (Advance.mkValidToFailedStateBundles cs es) + allValid + ] + , group + "illegal" + [ Advance.mkTestTree' + "advance finished proposals" + (const "(negative test)") + (Advance.mkFromFinishedBundles cs es) + Advance.Validity + { forProposalValidator = False + , forStakeValidator = True + , forGovernorValidator = Just False + , forAuthorityTokenPolicy = Just True + } + , Advance.mkTestTree + "insufficient cosigns" + (Advance.mkInsufficientCosignsBundle cs es) + Advance.Validity + { forProposalValidator = False + , forStakeValidator = True + , forGovernorValidator = Nothing + , forAuthorityTokenPolicy = Nothing + } + , Advance.mkTestTree + "insufficient votes" + (Advance.mkInsufficientVotesBundle cs es) + Advance.Validity + { forProposalValidator = False + , forStakeValidator = True + , forGovernorValidator = Nothing + , forAuthorityTokenPolicy = Nothing + } + , Advance.mkTestTree + "ambiguous winning effect" + (Advance.mkAmbiguousWinnerBundle cs es) + Advance.Validity + { forProposalValidator = False + , forStakeValidator = True + , forGovernorValidator = Nothing + , forAuthorityTokenPolicy = Nothing + } + , Advance.mkTestTree' + "to next state too late" + (\b -> unwords ["from", show b.proposalParameters.fromStatus]) + (Advance.mkToNextStateTooLateBundles cs es) + Advance.Validity + { forProposalValidator = False + , forStakeValidator = True + , forGovernorValidator = Just True + , forAuthorityTokenPolicy = Just True + } + , Advance.mkTestTree' + "altered output stake datum" + (\b -> unwords ["from", show b.proposalParameters.fromStatus]) + (Advance.mkInvalidOutputStakeBundles cs es) + Advance.Validity + { forProposalValidator = False + , forStakeValidator = False + , forGovernorValidator = Just True + , forAuthorityTokenPolicy = Just True + } + , Advance.mkTestTree + "forget to mint GATs" + (Advance.mkNoGATMintedBundle cs es) + Advance.Validity + { forProposalValidator = True + , forStakeValidator = True + , forGovernorValidator = Just False + , forAuthorityTokenPolicy = Nothing + } + , Advance.mkTestTree + "mint GATs for wrong validators" + (Advance.mkMintGATsForWrongEffectsBundle cs es) + Advance.Validity + { forProposalValidator = True + , forStakeValidator = True + , forGovernorValidator = Just False + , forAuthorityTokenPolicy = Just True + } + , Advance.mkTestTree + "mint GATs with bad token name" + (Advance.mkMintGATsWithoutTagBundle cs es) + Advance.Validity + { forProposalValidator = True + , forStakeValidator = True + , forGovernorValidator = Just False + , forAuthorityTokenPolicy = Just False + } + , Advance.mkTestTree + "wrong GAT datum" + (Advance.mkGATsWithWrongDatumBundle cs es) + Advance.Validity + { forProposalValidator = True + , forStakeValidator = True + , forGovernorValidator = Just False + , forAuthorityTokenPolicy = Just True + } + , Advance.mkTestTree + "invalid governor output datum" + (Advance.mkBadGovernorOutputDatumBundle cs es) + Advance.Validity + { forProposalValidator = True + , forStakeValidator = True + , forGovernorValidator = Just False + , forAuthorityTokenPolicy = Just True + } + ] + ] , group "unlocking" $ let proposalCountCases = [1, 5, 10, 42] - mkSubgroupName nProposals = "with " <> show nProposals <> " proposals" + mkSubgroupName nProposals = unwords ["with", show nProposals, "proposals"] mkLegalGroup nProposals = group @@ -266,9 +331,13 @@ specs = map ( \ps -> let name = - "role: " <> show ps.stakeRole - <> ", status: " - <> show ps.proposalStatus + unwords + [ "role:" + , show ps.stakeRole + , "," + , "status:" + , show ps.proposalStatus + ] in UnlockStake.mkTestTree name ps False ) (UnlockStake.mkRetractVotesWhileNotVoting nProposals) @@ -276,9 +345,12 @@ specs = map ( \ps -> let name = - "status: " <> show ps.proposalStatus - <> "retract votes: " - <> show ps.retractVotes + unwords + [ "status:" + , show ps.proposalStatus + , "retract votes:" + , show ps.retractVotes + ] in UnlockStake.mkTestTree name ps False ) (UnlockStake.mkUnockIrrelevantStakeParameters nProposals) @@ -286,7 +358,8 @@ specs = map ( \ps -> let name = - "status: " <> show ps.proposalStatus + unwords + ["status:", show ps.proposalStatus] in UnlockStake.mkTestTree name ps False ) (UnlockStake.mkRemoveCreatorLockBeforeFinishedParameters nProposals) @@ -298,9 +371,13 @@ specs = map ( \ps -> let name = - "role: " <> show ps.stakeRole - <> ", status: " - <> show ps.proposalStatus + unwords + [ "role:" + , show ps.stakeRole + , "," + , "status:" + , show ps.proposalStatus + ] in UnlockStake.mkTestTree name ps False ) (UnlockStake.mkAlterStakeParameters nProposals) diff --git a/agora-testlib/Test/Util.hs b/agora-testlib/Test/Util.hs index 3fffdc2..4187dae 100644 --- a/agora-testlib/Test/Util.hs +++ b/agora-testlib/Test/Util.hs @@ -17,6 +17,8 @@ module Test.Util ( pubKeyHashes, userCredentials, scriptCredentials, + validatorHashes, + groupsOfN, ) where -------------------------------------------------------------------------------- @@ -132,6 +134,25 @@ pubKeyHashes = PubKeyHash . PlutusTx.toBuiltin <$> blake2b_224Hashes userCredentials :: [Credential] userCredentials = PubKeyCredential <$> pubKeyHashes +-- | An infinite list of *valid* validator hashes. +validatorHashes :: [ValidatorHash] +validatorHashes = ValidatorHash . PlutusTx.toBuiltin <$> blake2b_224Hashes + -- | An infinite list of *valid* script credentials. scriptCredentials :: [Credential] -scriptCredentials = ScriptCredential . ValidatorHash . PlutusTx.toBuiltin <$> blake2b_224Hashes +scriptCredentials = ScriptCredential <$> validatorHashes + +-------------------------------------------------------------------------------- + +groupsOfN :: Int -> [a] -> [[a]] +groupsOfN _ [] = [] +groupsOfN n xs = + let (nextGroup, rest) = next n xs + in nextGroup : groupsOfN n rest + where + next :: Int -> [a] -> ([a], [a]) + next _ [] = ([], []) + next 0 xs = ([], xs) + next n (x : xs) = + let (xs', rest) = next (n - 1) xs + in (x : xs', rest) diff --git a/agora/Agora/Governor/Scripts.hs b/agora/Agora/Governor/Scripts.hs index eaa4a77..c226474 100644 --- a/agora/Agora/Governor/Scripts.hs +++ b/agora/Agora/Governor/Scripts.hs @@ -575,18 +575,19 @@ governorValidator gov = gatOutputValidator = gatOutputValidator' # effectGroup - pure $ - popaque $ - pfoldr - # plam - ( \txOut r -> - let value = pfield @"value" # txOut - atValue = psymbolValueOf # patSymbol # value - in pif (atValue #== 0) r $ - pif (atValue #== 1) (r #&& gatOutputValidator # txOut) $ pconstant False - ) - # pconstant True - # pfromData txInfoF.outputs + pguardC "GATs valid" $ + pfoldr + # plam + ( \txOut r -> + let value = pfield @"value" # txOut + atValue = psymbolValueOf # patSymbol # value + in pif (atValue #== 0) r $ + pif (atValue #== 1) (r #&& gatOutputValidator # txOut) $ pconstant False + ) + # pconstant True + # pfromData txInfoF.outputs + + pure $ popaque $ pconstant () -------------------------------------------------------------------------- diff --git a/agora/Agora/Stake.hs b/agora/Agora/Stake.hs index 89aaf91..0dff631 100644 --- a/agora/Agora/Stake.hs +++ b/agora/Agora/Stake.hs @@ -119,7 +119,7 @@ data ProposalLock -- ^ The identifier of the proposal. | -- | The stake was used to vote on a proposal. -- - -- This kind of lock is placed while voting on a propsoal, in order to + -- This kind of lock is placed while voting on a proposal, in order to -- prevent depositing and withdrawing when votes are in place. -- -- @since 0.2.0 @@ -416,13 +416,13 @@ data PStakeRole (s :: S) PVoter (Term s PResultTag) -- ^ The option which was voted for. - | -- | The stake was used to create the propsoal. + | -- | The stake was used to create the proposal. PCreator | -- | The stake was used to both create and vote on the proposal. PBoth (Term s PResultTag) -- ^ The option which was voted for. - | -- | The stake has nothing to do with the given propsoal. + | -- | The stake has nothing to do with the given proposal. PIrrelevant deriving stock ( -- | @since 0.2.0 diff --git a/bench.csv b/bench.csv index f1ffc22..da6f322 100644 --- a/bench.csv +++ b/bench.csv @@ -2,236 +2,577 @@ 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,8229 -Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,112671240,312571,3747 +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/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,2002 -Agora/Proposal/policy (proposal creation)/legal/governor,324511293,861435,8709 -Agora/Proposal/policy (proposal creation)/legal/stake,153960499,403133,5404 -Agora/Proposal/policy (proposal creation)/illegal/invalid next proposal id/proposal,33689644,100286,2002 -Agora/Proposal/policy (proposal creation)/illegal/invalid next proposal id/stake,153960499,403133,5404 -Agora/Proposal/policy (proposal creation)/illegal/use other's stake/proposal,33689644,100286,1971 -Agora/Proposal/policy (proposal creation)/illegal/use other's stake/governor,324511293,861435,8678 -Agora/Proposal/policy (proposal creation)/illegal/altered stake/proposal,33689644,100286,2002 -Agora/Proposal/policy (proposal creation)/illegal/invalid stake locks/proposal,33689644,100286,2010 -Agora/Proposal/policy (proposal creation)/illegal/invalid stake locks/stake,159394159,417783,5412 -Agora/Proposal/policy (proposal creation)/illegal/has reached maximum proposals limit/proposal,33689644,100286,2022 -Agora/Proposal/policy (proposal creation)/illegal/has reached maximum proposals limit/stake,160422991,421241,5434 -Agora/Proposal/policy (proposal creation)/illegal/loose time range/proposal,33689644,100286,2002 -Agora/Proposal/policy (proposal creation)/illegal/loose time range/stake,153960499,403133,5404 -Agora/Proposal/policy (proposal creation)/illegal/open time range/proposal,33689644,100286,1998 -Agora/Proposal/policy (proposal creation)/illegal/open time range/stake,153960499,403133,5400 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/VotingReady/proposal,33689644,100286,2002 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/VotingReady/stake,153960499,403133,5404 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Locked/proposal,33689644,100286,2002 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Locked/stake,153960499,403133,5404 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Finished/proposal,33689644,100286,2002 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Finished/stake,153960499,403133,5404 -Agora/Proposal/validator/cosignature/legal/with 1 cosigners/propsoal,235543219,658307,8360 -Agora/Proposal/validator/cosignature/legal/with 1 cosigners/stake,118915099,307672,5213 -Agora/Proposal/validator/cosignature/legal/with 5 cosigners/propsoal,670567262,1868918,10990 -Agora/Proposal/validator/cosignature/legal/with 5 cosigners/stake,549710287,1450080,7723 -Agora/Proposal/validator/cosignature/legal/with 10 cosigners/propsoal,1328689536,3642435,14278 -Agora/Proposal/validator/cosignature/legal/with 10 cosigners/stake,1097682628,2902865,10860 -Agora/Proposal/validator/cosignature/illegal/duplicate cosigners/stake,118915099,307672,5213 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: VotingReady/stake,118915099,307672,5213 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: Locked/stake,118915099,307672,5213 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: Finished/stake,118915099,307672,5213 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: VotingReady/stake,549710287,1450080,7723 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: Locked/stake,549710287,1450080,7723 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: Finished/stake,549710287,1450080,7723 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: VotingReady/stake,1097682628,2902865,10860 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: Locked/stake,1097682628,2902865,10860 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: Finished/stake,1097682628,2902865,10860 -Agora/Proposal/validator/voting/legal/propsoal,253679830,711967,8342 -Agora/Proposal/validator/voting/legal/stake,136152299,356425,5239 -Agora/Proposal/validator/advancing/from draft/with 1 cosigner(s)/legal/to next state/propsoal,222530288,630902,8323 -Agora/Proposal/validator/advancing/from draft/with 1 cosigner(s)/legal/to next state/stake,118915099,307672,5222 -Agora/Proposal/validator/advancing/from draft/with 1 cosigner(s)/legal/to failed state/propsoal,217475596,620181,8325 -Agora/Proposal/validator/advancing/from draft/with 1 cosigner(s)/legal/to failed state/stake,118915099,307672,5224 -Agora/Proposal/validator/advancing/from draft/with 1 cosigner(s)/illegal/insufficient cosigns/stake,118638207,307672,5152 -Agora/Proposal/validator/advancing/from draft/with 5 cosigner(s)/legal/to next state/propsoal,602734705,1723441,11178 -Agora/Proposal/validator/advancing/from draft/with 5 cosigner(s)/legal/to next state/stake,496218319,1294304,7957 -Agora/Proposal/validator/advancing/from draft/with 5 cosigner(s)/legal/to failed state/propsoal,239844944,682245,8686 -Agora/Proposal/validator/advancing/from draft/with 5 cosigner(s)/legal/to failed state/stake,118915099,307672,5465 -Agora/Proposal/validator/advancing/from draft/with 5 cosigner(s)/illegal/insufficient cosigns/stake,447610813,1171578,7606 -Agora/Proposal/validator/advancing/from draft/with 10 cosigner(s)/legal/to next state/propsoal,1183926938,3402848,14747 -Agora/Proposal/validator/advancing/from draft/with 10 cosigner(s)/legal/to next state/stake,1125911200,2984885,11375 -Agora/Proposal/validator/advancing/from draft/with 10 cosigner(s)/legal/to failed state/propsoal,267806629,759825,9139 -Agora/Proposal/validator/advancing/from draft/with 10 cosigner(s)/legal/to failed state/stake,118915099,307672,5767 -Agora/Proposal/validator/advancing/from draft/with 10 cosigner(s)/illegal/insufficient cosigns/stake,1013739927,2699971,10673 -Agora/Proposal/validator/advancing/legal/advance to next state/from: VotingReady/propsoal,272116829,760091,8332 -Agora/Proposal/validator/advancing/legal/advance to next state/from: VotingReady/stake,118915099,307672,5229 -Agora/Proposal/validator/advancing/legal/advance to next state/from: Locked/propsoal,295366820,822071,8771 -Agora/Proposal/validator/advancing/legal/advance to next state/from: Locked/stake,156324691,401372,5668 -Agora/Proposal/validator/advancing/legal/advance to next state/from: Locked/governor,258666820,668654,8974 -Agora/Proposal/validator/advancing/legal/advance to failed state/from: VotingReady/propsoal,258602387,722952,8326 -Agora/Proposal/validator/advancing/legal/advance to failed state/from: VotingReady/stake,118915099,307672,5225 -Agora/Proposal/validator/advancing/legal/advance to failed state/from: Locked/propsoal,259733365,725356,8326 -Agora/Proposal/validator/advancing/legal/advance to failed state/from: Locked/stake,118915099,307672,5225 -Agora/Proposal/validator/advancing/illegal/insufficient votes/stake,118915099,307672,5225 -Agora/Proposal/validator/advancing/illegal/initial state is Finished/stake,118915099,307672,5217 -Agora/Proposal/validator/advancing/illegal/invalid stake output/from Lockedwith 1 stakes/governor,258666820,668654,8974 -Agora/Proposal/validator/advancing/illegal/invalid stake output/from Lockedwith 5 stakes/governor,265854768,689342,9215 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: retract votes while voting/stake,125083340,324576,5219 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: retract votes while voting/propsoal,236574652,665124,8323 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: retract votes while voting/stake,128314586,333630,5235 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: retract votes while voting/propsoal,250046859,705066,8334 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/creator: remove creator locks when finished/stake,125083340,324576,5217 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/creator: remove creator locks when finished/propsoal,204366787,584979,8320 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove all locks when finished/stake,125083340,324576,5233 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove all locks when finished/propsoal,212801044,609883,8332 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Locked/stake,125083340,324576,5223 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Locked/propsoal,205682939,588863,8327 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Finished/stake,125083340,324576,5223 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Finished/propsoal,205682939,588863,8327 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove vote locks when locked/stake,128314586,333630,5239 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove vote locks when locked/propsoal,219686722,630197,8338 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: retract votes while voting/stake,259870480,666572,7303 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: retract votes while voting/propsoal,379215900,1077788,10383 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: retract votes while voting/stake,276026710,711842,7380 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: retract votes while voting/propsoal,444744435,1269042,10435 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/creator: remove creator locks when finished/stake,259870480,666572,7293 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/creator: remove creator locks when finished/propsoal,312447599,902835,10376 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove all locks when finished/stake,259870480,666572,7374 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove all locks when finished/propsoal,350836580,1014587,10429 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Locked/stake,259870480,666572,7324 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Locked/propsoal,317916859,917911,10404 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Finished/stake,259870480,666572,7324 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Finished/propsoal,317916859,917911,10404 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove vote locks when locked/stake,276026710,711842,7400 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove vote locks when locked/propsoal,383976970,1110557,10455 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: retract votes while voting/stake,428354405,1094067,9909 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: retract votes while voting/propsoal,557517460,1593618,12959 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: retract votes while voting/stake,460666865,1184607,10060 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: retract votes while voting/propsoal,688116405,1974012,13060 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/creator: remove creator locks when finished/stake,428354405,1094067,9888 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/creator: remove creator locks when finished/propsoal,447548614,1300155,12946 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove all locks when finished/stake,428354405,1094067,10049 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove all locks when finished/propsoal,523381000,1520467,13049 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Locked/stake,428354405,1094067,9949 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Locked/propsoal,458209259,1329221,12999 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Finished/stake,428354405,1094067,9949 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Finished/propsoal,458209259,1329221,12999 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove vote locks when locked/stake,460666865,1184607,10100 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove vote locks when locked/propsoal,589339780,1711007,13100 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: retract votes while voting/stake,1506651525,3830035,26674 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: retract votes while voting/propsoal,1698647444,4894930,29513 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: retract votes while voting/stake,1642363857,4210303,27362 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: retract votes while voting/propsoal,2245697013,6485820,29972 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/creator: remove creator locks when finished/stake,1506651525,3830035,26590 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/creator: remove creator locks when finished/propsoal,1312195110,3843003,29469 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove all locks when finished/stake,1506651525,3830035,27301 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove all locks when finished/propsoal,1627665288,4758099,29911 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Locked/stake,1506651525,3830035,26843 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Locked/propsoal,1356080619,3961605,29682 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Finished/stake,1506651525,3830035,26843 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Finished/propsoal,1356080619,3961605,29682 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove vote locks when locked/stake,1642363857,4210303,27531 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove vote locks when locked/propsoal,1903661764,5553887,30141 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter, status: Draft/stake",125083340,324576,5219 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter, status: Locked/stake",125083340,324576,5219 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter, status: Finished/stake",125083340,324576,5219 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator, status: Draft/stake",120712754,312726,5221 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator, status: Locked/stake",120712754,312726,5221 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator, status: Finished/stake",120712754,312726,5221 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both, status: Draft/stake",128314586,333630,5235 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both, status: Locked/stake",128314586,333630,5235 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both, status: Finished/stake",128314586,333630,5235 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant, status: Draft/stake",117481508,303672,5201 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant, status: Locked/stake",117481508,303672,5201 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant, status: Finished/stake",117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Draftretract votes: True/stake,117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Draftretract votes: False/stake,117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: VotingReadyretract votes: True/stake,117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: VotingReadyretract votes: False/stake,117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Lockedretract votes: True/stake,117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Lockedretract votes: False/stake,117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Finishedretract votes: True/stake,117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Finishedretract votes: False/stake,117481508,303672,5201 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: Draft/stake,125083340,324576,5217 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: VotingReady/stake,125083340,324576,5217 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: Locked/stake,125083340,324576,5217 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/creator: retract votes/stake,125083340,324576,5215 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter, status: Draft/stake",259870480,666572,7303 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter, status: Locked/stake",259870480,666572,7303 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter, status: Finished/stake",259870480,666572,7303 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator, status: Draft/stake",253221214,649130,7309 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator, status: Locked/stake",253221214,649130,7309 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator, status: Finished/stake",253221214,649130,7309 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both, status: Draft/stake",276026710,711842,7380 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both, status: Locked/stake",276026710,711842,7380 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both, status: Finished/stake",276026710,711842,7380 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant, status: Draft/stake",237064984,603860,7221 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant, status: Locked/stake",237064984,603860,7221 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant, status: Finished/stake",237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Draftretract votes: True/stake,237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Draftretract votes: False/stake,237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: VotingReadyretract votes: True/stake,237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: VotingReadyretract votes: False/stake,237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Lockedretract votes: True/stake,237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Lockedretract votes: False/stake,237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Finishedretract votes: True/stake,237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Finishedretract votes: False/stake,237064984,603860,7221 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: Draft/stake,259870480,666572,7293 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: VotingReady/stake,259870480,666572,7293 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: Locked/stake,259870480,666572,7293 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/creator: retract votes/stake,259870480,666572,7283 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter, status: Draft/stake",428354405,1094067,9909 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter, status: Locked/stake",428354405,1094067,9909 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter, status: Finished/stake",428354405,1094067,9909 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator, status: Draft/stake",418856789,1069635,9920 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator, status: Locked/stake",418856789,1069635,9920 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator, status: Finished/stake",418856789,1069635,9920 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both, status: Draft/stake",460666865,1184607,10060 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both, status: Locked/stake",460666865,1184607,10060 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both, status: Finished/stake",460666865,1184607,10060 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant, status: Draft/stake",386544329,979095,9746 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant, status: Locked/stake",386544329,979095,9746 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant, status: Finished/stake",386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Draftretract votes: True/stake,386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Draftretract votes: False/stake,386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: VotingReadyretract votes: True/stake,386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: VotingReadyretract votes: False/stake,386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Lockedretract votes: True/stake,386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Lockedretract votes: False/stake,386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Finishedretract votes: True/stake,386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Finishedretract votes: False/stake,386544329,979095,9746 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: Draft/stake,428354405,1094067,9888 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: VotingReady/stake,428354405,1094067,9888 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: Locked/stake,428354405,1094067,9888 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/creator: retract votes/stake,428354405,1094067,9868 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter, status: Draft/stake",1506651525,3830035,26674 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter, status: Locked/stake",1506651525,3830035,26674 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter, status: Finished/stake",1506651525,3830035,26674 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator, status: Draft/stake",1478924469,3760867,26736 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator, status: Locked/stake",1478924469,3760867,26736 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator, status: Finished/stake",1478924469,3760867,26736 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both, status: Draft/stake",1642363857,4210303,27362 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both, status: Locked/stake",1642363857,4210303,27362 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both, status: Finished/stake",1642363857,4210303,27362 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant, status: Draft/stake",1343212137,3380599,25961 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant, status: Locked/stake",1343212137,3380599,25961 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant, status: Finished/stake",1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Draftretract votes: True/stake,1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Draftretract votes: False/stake,1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: VotingReadyretract votes: True/stake,1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: VotingReadyretract votes: False/stake,1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Lockedretract votes: True/stake,1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Lockedretract votes: False/stake,1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Finishedretract votes: True/stake,1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Finishedretract votes: False/stake,1343212137,3380599,25961 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: Draft/stake,1506651525,3830035,26590 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: VotingReady/stake,1506651525,3830035,26590 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: Locked/stake,1506651525,3830035,26590 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/creator: retract votes/stake,1506651525,3830035,26506 +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/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/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 +Agora/Proposal/policy (proposal creation)/illegal/has reached maximum proposals limit/proposal,33689644,100286,2025 +Agora/Proposal/policy (proposal creation)/illegal/has reached maximum proposals limit/stake,160422991,421241,5437 +Agora/Proposal/policy (proposal creation)/illegal/loose time range/proposal,33689644,100286,2005 +Agora/Proposal/policy (proposal creation)/illegal/loose time range/stake,153960499,403133,5407 +Agora/Proposal/policy (proposal creation)/illegal/open time range/proposal,33689644,100286,2001 +Agora/Proposal/policy (proposal creation)/illegal/open time range/stake,153960499,403133,5403 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/VotingReady/proposal,33689644,100286,2005 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/VotingReady/stake,153960499,403133,5407 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Locked/proposal,33689644,100286,2005 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Locked/stake,153960499,403133,5407 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Finished/proposal,33689644,100286,2005 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Finished/stake,153960499,403133,5407 +Agora/Proposal/validator/cosignature/legal/with 1 cosigners/proposal,235543219,658307,8363 +Agora/Proposal/validator/cosignature/legal/with 1 cosigners/stake,118915099,307672,5215 +Agora/Proposal/validator/cosignature/legal/with 5 cosigners/proposal,670567262,1868918,10993 +Agora/Proposal/validator/cosignature/legal/with 5 cosigners/stake,549710287,1450080,7725 +Agora/Proposal/validator/cosignature/legal/with 10 cosigners/proposal,1328689536,3642435,14281 +Agora/Proposal/validator/cosignature/legal/with 10 cosigners/stake,1097682628,2902865,10862 +Agora/Proposal/validator/cosignature/illegal/duplicate cosigners/stake,118915099,307672,5215 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: VotingReady/stake,118915099,307672,5215 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: Locked/stake,118915099,307672,5215 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: Finished/stake,118915099,307672,5215 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: VotingReady/stake,549710287,1450080,7725 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: Locked/stake,549710287,1450080,7725 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: Finished/stake,549710287,1450080,7725 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: VotingReady/stake,1097682628,2902865,10862 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: Locked/stake,1097682628,2902865,10862 +Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: Finished/stake,1097682628,2902865,10862 +Agora/Proposal/validator/voting/legal/proposal,253679830,711967,8345 +Agora/Proposal/validator/voting/legal/stake,136152299,356425,5241 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,248836586,692474,8858 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,129324200,334140,5551 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,292528703,801889,8867 +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/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 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,279014261,764750,8861 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,5554 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,280145239,767154,8861 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,5554 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,129324200,334140,5551 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,5558 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,6710 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,3653 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/insufficient cosigns/stake,129324200,334140,5551 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/insufficient votes/stake,130046736,336404,5554 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/ambiguous winning effect/stake,130046736,336404,5562 +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/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/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 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,348113422,960681,10246 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,6937 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,3880 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,340029740,936478,9841 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs with bad token name/stake,180556487,455715,6532 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/wrong GAT datum/proposal,340029740,936478,10013 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/wrong GAT datum/stake,180556487,455715,6704 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/wrong GAT datum/authority,15806303,48240,3647 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/invalid governor output datum/proposal,340029740,936478,10019 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/invalid governor output datum/stake,180556487,455715,6710 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/invalid governor output datum/authority,15806303,48240,3653 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,294237934,810566,9447 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,129324200,334140,5944 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,341624937,929969,9456 +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/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 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,324415609,882842,9450 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,5947 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,325546587,885246,9450 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,5947 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,129324200,334140,5944 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,5951 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,7104 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,4047 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/insufficient cosigns/stake,129324200,334140,5944 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/insufficient votes/stake,130046736,336404,5947 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/ambiguous winning effect/stake,130046736,336404,5959 +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/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/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 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,393514770,1078773,10836 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,7331 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,4274 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,385431088,1054570,10430 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs with bad token name/stake,180556487,455715,6925 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/wrong GAT datum/proposal,385431088,1054570,10603 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/wrong GAT datum/stake,180556487,455715,7098 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/wrong GAT datum/authority,15806303,48240,4041 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/invalid governor output datum/proposal,385431088,1054570,10609 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/invalid governor output datum/stake,180556487,455715,7104 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/invalid governor output datum/authority,15806303,48240,4047 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,430441978,1164842,11219 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,129324200,334140,7125 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,488913639,1314209,11228 +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/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 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,460619653,1237118,11222 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,7128 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,461750631,1239522,11222 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,7128 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,129324200,334140,7125 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,7132 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,8284 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,5227 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/insufficient cosigns/stake,129324200,334140,7125 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/insufficient votes/stake,130046736,336404,7128 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/ambiguous winning effect/stake,130046736,336404,7152 +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/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/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 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,529718814,1433049,12607 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,8511 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,5454 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,521635132,1408846,12202 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs with bad token name/stake,180556487,455715,8106 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/wrong GAT datum/proposal,521635132,1408846,12374 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/wrong GAT datum/stake,180556487,455715,8278 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/wrong GAT datum/authority,15806303,48240,5221 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/invalid governor output datum/proposal,521635132,1408846,12380 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/invalid governor output datum/stake,180556487,455715,8284 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/invalid governor output datum/authority,15806303,48240,5227 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,612521495,1742349,11604 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,546746396,1437604,8176 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,314898051,863953,9224 +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/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 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,301383609,826814,9218 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,5790 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,302514587,829218,9218 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,5790 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,546746396,1437604,8176 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,5794 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,6946 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,3890 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/insufficient cosigns/stake,559378094,1474482,8176 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/insufficient votes/stake,130046736,336404,5790 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/ambiguous winning effect/stake,130046736,336404,5798 +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/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/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 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,370482770,1022745,10603 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,7173 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,4117 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,362399088,998542,10198 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs with bad token name/stake,180556487,455715,6768 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/wrong GAT datum/proposal,362399088,998542,10370 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/wrong GAT datum/stake,180556487,455715,6940 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/wrong GAT datum/authority,15806303,48240,3884 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/invalid governor output datum/proposal,362399088,998542,10376 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/invalid governor output datum/stake,180556487,455715,6946 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/invalid governor output datum/authority,15806303,48240,3890 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,657922843,1860441,12195 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,546746396,1437604,8570 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,363994285,992033,9814 +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/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 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,346784957,944906,9808 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,6183 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,347915935,947310,9808 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,6183 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,546746396,1437604,8570 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,6187 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,7340 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,4284 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/insufficient cosigns/stake,559378094,1474482,8570 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/insufficient votes/stake,130046736,336404,6183 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/ambiguous winning effect/stake,130046736,336404,6195 +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/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/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 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,415884118,1140837,11194 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,7567 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,4511 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,407800436,1116634,10788 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs with bad token name/stake,180556487,455715,7161 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/wrong GAT datum/proposal,407800436,1116634,10961 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/wrong GAT datum/stake,180556487,455715,7334 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/wrong GAT datum/authority,15806303,48240,4278 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/invalid governor output datum/proposal,407800436,1116634,10967 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/invalid governor output datum/stake,180556487,455715,7340 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/invalid governor output datum/authority,15806303,48240,4284 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,794126887,2214717,13965 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,546746396,1437604,9750 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,511282987,1376273,11585 +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/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 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,482989001,1299182,11579 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,7364 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,484119979,1301586,11579 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,7364 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,546746396,1437604,9750 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,7368 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,8520 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,5464 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/insufficient cosigns/stake,559378094,1474482,9750 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/insufficient votes/stake,130046736,336404,7364 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/ambiguous winning effect/stake,130046736,336404,7388 +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/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/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 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,552088162,1495113,12964 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,8747 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,5691 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,544004480,1470910,12559 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs with bad token name/stake,180556487,455715,8342 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/wrong GAT datum/proposal,544004480,1470910,12731 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/wrong GAT datum/stake,180556487,455715,8514 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/wrong GAT datum/authority,15806303,48240,5458 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/invalid governor output datum/proposal,544004480,1470910,12737 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/invalid governor output datum/stake,180556487,455715,8520 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/invalid governor output datum/authority,15806303,48240,5464 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,1145091822,3281720,15043 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,1161583697,3085109,11464 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,342859736,941533,9676 +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/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 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,329345294,904394,9670 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,6091 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,330476272,906798,9670 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,6091 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,1161583697,3085109,11464 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,6095 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,7247 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,4191 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/insufficient cosigns/stake,1108833023,2931399,11464 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/insufficient votes/stake,130046736,336404,6091 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/ambiguous winning effect/stake,130046736,336404,6099 +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/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/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 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,398444455,1100325,11055 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,7474 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,4418 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,390360773,1076122,10650 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs with bad token name/stake,180556487,455715,7069 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/wrong GAT datum/proposal,390360773,1076122,10822 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/wrong GAT datum/stake,180556487,455715,7241 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/wrong GAT datum/authority,15806303,48240,4185 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/invalid governor output datum/proposal,390360773,1076122,10828 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/invalid governor output datum/stake,180556487,455715,7247 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/invalid governor output datum/authority,15806303,48240,4191 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,1190493170,3399812,15632 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,1161583697,3085109,11857 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,391955970,1069613,10265 +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/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 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,374746642,1022486,10259 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,6484 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,375877620,1024890,10259 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,6484 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,1161583697,3085109,11857 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,6488 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,7641 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,4585 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/insufficient cosigns/stake,1108833023,2931399,11857 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/insufficient votes/stake,130046736,336404,6484 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/ambiguous winning effect/stake,130046736,336404,6496 +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/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/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 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,443845803,1218417,11645 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,7868 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,4812 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,435762121,1194214,11239 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs with bad token name/stake,180556487,455715,7462 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/wrong GAT datum/proposal,435762121,1194214,11412 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/wrong GAT datum/stake,180556487,455715,7635 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/wrong GAT datum/authority,15806303,48240,4579 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/invalid governor output datum/proposal,435762121,1194214,11418 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/invalid governor output datum/stake,180556487,455715,7641 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/invalid governor output datum/authority,15806303,48240,4585 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,1326697214,3754088,17404 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,1161583697,3085109,13038 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,539244672,1453853,12037 +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/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 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,510950686,1376762,12031 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/stake,130046736,336404,7665 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,512081664,1379166,12031 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Locked to Finished/stake,130046736,336404,7665 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,1161583697,3085109,13038 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,130046736,336404,7669 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,180556487,455715,8822 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15806303,48240,5765 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/insufficient cosigns/stake,1108833023,2931399,13038 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/insufficient votes/stake,130046736,336404,7665 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/ambiguous winning effect/stake,130046736,336404,7689 +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/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/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 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,580049847,1572693,13416 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs for wrong validators/stake,184104596,462942,9048 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,17630300,53302,5992 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,571966165,1548490,13011 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs with bad token name/stake,180556487,455715,8643 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/wrong GAT datum/proposal,571966165,1548490,13184 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/wrong GAT datum/stake,180556487,455715,8816 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/wrong GAT datum/authority,15806303,48240,5759 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/invalid governor output datum/proposal,571966165,1548490,13190 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/invalid governor output datum/stake,180556487,455715,8822 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/invalid governor output datum/authority,15806303,48240,5765 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: retract votes while voting/stake,125083340,324576,5221 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: retract votes while voting/proposal,236574652,665124,8326 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: retract votes while voting/stake,128314586,333630,5237 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: retract votes while voting/proposal,250046859,705066,8337 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/creator: remove creator locks when finished/stake,125083340,324576,5219 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/creator: remove creator locks when finished/proposal,204366787,584979,8323 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove all locks when finished/stake,125083340,324576,5235 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove all locks when finished/proposal,212801044,609883,8335 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Locked/stake,125083340,324576,5225 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Locked/proposal,205682939,588863,8330 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Finished/stake,125083340,324576,5225 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Finished/proposal,205682939,588863,8330 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove vote locks when locked/stake,128314586,333630,5241 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove vote locks when locked/proposal,219686722,630197,8341 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: retract votes while voting/stake,259870480,666572,7313 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: retract votes while voting/proposal,379215900,1077788,10394 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: retract votes while voting/stake,276026710,711842,7390 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: retract votes while voting/proposal,444744435,1269042,10446 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/creator: remove creator locks when finished/stake,259870480,666572,7303 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/creator: remove creator locks when finished/proposal,312447599,902835,10387 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove all locks when finished/stake,259870480,666572,7384 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove all locks when finished/proposal,350836580,1014587,10440 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Locked/stake,259870480,666572,7334 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Locked/proposal,317916859,917911,10415 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Finished/stake,259870480,666572,7334 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Finished/proposal,317916859,917911,10415 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove vote locks when locked/stake,276026710,711842,7410 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove vote locks when locked/proposal,383976970,1110557,10466 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: retract votes while voting/stake,428354405,1094067,9929 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: retract votes while voting/proposal,557517460,1593618,12980 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: retract votes while voting/stake,460666865,1184607,10080 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: retract votes while voting/proposal,688116405,1974012,13081 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/creator: remove creator locks when finished/stake,428354405,1094067,9909 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/creator: remove creator locks when finished/proposal,447548614,1300155,12968 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove all locks when finished/stake,428354405,1094067,10069 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove all locks when finished/proposal,523381000,1520467,13070 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Locked/stake,428354405,1094067,9969 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Locked/proposal,458209259,1329221,13020 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Finished/stake,428354405,1094067,9969 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Finished/proposal,458209259,1329221,13020 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove vote locks when locked/stake,460666865,1184607,10120 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove vote locks when locked/proposal,589339780,1711007,13121 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: retract votes while voting/stake,1506651525,3830035,26759 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: retract votes while voting/proposal,1698647444,4894930,29599 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: retract votes while voting/stake,1642363857,4210303,27446 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: retract votes while voting/proposal,2245697013,6485820,30057 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/creator: remove creator locks when finished/stake,1506651525,3830035,26674 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/creator: remove creator locks when finished/proposal,1312195110,3843003,29554 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove all locks when finished/stake,1506651525,3830035,27385 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove all locks when finished/proposal,1627665288,4758099,29996 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Locked/stake,1506651525,3830035,26927 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Locked/proposal,1356080619,3961605,29767 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Finished/stake,1506651525,3830035,26927 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Finished/proposal,1356080619,3961605,29767 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove vote locks when locked/stake,1642363857,4210303,27615 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove vote locks when locked/proposal,1903661764,5553887,30226 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Draft/stake",125083340,324576,5221 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Locked/stake",125083340,324576,5221 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Finished/stake",125083340,324576,5221 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Draft/stake",120712754,312726,5223 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Locked/stake",120712754,312726,5223 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Finished/stake",120712754,312726,5223 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Draft/stake",128314586,333630,5237 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Locked/stake",128314586,333630,5237 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Finished/stake",128314586,333630,5237 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",117481508,303672,5203 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",117481508,303672,5203 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,117481508,303672,5203 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: Draft/stake,125083340,324576,5219 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: VotingReady/stake,125083340,324576,5219 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: Locked/stake,125083340,324576,5219 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/creator: retract votes/stake,125083340,324576,5217 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Draft/stake",259870480,666572,7313 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Locked/stake",259870480,666572,7313 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Finished/stake",259870480,666572,7313 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Draft/stake",253221214,649130,7320 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Locked/stake",253221214,649130,7320 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Finished/stake",253221214,649130,7320 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Draft/stake",276026710,711842,7390 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Locked/stake",276026710,711842,7390 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Finished/stake",276026710,711842,7390 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",237064984,603860,7231 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",237064984,603860,7231 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,237064984,603860,7231 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: Draft/stake,259870480,666572,7303 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: VotingReady/stake,259870480,666572,7303 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: Locked/stake,259870480,666572,7303 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/creator: retract votes/stake,259870480,666572,7293 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Draft/stake",428354405,1094067,9929 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Locked/stake",428354405,1094067,9929 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Finished/stake",428354405,1094067,9929 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Draft/stake",418856789,1069635,9940 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Locked/stake",418856789,1069635,9940 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Finished/stake",418856789,1069635,9940 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Draft/stake",460666865,1184607,10080 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Locked/stake",460666865,1184607,10080 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Finished/stake",460666865,1184607,10080 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",386544329,979095,9766 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",386544329,979095,9766 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,386544329,979095,9766 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: Draft/stake,428354405,1094067,9909 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: VotingReady/stake,428354405,1094067,9909 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: Locked/stake,428354405,1094067,9909 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/creator: retract votes/stake,428354405,1094067,9888 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Draft/stake",1506651525,3830035,26759 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Locked/stake",1506651525,3830035,26759 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Finished/stake",1506651525,3830035,26759 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Draft/stake",1478924469,3760867,26820 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Locked/stake",1478924469,3760867,26820 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Finished/stake",1478924469,3760867,26820 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Draft/stake",1642363857,4210303,27446 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Locked/stake",1642363857,4210303,27446 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Finished/stake",1642363857,4210303,27446 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",1343212137,3380599,26046 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",1343212137,3380599,26046 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,1343212137,3380599,26046 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: Draft/stake,1506651525,3830035,26674 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: VotingReady/stake,1506651525,3830035,26674 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: Locked/stake,1506651525,3830035,26674 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/creator: retract votes/stake,1506651525,3830035,26590 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct simple,20570665,54655,725 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,32757063,87013,825 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,2267 -Agora/Governor/validator/GATs minting,255584059,683393,8855 -Agora/Governor/validator/mutate governor state,93971983,261537,8329 +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