diff --git a/CHANGELOG.md b/CHANGELOG.md index a421cfa..f976ecf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ This format is based on [Keep A Changelog](https://keepachangelog.com/en/1.0.0). ### Modified +- Witness stakes with reference input. Stake redeemer `WitnessStake` is removed. + + Included by [#168](https://github.com/Liqwid-Labs/agora/pull/168) + - `tracing` flag in `ScriptParams` of `agora-scripts` to enable/disable tracing in exported scripts. NOTE: This changes the representation of `ScriptParams`. In order to preserve old behavior, the flag diff --git a/agora-specs/Sample/Effect/GovernorMutation.hs b/agora-specs/Sample/Effect/GovernorMutation.hs index 633398c..076584e 100644 --- a/agora-specs/Sample/Effect/GovernorMutation.hs +++ b/agora-specs/Sample/Effect/GovernorMutation.hs @@ -74,11 +74,17 @@ atAssetClass = assetClass authorityTokenSymbol tokenName -- | The mock reference of the governor state UTXO. govRef :: TxOutRef -govRef = TxOutRef "1475e1ee22330dfc55430980e5a6b100ec9d9249bb4b462256a79559" 1 +govRef = + TxOutRef + "d63fe09e6ac6e55dea82291149085d0a9b901df65087b83965188ee92fb25aef" + 1 -- | The mock reference of the effect UTXO. effectRef :: TxOutRef -effectRef = TxOutRef "a302d327d8e5553d50b9d017475369753f723d7e999ac1b68da8ad52" 1 +effectRef = + TxOutRef + "3ca6864670aae61a9f3e63064284cec00bd983d77cf4e1ab1e26bef34cafb0a9" + 1 -- | The input effect datum in 'mkEffectTransaction'. mkEffectDatum :: GovernorDatum -> MutateGovernorDatum diff --git a/agora-specs/Sample/Proposal/Advance.hs b/agora-specs/Sample/Proposal/Advance.hs index 0f13eda..93c254f 100644 --- a/agora-specs/Sample/Proposal/Advance.hs +++ b/agora-specs/Sample/Proposal/Advance.hs @@ -29,7 +29,6 @@ module Sample.Proposal.Advance ( mkFromFinishedBundles, mkInsufficientCosignsBundle, mkToNextStateTooLateBundles, - mkInvalidOutputStakeBundles, mkMintGATsForWrongEffectsBundle, mkNoGATMintedBundle, mkGATsWithWrongDatumBundle, @@ -46,6 +45,7 @@ import Agora.Governor ( import Agora.Proposal ( ProposalDatum (..), ProposalEffectGroup, + ProposalEffectMetadata (ProposalEffectMetadata), ProposalId (ProposalId), ProposalRedeemer (AdvanceProposal), ProposalStatus (..), @@ -66,7 +66,6 @@ import Agora.Proposal.Time ( import Agora.Scripts (AgoraScripts (..)) import Agora.Stake ( StakeDatum (..), - StakeRedeemer (WitnessStake), ) import Agora.Utils (scriptHashToTokenName) import Control.Applicative (liftA2) @@ -75,15 +74,17 @@ import Data.Default (def) import Data.List (singleton, sort) import Data.Map.Strict qualified as StrictMap import Data.Maybe (fromJust) -import Data.Tagged (Tagged (..), untag) +import Data.Tagged (untag) import Plutarch.Context ( input, mint, output, + referenceInput, script, signedWith, timeRange, withDatum, + withInlineDatum, withRef, withValue, ) @@ -217,7 +218,6 @@ data StakeParameters = StakeParameters { numStake :: NumStake , perStakeGTs :: Integer , transactionSignedByOwners :: Bool - , invalidStakeOutputDatum :: Bool } -- | Represent the number of stakes or the number of the cosigners. @@ -355,7 +355,7 @@ mkStakeInputDatums :: StakeParameters -> [StakeDatum] mkStakeInputDatums ps = let template = StakeDatum - { stakedAmount = Tagged ps.perStakeGTs + { stakedAmount = fromInteger ps.perStakeGTs , owner = PubKeyCredential "" , delegatedTo = Nothing , lockedBy = [] @@ -363,24 +363,6 @@ mkStakeInputDatums ps = in (\owner -> template {owner = owner}) <$> mkStakeOwners ps.numStake --- | Create the output stake datums given the parameters. -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 - -{- | Get the input stake datum given the index. The range of the index is - @[0, 'StakeParameters.numStake - 1']@ --} -getStakeInputDatumAt :: StakeParameters -> Index -> StakeDatum -getStakeInputDatumAt ps = (!!) (mkStakeInputDatums ps) - -- | Create the reference to a particular stake UTXO. mkStakeRef :: Index -> TxOutRef mkStakeRef = TxOutRef stakeTxRef . (+ 3) . fromIntegral @@ -397,39 +379,26 @@ mkStakeBuilder ps = <> Value.assetClassValue (untag governor.gtClassRef) ps.perStakeGTs - perStake idx i o = + perStake idx i = let withSig = case (i.owner, ps.transactionSignedByOwners) of (PubKeyCredential owner, True) -> signedWith owner _ -> mempty in mconcat [ withSig - , input $ + , referenceInput $ mconcat [ script stakeValidatorHash , withRef (mkStakeRef idx) , withValue perStakeValue - , withDatum i - ] - , output $ - mconcat - [ script stakeValidatorHash - , withValue perStakeValue - , withDatum o + , withInlineDatum i ] ] in mconcat $ - zipWith3 + zipWith perStake [0 :: Index ..] (mkStakeInputDatums ps) - (mkStakeOutputDatums ps) - -{- | The proposal redeemer used to spend the stake UTXO, which is always - 'WitnessStake' in this case. --} -stakeRedeemer :: StakeRedeemer -stakeRedeemer = WitnessStake -------------------------------------------------------------------------------- @@ -553,7 +522,7 @@ mkTestTree :: Validity -> SpecificationTree mkTestTree name pb val = - group name $ mconcat [proposal, stake, governor, authority] + group name $ mconcat [proposal, governor, authority] where spend = mkSpending advance pb @@ -567,22 +536,6 @@ mkTestTree name pb val = proposalInputDatum proposalRedeemer (spend proposalRef) - - stake = - if pb.stakeParameters.numStake == 0 - then mempty - else - let idx = 0 - in singleton $ - testValidator - val.forStakeValidator - "stake" - agoraScripts.compiledStakeValidator - (getStakeInputDatumAt pb.stakeParameters idx) - stakeRedeemer - ( spend (mkStakeRef idx) - ) - governor = maybe [] singleton $ testValidator @@ -747,7 +700,7 @@ mkMockEffects useAuthScript n = effects datums = repeat dummyDatumHash - effectMetadata = zip datums authScripts + effectMetadata = zipWith ProposalEffectMetadata datums authScripts effectScripts = validatorHashes effects = @@ -822,7 +775,6 @@ mkValidToNextStateBundle nCosigners nEffects authScript from = compPerStakeGTsForDraft $ fromIntegral nCosigners , transactionSignedByOwners = False - , invalidStakeOutputDatum = False } , governorParameters = Nothing , authorityTokenParameters = [] @@ -857,7 +809,7 @@ mkValidToNextStateBundle nCosigners nEffects authScript from = let aut = StrictMap.elems $ StrictMap.mapWithKey - ( \vh (_, authScript) -> + ( \vh (ProposalEffectMetadata _ authScript) -> AuthorityTokenParameters { mintGATsFor = vh , carryDatum = Just dummyDatum @@ -920,7 +872,6 @@ mkValidToFailedStateBundles nCosigners nEffects = compPerStakeGTsForDraft $ fromIntegral nCosigners , transactionSignedByOwners = False - , invalidStakeOutputDatum = False } , governorParameters = Nothing , authorityTokenParameters = [] @@ -965,22 +916,6 @@ mkToNextStateTooLateBundles nCosigners nEffects = { transactionTimeRange = mkTooLateTimeRange from } -mkInvalidOutputStakeBundles :: Word -> Word -> [ParameterBundle] -mkInvalidOutputStakeBundles nCosigners nEffects = - liftA2 - mkBundle - [True, False] - [Draft] - where - mkBundle authScript from = - let template = mkValidToNextStateBundle nCosigners nEffects authScript from - in template - { stakeParameters = - template.stakeParameters - { invalidStakeOutputDatum = True - } - } - mkUnexpectedOutputStakeBundles :: Word -> Word -> [ParameterBundle] mkUnexpectedOutputStakeBundles nCosigners nEffects = liftA2 diff --git a/agora-specs/Sample/Proposal/Cosign.hs b/agora-specs/Sample/Proposal/Cosign.hs index 11aaf08..30e3225 100644 --- a/agora-specs/Sample/Proposal/Cosign.hs +++ b/agora-specs/Sample/Proposal/Cosign.hs @@ -10,7 +10,6 @@ module Sample.Proposal.Cosign ( validCosignNParameters, duplicateCosignersParameters, statusNotDraftCosignNParameters, - invalidStakeOutputParameters, mkTestTree, ) where @@ -31,25 +30,26 @@ import Agora.SafeMoney (GTTag) import Agora.Scripts (AgoraScripts (..)) import Agora.Stake ( StakeDatum (StakeDatum, owner), - StakeRedeemer (WitnessStake), - stakedAmount, ) import Data.Coerce (coerce) import Data.Default (def) import Data.List (sort) import Data.Map.Strict qualified as StrictMap -import Data.Tagged (Tagged, untag) +import Data.Tagged (untag) import Plutarch.Context ( input, output, + referenceInput, script, signedWith, timeRange, txId, withDatum, + withInlineDatum, withRef, withValue, ) +import Plutarch.SafeMoney (Discrete) import PlutusLedgerApi.V1.Value qualified as Value import PlutusLedgerApi.V2 ( Credential (PubKeyCredential), @@ -61,6 +61,7 @@ import PlutusLedgerApi.V2 ( import Sample.Proposal.Shared (proposalTxRef, stakeTxRef) import Sample.Shared ( agoraScripts, + fromDiscrete, governor, minAda, proposalPolicySymbol, @@ -71,7 +72,6 @@ import Sample.Shared ( ) import Test.Specification ( SpecificationTree, - group, testValidator, ) import Test.Util (CombinableBuilder, closedBoundedInterval, mkSpending, pubKeyHashes, sortValue) @@ -82,9 +82,6 @@ data Parameters = Parameters -- ^ New cosigners to be added, and the owners of the generated stakes. , proposalStatus :: ProposalStatus -- ^ Current state of the proposal. - , alterOutputStakes :: Bool - -- ^ Whether to generate invalid stake outputs. - -- In particular, the 'stakedAmount' of all the stake datums will be set to zero. } -- | Owner of the creator stake, doesn't really matter in this case. @@ -92,7 +89,7 @@ proposalCreator :: PubKeyHash proposalCreator = signer -- | The amount of GTs every generated stake has, doesn't really matter in this case. -perStakedGTs :: Tagged GTTag Integer +perStakedGTs :: Discrete GTTag perStakedGTs = 5 {- | Create input proposal datum given the parameters. @@ -151,34 +148,24 @@ cosign ps = builder minAda <> Value.assetClassValue (untag governor.gtClassRef) - (untag perStakedGTs) + (fromDiscrete perStakedGTs) <> sst stakeBuilder = foldMap ( \(stakeDatum, refIdx) -> - let stakeOutputDatum = - if ps.alterOutputStakes - then stakeDatum {stakedAmount = 0} - else stakeDatum - in mconcat - [ input $ - mconcat - [ script stakeValidatorHash - , withValue stakeValue - , withDatum stakeDatum - , withRef (mkStakeRef refIdx) - ] - , output $ - mconcat - [ script stakeValidatorHash - , withValue stakeValue - , withDatum stakeOutputDatum - ] - , case stakeDatum.owner of - PubKeyCredential k -> signedWith k - _ -> mempty - ] + mconcat + [ referenceInput $ + mconcat + [ script stakeValidatorHash + , withValue stakeValue + , withInlineDatum stakeDatum + , withRef (mkStakeRef refIdx) + ] + , case stakeDatum.owner of + PubKeyCredential k -> signedWith k + _ -> mempty + ] ) $ zip stakeInputDatums @@ -246,10 +233,6 @@ mkStakeRef idx = mkProposalRedeemer :: Parameters -> ProposalRedeemer mkProposalRedeemer = Cosign . sort . newCosigners --- | Stake redeemer for cosuming all the stakes generated in the module. -stakeRedeemer :: StakeRedeemer -stakeRedeemer = WitnessStake - --- -- | Create a valid parameters that cosign the proposal with a given number of cosigners. @@ -259,7 +242,6 @@ validCosignNParameters n Parameters { newCosigners = take n (fmap PubKeyCredential pubKeyHashes) , proposalStatus = Draft - , alterOutputStakes = False } | otherwise = error "Number of cosigners should be positive" @@ -273,7 +255,6 @@ duplicateCosignersParameters = Parameters { newCosigners = [PubKeyCredential proposalCreator] , proposalStatus = Draft - , alterOutputStakes = False } --- @@ -288,24 +269,12 @@ statusNotDraftCosignNParameters n = Parameters { newCosigners = take n (fmap PubKeyCredential pubKeyHashes) , proposalStatus = st - , alterOutputStakes = False } ) [VotingReady, Locked, Finished] --- -{- | Parameters thet change the output stake datums. - Invalid for both proposal validator and stake validator. --} -invalidStakeOutputParameters :: Parameters -invalidStakeOutputParameters = - (validCosignNParameters 2) - { alterOutputStakes = True - } - ---- - -- | Create a test tree given the parameters. Both the proposal validator and stake validator will be run. mkTestTree :: -- | The name of the test group. @@ -314,7 +283,7 @@ mkTestTree :: -- | Are the parameters valid for the proposal validator? Bool -> SpecificationTree -mkTestTree name ps isValid = group name [proposal, stake] +mkTestTree name ps isValid = proposal where spend = mkSpending cosign ps @@ -322,20 +291,8 @@ mkTestTree name ps isValid = group name [proposal, stake] let proposalInputDatum = mkProposalInputDatum ps in testValidator isValid - "proposal" + (name <> ": proposal") agoraScripts.compiledProposalValidator proposalInputDatum (mkProposalRedeemer ps) (spend proposalRef) - - stake = - let idx = 0 - stakeInputDatum = mkStakeInputDatums ps !! idx - isValid = not ps.alterOutputStakes - in testValidator - isValid - "stake" - agoraScripts.compiledStakeValidator - stakeInputDatum - stakeRedeemer - (spend $ mkStakeRef idx) diff --git a/agora-specs/Sample/Proposal/Create.hs b/agora-specs/Sample/Proposal/Create.hs index 1b65c15..9173f91 100644 --- a/agora-specs/Sample/Proposal/Create.hs +++ b/agora-specs/Sample/Proposal/Create.hs @@ -38,6 +38,7 @@ import Agora.Proposal.Time ( ), ProposalStartingTime (..), ) +import Agora.SafeMoney (GTTag) import Agora.Scripts (AgoraScripts (..)) import Agora.Stake ( ProposalLock (..), @@ -47,7 +48,7 @@ import Agora.Stake ( import Data.Coerce (coerce) import Data.Default (Default (def)) import Data.Map.Strict qualified as StrictMap -import Data.Tagged (Tagged, untag) +import Data.Tagged (untag) import Plutarch.Context ( input, mint, @@ -60,6 +61,7 @@ import Plutarch.Context ( withRef, withValue, ) +import Plutarch.SafeMoney (Discrete) import PlutusLedgerApi.V1.Value qualified as Value import PlutusLedgerApi.V2 ( Credential (PubKeyCredential), @@ -71,6 +73,7 @@ import PlutusLedgerApi.V2 ( import Sample.Proposal.Shared (stakeTxRef) import Sample.Shared ( agoraScripts, + fromDiscrete, govAssetClass, govValidatorHash, governor, @@ -123,7 +126,7 @@ thisProposalId :: ProposalId thisProposalId = ProposalId 25 -- | The arbitrary staked amount. Doesn;t really matter in this case. -stakedGTs :: Tagged _ Integer +stakedGTs :: Discrete GTTag stakedGTs = 5 -- | The owner of the stake. @@ -289,7 +292,7 @@ createProposal ps = builder sortValue $ sortValue $ sst - <> Value.assetClassValue (untag governor.gtClassRef) (untag stakedGTs) + <> Value.assetClassValue (untag governor.gtClassRef) (fromDiscrete stakedGTs) <> minAda proposalValue = sortValue $ pst <> minAda diff --git a/agora-specs/Sample/Proposal/UnlockStake.hs b/agora-specs/Sample/Proposal/UnlockStake.hs index 438afe3..60c4178 100644 --- a/agora-specs/Sample/Proposal/UnlockStake.hs +++ b/agora-specs/Sample/Proposal/UnlockStake.hs @@ -36,6 +36,7 @@ import Agora.Proposal ( ResultTag (..), ) import Agora.Proposal.Time (ProposalStartingTime (ProposalStartingTime)) +import Agora.SafeMoney (GTTag) import Agora.Scripts (AgoraScripts (..)) import Agora.Stake ( ProposalLock (..), @@ -44,7 +45,7 @@ import Agora.Stake ( ) import Data.Default.Class (Default (def)) import Data.Map.Strict qualified as StrictMap -import Data.Tagged (Tagged (..), untag) +import Data.Tagged (untag) import Plutarch.Context ( input, output, @@ -52,9 +53,11 @@ import Plutarch.Context ( signedWith, txId, withDatum, + withRedeemer, withRef, withValue, ) +import Plutarch.SafeMoney (Discrete) import PlutusLedgerApi.V1.Value qualified as Value import PlutusLedgerApi.V2 ( Credential (PubKeyCredential), @@ -64,6 +67,7 @@ import PlutusLedgerApi.V2 ( import Sample.Proposal.Shared (stakeTxRef) import Sample.Shared ( agoraScripts, + fromDiscrete, governor, minAda, proposalPolicySymbol, @@ -99,13 +103,13 @@ defVoteFor :: ResultTag defVoteFor = ResultTag 0 -- | The default number of GTs the stake will have. -defStakedGTs :: Tagged _ Integer +defStakedGTs :: Discrete GTTag defStakedGTs = 100000 {- | If 'Parameters.alterOutputStake' is set to true, the 'StakeDatum.stakedAmount' will be set to this. -} -alteredStakedGTs :: Tagged _ Integer +alteredStakedGTs :: Discrete GTTag alteredStakedGTs = 100 -- | Default owner of the stakes. @@ -212,7 +216,7 @@ mkProposalDatumPair :: ProposalId -> (ProposalDatum, ProposalDatum) mkProposalDatumPair params pid = - let inputVotes = mkInputVotes params.stakeRole $ untag defStakedGTs + let inputVotes = mkInputVotes params.stakeRole $ fromDiscrete defStakedGTs input = ProposalDatum @@ -266,6 +270,7 @@ unlockStake ps = , withValue pst , withDatum i , withRef (mkProposalRef idx) + , withRedeemer proposalRedeemer ] , output $ mconcat @@ -282,7 +287,7 @@ unlockStake ps = mconcat [ Value.assetClassValue (untag governor.gtClassRef) - (untag defStakedGTs) + (fromDiscrete defStakedGTs) , sst , minAda ] diff --git a/agora-specs/Sample/Proposal/Vote.hs b/agora-specs/Sample/Proposal/Vote.hs index 4db3b59..209ace0 100644 --- a/agora-specs/Sample/Proposal/Vote.hs +++ b/agora-specs/Sample/Proposal/Vote.hs @@ -32,7 +32,7 @@ import Agora.Stake ( ) import Data.Default (Default (def)) import Data.Map.Strict qualified as StrictMap -import Data.Tagged (Tagged (Tagged), untag) +import Data.Tagged (untag) import Plutarch.Context ( input, output, @@ -41,6 +41,7 @@ import Plutarch.Context ( timeRange, txId, withDatum, + withRedeemer, withRef, withValue, ) @@ -139,7 +140,7 @@ delegate = head pubKeyHashes mkStakeInputDatum :: Parameters -> StakeDatum mkStakeInputDatum params = StakeDatum - { stakedAmount = Tagged params.voteCount + { stakedAmount = fromInteger params.voteCount , owner = PubKeyCredential stakeOwner , delegatedTo = if params.voteAsDelegate @@ -230,6 +231,7 @@ vote params = , withValue pst , withDatum proposalInputDatum , withRef proposalRef + , withRedeemer $ mkProposalRedeemer params ] , input $ mconcat diff --git a/agora-specs/Sample/Shared.hs b/agora-specs/Sample/Shared.hs index 659e202..6274218 100644 --- a/agora-specs/Sample/Shared.hs +++ b/agora-specs/Sample/Shared.hs @@ -15,6 +15,7 @@ module Sample.Shared ( deterministicTracingConfing, mkEffect, mkRedeemer, + fromDiscrete, -- * Agora Scripts agoraScripts, @@ -73,6 +74,7 @@ import Agora.Utils ( CompiledValidator (getCompiledValidator), validatorHashToTokenName, ) +import Data.Coerce (coerce) import Data.Default.Class (Default (..)) import Data.Tagged (Tagged (..)) import Plutarch (Config (..), TracingMode (DetTracing)) @@ -82,6 +84,7 @@ import Plutarch.Api.V2 ( mkValidator, validatorHash, ) +import Plutarch.SafeMoney (Discrete (Discrete)) import PlutusLedgerApi.V1.Address (scriptHashAddress) import PlutusLedgerApi.V1.Contexts (TxOut (..)) import PlutusLedgerApi.V1.Scripts (Validator, ValidatorHash (..)) @@ -225,6 +228,9 @@ mkEffect v = CompiledEffect $ mkValidator deterministicTracingConfing v mkRedeemer :: forall redeemer. PlutusTx.ToData redeemer => redeemer -> Redeemer mkRedeemer = Redeemer . toBuiltinData +fromDiscrete :: forall tag. Discrete tag -> Integer +fromDiscrete = coerce + ------------------------------------------------------------------ treasuryOut :: TxOut diff --git a/agora-specs/Sample/Stake.hs b/agora-specs/Sample/Stake.hs index 0109d7a..7a21ffd 100644 --- a/agora-specs/Sample/Stake.hs +++ b/agora-specs/Sample/Stake.hs @@ -23,7 +23,7 @@ import Agora.SafeMoney (GTTag) import Agora.Stake ( StakeDatum (StakeDatum, stakedAmount), ) -import Data.Tagged (Tagged, untag) +import Data.Tagged (untag) import Plutarch.Context ( MintingBuilder, SpendingBuilder, @@ -41,6 +41,7 @@ import Plutarch.Context ( withSpendingOutRef, withValue, ) +import Plutarch.SafeMoney (Discrete) import PlutusLedgerApi.V1.Contexts (TxOutRef (..)) import PlutusLedgerApi.V1.Value qualified as Value ( assetClassValue, @@ -56,6 +57,7 @@ import PlutusLedgerApi.V2 ( ) import PlutusTx.AssocMap qualified as AssocMap import Sample.Shared ( + fromDiscrete, governor, signer, stakeAssetClass, @@ -112,9 +114,9 @@ stakeCreationUnsigned = -- | Config for creating a ScriptContext that deposits or withdraws. data DepositWithdrawExample = DepositWithdrawExample - { startAmount :: Tagged GTTag Integer + { startAmount :: Discrete GTTag -- ^ The amount of GT stored before the transaction. - , delta :: Tagged GTTag Integer + , delta :: Discrete GTTag -- ^ The amount of GT deposited or withdrawn from the Stake. } @@ -143,7 +145,7 @@ stakeDepositWithdraw config = , withValue ( sortValue $ st - <> Value.assetClassValue (untag governor.gtClassRef) (untag stakeBefore.stakedAmount) + <> Value.assetClassValue (untag governor.gtClassRef) (fromDiscrete stakeBefore.stakedAmount) ) , withDatum stakeAfter , withRef stakeRef @@ -154,7 +156,7 @@ stakeDepositWithdraw config = , withValue ( sortValue $ st - <> Value.assetClassValue (untag governor.gtClassRef) (untag stakeAfter.stakedAmount) + <> Value.assetClassValue (untag governor.gtClassRef) (fromDiscrete stakeAfter.stakedAmount) ) , withDatum stakeAfter ] diff --git a/agora-specs/Sample/Stake/SetDelegate.hs b/agora-specs/Sample/Stake/SetDelegate.hs index aadc35e..48cd6b6 100644 --- a/agora-specs/Sample/Stake/SetDelegate.hs +++ b/agora-specs/Sample/Stake/SetDelegate.hs @@ -48,6 +48,7 @@ import PlutusLedgerApi.V2 ( ) import Sample.Shared ( agoraScripts, + fromDiscrete, governor, minAda, signer, @@ -123,7 +124,7 @@ setDelegate ps = buildSpending' builder [ st , Value.assetClassValue (untag governor.gtClassRef) - (untag stakeInput.stakedAmount) + (fromDiscrete stakeInput.stakedAmount) , minAda ] diff --git a/agora-specs/Spec/Proposal.hs b/agora-specs/Spec/Proposal.hs index 9373ba4..6ff1105 100644 --- a/agora-specs/Spec/Proposal.hs +++ b/agora-specs/Spec/Proposal.hs @@ -121,10 +121,6 @@ specs = "duplicate cosigners" Cosign.duplicateCosignersParameters False - , Cosign.mkTestTree - "altered output stake" - Cosign.invalidStakeOutputParameters - False , illegalStatusNotDraftGroup ] in [legalGroup, illegalGroup] @@ -234,26 +230,6 @@ specs = , 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' - "unexpected stake datum" - (\b -> unwords ["from", show b.proposalParameters.fromStatus]) - (Advance.mkUnexpectedOutputStakeBundles cs es) - Advance.Validity - { forProposalValidator = False - , forStakeValidator = True - , forGovernorValidator = Just True - , forAuthorityTokenPolicy = Just True - } , Advance.mkTestTree "forget to mint GATs" (Advance.mkNoGATMintedBundle cs es) diff --git a/agora-testlib/Test/Specification.hs b/agora-testlib/Test/Specification.hs index 10ee3ec..e2c40c8 100644 --- a/agora-testlib/Test/Specification.hs +++ b/agora-testlib/Test/Specification.hs @@ -56,6 +56,7 @@ import Agora.Utils ( ) import Control.Composition ((.**), (.***)) import Data.Coerce (coerce) +import Data.Text qualified as Text import Plutarch.Evaluate (evalScript) import PlutusLedgerApi.V1.Scripts ( Context (..), @@ -137,8 +138,12 @@ toTestTree (Terminal (Specification name expectation script)) = Failure -> onFailure FailureWith s -> onFailureWith s where + beautifyTraces = + Text.unpack + . Text.intercalate "\n" + . map (" " <>) (res, _budget, traces) = evalScript script - ts = " Traces: " <> show traces + ts = " Traces:\n" <> beautifyTraces traces onSuccess = case res of Left e -> assertFailure $ diff --git a/agora/Agora/Governor/Scripts.hs b/agora/Agora/Governor/Scripts.hs index 98991c2..28198d2 100644 --- a/agora/Agora/Governor/Scripts.hs +++ b/agora/Agora/Governor/Scripts.hs @@ -21,8 +21,8 @@ import Agora.AuthorityToken ( singleAuthorityTokenBurned, ) import Agora.Governor ( - GovernorRedeemer (..), PGovernorDatum (PGovernorDatum), + PGovernorRedeemer (..), pgetNextProposalId, pisGovernorDatumValid, ) @@ -36,7 +36,7 @@ import Agora.Proposal ( pneutralOption, pwinner, ) -import Agora.Proposal.Time (createProposalStartingTime) +import Agora.Proposal.Time (validateProposalStartingTime) import Agora.Scripts ( AgoraScripts, authorityTokenSymbol, @@ -60,6 +60,7 @@ import Plutarch.Api.V1 ( PTokenName, PValue (PValue), ) +import Plutarch.Api.V1.AssocMap (plookup) import Plutarch.Api.V1.AssocMap qualified as AssocMap import Plutarch.Api.V2 ( PAddress, @@ -71,13 +72,9 @@ import Plutarch.Api.V2 ( import Plutarch.Builtin (ppairDataBuiltin) import Plutarch.Extra.AssetClass (passetClass, passetClassValueOf) import Plutarch.Extra.Field (pletAllC) -import Plutarch.Extra.IsData (pmatchEnumFromData) import Plutarch.Extra.List (pfirstJust) -import Plutarch.Extra.Map ( - plookup, - plookup', - ) -import Plutarch.Extra.Maybe (passertPJust, pfromJust, pmaybeData, pnothing) +import Plutarch.Extra.Map (ptryLookup) +import Plutarch.Extra.Maybe (passertPJust, pmaybeData, pnothing) import Plutarch.Extra.Record (mkRecordConstr, (.&), (.=)) import Plutarch.Extra.ScriptContext ( pfindOutputsToAddress, @@ -90,7 +87,6 @@ import Plutarch.Extra.ScriptContext ( pvalueSpent, ) import Plutarch.Extra.TermCont (pguardC, pletC, pletFieldsC, pmatchC, ptryFromC) -import Plutarch.Extra.Tuple (pfstTuple, psndTuple) import Plutarch.Extra.Value (phasOnlyOneTokenOfCurrencySymbol, psymbolValueOf) import PlutusLedgerApi.V1 (TxOutRef) @@ -253,6 +249,8 @@ governorValidator as = plam $ \datum' redeemer' ctx' -> unTermCont $ do ctxF <- pletAllC ctx' + redeemer <- pfromData . fst <$> ptryFromC redeemer' + txInfo' <- pletC $ pfromData $ ctxF.txInfo txInfoF <- pletFieldsC @'["mint", "inputs", "outputs", "datums", "signatories", "validRange"] txInfo' @@ -289,8 +287,8 @@ governorValidator as = pguardC "New datum is valid" $ pisGovernorDatumValid # newGovernorDatum pure $ - pmatchEnumFromData redeemer' $ \case - Just CreateProposal -> unTermCont $ do + pmatch redeemer $ \case + PCreateProposal -> unTermCont $ do -- Check that the transaction advances proposal id. let expectedNextProposalId = pgetNextProposalId # oldGovernorDatumF.nextProposalId @@ -369,12 +367,7 @@ governorValidator as = proposalOutputDatum <- pletAllC $ pto $ pfromData proposalOutputDatum' - let expectedStartingTime = - pfromJust #$ createProposalStartingTime - # oldGovernorDatumF.createProposalTimeRangeMaxWidth - # txInfoF.validRange - - expectedCosigners = psingleton @PBuiltinList # stakeInputDatumF.owner + let expectedCosigners = psingleton @PBuiltinList # stakeInputDatumF.owner pguardC "Proposal datum correct" $ foldl1 @@ -391,8 +384,11 @@ governorValidator as = proposalOutputDatum.status #== pconstantData Draft , ptraceIfFalse "cosigners correct" $ plistEquals # pfromData proposalOutputDatum.cosigners # expectedCosigners - , ptraceIfFalse "starting time correct" $ - proposalOutputDatum.startingTime #== expectedStartingTime + , ptraceIfFalse "starting time valid" $ + validateProposalStartingTime + # oldGovernorDatumF.createProposalTimeRangeMaxWidth + # txInfoF.validRange + # proposalOutputDatum.startingTime , ptraceIfFalse "copy over configurations" $ proposalOutputDatum.thresholds #== oldGovernorDatumF.proposalThresholds #&& proposalOutputDatum.timingConfig #== oldGovernorDatumF.proposalTimings @@ -435,7 +431,7 @@ governorValidator as = -------------------------------------------------------------------------- - Just MintGATs -> unTermCont $ do + PMintGATs -> unTermCont $ do pguardC "Governor state should not be changed" $ newGovernorDatum #== oldGovernorDatum -- Filter out proposal inputs and ouputs using PST and the address of proposal validator. @@ -479,7 +475,7 @@ governorValidator as = finalResultTag = pwinner # proposalInputDatumF.votes # quorum # neutralOption -- The effects of the winner outcome. - effectGroup <- pletC $ plookup' # finalResultTag #$ proposalInputDatumF.effects + effectGroup <- pletC $ ptryLookup # finalResultTag #$ proposalInputDatumF.effects gatCount <- pletC $ plength #$ pto $ pto effectGroup @@ -520,7 +516,7 @@ governorValidator as = let tagToken :: Term _ PTokenName tagToken = pmaybeData # pconstant "" # plam (pscriptHashToTokenName . pfromData) - #$ psndTuple # effect + #$ pfield @"scriptHash" # effect receiverScriptHash = passertPJust # "GAT receiver should be a script" #$ pscriptHashFromAddress # outputF.address @@ -531,7 +527,7 @@ governorValidator as = authorityTokens #== psingleton # (ppairDataBuiltin # pdata tagToken # pdata 1) hasCorrectDatum = - pfstTuple # effect #== pfromDatumHash # outputF.datum + pfield @"datumHash" # effect #== pfromDatumHash # outputF.datum pure $ foldr1 @@ -560,15 +556,12 @@ governorValidator as = -------------------------------------------------------------------------- - Just MutateGovernor -> unTermCont $ do + PMutateGovernor -> unTermCont $ do -- Check that a GAT is burnt. pguardC "One valid GAT burnt" $ singleAuthorityTokenBurned atSymbol txInfoF.inputs txInfoF.mint pure $ popaque $ pconstant () - - -------------------------------------------------------------------------- - Nothing -> ptraceError "Unknown redeemer" where -- The currency symbol of authority token. atSymbol :: forall (s :: S). Term s PCurrencySymbol diff --git a/agora/Agora/Proposal.hs b/agora/Agora/Proposal.hs index 12958a5..6ad6291 100644 --- a/agora/Agora/Proposal.hs +++ b/agora/Agora/Proposal.hs @@ -9,8 +9,7 @@ Proposal scripts encoding effects that operate on the system. -} module Agora.Proposal ( -- * Haskell-land - - -- Proposal (..), + ProposalEffectMetadata (..), ProposalEffectGroup, ProposalDatum (..), ProposalRedeemer (..), @@ -22,6 +21,7 @@ module Agora.Proposal ( emptyVotesFor, -- * Plutarch-land + PProposalEffectMetadata (..), PProposalEffectGroup, PProposalDatum (..), PProposalRedeemer (..), @@ -60,7 +60,6 @@ import Plutarch.Api.V2 ( PDatumHash, PMaybeData, PScriptHash, - PTuple, ) import Plutarch.DataRepr ( DerivePConstantViaData ( @@ -75,6 +74,7 @@ import Plutarch.Extra.IsData ( DerivePConstantViaDataList (DerivePConstantViaDataList), DerivePConstantViaEnum (DerivePConstantEnum), EnumIsData (EnumIsData), + PlutusTypeDataList, PlutusTypeEnumData, ProductIsData (ProductIsData), ) @@ -285,8 +285,35 @@ newtype ProposalVotes = ProposalVotes emptyVotesFor :: forall a. StrictMap.Map ResultTag a -> ProposalVotes emptyVotesFor = ProposalVotes . StrictMap.mapWithKey (const . const 0) --- | @since 0.3.0 -type ProposalEffectGroup = StrictMap.Map ValidatorHash (DatumHash, Maybe ScriptHash) +-- | @since 1.0.0 +data ProposalEffectMetadata = ProposalEffectMetadata + { datumHash :: DatumHash + -- ^ Hash of datum sent to effect validator with GAT + , scriptHash :: Maybe ScriptHash + -- ^ A 'ScriptHash' that encodes the authority script. + } + deriving stock + ( -- | @since 1.0.0 + Generic + , -- | @since 1.0.0 + Show + , -- | @since 1.0.0 + Eq + ) + deriving anyclass + ( -- | @since 1.0.0 + SOP.Generic + ) + deriving + ( -- | @since 1.0.0 + PlutusTx.ToData + , -- | @since 1.0.0 + PlutusTx.FromData + ) + via (ProductIsData ProposalEffectMetadata) + +-- | @since 1.0.0 +type ProposalEffectGroup = StrictMap.Map ValidatorHash ProposalEffectMetadata {- | Haskell-level datum for Proposal scripts. @@ -608,6 +635,52 @@ deriving via instance (PConstantDecl ProposalVotes) +{- | Plutarch-level version of 'ProposalEffectMetadata'. + + @since 1.0.0 +-} +newtype PProposalEffectMetadata (s :: S) + = PProposalEffectMetadata + ( Term + s + ( PDataRecord + '[ "datumHash" ':= PDatumHash + , "scriptHash" ':= PMaybeData (PAsData PScriptHash) + ] + ) + ) + deriving stock + ( -- | @since 1.0.0 + Generic + ) + deriving anyclass + ( -- | @since 1.0.0 + PlutusType + , -- | @since 1.0.0 + PIsData + , -- | @since 1.0.0 + PEq + , -- | @since 1.0.0 + PDataFields + ) + +-- | @since 1.0.0 +instance DerivePlutusType PProposalEffectMetadata where + type DPTStrat _ = PlutusTypeDataList + +-- | @since 1.0.0 +instance PUnsafeLiftDecl PProposalEffectMetadata where + type PLifted _ = ProposalEffectMetadata + +-- | @since 1.0.0 +deriving via + (DerivePConstantViaDataList ProposalEffectMetadata PProposalEffectMetadata) + instance + (PConstantDecl ProposalEffectMetadata) + +-- | @since 1.0.0 +instance PTryFrom PData (PAsData PProposalEffectMetadata) + {- | The effect script hashes and their associated datum hash and authority check script hash belonging to a particular effect group or result. @@ -617,10 +690,7 @@ type PProposalEffectGroup = PMap 'Sorted PValidatorHash - ( PTuple - PDatumHash - (PMaybeData (PAsData PScriptHash)) - ) + PProposalEffectMetadata {- | Plutarch-level version of 'ProposalDatum'. @@ -655,14 +725,14 @@ newtype PProposalDatum (s :: S) = PProposalDatum PEq ) --- | @since 0.2.0 +-- | @since 1.0.0 instance DerivePlutusType PProposalDatum where - type DPTStrat _ = PlutusTypeNewtype + type DPTStrat _ = PlutusTypeDataList instance PTryFrom PData (PAsData PProposalDatum) -- | @since 0.1.0 -instance PUnsafeLiftDecl PProposalDatum where type PLifted PProposalDatum = ProposalDatum +instance PUnsafeLiftDecl PProposalDatum where type PLifted _ = ProposalDatum -- | @since 0.1.0 deriving via (DerivePConstantViaDataList ProposalDatum PProposalDatum) instance (PConstantDecl ProposalDatum) @@ -735,7 +805,7 @@ pisEffectsVotesCompatible :: :--> PBool ) pisEffectsVotesCompatible = phoistAcyclic $ - plam $ \((PM.pkeys #) -> effectKeys) ((PM.pkeys #) . pto -> voteKeys) -> + plam $ \((PM.pkeys @PList #) -> effectKeys) ((PM.pkeys #) . pto -> voteKeys) -> plistEquals # effectKeys # voteKeys {- | Retutns true if vote counts of /all/ the options are zero. diff --git a/agora/Agora/Proposal/Scripts.hs b/agora/Agora/Proposal/Scripts.hs index 8890379..78a1060 100644 --- a/agora/Agora/Proposal/Scripts.hs +++ b/agora/Agora/Proposal/Scripts.hs @@ -39,31 +39,41 @@ import Agora.Stake ( pisVoter, ) import Agora.Utils ( + plistEqualsBy, pltAsData, ) import Plutarch.Api.V1 (PCredential) +import Plutarch.Api.V1.AssocMap (plookup) import Plutarch.Api.V2 ( - PDatumHash, PMintingPolicy, PScriptContext (PScriptContext), PScriptPurpose (PMinting, PSpending), + PTxInInfo, PTxInfo (PTxInfo), PTxOut, PValidator, ) import Plutarch.Extra.AssetClass (passetClass, passetClassValueOf) +import Plutarch.Extra.Category (PCategory (pidentity)) import Plutarch.Extra.Comonad (pextract) -import Plutarch.Extra.Field (pletAllC) -import Plutarch.Extra.List (pisUniq', pmapMaybe, pmergeBy, pmsortBy) -import Plutarch.Extra.Map (plookup, pupdate) -import Plutarch.Extra.Maybe (passertPJust, pfromJust, pisJust) +import Plutarch.Extra.Field (pletAll, pletAllC) +import Plutarch.Extra.Functor (pfmap) +import Plutarch.Extra.List (pfirstJust, pisUniq', pmergeBy, pmsort) +import Plutarch.Extra.Map (pupdate) +import Plutarch.Extra.Maybe ( + passertPJust, + pfromJust, + pfromMaybe, + pisJust, + pjust, + pnothing, + ) import Plutarch.Extra.Record (mkRecordConstr, (.&), (.=)) import Plutarch.Extra.ScriptContext ( pfindTxInByTxOutRef, - pfromDatumHash, pfromOutputDatum, pisTokenSpent, - ptryFindDatum, + ptryFromOutputDatum, ) import Plutarch.Extra.TermCont ( pguardC, @@ -124,6 +134,49 @@ proposalPolicy (AssetClass (govCs, govTn)) = pure $ popaque (pconstant ()) +{- | Validation context for redeemers which witness multiple stake in the reference + inputs. + + @since 1.0.0 +-} +data PWitnessMultipleStakeContext (s :: S) = PWitnessMultipleStakeContext + { totalAmount :: Term s PInteger + , orderedOwners :: Term s (PList PCredential) + } + deriving stock + ( -- | @since 1.0.0 + Generic + ) + deriving anyclass + ( -- | @since 1.0.0 + PlutusType + ) + +-- | @since 1.0.0 +instance DerivePlutusType PWitnessMultipleStakeContext where + type DPTStrat _ = PlutusTypeScott + +{- | Validation context for redeemers which need to modify a single stake. + + @since 1.0.0 +-} +data PSpendSingleStakeContext (s :: S) = PSpendSingleStakeContext + { inputStake :: Term s PStakeDatum + , outputStake :: Term s PStakeDatum + } + deriving stock + ( -- | @since 1.0.0 + Generic + ) + deriving anyclass + ( -- | @since 1.0.0 + PlutusType + ) + +-- | @since 1.0.0 +instance DerivePlutusType PSpendSingleStakeContext where + type DPTStrat _ = PlutusTypeScott + {- | The validator for Proposals. The documentation for various of the redeemers lives at 'Agora.Proposal.ProposalRedeemer'. @@ -166,7 +219,8 @@ proposalValidator as maximumCosigners = PTxInfo txInfo' <- pmatchC txInfo txInfoF <- pletFieldsC - @'[ "inputs" + @'[ "referenceInputs" + , "inputs" , "outputs" , "mint" , "datums" @@ -176,7 +230,11 @@ proposalValidator as maximumCosigners = txInfo' PSpending ((pfield @"_0" #) -> txOutRef) <- pmatchC $ pfromData ctx.purpose - PJust ((pfield @"resolved" #) -> txOut) <- pmatchC $ pfindTxInByTxOutRef # txOutRef # txInfoF.inputs + PJust ((pfield @"resolved" #) -> txOut) <- + pmatchC $ + pfindTxInByTxOutRef + # txOutRef + # txInfoF.inputs txOutF <- pletFieldsC @'["address", "value"] $ txOut proposalDatum <- pfromData . fst <$> ptryFromC @(PAsData PProposalDatum) datum @@ -203,36 +261,44 @@ proposalValidator as maximumCosigners = -- -- We match the proposal id here so that we can support multiple -- proposal inputs in one thansaction. - ownOutput <- - pletC $ - passertPJust # "Own output should be present" #$ pfind - # plam - ( \input -> unTermCont $ do - inputF <- pletAllC input - - -- TODO: this is highly inefficient: O(n) for every output, - -- Maybe we can cache the sorted datum map? - let datum = - pfromData $ - pfromOutputDatum @(PAsData PProposalDatum) - # inputF.datum - # txInfoF.datums - - proposalId = pfield @"proposalId" # pto datum - - pure $ - inputF.address #== ownAddress - #&& psymbolValueOf # stCurrencySymbol # inputF.value #== 1 - #&& proposalId #== proposalF.proposalId - ) - # pfromData txInfoF.outputs - proposalOut <- pletC $ - pfromData $ - pfromOutputDatum @(PAsData PProposalDatum) - # (pfield @"datum" # ownOutput) - # txInfoF.datums + passertPJust + # "Own output should be present" + #$ pfirstJust + # plam + ( flip pletAll $ \outputF -> + let isProposalUTxO = + foldl1 + (#&&) + [ ptraceIfFalse "Own by proposal validator" $ + outputF.address #== ownAddress + , ptraceIfFalse "Has proposal ST" $ + psymbolValueOf # stCurrencySymbol # outputF.value #== 1 + ] + + handleProposalUTxO = unTermCont $ do + -- Using inline datum to avoid O(n^2) lookup. + datum <- + pletC $ + pfromData $ + pfromOutputDatum @(PAsData PProposalDatum) + # outputF.datum + # txInfoF.datums + + pure $ + pif + ( pfield @"proposalId" # pto datum + #== proposalF.proposalId + ) + (pjust # datum) + pnothing + in pif + isProposalUTxO + handleProposalUTxO + pnothing + ) + # pfromData txInfoF.outputs proposalUnchanged <- pletC $ proposalOut #== proposalDatum @@ -261,141 +327,130 @@ proposalValidator as maximumCosigners = -- Find the stake inputs/outputs by SST. - let AssetClass (stakeSym, stakeTn) = stakeSTAssetClass as - stakeSTAssetClass <- - pletC $ passetClass # pconstant stakeSym # pconstant stakeTn - - filterStakeDatumHash :: Term _ (PTxOut :--> PMaybe (PAsData PDatumHash)) <- + getStakeDatum :: Term _ (PTxOut :--> PMaybe PStakeDatum) <- pletC $ - plam $ \txOut -> unTermCont $ do - txOutF <- pletFieldsC @'["value", "datum"] txOut - pure $ - pif - (passetClassValueOf # txOutF.value # stakeSTAssetClass #== 1) - ( let datumHash = pfromDatumHash # txOutF.datum - in pcon $ PJust $ pdata datumHash - ) - (pcon PNothing) + plam $ + flip (pletFields @'["value", "datum"]) $ \txOutF -> + let AssetClass (stakeSym, _) = stakeSTAssetClass as - stakeInputDatumHashes <- - pletC $ - pmapMaybe @PBuiltinList - # plam ((filterStakeDatumHash #) . (pfield @"resolved" #)) - # txInfoF.inputs + isStakeUTxO = + psymbolValueOf + # pconstant stakeSym + # txOutF.value + #== 1 - stakeOutputDatumHashes <- - pletC $ - pmapMaybe @PBuiltinList - # filterStakeDatumHash - # txInfoF.outputs + stake = + pfromData $ + pfromJust + -- Use inline datum to avoid extra map lookup. + #$ ptryFromOutputDatum @(PAsData PStakeDatum) + # txOutF.datum + # txInfoF.datums + in pif isStakeUTxO (pjust # stake) pnothing - stakeInputNum <- pletC $ plength # stakeInputDatumHashes - - pguardC "Every stake input should have a correspoding output" $ - stakeInputNum #== plength # stakeOutputDatumHashes - - ---------------------------------------------------------------------------- - - withMultipleStakes' :: + witnessStakes' :: Term - _ - ( ( PInteger - :--> PBuiltinList (PAsData PCredential) - :--> PUnit - ) - :--> PUnit + s + ( (PWitnessMultipleStakeContext :--> PUnit) :--> PUnit ) <- pletC $ - plam $ \validationLogic -> unTermCont $ do - -- The following code ensures that all the stake datums are not - -- changed. - -- - -- TODO: This is quite inefficient (O(nlogn)) but for now we don't - -- have a nice way to check this. In plutus v2 we'll have map of - -- (Script -> Redeemer) in ScriptContext, which should be the - -- straight up solution. - let sortDatumHashes = phoistAcyclic $ pmsortBy # pltAsData + let updateCtx = plam $ \ctx' stake -> unTermCont $ do + ctxF <- pmatchC ctx' - sortedStakeInputDatumHashes = - sortDatumHashes # stakeInputDatumHashes + stakeF <- + pletFieldsC @'["stakedAmount", "owner"] $ + pto stake - sortedStakeOutputDatumHashes = - sortDatumHashes # stakeOutputDatumHashes + pure $ + pcon $ + PWitnessMultipleStakeContext + { totalAmount = + ctxF.totalAmount + + punsafeCoerce + (pfromData stakeF.stakedAmount) + , orderedOwners = + pcons # stakeF.owner + # ctxF.orderedOwners + } - pguardC "All stake datum are unchanged" $ - plistEquals - # sortedStakeInputDatumHashes - # sortedStakeOutputDatumHashes + f :: Term _ (_ :--> PTxInInfo :--> _) + f = plam $ \ctx' ((pfield @"resolved" #) -> txOut) -> + pfromMaybe # ctx' + #$ (pfmap # (updateCtx # ctx') #$ getStakeDatum # txOut) - PPair totalStakedAmount stakeOwners <- - pmatchC $ - pfoldl - # plam - ( \l dh -> unTermCont $ do - let stake = - pfromData $ - pfromJust - #$ ptryFindDatum @(PAsData PStakeDatum) - # pfromData dh - # txInfoF.datums + sortOwners = plam $ + flip pmatch $ \ctxF -> + pcon $ + PWitnessMultipleStakeContext + { totalAmount = ctxF.totalAmount + , orderedOwners = pmsort # ctxF.orderedOwners + } - stakeF <- pletFieldsC @'["stakedAmount", "owner"] $ pto stake + ctx = + sortOwners + #$ pfoldl + # f + # pcon (PWitnessMultipleStakeContext 0 pnil) + # txInfoF.referenceInputs + in plam (# ctx) - PPair amount owners <- pmatchC l + let witnessStakes :: + ( PWitnessMultipleStakeContext _ -> + TermCont _ () + ) -> + Term _ POpaque + witnessStakes c = popaque $ + witnessStakes' #$ plam $ \sctxF -> + unTermCont $ pmatchC sctxF >>= c >> pure (pconstant ()) - let newAmount = amount + punsafeCoerce (pfromData stakeF.stakedAmount) - updatedOwners = pcons # stakeF.owner # owners - - pure $ pcon $ PPair newAmount updatedOwners - ) - # pcon (PPair (0 :: Term _ PInteger) (pnil @PBuiltinList)) - # stakeInputDatumHashes - - sortedStakeOwners <- pletC $ pmsortBy # pltAsData # stakeOwners - - pure $ validationLogic # totalStakedAmount # sortedStakeOwners - - withSingleStake' :: + spendSingleStake' :: Term - _ - ( ( PStakeDatum :--> PStakeDatum :--> PBool :--> PUnit - ) - :--> PUnit - ) <- pletC $ - plam $ \validationLogic -> unTermCont $ do - pguardC "Can only deal with one stake" $ - stakeInputNum #== 1 + s + ((PSpendSingleStakeContext :--> PUnit) :--> PUnit) <- + pletC $ + let singleInput :: + Term + _ + ( PMaybe PStakeDatum + :--> PTxInInfo + :--> PMaybe PStakeDatum + ) + singleInput = plam $ \l ((pfield @"resolved" #) -> txOut) -> + unTermCont $ do + lF <- pmatchC l + t <- pletC $ getStakeDatum # txOut + tF <- pmatchC t - stakeInputHash <- pletC $ pfromData $ phead # stakeInputDatumHashes - stakeOutputHash <- pletC $ pfromData $ phead # stakeOutputDatumHashes + pure $ case (lF, tF) of + (PJust _, PJust _) -> + ptraceError "Can only deal with one stake" + (PNothing, _) -> t + (_, PNothing) -> l - stakeIn :: Term _ PStakeDatum <- - pletC $ pfromData $ pfromJust #$ ptryFindDatum # stakeInputHash # txInfoF.datums + stakeInput = + passertPJust # "Stake input not found" + #$ pfoldl # singleInput # pnothing # txInfoF.inputs - stakeOut :: Term _ PStakeDatum <- - pletC $ pfromData $ pfromJust #$ ptryFindDatum # stakeOutputHash # txInfoF.datums + stakeOutput = + pfromJust + #$ pfirstJust # getStakeDatum # txInfoF.outputs - stakeUnchanged <- pletC $ stakeInputHash #== stakeOutputHash + ctx = pcon $ PSpendSingleStakeContext stakeInput stakeOutput + in plam (# ctx) - pure $ validationLogic # stakeIn # stakeOut # stakeUnchanged - - let withMultipleStakes val = - withMultipleStakes' - #$ plam - $ \totalStakedAmount sortedStakeOwner -> - unTermCont $ - val totalStakedAmount sortedStakeOwner - - withSingleStake val = - withSingleStake' #$ plam $ \stakeIn stakeOut stakeUnchange -> unTermCont $ do - stakeInF <- pletAllC $ pto stakeIn - - val stakeInF stakeOut stakeUnchange + let spendSingleStake :: + ( PSpendSingleStakeContext _ -> + TermCont _ () + ) -> + Term _ POpaque + spendSingleStake c = popaque $ + spendSingleStake' #$ plam $ \sctx -> + unTermCont $ pmatchC sctx >>= c >> pure (pconstant ()) pure $ popaque $ pmatch proposalRedeemer $ \case - PCosign r -> withMultipleStakes $ \_ sortedStakeOwners -> do + PCosign r -> witnessStakes $ \sctxF -> do pguardC "Should be in draft state" $ currentStatus #== pconstant Draft @@ -417,7 +472,10 @@ proposalValidator as maximumCosigners = pisUniq' # updatedSigs pguardC "All new cosigners are witnessed by their Stake datums" $ - plistEquals # sortedStakeOwners # newSigs + plistEqualsBy + # plam (\x (pfromData -> y) -> x #== y) + # sctxF.orderedOwners + # newSigs let expectedDatum = mkRecordConstr @@ -435,11 +493,11 @@ proposalValidator as maximumCosigners = pguardC "Signatures are correctly added to cosignature list" $ proposalOut #== expectedDatum - pure $ pconstant () - ---------------------------------------------------------------------- - PVote r -> withSingleStake $ \stakeInF stakeOut _ -> do + PVote r -> spendSingleStake $ \sctxF -> do + stakeInF <- pletAllC $ pto sctxF.inputStake + pguardC "Input proposal must be in VotingReady state" $ currentStatus #== pconstant VotingReady @@ -458,7 +516,7 @@ proposalValidator as maximumCosigners = -- Ensure that no lock with the current proposal id has been put on the stake. pguardC "Same stake shouldn't vote on the same proposal twice" $ - pnot #$ pisVoter #$ pgetStakeRole # proposalF.proposalId # pfromData stakeInF.lockedBy + pnot #$ pisVoter #$ pgetStakeRole # proposalF.proposalId # stakeInF.lockedBy let -- The amount of new votes should be the 'stakedAmount'. -- Update the vote counter of the proposal, and leave other stuff as is. @@ -512,13 +570,13 @@ proposalValidator as maximumCosigners = .& #lockedBy .= pdata expectedProposalLocks ) - pguardC "Output stake should be locked by the proposal" $ expectedStakeOut #== stakeOut - - pure $ pconstant () + pguardC "Output stake should be locked by the proposal" $ expectedStakeOut #== sctxF.outputStake ---------------------------------------------------------------------- - PUnlock _ -> withSingleStake $ \stakeInF stakeOut _ -> do + PUnlock _ -> spendSingleStake $ \sctxF -> do + stakeInF <- pletAllC $ pto sctxF.inputStake + stakeRole <- pletC $ pgetStakeRole # proposalF.proposalId # stakeInF.lockedBy pguardC "Stake input should be relevant" $ @@ -579,7 +637,7 @@ proposalValidator as maximumCosigners = $ ptraceIfFalse "Proposal unchanged" proposalUnchanged -- At last, we ensure that all locks belong to this proposal will be removed. - stakeOutputLocks <- pletC $ pfield @"lockedBy" # pto stakeOut + stakeOutputLocks <- pletC $ pfield @"lockedBy" # pto sctxF.outputStake let templateStakeOut = mkRecordConstr @@ -591,102 +649,99 @@ proposalValidator as maximumCosigners = ) pguardC "Only locks updated in the output stake" $ - templateStakeOut #== stakeOut + templateStakeOut #== sctxF.outputStake pguardC "All relevant locks removed from the stake" $ validateOutputLocks # stakeOutputLocks - pure $ pconstant () - ---------------------------------------------------------------------- PAdvanceProposal _ -> unTermCont $ do currentTime' <- pletC $ pfromJust # currentTime + let inDraftPeriod = isDraftPeriod # proposalF.timingConfig # proposalF.startingTime # currentTime' inVotingPeriod = isVotingPeriod # proposalF.timingConfig # proposalF.startingTime # currentTime' inExecutionPeriod = isExecutionPeriod # proposalF.timingConfig # proposalF.startingTime # currentTime' + inLockedPeriod <- pletC $ isLockingPeriod # proposalF.timingConfig # proposalF.startingTime # currentTime' + pguardC "Only status changes in the output proposal" onlyStatusChanged - let gstSymbol = pconstant $ governorSTSymbol as - gstMoved <- - pletC $ - pany - # plam - ( \( (pfield @"value" #) - . (pfield @"resolved" #) -> - value - ) -> - psymbolValueOf # gstSymbol # value #== 1 - ) - # pfromData txInfoF.inputs - let toFailedState = unTermCont $ do - -- -> 'Finished' - pguardC "Proposal should fail: not on time" $ - proposalOutStatus #== pconstant Finished - pguardC "GST not moved" $ pnot # gstMoved - - pure $ pconstant () pure $ pmatch currentStatus $ \case PDraft -> - withMultipleStakes $ \totalStakedAmount sortedStakeOwners -> - pmatchC inDraftPeriod >>= \case + witnessStakes $ \sctxF -> do + let notTooLate = inDraftPeriod + + pmatchC notTooLate >>= \case PTrue -> do pguardC "More cosigns than minimum amount" $ - punsafeCoerce (pfromData thresholdsF.vote) #< totalStakedAmount + punsafeCoerce (pfromData thresholdsF.vote) #< sctxF.totalAmount pguardC "All new cosigners are witnessed by their Stake datums" $ - plistEquals # sortedStakeOwners # proposalF.cosigners + plistEqualsBy + # plam (\x (pfromData -> y) -> x #== y) + # sctxF.orderedOwners + # proposalF.cosigners -- 'Draft' -> 'VotingReady' pguardC "Proposal status set to VotingReady" $ proposalOutStatus #== pconstant VotingReady - - pure $ pconstant () - PFalse -> do - pguardC "Advance to failed state" $ proposalOutStatus #== pconstant Finished - - pure $ pconstant () + -- Too late: failed proposal, status set to 'Finished'. + PFalse -> + pguardC "Proposal should fail: not on time" $ + proposalOutStatus #== pconstant Finished PVotingReady -> unTermCont $ do let notTooLate = inLockedPeriod notTooEarly = pnot # inVotingPeriod + pguardC "Cannot advance ahead of time" notTooEarly - -- FIXME: This should be checked by Stake, as opposed to here. - pguardC "No stakes must be present" $ stakeInputNum #== 0 - pure $ - pif - notTooLate - ( unTermCont $ do - -- 'VotingReady' -> 'Locked' - pguardC "Proposal status set to Locked" $ - proposalOutStatus #== pconstant Locked - pguardC "Winner outcome not found" $ - pisJust #$ pwinner' # proposalF.votes - #$ punsafeCoerce - $ pfromData thresholdsF.execute + pmatchC notTooLate >>= \case + PTrue -> do + -- 'VotingReady' -> 'Locked' + pguardC "Proposal status set to Locked" $ + proposalOutStatus #== pconstant Locked - pure $ pconstant () - ) - -- Too late: failed proposal, status set to 'Finished'. - toFailedState + pguardC "Winner outcome not found" $ + pisJust #$ pwinner' # proposalF.votes + #$ punsafeCoerce + $ pfromData thresholdsF.execute + -- Too late: failed proposal, status set to 'Finished'. + PFalse -> + pguardC "Proposal should fail: not on time" $ + proposalOutStatus #== pconstant Finished + + pure $ popaque $ pconstant () PLocked -> unTermCont $ do let notTooLate = inExecutionPeriod notTooEarly = pnot # inLockedPeriod + pguardC "Not too early" notTooEarly - pguardC "No stakes must be present" $ stakeInputNum #== 0 - pure $ + + pguardC "Proposal status set to Finished" $ + proposalOutStatus #== pconstant Finished + + let gstSymbol = pconstant $ governorSTSymbol as + gstMoved = + pany + # plam + ( \( (pfield @"value" #) + . (pfield @"resolved" #) -> + value + ) -> + psymbolValueOf # gstSymbol # value #== 1 + ) + # pfromData txInfoF.inputs + + pguardC "GST not moved if too late, moved otherwise" $ pif notTooLate - ( unTermCont $ do - -- 'Locked' -> 'Finished' - pguardC "Proposal status set to Finished" $ - proposalOutStatus #== pconstant Finished + -- Not too late: GST should moved + pidentity + -- Not too late: GST should not moved + pnot + # gstMoved - pguardC "GST moved" gstMoved - - pure $ pconstant () - ) - toFailedState + pure $ popaque $ pconstant () PFinished -> ptraceError "Finished proposals cannot be advanced" diff --git a/agora/Agora/Proposal/Time.hs b/agora/Agora/Proposal/Time.hs index eda80ed..90074c4 100644 --- a/agora/Agora/Proposal/Time.hs +++ b/agora/Agora/Proposal/Time.hs @@ -14,13 +14,13 @@ module Agora.Proposal.Time ( MaxTimeRangeWidth (..), -- * Plutarch-land - PProposalTime (..), + PProposalTime, PProposalTimingConfig (..), PProposalStartingTime (..), PMaxTimeRangeWidth (..), -- * Compute periods given config and starting time. - createProposalStartingTime, + validateProposalStartingTime, currentProposalTime, isDraftPeriod, isVotingPeriod, @@ -30,6 +30,7 @@ module Agora.Proposal.Time ( pisMaxTimeRangeWidthValid, ) where +import Agora.Utils (pcurrentTimeDuration) import Control.Composition ((.*)) import Plutarch.Api.V1 ( PExtended (PFinite), @@ -44,10 +45,14 @@ import Plutarch.DataRepr ( PDataFields, ) import Plutarch.Extra.Applicative (PApply (pliftA2)) -import Plutarch.Extra.Bind ((#>>=)) import Plutarch.Extra.Field (pletAll, pletAllC) -import Plutarch.Extra.Maybe (pjust, pnothing) +import Plutarch.Extra.Maybe (pjust, pmaybe, pnothing) import Plutarch.Extra.TermCont (pmatchC) +import Plutarch.Extra.Time ( + PCurrentTime (PCurrentTime), + pisCurrentTimeWithin, + pisWithinCurrentTime, + ) import Plutarch.Lift ( DerivePConstantViaNewtype (DerivePConstantViaNewtype), PConstantDecl, @@ -160,23 +165,7 @@ newtype MaxTimeRangeWidth = MaxTimeRangeWidth {getMaxWidth :: POSIXTime} @since 0.1.0 -} -data PProposalTime (s :: S) = PProposalTime - { lowerBound :: Term s PPOSIXTime - , upperBound :: Term s PPOSIXTime - } - deriving stock - ( -- | @since 0.1.0 - Generic - ) - deriving anyclass - ( -- | @since 0.1.0 - PlutusType - , -- | @since 0.1.0 - PEq - ) - -instance DerivePlutusType PProposalTime where - type DPTStrat _ = PlutusTypeScott +type PProposalTime = PCurrentTime -- | Plutarch-level version of 'ProposalStartingTime'. newtype PProposalStartingTime (s :: S) = PProposalStartingTime (Term s PPOSIXTime) @@ -327,38 +316,41 @@ pisMaxTimeRangeWidthValid = ptraceIfFalse "greater than 0" . (pconstant (MaxTimeRangeWidth 0) #<) -{- | Get the starting time of a proposal, from the 'PlutusLedgerApi.V1.txInfoValidPeriod' field. +{- | Validate starting time of a proposal, from the 'PlutusLedgerApi.V1.txInfoValidPeriod' field. For every proposal, this is only meant to run once upon creation. Given time range should be tight enough, meaning that the width of the time range should be less than the maximum value. - @since 0.1.0 + @since 1.0.0 -} -createProposalStartingTime :: +validateProposalStartingTime :: forall (s :: S). Term s ( PMaxTimeRangeWidth :--> PPOSIXTimeRange - :--> PMaybe PProposalStartingTime + :--> PProposalStartingTime + :--> PBool ) -createProposalStartingTime = phoistAcyclic $ - plam $ \(pto -> maxDuration) iv -> - let ct = currentProposalTime # iv - - f :: Term _ (PProposalTime :--> PMaybe PProposalStartingTime) - f = plam $ - flip pmatch $ \(PProposalTime lb ub) -> - let duration = ub - lb - - startingTime = pdiv # (lb + ub) # 2 - in pif - (duration #<= maxDuration) - (pjust #$ pcon $ PProposalStartingTime startingTime) - ( ptrace - "createProposalStartingTime: given time range should be tight enough" - pnothing - ) - in ct #>>= f +validateProposalStartingTime = phoistAcyclic $ + plam $ \(pto -> maxDuration) iv (pto -> st) -> + pmaybe + # ptrace + "validateProposalStartingTime: unable to get current time" + (pconstant False) + # plam + ( \ct -> + let duration = pcurrentTimeDuration # ct + isTightEnough = + ptraceIfFalse + "createProposalStartingTime: given time range should be tight enough" + $ duration #<= maxDuration + isInCurrentTimeRange = + ptraceIfFalse + "createProposalStartingTime: starting time should be in current time range" + $ pisWithinCurrentTime # st # ct + in isTightEnough #&& isInCurrentTimeRange + ) + # (currentProposalTime # iv) {- | Get the current proposal time, from the 'PlutusLedgerApi.V1.txInfoValidPeriod' field. @@ -389,32 +381,9 @@ currentProposalTime = phoistAcyclic $ lowerBound = getBound # lb upperBound = getBound # ub - mkTime = phoistAcyclic $ plam $ pcon .* PProposalTime + mkTime = phoistAcyclic $ plam $ pcon .* PCurrentTime pure $ pliftA2 # mkTime # lowerBound # upperBound -{- | Check if 'PProposalTime' is within two 'PPOSIXTime'. Inclusive. - - @since 0.1.0 --} -proposalTimeWithin :: - forall (s :: S). - Term - s - ( PPOSIXTime - :--> PPOSIXTime - :--> PProposalTime - :--> PBool - ) -proposalTimeWithin = phoistAcyclic $ - plam $ \l h proposalTime' -> unTermCont $ do - PProposalTime ut lt <- pmatchC proposalTime' - pure $ - foldr1 - (#&&) - [ l #<= lt - , ut #<= h - ] - {- | True if the 'PProposalTime' is in the draft period. @since 0.1.0 @@ -430,7 +399,7 @@ isDraftPeriod :: ) isDraftPeriod = phoistAcyclic $ plam $ \config s' -> pmatch s' $ \(PProposalStartingTime s) -> - proposalTimeWithin # s # (s + (pfield @"draftTime" # config)) + pisCurrentTimeWithin # s # (s + (pfield @"draftTime" # config)) {- | True if the 'PProposalTime' is in the voting period. @@ -448,7 +417,7 @@ isVotingPeriod :: isVotingPeriod = phoistAcyclic $ plam $ \config s' -> pmatch s' $ \(PProposalStartingTime s) -> pletFields @'["draftTime", "votingTime"] config $ \f -> - proposalTimeWithin # s # (s + f.draftTime + f.votingTime) + pisCurrentTimeWithin # s # (s + f.draftTime + f.votingTime) {- | True if the 'PProposalTime' is in the locking period. @@ -466,7 +435,7 @@ isLockingPeriod :: isLockingPeriod = phoistAcyclic $ plam $ \config s' -> pmatch s' $ \(PProposalStartingTime s) -> pletFields @'["draftTime", "votingTime", "lockingTime"] config $ \f -> - proposalTimeWithin # s # (s + f.draftTime + f.votingTime + f.lockingTime) + pisCurrentTimeWithin # s # (s + f.draftTime + f.votingTime + f.lockingTime) {- | True if the 'PProposalTime' is in the execution period. @@ -484,5 +453,5 @@ isExecutionPeriod :: isExecutionPeriod = phoistAcyclic $ plam $ \config s' -> pmatch s' $ \(PProposalStartingTime s) -> pletFields @'["draftTime", "votingTime", "lockingTime", "executingTime"] config $ \f -> - proposalTimeWithin # s + pisCurrentTimeWithin # s # (s + f.draftTime + f.votingTime + f.lockingTime + f.executingTime) diff --git a/agora/Agora/Stake.hs b/agora/Agora/Stake.hs index cb600ff..c953e5c 100644 --- a/agora/Agora/Stake.hs +++ b/agora/Agora/Stake.hs @@ -44,6 +44,7 @@ import Plutarch.DataRepr ( import Plutarch.Extra.Field (pletAll) import Plutarch.Extra.IsData ( DerivePConstantViaDataList (DerivePConstantViaDataList), + PlutusTypeDataList, ProductIsData (ProductIsData), ) import Plutarch.Extra.List (pnotNull) @@ -51,10 +52,9 @@ import Plutarch.Extra.Sum (PSum (PSum)) import Plutarch.Extra.Traversable (pfoldMap) import Plutarch.Lift (PConstantDecl, PUnsafeLiftDecl (PLifted)) import Plutarch.Orphans () -import Plutarch.SafeMoney (PDiscrete) +import Plutarch.SafeMoney (Discrete, PDiscrete) import PlutusLedgerApi.V2 (Credential) import PlutusTx qualified -import Prelude hiding (Num (..)) -------------------------------------------------------------------------------- @@ -123,7 +123,7 @@ PlutusTx.makeIsDataIndexed {- | Haskell-level redeemer for Stake scripts. - @since 0.1.0 + @since 1.0.0 -} data StakeRedeemer = -- | Deposit or withdraw a discrete amount of the staked governance token. @@ -143,9 +143,6 @@ data StakeRedeemer -- always allowed to have votes retracted and won't affect the Proposal datum, -- allowing 'Stake's to be unlocked. RetractVotes - | -- | The owner can consume stake if nothing is changed about it. - -- If the proposal token moves, this is equivalent to the owner consuming it. - WitnessStake | -- | The owner can delegate the stake to another user, allowing the -- delegate to vote on prooposals with the stake. DelegateTo Credential @@ -164,9 +161,8 @@ PlutusTx.makeIsDataIndexed , ('Destroy, 1) , ('PermitVote, 2) , ('RetractVotes, 3) - , ('WitnessStake, 4) - , ('DelegateTo, 5) - , ('ClearDelegate, 6) + , ('DelegateTo, 4) + , ('ClearDelegate, 5) ] {- | Haskell-level datum for Stake scripts. @@ -174,7 +170,7 @@ PlutusTx.makeIsDataIndexed @since 0.1.0 -} data StakeDatum = StakeDatum - { stakedAmount :: Tagged GTTag Integer + { stakedAmount :: Discrete GTTag -- ^ Tracks the amount of governance token staked in the datum. -- This also acts as the voting weight for 'Agora.Proposal.Proposal's. , owner :: Credential @@ -238,24 +234,24 @@ newtype PStakeDatum (s :: S) = PStakeDatum ) instance DerivePlutusType PStakeDatum where - type DPTStrat _ = PlutusTypeNewtype + type DPTStrat _ = PlutusTypeDataList --- | @since 0.1.0 -instance Plutarch.Lift.PUnsafeLiftDecl PStakeDatum where +-- | @since 1.0.0 +instance PUnsafeLiftDecl PStakeDatum where type PLifted PStakeDatum = StakeDatum -- | @since 0.1.0 deriving via (DerivePConstantViaDataList StakeDatum PStakeDatum) instance - (Plutarch.Lift.PConstantDecl StakeDatum) + (PConstantDecl StakeDatum) -- | @since 0.1.0 instance PTryFrom PData (PAsData PStakeDatum) {- | Plutarch-level redeemer for Stake scripts. - @since 0.1.0 + @since 1.0.0 -} data PStakeRedeemer (s :: S) = -- | Deposit or withdraw a discrete amount of the staked governance token. @@ -264,7 +260,6 @@ data PStakeRedeemer (s :: S) PDestroy (Term s (PDataRecord '[])) | PPermitVote (Term s (PDataRecord '[])) | PRetractVotes (Term s (PDataRecord '[])) - | PWitnessStake (Term s (PDataRecord '[])) | PDelegateTo (Term s (PDataRecord '["pkh" ':= PCredential])) | PClearDelegate (Term s (PDataRecord '[])) deriving stock @@ -280,6 +275,7 @@ data PStakeRedeemer (s :: S) PIsData ) +-- | @since 0.2.0 instance DerivePlutusType PStakeRedeemer where type DPTStrat _ = PlutusTypeData @@ -287,14 +283,14 @@ instance DerivePlutusType PStakeRedeemer where instance PTryFrom PData PStakeRedeemer -- | @since 0.1.0 -instance Plutarch.Lift.PUnsafeLiftDecl PStakeRedeemer where +instance PUnsafeLiftDecl PStakeRedeemer where type PLifted PStakeRedeemer = StakeRedeemer -- | @since 0.1.0 deriving via (DerivePConstantViaData StakeRedeemer PStakeRedeemer) instance - (Plutarch.Lift.PConstantDecl StakeRedeemer) + (PConstantDecl StakeRedeemer) {- | Plutarch-level version of 'ProposalLock'. @@ -342,14 +338,14 @@ instance PTryFrom PData PProposalLock instance PTryFrom PData (PAsData PProposalLock) -- | @since 0.1.0 -instance Plutarch.Lift.PUnsafeLiftDecl PProposalLock where +instance PUnsafeLiftDecl PProposalLock where type PLifted PProposalLock = ProposalLock -- | @since 0.1.0 deriving via (DerivePConstantViaData ProposalLock PProposalLock) instance - (Plutarch.Lift.PConstantDecl ProposalLock) + (PConstantDecl ProposalLock) -------------------------------------------------------------------------------- diff --git a/agora/Agora/Stake/Scripts.hs b/agora/Agora/Stake/Scripts.hs index ca347b5..da8ed3a 100644 --- a/agora/Agora/Stake/Scripts.hs +++ b/agora/Agora/Stake/Scripts.hs @@ -8,28 +8,30 @@ Plutus Scripts for Stakes. module Agora.Stake.Scripts (stakePolicy, stakeValidator) where import Agora.Credential (authorizationContext, pauthorizedBy) +import Agora.Proposal (PProposalRedeemer (PUnlock, PVote)) import Agora.SafeMoney (GTTag) import Agora.Scripts (AgoraScripts, proposalSTAssetClass, stakeSTSymbol) import Agora.Stake ( PStakeDatum (PStakeDatum), PStakeRedeemer (..), - StakeRedeemer (WitnessStake), pstakeLocked, ) -import Data.Function (on) import Data.Tagged (Tagged, untag) import Plutarch.Api.V1 ( PCredential (PPubKeyCredential, PScriptCredential), PTokenName, PValue, ) +import Plutarch.Api.V1.AssocMap (plookup) import Plutarch.Api.V2 ( AmountGuarantees (Positive), - PDatumHash, + KeyGuarantees (Sorted), + PMaybeData, PMintingPolicy, PScriptPurpose (PMinting, PSpending), + PTxInInfo, PTxInfo, - PTxOut, + PTxOutRef, PValidator, ) import Plutarch.Extra.AssetClass ( @@ -37,23 +39,40 @@ import Plutarch.Extra.AssetClass ( passetClassValueOf, pvalueOf, ) +import Plutarch.Extra.Bind (PBind ((#>>=))) import Plutarch.Extra.Field (pletAllC) -import Plutarch.Extra.List (pmapMaybe, pmsortBy) -import Plutarch.Extra.Maybe (passertPJust, pdjust, pdnothing, pmaybeData) +import Plutarch.Extra.Functor (PFunctor (pfmap)) +import Plutarch.Extra.List (pfirstJust) +import Plutarch.Extra.Maybe ( + passertPJust, + pdjust, + pdnothing, + pjust, + pmaybeData, + pnothing, + ) import Plutarch.Extra.Record (mkRecordConstr, (.&), (.=)) import Plutarch.Extra.ScriptContext ( pfindTxInByTxOutRef, - pfromDatumHash, pfromOutputDatum, pvalueSpent, ) -import Plutarch.Extra.TermCont (pguardC, pletC, pletFieldsC, pmatchC, ptryFromC) +import Plutarch.Extra.TermCont ( + pguardC, + pletC, + pletFieldsC, + pmatchC, + ptryFromC, + ) import Plutarch.Extra.Value ( pgeqByClass', pgeqBySymbol, psymbolValueOf, ) -import Plutarch.Numeric.Additive (AdditiveMonoid (zero), AdditiveSemigroup ((+))) +import Plutarch.Numeric.Additive ( + AdditiveMonoid (zero), + AdditiveSemigroup ((+)), + ) import Plutarch.SafeMoney ( pdiscreteValue', pvalueDiscrete', @@ -178,6 +197,30 @@ stakePolicy gtClassRef = -------------------------------------------------------------------------------- +{- | Validation context for stake redeemers that allow only one stake to be + spent in the transaction. + + @since 1.0.0 +-} +data POnlyOneStakeContext (s :: S) = POnlyOneStakeContext + { ownOutputDatum :: Term s PStakeDatum + , ownOutputValue :: Term s (PValue 'Sorted 'Positive) + , ownOutputValueUnchanged :: Term s PBool + , onlyLocksUpdated :: Term s PBool + } + deriving stock + ( -- | @since 1.0.0 + Generic + ) + deriving anyclass + ( -- | @since 1.0.0 + PlutusType + ) + +-- | @since 1.0.0 +instance DerivePlutusType POnlyOneStakeContext where + type DPTStrat _ = PlutusTypeScott + {- | Validator intended for Stake UTXOs to be locked by. == What this Validator does: @@ -247,6 +290,7 @@ stakeValidator as gtClassRef = , "outputs" , "signatories" , "datums" + , "redeemers" ] txInfo @@ -304,9 +348,33 @@ stakeValidator as gtClassRef = _ -> unTermCont $ do let AssetClass (propCs, propTn) = proposalSTAssetClass as proposalSTClass = passetClass # pconstant propCs # pconstant propTn - spentProposalST = passetClassValueOf # valueSpent # proposalSTClass - proposalTokenMoved <- pletC $ 1 #<= spentProposalST + proposalRedeemer <- + pletC $ + let convertRedeemer = plam $ \(pto -> dt) -> + ptryFrom @PProposalRedeemer dt fst + + findRedeemer = plam $ \ref -> + plookup + # pcon + ( PSpending $ + pdcons @_0 + # pdata ref + # pdnil + ) + # txInfoF.redeemers + + f :: Term _ (PTxInInfo :--> PMaybe PTxOutRef) + f = plam $ \inInfo -> + let value = pfield @"value" #$ pfield @"resolved" # inInfo + ref = pfield @"outRef" # inInfo + in pif + (passetClassValueOf # value # proposalSTClass #== 1) + (pjust # ref) + pnothing + + proposalRef = pfirstJust # f # txInfoF.inputs + in pfmap # convertRedeemer #$ proposalRef #>>= findRedeemer -- Filter out own outputs using own address and ST. ownOutputs <- @@ -322,234 +390,217 @@ stakeValidator as gtClassRef = ) # pfromData txInfoF.outputs - let witnessStake = unTermCont $ do - pguardC "Either owner signs the transaction or proposal token moved" $ - ownerSignsTransaction #|| proposalTokenMoved - - -- FIXME: remove this once we have reference input. - -- - -- Our goal here is to allow multiple input stakes, and also ensure that every the input stakes has a - -- corresponding output stake, which carries the same value and the same datum as the input stake. - -- - -- Validation strategy I have tried/considered so far: - -- 1. Check that the number of input stakes equals to the number of output stakes, and verify - -- that there's an output stake with the exact same value and datum hash as the stake being - -- validated , However this approach has a fatal vulnerability: let's say we have two totally - -- identical stakes, a malicious user can comsume these two stakes and remove GTs from one of them. - -- 2. Perform the same checks as the last approch does, while also checking that every output stake is - -- valid(stakedAmount == actual value). However this requires that all the output stake datum are - -- included in the transaction, and we have to find and go through them one by one to access the - -- 'stakedAmount' fields, meaning that computationally this approach is *very* expensive. - -- 3. The one implemented below. Find all the continuous input/output, sort them by 'datumHash', and - -- ensure that the two sorted lists are equal. - let ownInputs = - pmapMaybe - # plam - ( \input -> plet (pfield @"resolved" # input) $ \resolvedInput -> - let value = pfield @"value" # resolvedInput - in pif - (psymbolValueOf # stCurrencySymbol # value #== 1) - (pcon $ PJust resolvedInput) - (pcon PNothing) - ) - # pfromData txInfoF.inputs - - sortTxOuts :: Term _ (PBuiltinList PTxOut :--> PBuiltinList PTxOut) - sortTxOuts = phoistAcyclic $ plam (pmsortBy # plam ((#<) `on` (getDatumHash #)) #) - where - getDatumHash :: Term _ (PTxOut :--> PDatumHash) - getDatumHash = phoistAcyclic $ plam ((pfromDatumHash #) . (pfield @"datum" #)) - - sortedOwnInputs = sortTxOuts # ownInputs - sortedOwnOutputs = sortTxOuts # ownOutputs - - pguardC "Every stake inputs has a corresponding unchanged output" $ - plistEquals # sortedOwnInputs # sortedOwnOutputs - - pure $ popaque $ pconstant () - ---------------------------------------------------------------------- - let onlyAcceptOneStake = unTermCont $ do + withSingleStake' :: + Term + s + ( (POnlyOneStakeContext :--> PUnit) + :--> POpaque + ) <- + pletC $ + plam $ \validationLogic -> unTermCont $ do pguardC "ST at inputs must be 1" $ spentST #== 1 ownOutput <- pletC $ phead # ownOutputs - stakeOut <- - pletC $ - pfromData $ - pfromOutputDatum @(PAsData PStakeDatum) - # (pfield @"datum" # ownOutput) - # txInfoF.datums + let ownOutputDatum = + pfromData $ + pfromOutputDatum @(PAsData PStakeDatum) + # (pfield @"datum" # ownOutput) + # txInfoF.datums - ownOutputValue <- - pletC $ - pfield @"value" # ownOutput + ownOutputValue = + pfield @"value" # ownOutput - ownOutputValueUnchanged <- - pletC $ - pdata resolvedF.value #== pdata ownOutputValue + ownOutputValueUnchanged = + pdata resolvedF.value #== pdata ownOutputValue - onlyLocksUpdated <- - pletC $ - let templateStakeDatum = - mkRecordConstr + onlyLocksUpdated = + let templateStakeDatum = + mkRecordConstr + PStakeDatum + ( #stakedAmount .= stakeDatum.stakedAmount + .& #owner .= stakeDatum.owner + .& #delegatedTo .= stakeDatum.delegatedTo + .& #lockedBy .= pfield @"lockedBy" + # pto ownOutputDatum + ) + in ownOutputDatum #== templateStakeDatum + + ctx = + pcon $ + POnlyOneStakeContext + ownOutputDatum + ownOutputValue + ownOutputValueUnchanged + onlyLocksUpdated + + pure $ popaque $ validationLogic # ctx + + let withSingleStake val = withSingleStake' #$ plam $ \ctx -> + unTermCont $ do + ctxF <- pmatchC ctx + val ctxF + pure $ pconstant () + + setDelegate :: Term s (PMaybeData (PAsData PCredential) :--> POpaque) <- + pletC $ + plam $ \maybePkh -> withSingleStake $ \ctx -> do + pguardC + "Owner signs this transaction" + ownerSignsTransaction + + pguardC "Cannot delegate to the owner" $ + pmaybeData + # pcon PTrue + # plam (\pkh -> pnot #$ stakeDatum.owner #== pkh) + # maybePkh + + pguardC "A UTXO must exist with the correct output" $ + let correctOutputDatum = + ctx.ownOutputDatum + #== mkRecordConstr PStakeDatum ( #stakedAmount .= stakeDatum.stakedAmount .& #owner .= stakeDatum.owner - .& #delegatedTo .= stakeDatum.delegatedTo - .& #lockedBy .= pfield @"lockedBy" # pto stakeOut + .& #delegatedTo .= pdata maybePkh + .& #lockedBy .= stakeDatum.lockedBy ) - in stakeOut #== templateStakeDatum - - setDelegate <- pletC $ - plam $ \maybePkh -> unTermCont $ do - pguardC - "Owner signs this transaction" - ownerSignsTransaction - - pguardC "A UTXO must exist with the correct output" $ - let correctOutputDatum = - stakeOut - #== mkRecordConstr - PStakeDatum - ( #stakedAmount .= stakeDatum.stakedAmount - .& #owner .= stakeDatum.owner - .& #delegatedTo .= pdata maybePkh - .& #lockedBy .= stakeDatum.lockedBy - ) - valueCorrect = ownOutputValueUnchanged - in foldl1 - (#&&) - [ ptraceIfFalse "valueCorrect" valueCorrect - , ptraceIfFalse "datumCorrect" correctOutputDatum - ] - - pure $ popaque (pconstant ()) - - pure $ - pmatch stakeRedeemer $ \case - PRetractVotes _ -> unTermCont $ do - pguardC - "Owner or delegate signs this transaction" - $ ownerSignsTransaction #|| delegateSignsTransaction - - -- This puts trust into the Proposal. The Proposal must necessarily check - -- that this is not abused. - pguardC "Proposal ST spent" proposalTokenMoved - - pguardC "A UTXO must exist with the correct output" $ - let valueCorrect = ownOutputValueUnchanged - outputDatumCorrect = onlyLocksUpdated - in foldl1 - (#&&) - [ ptraceIfFalse "valueCorrect" valueCorrect - , ptraceIfFalse "datumCorrect" outputDatumCorrect - ] - - pure $ popaque (pconstant ()) - - ------------------------------------------------------------ - - PPermitVote _ -> unTermCont $ do - pguardC - "Owner or delegate signs this transaction" - $ ownerSignsTransaction #|| delegateSignsTransaction - - let proposalTokenMinted = - passetClassValueOf # txInfoF.mint # proposalSTClass #== 1 - - -- This puts trust into the Proposal. The Proposal must necessarily check - -- that this is not abused. - pguardC "Proposal ST spent or minted" $ - proposalTokenMoved #|| proposalTokenMinted - pguardC "A UTXO must exist with the correct output" $ - let correctOutputDatum = onlyLocksUpdated - valueCorrect = ownOutputValueUnchanged - in foldl1 - (#&&) - [ ptraceIfFalse "valueCorrect" valueCorrect - , ptraceIfFalse "datumCorrect" correctOutputDatum - ] - - pure $ popaque (pconstant ()) - - ------------------------------------------------------------ - - PDepositWithdraw r -> unTermCont $ do - pguardC "Stake unlocked" $ - pnot #$ stakeIsLocked - pguardC - "Owner signs this transaction" - ownerSignsTransaction - pguardC "A UTXO must exist with the correct output" $ - unTermCont $ do - let oldStakedAmount = pfromData $ stakeDatum.stakedAmount - delta = pfromData $ pfield @"delta" # r - - newStakedAmount <- pletC $ oldStakedAmount + delta - - pguardC "New staked amount should be greater than or equal to 0" $ - zero #<= newStakedAmount - - let expectedDatum = - mkRecordConstr - PStakeDatum - ( #stakedAmount .= pdata newStakedAmount - .& #owner .= stakeDatum.owner - .& #delegatedTo .= stakeDatum.delegatedTo - .& #lockedBy .= stakeDatum.lockedBy - ) - datumCorrect = stakeOut #== expectedDatum - - let valueDelta :: Term _ (PValue _ 'Positive) - valueDelta = pdiscreteValue' gtClassRef # delta - - expectedValue = - resolvedF.value <> valueDelta - - valueCorrect = - foldr1 - (#&&) - [ pgeqByClass' (AssetClass ("", "")) - # ownOutputValue - # expectedValue - , pgeqByClass' (untag gtClassRef) - # ownOutputValue - # expectedValue - , pgeqBySymbol - # stCurrencySymbol - # ownOutputValue - # expectedValue - ] - -- - pure $ - foldl1 - (#&&) - [ ptraceIfFalse "valueCorrect" valueCorrect - , ptraceIfFalse "datumCorrect" datumCorrect - ] - -- - pure $ popaque (pconstant ()) - - ------------------------------------------------------------ - - PDelegateTo ((pfromData . (pfield @"pkh" #)) -> pkh) -> unTermCont $ do - pguardC "Cannot delegate to the owner" $ - pnot #$ stakeDatum.owner #== pkh - - pure $ setDelegate #$ pdjust # pdata pkh - ------------------------------------------------------------ - - PClearDelegate _ -> - setDelegate # pdnothing - ------------------------------------------------------------ - - _ -> popaque (pconstant ()) + valueCorrect = ctx.ownOutputValueUnchanged + in foldl1 + (#&&) + [ ptraceIfFalse "valueCorrect" valueCorrect + , ptraceIfFalse "datumCorrect" correctOutputDatum + ] pure $ - pif - (pdata stakeRedeemer #== pconstantData WitnessStake) - witnessStake - onlyAcceptOneStake + pmatch stakeRedeemer $ \case + PRetractVotes _ -> withSingleStake $ \ctx -> do + pguardC + "Owner or delegate signs this transaction" + $ ownerSignsTransaction #|| delegateSignsTransaction + + -- This puts trust into the Proposal. The Proposal must necessarily check + -- that this is not abused. + + pguardC "Proposal ST spent" $ + pmatch proposalRedeemer $ \case + PJust redeemer -> pmatch redeemer $ \case + PUnlock _ -> pconstant True + _ -> + ptrace "Expected PUnlock, but got other" $ + pconstant False + PNothing -> + ptrace "Proposal redeemer not found" $ + pconstant False + + pguardC "A UTXO must exist with the correct output" $ + let valueCorrect = ctx.ownOutputValueUnchanged + outputDatumCorrect = ctx.onlyLocksUpdated + in foldl1 + (#&&) + [ ptraceIfFalse "valueCorrect" valueCorrect + , ptraceIfFalse "datumCorrect" outputDatumCorrect + ] + + ------------------------------------------------------------------ + + PPermitVote _ -> withSingleStake $ \ctx -> do + pguardC + "Owner or delegate signs this transaction" + $ ownerSignsTransaction #|| delegateSignsTransaction + + let proposalTokenMinted = + passetClassValueOf # txInfoF.mint # proposalSTClass #== 1 + + -- This puts trust into the Proposal. The Proposal must necessarily check + -- that this is not abused. + pguardC "Proposal ST spent or minted" $ + pmatch + proposalRedeemer + ( \case + PJust proposalRedeemer' -> + pmatch proposalRedeemer' $ \case + PVote _ -> pconstant True + _ -> ptrace "Expected PVote" $ pconstant False + _ -> proposalTokenMinted + ) + + pguardC "A UTXO must exist with the correct output" $ + let correctOutputDatum = ctx.onlyLocksUpdated + valueCorrect = ctx.ownOutputValueUnchanged + in foldl1 + (#&&) + [ ptraceIfFalse "valueCorrect" valueCorrect + , ptraceIfFalse "datumCorrect" correctOutputDatum + ] + + ------------------------------------------------------------------ + + PDelegateTo ((pfromData . (pfield @"pkh" #)) -> pkh) -> + setDelegate #$ pdjust # pdata pkh + ------------------------------------------------------------------ + + PClearDelegate _ -> + setDelegate # pdnothing + ------------------------------------------------------------------ + + PDepositWithdraw r -> withSingleStake $ \ctx -> do + pguardC "Stake unlocked" $ + pnot #$ stakeIsLocked + pguardC + "Owner signs this transaction" + ownerSignsTransaction + pguardC "A UTXO must exist with the correct output" $ + unTermCont $ do + let oldStakedAmount = pfromData $ stakeDatum.stakedAmount + delta = pfromData $ pfield @"delta" # r + + newStakedAmount <- pletC $ oldStakedAmount + delta + + pguardC "New staked amount should be greater than or equal to 0" $ + zero #<= newStakedAmount + + let expectedDatum = + mkRecordConstr + PStakeDatum + ( #stakedAmount .= pdata newStakedAmount + .& #owner .= stakeDatum.owner + .& #delegatedTo .= stakeDatum.delegatedTo + .& #lockedBy .= stakeDatum.lockedBy + ) + datumCorrect = ctx.ownOutputDatum #== expectedDatum + + let valueDelta :: Term _ (PValue _ 'Positive) + valueDelta = pdiscreteValue' gtClassRef # delta + + expectedValue = + resolvedF.value <> valueDelta + + valueCorrect = + foldr1 + (#&&) + [ pgeqByClass' (AssetClass ("", "")) + # ctx.ownOutputValue + # expectedValue + , pgeqByClass' (untag gtClassRef) + # ctx.ownOutputValue + # expectedValue + , pgeqBySymbol + # stCurrencySymbol + # ctx.ownOutputValue + # expectedValue + ] + -- + pure $ + foldl1 + (#&&) + [ ptraceIfFalse "valueCorrect" valueCorrect + , ptraceIfFalse "datumCorrect" datumCorrect + ] + + ------------------------------------------------------------------ + + _ -> ptraceError "unreachable" diff --git a/agora/Agora/Utils.hs b/agora/Agora/Utils.hs index 459fa69..70fc3d0 100644 --- a/agora/Agora/Utils.hs +++ b/agora/Agora/Utils.hs @@ -18,10 +18,17 @@ module Agora.Utils ( pvalidatorHashToTokenName, pscriptHashToTokenName, scriptHashToTokenName, + plistEqualsBy, + pstringIntercalate, + punwords, + pcurrentTimeDuration, ) where -import Plutarch.Api.V1 (PTokenName, PValidatorHash) +import Plutarch.Api.V1 (PPOSIXTime, PTokenName, PValidatorHash) import Plutarch.Api.V2 (PScriptHash) +import Plutarch.Extra.TermCont (pmatchC) +import Plutarch.Extra.Time (PCurrentTime (PCurrentTime)) +import Plutarch.List (puncons) import Plutarch.Unsafe (punsafeCoerce) import PlutusLedgerApi.V2 ( Address (Address), @@ -128,3 +135,58 @@ newtype CompiledMintingPolicy (redeemer :: Type) = CompiledMintingPolicy newtype CompiledEffect (datum :: Type) = CompiledEffect { getCompiledEffect :: Validator } + +-- | @since 1.0.0 +plistEqualsBy :: + forall + (list1 :: PType -> PType) + (list2 :: PType -> PType) + (a :: PType) + (b :: PType) + (s :: S). + (PIsListLike list1 a, PIsListLike list2 b) => + Term s ((a :--> b :--> PBool) :--> list1 a :--> (list2 b :--> PBool)) +plistEqualsBy = phoistAcyclic $ pfix # go + where + go = plam $ \self eq l1 l2 -> unTermCont $ do + l1' <- pmatchC $ puncons # l1 + l2' <- pmatchC $ puncons # l2 + + case (l1', l2') of + (PJust l1'', PJust l2'') -> do + (PPair h1 t1) <- pmatchC l1'' + (PPair h2 t2) <- pmatchC l2'' + + pure $ eq # h1 # h2 #&& self # eq # t1 # t2 + (PNothing, PNothing) -> pure $ pconstant True + _ -> pure $ pconstant False + +-- | @since 1.0.0 +pstringIntercalate :: + forall (s :: S). + Term s PString -> + [Term s PString] -> + Term s PString +pstringIntercalate _ [x] = x +pstringIntercalate i (x : xs) = x <> i <> pstringIntercalate i xs +pstringIntercalate _ _ = "" + +-- | @since 1.0.0 +punwords :: + forall (s :: S). + [Term s PString] -> + Term s PString +punwords = pstringIntercalate " " + +-- | @since 1.0.0 +pcurrentTimeDuration :: + forall (s :: S). + Term + s + ( PCurrentTime + :--> PPOSIXTime + ) +pcurrentTimeDuration = phoistAcyclic $ + plam $ + flip pmatch $ + \(PCurrentTime lb ub) -> ub - lb diff --git a/bench.csv b/bench.csv index 04df7a8..e40ca75 100644 --- a/bench.csv +++ b/bench.csv @@ -2,629 +2,481 @@ name,cpu,mem,size Agora/Effects/Treasury Withdrawal Effect/effect/Simple,395212858,1021782,4379 Agora/Effects/Treasury Withdrawal Effect/effect/Simple with multiple treasuries ,569763954,1435806,4811 Agora/Effects/Treasury Withdrawal Effect/effect/Mixed Assets,565354560,1442811,4749 -Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,124529097,340153,9631 -Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,167967647,454593,4882 -Agora/Stake/policy/stakeCreation,56178945,162035,3161 -Agora/Stake/validator/stakeDepositWithdraw deposit,199321866,548328,6160 -Agora/Stake/validator/stakeDepositWithdraw withdraw,199321866,548328,6148 -Agora/Stake/validator/set delegate/override existing delegate,124675267,322292,6228 -Agora/Stake/validator/set delegate/remove existing delegate,115176927,299103,6158 -Agora/Stake/validator/set delegate/set delegate to something,117428447,304400,6158 -Agora/Proposal/policy (proposal creation)/legal/proposal,34052826,101718,1985 -Agora/Proposal/policy (proposal creation)/legal/governor,360738210,916862,10059 -Agora/Proposal/policy (proposal creation)/legal/stake,162410179,421106,6819 -Agora/Proposal/policy (proposal creation)/illegal/invalid next proposal id/proposal,34052826,101718,1985 -Agora/Proposal/policy (proposal creation)/illegal/invalid next proposal id/stake,162410179,421106,6819 -Agora/Proposal/policy (proposal creation)/illegal/use other's stake/proposal,34052826,101718,1954 -Agora/Proposal/policy (proposal creation)/illegal/use other's stake/governor,360738210,916862,10028 -Agora/Proposal/policy (proposal creation)/illegal/altered stake/proposal,34052826,101718,1985 -Agora/Proposal/policy (proposal creation)/illegal/invalid stake locks/proposal,34052826,101718,1993 -Agora/Proposal/policy (proposal creation)/illegal/invalid stake locks/stake,167843839,435756,6827 -Agora/Proposal/policy (proposal creation)/illegal/has reached maximum proposals limit/proposal,34052826,101718,2005 -Agora/Proposal/policy (proposal creation)/illegal/has reached maximum proposals limit/stake,175108615,457322,6849 -Agora/Proposal/policy (proposal creation)/illegal/loose time range/proposal,34052826,101718,1985 -Agora/Proposal/policy (proposal creation)/illegal/loose time range/stake,162410179,421106,6819 -Agora/Proposal/policy (proposal creation)/illegal/open time range/proposal,34052826,101718,1981 -Agora/Proposal/policy (proposal creation)/illegal/open time range/stake,162410179,421106,6815 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/VotingReady/proposal,34052826,101718,1985 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/VotingReady/stake,162410179,421106,6819 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Locked/proposal,34052826,101718,1985 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Locked/stake,162410179,421106,6819 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Finished/proposal,34052826,101718,1985 -Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Finished/stake,162410179,421106,6819 -Agora/Proposal/validator/cosignature/legal/with 1 cosigners/proposal,316006408,870988,10974 -Agora/Proposal/validator/cosignature/legal/with 1 cosigners/stake,129047955,341600,6636 -Agora/Proposal/validator/cosignature/legal/with 5 cosigners/proposal,812672837,2172141,13684 -Agora/Proposal/validator/cosignature/legal/with 5 cosigners/stake,548277993,1467222,9210 -Agora/Proposal/validator/cosignature/legal/with 10 cosigners/proposal,1630500516,4232466,17072 -Agora/Proposal/validator/cosignature/legal/with 10 cosigners/stake,1185241836,3199885,12427 -Agora/Proposal/validator/cosignature/illegal/duplicate cosigners/stake,129047955,341600,6636 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: VotingReady/stake,129047955,341600,6636 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: Locked/stake,129047955,341600,6636 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 1 cosigners/status: Finished/stake,129047955,341600,6636 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: VotingReady/stake,548277993,1467222,9210 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: Locked/stake,548277993,1467222,9210 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 5 cosigners/status: Finished/stake,548277993,1467222,9210 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: VotingReady/stake,1185241836,3199885,12427 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: Locked/stake,1185241836,3199885,12427 -Agora/Proposal/validator/cosignature/illegal/proposal status not Draft/with 10 cosigners/status: Finished/stake,1185241836,3199885,12427 -Agora/Proposal/validator/voting/legal/ordinary/proposal,332067123,907768,10948 -Agora/Proposal/validator/voting/legal/ordinary/stake,150651199,390778,6655 -Agora/Proposal/validator/voting/legal/delegate/proposal,337076131,921968,11018 -Agora/Proposal/validator/voting/legal/delegate/stake,160327007,415770,6760 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,405704430,1105300,11803 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,140147056,371068,7196 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,343427922,945245,11228 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,389643321,1070186,12376 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,529562250,1336436,11016 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,3178 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,399836463,1086958,11523 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,140147056,371068,7009 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,337559955,926903,10949 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,383775354,1051844,11918 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,524255856,1321006,10651 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,2812 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,335668590,926900,11221 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,332175436,912914,11222 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,334007455,916912,11222 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,329800623,908558,10942 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,326307469,894572,10943 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,328139488,898570,10943 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,140147056,371068,7196 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,3178 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,140147056,371068,7009 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,2812 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/insufficient cosigns/stake,140147056,371068,7009 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,140147056,371068,7198 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,529562250,1336436,11016 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15755485,47872,3178 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,140147056,371068,7011 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,524255856,1321006,10651 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,78441861,206056,2812 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7203 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,8350 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/governor,585671452,1467340,11599 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,3761 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7016 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,7985 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/governor,580365058,1451910,11234 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,3396 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/forget to mint GATs/proposal,359524308,979235,11387 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,383775354,1051844,11918 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,2812 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,383775354,1051844,11950 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs with bad token name/authority,12079326,37748,2845 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/wrong GAT datum/proposal,383775354,1051844,11911 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/wrong GAT datum/authority,78441861,206056,2806 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/invalid governor output datum/proposal,383775354,1051844,11918 -Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/invalid governor output datum/authority,78441861,206056,2812 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,527046950,1434847,12736 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,140147056,371068,7818 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,468465328,1284780,12162 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,510985841,1399733,13309 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,574391393,1461366,11638 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,3800 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,515311016,1398163,12176 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,140147056,371068,7445 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,456729394,1248096,11601 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,499249907,1363049,12570 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,567330386,1439822,11086 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3248 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,457011110,1256447,12155 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,453517956,1242461,12156 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,455349975,1246459,12156 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,445275176,1219763,11594 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,441782022,1205777,11595 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,443614041,1209775,11595 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,140147056,371068,7818 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,3800 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,140147056,371068,7445 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3248 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/insufficient cosigns/stake,140147056,371068,7445 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,140147056,371068,7820 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,574391393,1461366,11638 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15755485,47872,3800 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,140147056,371068,7447 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,567330386,1439822,11086 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3248 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7825 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,8973 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/governor,630500595,1592270,12222 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,4384 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7452 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,8420 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/governor,623439588,1570726,11670 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,3831 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/forget to mint GATs/proposal,474998861,1290440,12040 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,499249907,1363049,12570 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3248 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,499249907,1363049,12602 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3280 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/wrong GAT datum/proposal,499249907,1363049,12564 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/wrong GAT datum/authority,78441861,206056,3242 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/invalid governor output datum/proposal,499249907,1363049,12570 -Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/invalid governor output datum/authority,78441861,206056,3248 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,891074510,2423488,15537 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,140147056,371068,9685 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,843577546,2303385,14963 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,875013401,2388374,16111 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,708878822,1836156,13506 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,5668 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,861734675,2331778,14137 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,140147056,371068,8752 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,814237711,2211675,13563 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,845673566,2296664,14531 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,696553976,1796270,12393 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,4555 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,821038670,2245088,14956 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,817545516,2231102,14957 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,819377535,2235100,14957 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,791698835,2153378,13556 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,788205681,2139392,13557 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,790037700,2143390,13557 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,140147056,371068,9685 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,5668 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,140147056,371068,8752 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,4555 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/insufficient cosigns/stake,140147056,371068,8752 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,140147056,371068,9687 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,708878822,1836156,13506 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15755485,47872,5668 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,140147056,371068,8754 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,696553976,1796270,12393 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,78441861,206056,4555 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,9692 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,10840 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/governor,764988024,1967060,14089 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,6251 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,8759 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,9728 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/governor,752663178,1927174,12977 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,5139 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/forget to mint GATs/proposal,821422520,2224055,14001 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,845673566,2296664,14531 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,4555 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,845673566,2296664,14563 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs with bad token name/authority,12079326,37748,4587 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/wrong GAT datum/proposal,845673566,2296664,14525 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/wrong GAT datum/authority,78441861,206056,4549 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/invalid governor output datum/proposal,845673566,2296664,14531 -Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/invalid governor output datum/authority,78441861,206056,4555 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,868225687,2326559,14646 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,572008792,1533568,9901 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,389256066,1070837,11639 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,435471465,1195778,12786 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,544435546,1378300,11289 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,3451 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,862357720,2308217,14366 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,572008792,1533568,9715 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,383388099,1052495,11358 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,429603498,1177436,12327 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,539129152,1362870,10924 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3086 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,381496734,1052492,11632 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,378003580,1038506,11633 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,379835599,1042504,11633 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,375628767,1034150,11351 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,372135613,1020164,11352 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,373967632,1024162,11352 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,572008792,1533568,9901 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,3451 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,572008792,1533568,9715 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3086 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/insufficient cosigns/stake,572750086,1535634,9715 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,572008792,1533568,9903 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,544435546,1378300,11289 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15755485,47872,3451 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,572008792,1533568,9717 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,539129152,1362870,10924 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3086 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7471 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,8618 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/governor,600544748,1509204,11868 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,4030 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7284 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,8253 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/governor,595238354,1493774,11503 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,3665 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/forget to mint GATs/proposal,405352452,1104827,11797 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,429603498,1177436,12327 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3086 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,429603498,1177436,12359 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3118 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/wrong GAT datum/proposal,429603498,1177436,12321 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/wrong GAT datum/authority,78441861,206056,3080 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/invalid governor output datum/proposal,429603498,1177436,12327 -Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/invalid governor output datum/authority,78441861,206056,3086 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,989568207,2656106,15580 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,572008792,1533568,10524 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,514293472,1410372,12572 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,556813985,1525325,13719 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,589264689,1503230,11911 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,4073 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,977832273,2619422,15019 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,572008792,1533568,10150 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,502557538,1373688,12012 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,545078051,1488641,12980 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,582203682,1481686,11359 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3521 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,502839254,1382039,12565 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,499346100,1368053,12566 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,501178119,1372051,12566 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,491103320,1345355,12004 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,487610166,1331369,12005 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,489442185,1335367,12005 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,572008792,1533568,10524 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,4073 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,572008792,1533568,10150 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3521 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/insufficient cosigns/stake,572750086,1535634,10150 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,572008792,1533568,10526 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,589264689,1503230,11911 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15755485,47872,4073 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,572008792,1533568,10152 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,582203682,1481686,11359 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3521 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,8093 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,9241 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/governor,645373891,1634134,12491 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,4653 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7720 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,8689 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/governor,638312884,1612590,11939 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,4101 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/forget to mint GATs/proposal,520827005,1416032,12450 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,545078051,1488641,12980 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3521 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,545078051,1488641,13012 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3553 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/wrong GAT datum/proposal,545078051,1488641,12974 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/wrong GAT datum/authority,78441861,206056,3515 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/invalid governor output datum/proposal,545078051,1488641,12980 -Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/invalid governor output datum/authority,78441861,206056,3521 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,1353595767,3644747,18380 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,572008792,1533568,12391 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,889405690,2428977,15372 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,920841545,2513966,16520 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,723752118,1878020,13779 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,5941 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,1324255932,3553037,16980 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,572008792,1533568,11457 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,860065855,2337267,13973 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,891501710,2422256,14941 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,711427272,1838134,12666 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,4828 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,866866814,2370680,15365 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,863373660,2356694,15366 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,865205679,2360692,15366 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,837526979,2278970,13966 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,834033825,2264984,13967 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,835865844,2268982,13967 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,572008792,1533568,12391 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,5941 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,572008792,1533568,11457 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,4828 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/insufficient cosigns/stake,572750086,1535634,11457 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,572008792,1533568,12393 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,723752118,1878020,13779 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15755485,47872,5941 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,572008792,1533568,11459 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,711427272,1838134,12666 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,78441861,206056,4828 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,9961 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,11108 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/governor,779861320,2008924,14358 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,6520 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,9027 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,9996 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/governor,767536474,1969038,13246 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,5408 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/forget to mint GATs/proposal,867250664,2349647,14411 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,891501710,2422256,14941 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,4828 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,891501710,2422256,14974 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs with bad token name/authority,12079326,37748,4861 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/wrong GAT datum/proposal,891501710,2422256,14935 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/wrong GAT datum/authority,78441861,206056,4822 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/invalid governor output datum/proposal,891501710,2422256,14941 -Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/invalid governor output datum/authority,78441861,206056,4828 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,1522764420,4000234,18205 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,1142848969,3073577,13290 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,446541246,1227827,12150 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,492756645,1352768,13297 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,563027166,1430630,11630 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,3792 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,1516896453,3981892,17925 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/stake,1142848969,3073577,13103 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,440673279,1209485,11870 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,486888678,1334426,12839 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,557720772,1415200,11265 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3427 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,438781914,1209482,12143 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,435288760,1195496,12144 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,437120779,1199494,12144 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,432913947,1191140,11863 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,429420793,1177154,11864 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,431252812,1181152,11864 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,1142848969,3073577,13290 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,3792 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/stake,1142848969,3073577,13103 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3427 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/insufficient cosigns/stake,1167371071,3145267,13103 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,1142848969,3073577,13292 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,563027166,1430630,11630 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15755485,47872,3792 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Draft/stake,1142848969,3073577,13105 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,557720772,1415200,11265 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3427 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7812 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,8960 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/governor,619136368,1561534,12210 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,4372 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,7625 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,8594 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/governor,613829974,1546104,11844 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,4006 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/forget to mint GATs/proposal,462637632,1261817,12309 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,486888678,1334426,12839 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3427 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,486888678,1334426,12871 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3459 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/wrong GAT datum/proposal,486888678,1334426,12833 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/wrong GAT datum/authority,78441861,206056,3421 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/invalid governor output datum/proposal,486888678,1334426,12839 -Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/invalid governor output datum/authority,78441861,206056,3427 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,1644106940,4329781,19138 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,1142848969,3073577,13912 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,571578652,1567362,13083 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,614099165,1682315,14231 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,607856309,1555560,12253 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,4415 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,1632371006,4293097,18578 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/stake,1142848969,3073577,13538 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,559842718,1530678,12524 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,602363231,1645631,13493 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,600795302,1534016,11701 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3863 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,560124434,1539029,13076 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,556631280,1525043,13077 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,558463299,1529041,13077 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,548388500,1502345,12517 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,544895346,1488359,12518 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,546727365,1492357,12518 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,1142848969,3073577,13912 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,4415 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/stake,1142848969,3073577,13538 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3863 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/insufficient cosigns/stake,1167371071,3145267,13538 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,1142848969,3073577,13914 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,607856309,1555560,12253 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15755485,47872,4415 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Draft/stake,1142848969,3073577,13541 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,600795302,1534016,11701 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3863 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,8435 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,9582 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/governor,663965511,1686464,12832 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,4994 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,8061 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,9030 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/governor,656904504,1664920,12280 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,4442 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/forget to mint GATs/proposal,578112185,1573022,12963 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,602363231,1645631,13493 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3863 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,602363231,1645631,13525 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3895 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/wrong GAT datum/proposal,602363231,1645631,13487 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/wrong GAT datum/authority,78441861,206056,3857 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/invalid governor output datum/proposal,602363231,1645631,13493 -Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/invalid governor output datum/authority,78441861,206056,3863 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,2008134500,5318422,21939 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,1142848969,3073577,15779 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,946690870,2585967,15885 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,978126725,2670956,17032 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,742343738,1930350,14120 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,6282 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,1978794665,5226712,20539 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/stake,1142848969,3073577,14846 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,917351035,2494257,14484 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,948786890,2579246,15453 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,730018892,1890464,13008 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,5170 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,924151994,2527670,15878 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,920658840,2513684,15879 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,922490859,2517682,15879 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,894812159,2435960,14477 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,891319005,2421974,14478 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,893151024,2425972,14478 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,1142848969,3073577,15779 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,6282 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/stake,1142848969,3073577,14846 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,5170 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/insufficient cosigns/stake,1167371071,3145267,14846 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,1142848969,3073577,15781 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,742343738,1930350,14120 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15755485,47872,6282 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Draft/stake,1142848969,3073577,14848 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,730018892,1890464,13008 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,78441861,206056,5170 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,10302 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,11449 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/governor,798452940,2061254,14699 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/authority,15755485,47872,6861 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/unexpected stake datum/from VotingReady/stake,140869592,373332,9368 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/stake,197149193,508235,10337 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/governor,786128094,2021368,13587 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/unexpected stake datum/from Locked/authority,99168588,258623,5749 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/forget to mint GATs/proposal,924535844,2506637,14923 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,948786890,2579246,15453 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,5170 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,948786890,2579246,15485 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs with bad token name/authority,12079326,37748,5202 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/wrong GAT datum/proposal,948786890,2579246,15447 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/wrong GAT datum/authority,78441861,206056,5164 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/invalid governor output datum/proposal,948786890,2579246,15453 -Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/invalid governor output datum/authority,78441861,206056,5170 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: retract votes while voting/stake,134295013,344673,6634 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: retract votes while voting/proposal,314582794,858591,10928 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: retract votes while voting/stake,140644231,362781,6651 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: retract votes while voting/proposal,332082366,908032,10940 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/creator: remove creator locks when finished/stake,133256736,341875,6632 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/creator: remove creator locks when finished/proposal,293984030,818337,10925 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove all locks when finished/stake,137412985,353727,6649 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove all locks when finished/proposal,302221499,842845,10938 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Locked/stake,134295013,344673,6638 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Locked/proposal,289911138,810112,10932 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Finished/stake,134295013,344673,6638 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Finished/proposal,290476627,811314,10932 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove vote locks when locked/stake,140644231,362781,6655 -Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove vote locks when locked/proposal,307976199,860755,10944 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: retract votes while voting/stake,279914477,703501,8751 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: retract votes while voting/proposal,453127858,1203527,13021 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: retract votes while voting/stake,311660567,794041,8827 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: retract votes while voting/proposal,522683758,1404280,13072 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/creator: remove creator locks when finished/stake,274723092,689511,8741 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/creator: remove creator locks when finished/proposal,408729330,1120641,13014 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove all locks when finished/stake,295504337,748771,8821 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove all locks when finished/proposal,446921523,1231997,13066 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Locked/stake,279914477,703501,8771 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Locked/proposal,408809546,1123608,13041 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Finished/stake,279914477,703501,8771 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Finished/proposal,409375035,1124810,13041 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove vote locks when locked/stake,311660567,794041,8847 -Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove vote locks when locked/proposal,478930935,1325563,13092 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: retract votes while voting/stake,461938807,1152036,11396 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: retract votes while voting/proposal,626309188,1634697,15636 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: retract votes while voting/stake,525430987,1333116,11547 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: retract votes while voting/proposal,760935498,2024590,15737 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/creator: remove creator locks when finished/stake,451556037,1124056,11376 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/creator: remove creator locks when finished/proposal,552160955,1498521,15624 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove all locks when finished/stake,493118527,1242576,11536 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove all locks when finished/proposal,627796553,1718437,15726 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Locked/stake,461938807,1152036,11436 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Locked/proposal,557432556,1515478,15676 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Finished/stake,461938807,1152036,11436 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Finished/proposal,557998045,1516680,15676 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove vote locks when locked/stake,525430987,1333116,11587 -Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove vote locks when locked/proposal,692624355,1906573,15777 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: retract votes while voting/stake,1626894519,4022660,28420 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: retract votes while voting/proposal,1734669700,4394185,32449 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: retract votes while voting/stake,1893561675,4783196,29107 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: retract votes while voting/proposal,2285746634,5994574,32907 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/creator: remove creator locks when finished/stake,1583286885,3905144,28335 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/creator: remove creator locks when finished/proposal,1470123355,3916953,32404 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove all locks when finished/stake,1757849343,4402928,29046 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove all locks when finished/proposal,1785396745,4831653,32846 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Locked/stake,1626894519,4022660,28588 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Locked/proposal,1508619820,4023446,32617 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Finished/stake,1626894519,4022660,28588 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Finished/proposal,1509185309,4024648,32617 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove vote locks when locked/stake,1893561675,4783196,29276 -Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove vote locks when locked/proposal,2060262243,5625037,33076 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Draft/stake",134295013,344673,6634 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Locked/stake",134295013,344673,6634 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Finished/stake",134295013,344673,6634 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Draft/stake",131576318,343069,6636 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Locked/stake",131576318,343069,6636 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Finished/stake",131576318,343069,6636 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Draft/stake",140644231,362781,6651 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Locked/stake",140644231,362781,6651 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Finished/stake",140644231,362781,6651 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",125227100,324961,6616 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",125227100,324961,6616 -"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,125227100,324961,6616 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: Draft/stake,133256736,341875,6632 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: VotingReady/stake,133256736,341875,6632 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: Locked/stake,133256736,341875,6632 -Agora/Proposal/validator/unlocking/illegal/with 1 proposals/creator: retract votes/stake,133256736,341875,6630 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Draft/stake",279914477,703501,8751 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Locked/stake",279914477,703501,8751 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Finished/stake",279914477,703501,8751 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Draft/stake",276144330,711201,8757 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Locked/stake",276144330,711201,8757 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Finished/stake",276144330,711201,8757 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Draft/stake",311660567,794041,8827 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Locked/stake",311660567,794041,8827 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Finished/stake",311660567,794041,8827 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",244398240,620661,8668 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",244398240,620661,8668 -"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,244398240,620661,8668 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: Draft/stake,274723092,689511,8741 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: VotingReady/stake,274723092,689511,8741 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: Locked/stake,274723092,689511,8741 -Agora/Proposal/validator/unlocking/illegal/with 5 proposals/creator: retract votes/stake,274723092,689511,8731 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Draft/stake",461938807,1152036,11396 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Locked/stake",461938807,1152036,11396 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Finished/stake",461938807,1152036,11396 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Draft/stake",456854345,1171366,11407 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Locked/stake",456854345,1171366,11407 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Finished/stake",456854345,1171366,11407 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Draft/stake",525430987,1333116,11547 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Locked/stake",525430987,1333116,11547 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Finished/stake",525430987,1333116,11547 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",393362165,990286,11234 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",393362165,990286,11234 -"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,393362165,990286,11234 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: Draft/stake,451556037,1124056,11376 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: VotingReady/stake,451556037,1124056,11376 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: Locked/stake,451556037,1124056,11376 -Agora/Proposal/validator/unlocking/illegal/with 10 proposals/creator: retract votes/stake,451556037,1124056,11356 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Draft/stake",1626894519,4022660,28420 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Locked/stake",1626894519,4022660,28420 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Finished/stake",1626894519,4022660,28420 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Draft/stake",1613398441,4116422,28481 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Locked/stake",1613398441,4116422,28481 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Finished/stake",1613398441,4116422,28481 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Draft/stake",1893561675,4783196,29107 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Locked/stake",1893561675,4783196,29107 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Finished/stake",1893561675,4783196,29107 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",1346731285,3355886,27707 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",1346731285,3355886,27707 -"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,1346731285,3355886,27707 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: Draft/stake,1583286885,3905144,28335 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: VotingReady/stake,1583286885,3905144,28335 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: Locked/stake,1583286885,3905144,28335 -Agora/Proposal/validator/unlocking/illegal/with 42 proposals/creator: retract votes/stake,1583286885,3905144,28251 +Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/governor validator should pass,124963454,341885,9954 +Agora/Effects/Governor Mutation Effect/validator/valid new governor datum/effect validator should pass,171725573,451393,4885 +Agora/Stake/policy/stakeCreation,56178945,162035,3199 +Agora/Stake/validator/stakeDepositWithdraw deposit,242089408,642275,6224 +Agora/Stake/validator/stakeDepositWithdraw withdraw,242089408,642275,6212 +Agora/Stake/validator/set delegate/override existing delegate,166352470,438155,6255 +Agora/Stake/validator/set delegate/remove existing delegate,154745748,407927,6185 +Agora/Stake/validator/set delegate/set delegate to something,159105650,420263,6185 +Agora/Proposal/policy (proposal creation)/legal/proposal,34052826,101718,2022 +Agora/Proposal/policy (proposal creation)/legal/governor,360154125,923395,10395 +Agora/Proposal/policy (proposal creation)/legal/stake,230569597,600796,6883 +Agora/Proposal/policy (proposal creation)/illegal/invalid next proposal id/proposal,34052826,101718,2022 +Agora/Proposal/policy (proposal creation)/illegal/invalid next proposal id/stake,230569597,600796,6883 +Agora/Proposal/policy (proposal creation)/illegal/use other's stake/proposal,34052826,101718,1991 +Agora/Proposal/policy (proposal creation)/illegal/use other's stake/governor,360154125,923395,10364 +Agora/Proposal/policy (proposal creation)/illegal/altered stake/proposal,34052826,101718,2022 +Agora/Proposal/policy (proposal creation)/illegal/invalid stake locks/proposal,34052826,101718,2030 +Agora/Proposal/policy (proposal creation)/illegal/invalid stake locks/stake,246392309,644746,6891 +Agora/Proposal/policy (proposal creation)/illegal/has reached maximum proposals limit/proposal,34052826,101718,2042 +Agora/Proposal/policy (proposal creation)/illegal/has reached maximum proposals limit/stake,255739921,673228,6913 +Agora/Proposal/policy (proposal creation)/illegal/loose time range/proposal,34052826,101718,2022 +Agora/Proposal/policy (proposal creation)/illegal/loose time range/stake,230569597,600796,6883 +Agora/Proposal/policy (proposal creation)/illegal/open time range/proposal,34052826,101718,2018 +Agora/Proposal/policy (proposal creation)/illegal/open time range/stake,230569597,600796,6879 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/VotingReady/proposal,34052826,101718,2022 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/VotingReady/stake,230569597,600796,6883 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Locked/proposal,34052826,101718,2022 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Locked/stake,230569597,600796,6883 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Finished/proposal,34052826,101718,2022 +Agora/Proposal/policy (proposal creation)/illegal/invalid proposal status/Finished/stake,230569597,600796,6883 +Agora/Proposal/validator/cosignature/legal/with 1 cosigners: proposal,215428122,594883,10482 +Agora/Proposal/validator/cosignature/legal/with 5 cosigners: proposal,522188507,1462750,11847 +Agora/Proposal/validator/cosignature/legal/with 10 cosigners: proposal,1019709027,2836183,13554 +Agora/Proposal/validator/voting/legal/ordinary/proposal,275112748,731990,10840 +Agora/Proposal/validator/voting/legal/ordinary/stake,228856245,593720,6730 +Agora/Proposal/validator/voting/legal/delegate/proposal,280121756,746190,10910 +Agora/Proposal/validator/voting/legal/delegate/stake,243390029,632912,6835 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,248851428,686062,11291 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,225653650,614614,11054 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,238191563,636388,12313 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,531021092,1323582,11414 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,3277 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,244738074,673834,11012 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,221540296,602386,10775 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,234078209,624160,11855 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,525714698,1308152,11049 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,2912 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,215258592,588676,11047 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,213849052,580581,11048 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,225885997,609287,11048 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,211145238,576448,10768 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,209735698,568353,10769 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,221772643,597059,10769 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,3277 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,2912 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,531021092,1323582,11414 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15755485,47872,3277 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,525714698,1308152,11049 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,78441861,206056,2912 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/forget to mint GATs/proposal,234078209,624160,11213 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,234078209,624160,11855 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,2912 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,234078209,624160,11887 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/mint GATs with bad token name/authority,12079326,37748,2944 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/wrong GAT datum/proposal,234078209,624160,11849 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/wrong GAT datum/authority,78441861,206056,2906 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/invalid governor output datum/proposal,234078209,624160,11855 +Agora/Proposal/validator/advancing/with 1 cosigners and 1 effects/illegal/invalid governor output datum/authority,78441861,206056,2912 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,324523538,890364,12207 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,305020646,828904,11970 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,313863673,840690,13229 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,572756320,1440814,12025 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,3888 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,316296830,865908,11646 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,296793938,804448,11409 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,305636965,816234,12490 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,565695313,1419270,11473 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3336 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,290930702,792978,11963 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,289521162,784883,11964 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,301558107,813589,11964 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,282703994,768522,11402 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,281294454,760427,11403 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,293331399,789133,11403 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,3888 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3336 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,572756320,1440814,12025 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15755485,47872,3888 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,565695313,1419270,11473 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3336 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/forget to mint GATs/proposal,305636965,816234,11848 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,305636965,816234,12490 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3336 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,305636965,816234,12522 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3368 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/wrong GAT datum/proposal,305636965,816234,12484 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/wrong GAT datum/authority,78441861,206056,3330 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/invalid governor output datum/proposal,305636965,816234,12490 +Agora/Proposal/validator/advancing/with 1 cosigners and 2 effects/illegal/invalid governor output datum/authority,78441861,206056,3336 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,551539868,1503270,14954 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,543121634,1471774,14717 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,540880003,1453596,15976 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,697962004,1792510,13856 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,5719 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,530973098,1442130,13553 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,522554864,1410634,13316 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,520313233,1392456,14397 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,685637158,1752624,12744 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,4606 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,517947032,1405884,14710 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,516537492,1397789,14711 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,528574437,1426495,14711 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,497380262,1344744,13309 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,495970722,1336649,13310 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,508007667,1365355,13310 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,5719 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,4606 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,697962004,1792510,13856 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15755485,47872,5719 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,685637158,1752624,12744 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,78441861,206056,4606 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/forget to mint GATs/proposal,520313233,1392456,13755 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,520313233,1392456,14397 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,4606 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,520313233,1392456,14429 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/mint GATs with bad token name/authority,12079326,37748,4639 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/wrong GAT datum/proposal,520313233,1392456,14391 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/wrong GAT datum/authority,78441861,206056,4600 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/invalid governor output datum/proposal,520313233,1392456,14397 +Agora/Proposal/validator/advancing/with 1 cosigners and 5 effects/illegal/invalid governor output datum/authority,78441861,206056,4606 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,470437369,1355649,12792 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,256608498,698342,11464 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,269146411,720116,12723 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,545894388,1365446,11687 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,3550 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,466324015,1343421,12511 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,252495144,686114,11184 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,265033057,707888,12264 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,540587994,1350016,11322 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3185 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,246213440,672404,11457 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,244803900,664309,11458 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,256840845,693015,11458 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,242100086,660176,11177 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,240690546,652081,11178 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,252727491,680787,11178 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,3550 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3185 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,545894388,1365446,11687 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15755485,47872,3550 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,540587994,1350016,11322 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3185 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/forget to mint GATs/proposal,265033057,707888,11622 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,265033057,707888,12264 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3185 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,265033057,707888,12296 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3217 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/wrong GAT datum/proposal,265033057,707888,12258 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/wrong GAT datum/authority,78441861,206056,3179 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/invalid governor output datum/proposal,265033057,707888,12264 +Agora/Proposal/validator/advancing/with 5 cosigners and 1 effects/illegal/invalid governor output datum/authority,78441861,206056,3185 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,546109479,1559951,13707 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,335975494,912632,12380 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,344818521,924418,13639 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,587629616,1482678,12298 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,4161 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,537882771,1535495,13147 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,327748786,888176,11819 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,336591813,899962,12900 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,580568609,1461134,11746 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3609 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,321885550,876706,12373 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,320476010,868611,12374 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,332512955,897317,12374 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,313658842,852250,11812 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,312249302,844155,11813 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,324286247,872861,11813 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,4161 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3609 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,587629616,1482678,12298 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15755485,47872,4161 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,580568609,1461134,11746 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3609 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/forget to mint GATs/proposal,336591813,899962,12258 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,336591813,899962,12900 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3609 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,336591813,899962,12932 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3641 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/wrong GAT datum/proposal,336591813,899962,12894 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/wrong GAT datum/authority,78441861,206056,3603 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/invalid governor output datum/proposal,336591813,899962,12900 +Agora/Proposal/validator/advancing/with 5 cosigners and 2 effects/illegal/invalid governor output datum/authority,78441861,206056,3609 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,773125809,2172857,16453 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,574076482,1555502,15126 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,571834851,1537324,16385 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,712835300,1834374,14129 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,5992 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,752559039,2111717,15053 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,553509712,1494362,13725 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,551268081,1476184,14806 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,700510454,1794488,13017 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,4880 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,548901880,1489612,15119 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,547492340,1481517,15120 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,559529285,1510223,15120 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,528335110,1428472,13718 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,526925570,1420377,13719 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,538962515,1449083,13719 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,5992 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,4880 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,712835300,1834374,14129 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15755485,47872,5992 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,700510454,1794488,13017 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,78441861,206056,4880 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/forget to mint GATs/proposal,551268081,1476184,14164 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,551268081,1476184,14806 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,4880 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,551268081,1476184,14838 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/mint GATs with bad token name/authority,12079326,37748,4912 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/wrong GAT datum/proposal,551268081,1476184,14800 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/wrong GAT datum/authority,78441861,206056,4874 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/invalid governor output datum/proposal,551268081,1476184,14806 +Agora/Proposal/validator/advancing/with 5 cosigners and 5 effects/illegal/invalid governor output datum/authority,78441861,206056,4880 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,762258642,2236602,14668 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,295302058,803002,11976 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,307839971,824776,13235 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,564486008,1417776,12029 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,3892 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Draft to VotingReady/proposal,758145288,2224374,14389 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from VotingReady to Locked/proposal,291188704,790774,11696 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/proposal,303726617,812548,12776 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/governor,559179614,1402346,11663 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3526 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,284907000,777064,11969 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,283497460,768969,11970 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,295534405,797675,11970 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Draft to Finished/proposal,280793646,764836,11689 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from VotingReady to Finished/proposal,279384106,756741,11690 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/legal/to failed state/from Locked to Finished/proposal,291421051,785447,11690 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,3892 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3526 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,564486008,1417776,12029 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,15755485,47872,3892 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/governor,559179614,1402346,11663 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3526 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/forget to mint GATs/proposal,303726617,812548,12135 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs for wrong validators/proposal,303726617,812548,12776 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3526 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs with bad token name/proposal,303726617,812548,12808 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3558 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/wrong GAT datum/proposal,303726617,812548,12770 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/wrong GAT datum/authority,78441861,206056,3520 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/invalid governor output datum/proposal,303726617,812548,12776 +Agora/Proposal/validator/advancing/with 10 cosigners and 1 effects/illegal/invalid governor output datum/authority,78441861,206056,3526 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,837930752,2440904,15584 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,374669054,1017292,12891 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,383512081,1029078,14150 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,606221236,1535008,12639 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,4502 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Draft to VotingReady/proposal,829704044,2416448,15024 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from VotingReady to Locked/proposal,366442346,992836,12332 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/proposal,375285373,1004622,13412 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/governor,599160229,1513464,12087 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,3950 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,360579110,981366,12884 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,359169570,973271,12885 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,371206515,1001977,12885 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Draft to Finished/proposal,352352402,956910,12325 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from VotingReady to Finished/proposal,350942862,948815,12326 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/legal/to failed state/from Locked to Finished/proposal,362979807,977521,12326 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,4502 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,3950 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,606221236,1535008,12639 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,15755485,47872,4502 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/governor,599160229,1513464,12087 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/to next state too late/from Locked/authority,78441861,206056,3950 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/forget to mint GATs/proposal,375285373,1004622,12770 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs for wrong validators/proposal,375285373,1004622,13412 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,3950 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs with bad token name/proposal,375285373,1004622,13444 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/mint GATs with bad token name/authority,12079326,37748,3982 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/wrong GAT datum/proposal,375285373,1004622,13406 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/wrong GAT datum/authority,78441861,206056,3944 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/invalid governor output datum/proposal,375285373,1004622,13412 +Agora/Proposal/validator/advancing/with 10 cosigners and 2 effects/illegal/invalid governor output datum/authority,78441861,206056,3950 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,1064947082,3053810,18331 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,612770042,1660162,15638 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,610528411,1641984,16897 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,731426920,1886704,14470 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,15755485,47872,6333 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Draft to VotingReady/proposal,1044380312,2992670,16930 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from VotingReady to Locked/proposal,592203272,1599022,14238 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/proposal,589961641,1580844,15318 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/governor,719102074,1846818,13358 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to next state/from Locked to Finished/authority,78441861,206056,5221 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,587595440,1594272,15631 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,586185900,1586177,15632 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,598222845,1614883,15632 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Draft to Finished/proposal,567028670,1533132,14231 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from VotingReady to Finished/proposal,565619130,1525037,14232 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/legal/to failed state/from Locked to Finished/proposal,577656075,1553743,14232 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,15755485,47872,6333 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/advance finished proposals/(negative test)/authority,78441861,206056,5221 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,731426920,1886704,14470 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,15755485,47872,6333 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/governor,719102074,1846818,13358 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/to next state too late/from Locked/authority,78441861,206056,5221 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/forget to mint GATs/proposal,589961641,1580844,14676 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs for wrong validators/proposal,589961641,1580844,15318 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs for wrong validators/authority,78441861,206056,5221 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs with bad token name/proposal,589961641,1580844,15350 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/mint GATs with bad token name/authority,12079326,37748,5253 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/wrong GAT datum/proposal,589961641,1580844,15312 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/wrong GAT datum/authority,78441861,206056,5215 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/invalid governor output datum/proposal,589961641,1580844,15318 +Agora/Proposal/validator/advancing/with 10 cosigners and 5 effects/illegal/invalid governor output datum/authority,78441861,206056,5221 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: retract votes while voting/stake,188554311,478412,6708 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: retract votes while voting/proposal,259046956,685287,10819 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: retract votes while voting/stake,201139473,514628,6724 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: retract votes while voting/proposal,276546528,734728,10830 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/creator: remove creator locks when finished/stake,187516034,475614,6706 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/creator: remove creator locks when finished/proposal,244224995,653258,10816 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove all locks when finished/stake,191672283,487466,6722 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove all locks when finished/proposal,252462464,677766,10828 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Locked/stake,188554311,478412,6712 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Locked/proposal,240152103,645033,10823 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Finished/stake,188554311,478412,6712 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter: unlock after voting/Finished/proposal,240717592,646235,10823 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove vote locks when locked/stake,201139473,514628,6728 +Agora/Proposal/validator/unlocking/legal/with 1 proposals/voter/creator: remove vote locks when locked/proposal,258217164,695676,10834 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: retract votes while voting/stake,373467087,900120,9009 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: retract votes while voting/proposal,389806176,988063,13096 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: retract votes while voting/stake,436392897,1081200,9085 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: retract votes while voting/proposal,459362076,1188816,13147 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/creator: remove creator locks when finished/stake,368275702,886130,8999 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/creator: remove creator locks when finished/proposal,361007779,929122,13089 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove all locks when finished/stake,389056947,945390,9079 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove all locks when finished/proposal,399199972,1040478,13141 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Locked/stake,373467087,900120,9029 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Locked/proposal,361087995,932089,13116 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Finished/stake,373467087,900120,9029 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter: unlock after voting/Finished/proposal,361653484,933291,13116 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove vote locks when locked/stake,436392897,1081200,9105 +Agora/Proposal/validator/unlocking/legal/with 5 proposals/voter/creator: remove vote locks when locked/proposal,431209384,1134044,13167 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: retract votes while voting/stake,604608057,1427255,11885 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: retract votes while voting/proposal,553255201,1366533,15942 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: retract votes while voting/stake,730459677,1789415,12036 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: retract votes while voting/proposal,687881511,1756426,16043 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/creator: remove creator locks when finished/stake,594225287,1399275,11865 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/creator: remove creator locks when finished/proposal,506986259,1273952,15930 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove all locks when finished/stake,635787777,1517795,12025 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove all locks when finished/proposal,582621857,1493868,16032 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Locked/stake,604608057,1427255,11925 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Locked/proposal,512257860,1290909,15982 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Finished/stake,604608057,1427255,11925 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter: unlock after voting/Finished/proposal,512823349,1292111,15982 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove vote locks when locked/stake,730459677,1789415,12076 +Agora/Proposal/validator/unlocking/legal/with 10 proposals/voter/creator: remove vote locks when locked/proposal,647449659,1682004,16083 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: retract votes while voting/stake,2083910265,4800919,30407 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: retract votes while voting/proposal,1599328961,3788741,34253 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: retract votes while voting/stake,2612487069,6321991,31095 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: retract votes while voting/proposal,2150405895,5389130,34712 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/creator: remove creator locks when finished/stake,2040302631,4683403,30323 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/creator: remove creator locks when finished/proposal,1441248531,3480864,34209 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove all locks when finished/stake,2214865089,5181187,31034 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove all locks when finished/proposal,1756521921,4395564,34651 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Locked/stake,2083910265,4800919,30576 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Locked/proposal,1479744996,3587357,34422 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Finished/stake,2083910265,4800919,30576 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter: unlock after voting/Finished/proposal,1480310485,3588559,34422 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove vote locks when locked/stake,2612487069,6321991,31264 +Agora/Proposal/validator/unlocking/legal/with 42 proposals/voter/creator: remove vote locks when locked/proposal,2031387419,5188948,34881 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Draft/stake",188554311,478412,6708 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Locked/stake",188554311,478412,6708 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Voter , status: Finished/stake",188554311,478412,6708 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Draft/stake",182248232,479196,6710 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Locked/stake",182248232,479196,6710 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Creator , status: Finished/stake",182248232,479196,6710 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Draft/stake",201139473,514628,6724 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Locked/stake",201139473,514628,6724 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Both , status: Finished/stake",201139473,514628,6724 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",169663070,442980,6690 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",169663070,442980,6690 +"Agora/Proposal/validator/unlocking/illegal/with 1 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,169663070,442980,6690 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: Draft/stake,187516034,475614,6706 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: VotingReady/stake,187516034,475614,6706 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/remove creator too early/status: Locked/stake,187516034,475614,6706 +Agora/Proposal/validator/unlocking/illegal/with 1 proposals/creator: retract votes/stake,187516034,475614,6704 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Draft/stake",373467087,900120,9009 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Locked/stake",373467087,900120,9009 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Voter , status: Finished/stake",373467087,900120,9009 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Draft/stake",371406676,951200,9015 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Locked/stake",371406676,951200,9015 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Creator , status: Finished/stake",371406676,951200,9015 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Draft/stake",436392897,1081200,9085 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Locked/stake",436392897,1081200,9085 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Both , status: Finished/stake",436392897,1081200,9085 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",308480866,770120,8926 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",308480866,770120,8926 +"Agora/Proposal/validator/unlocking/illegal/with 5 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,308480866,770120,8926 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: Draft/stake,368275702,886130,8999 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: VotingReady/stake,368275702,886130,8999 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/remove creator too early/status: Locked/stake,368275702,886130,8999 +Agora/Proposal/validator/unlocking/illegal/with 5 proposals/creator: retract votes/stake,368275702,886130,8988 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Draft/stake",604608057,1427255,11885 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Locked/stake",604608057,1427255,11885 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Voter , status: Finished/stake",604608057,1427255,11885 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Draft/stake",607854731,1541205,11896 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Locked/stake",607854731,1541205,11896 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Creator , status: Finished/stake",607854731,1541205,11896 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Draft/stake",730459677,1789415,12036 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Locked/stake",730459677,1789415,12036 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Both , status: Finished/stake",730459677,1789415,12036 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",482003111,1179045,11722 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",482003111,1179045,11722 +"Agora/Proposal/validator/unlocking/illegal/with 10 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,482003111,1179045,11722 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: Draft/stake,594225287,1399275,11865 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: VotingReady/stake,594225287,1399275,11865 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/remove creator too early/status: Locked/stake,594225287,1399275,11865 +Agora/Proposal/validator/unlocking/illegal/with 10 proposals/creator: retract votes/stake,594225287,1399275,11845 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Draft/stake",2083910265,4800919,30407 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Locked/stake",2083910265,4800919,30407 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Voter , status: Finished/stake",2083910265,4800919,30407 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Draft/stake",2121122283,5317237,30469 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Locked/stake",2121122283,5317237,30469 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Creator , status: Finished/stake",2121122283,5317237,30469 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Draft/stake",2612487069,6321991,31095 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Locked/stake",2612487069,6321991,31095 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Both , status: Finished/stake",2612487069,6321991,31095 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Draft/stake",1592545479,3796165,29694 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Locked/stake",1592545479,3796165,29694 +"Agora/Proposal/validator/unlocking/illegal/with 42 proposals/retract votes while not voting/role: Irrelevant , status: Finished/stake",1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Draft retract votes: True/stake,1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Draft retract votes: False/stake,1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: VotingReady retract votes: True/stake,1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: VotingReady retract votes: False/stake,1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Locked retract votes: True/stake,1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Locked retract votes: False/stake,1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Finished retract votes: True/stake,1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/unlock an irrelevant stake/status: Finished retract votes: False/stake,1592545479,3796165,29694 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: Draft/stake,2040302631,4683403,30323 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: VotingReady/stake,2040302631,4683403,30323 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/remove creator too early/status: Locked/stake,2040302631,4683403,30323 +Agora/Proposal/validator/unlocking/illegal/with 42 proposals/creator: retract votes/stake,2040302631,4683403,30239 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct simple,24929970,68747,726 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,47662922,128817,826 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct even though scripts don't match,24929970,68747,725 -Agora/Treasury/Validator/Positive/Allows for effect changes,39447993,107460,1386 -Agora/Treasury/Validator/Positive/Fails when GAT token name is not script address,39447993,107460,1422 +Agora/Treasury/Validator/Positive/Allows for effect changes,39447993,107460,1427 +Agora/Treasury/Validator/Positive/Fails when GAT token name is not script address,39447993,107460,1463 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct simple,24929970,68747,726 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct many inputs,47662922,128817,826 Agora/AuthorityToken/singleAuthorityTokenBurned/Correct even though scripts don't match,24929970,68747,725 -Agora/Governor/policy/totally legal,67006732,183600,2594 -Agora/Governor/validator/mutate/legal,134073807,355373,9431 +Agora/Governor/policy/totally legal,67006732,183600,2631 +Agora/Governor/validator/mutate/legal,134508164,357105,9767 diff --git a/flake.lock b/flake.lock index 97b4e28..7959e70 100644 --- a/flake.lock +++ b/flake.lock @@ -112,22 +112,6 @@ "type": "github" } }, - "HTTP_16": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "HTTP_2": { "flake": false, "locked": { @@ -375,23 +359,6 @@ "type": "github" } }, - "cabal-32_16": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, "cabal-32_2": { "flake": false, "locked": { @@ -647,23 +614,6 @@ "type": "github" } }, - "cabal-34_16": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, "cabal-34_2": { "flake": false, "locked": { @@ -919,23 +869,6 @@ "type": "github" } }, - "cabal-36_16": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, "cabal-36_2": { "flake": false, "locked": { @@ -1184,22 +1117,6 @@ "type": "github" } }, - "cardano-base_16": { - "flake": false, - "locked": { - "lastModified": 1652788515, - "narHash": "sha256-l0KgomRi6YhEoOlFnBYEXhnZO2+PW68rhfUrbMXjhCQ=", - "owner": "input-output-hk", - "repo": "cardano-base", - "rev": "631cb6cf1fa01ab346233b610a38b3b4cba6e6ab", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-base", - "type": "github" - } - }, "cardano-base_2": { "flake": false, "locked": { @@ -1447,23 +1364,6 @@ "type": "github" } }, - "cardano-crypto_16": { - "flake": false, - "locked": { - "lastModified": 1621376239, - "narHash": "sha256-oxIOVlgm07FAEmgGRF1C2me9TXqVxQulEOcJ22zpTRs=", - "owner": "input-output-hk", - "repo": "cardano-crypto", - "rev": "07397f0e50da97eaa0575d93bee7ac4b2b2576ec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-crypto", - "rev": "07397f0e50da97eaa0575d93bee7ac4b2b2576ec", - "type": "github" - } - }, "cardano-crypto_2": { "flake": false, "locked": { @@ -1719,23 +1619,6 @@ "type": "github" } }, - "cardano-prelude_16": { - "flake": false, - "locked": { - "lastModified": 1653997332, - "narHash": "sha256-E+YSfUsvxdoOr7n7fz4xd7zb4z8XBRGNYOKipc2A1pw=", - "owner": "mlabs-haskell", - "repo": "cardano-prelude", - "rev": "713c7ae79a4d538fcd653c976a652913df1567b9", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "repo": "cardano-prelude", - "rev": "713c7ae79a4d538fcd653c976a652913df1567b9", - "type": "github" - } - }, "cardano-prelude_2": { "flake": false, "locked": { @@ -1984,22 +1867,6 @@ "type": "github" } }, - "cardano-repo-tool_16": { - "flake": false, - "locked": { - "lastModified": 1624584417, - "narHash": "sha256-YSepT97PagR/1jTYV/Yer8a2GjFe9+tTwaTCHxuK50M=", - "owner": "input-output-hk", - "repo": "cardano-repo-tool", - "rev": "30e826ed8f00e3e154453b122a6f3d779b2f73ec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-repo-tool", - "type": "github" - } - }, "cardano-repo-tool_2": { "flake": false, "locked": { @@ -2240,22 +2107,6 @@ "type": "github" } }, - "cardano-shell_16": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, "cardano-shell_2": { "flake": false, "locked": { @@ -2489,21 +2340,6 @@ "type": "github" } }, - "flake-utils_16": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "flake-utils_2": { "locked": { "lastModified": 1644229661, @@ -2736,22 +2572,6 @@ "type": "github" } }, - "flat_16": { - "flake": false, - "locked": { - "lastModified": 1651403785, - "narHash": "sha256-g+jGep1IXdw4q01W67J6f6OODY91QzIlW1+Eu8pR+u0=", - "owner": "Quid2", - "repo": "flat", - "rev": "559617e058098b776b431e2a67346ad3adea2440", - "type": "github" - }, - "original": { - "owner": "Quid2", - "repo": "flat", - "type": "github" - } - }, "flat_2": { "flake": false, "locked": { @@ -2999,23 +2819,6 @@ "type": "github" } }, - "ghc-8.6.5-iohk_16": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, "ghc-8.6.5-iohk_2": { "flake": false, "locked": { @@ -3264,22 +3067,6 @@ "type": "github" } }, - "gitignore-nix_16": { - "flake": false, - "locked": { - "lastModified": 1611672876, - "narHash": "sha256-qHu3uZ/o9jBHiA3MEKHJ06k7w4heOhA+4HCSIvflRxo=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "211907489e9f198594c0eb0ca9256a1949c9d412", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, "gitignore-nix_2": { "flake": false, "locked": { @@ -3536,22 +3323,6 @@ "type": "github" } }, - "hackage-nix_16": { - "flake": false, - "locked": { - "lastModified": 1651108473, - "narHash": "sha256-zHGCnBdwKvrcYanjf3GARTWF8V2pyJl1QNONUNZSoc0=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "dbab3b292c3400d028a2257e3acd2ac0249da774", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, "hackage-nix_2": { "flake": false, "locked": { @@ -3776,22 +3547,6 @@ "type": "github" } }, - "hackage_16": { - "flake": false, - "locked": { - "lastModified": 1654046237, - "narHash": "sha256-FpM9zE+Q+WrvCiaZBCg5U1g0bYpiZOCxY8V3R5ydBu8=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "eeae1790b9c6a880d96e4a7214fdf0a73bdd6fc0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, "hackage_2": { "flake": false, "locked": { @@ -4316,39 +4071,6 @@ "type": "github" } }, - "haskell-language-server_31": { - "flake": false, - "locked": { - "lastModified": 1653778781, - "narHash": "sha256-oEVBaYRLjD4gC3vQuT0DCgmCSIeWSwGPVXXSKJDFUK0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "8c47d6ce2a8409a285a3f4c3f0e10c25fb4dd848", - "type": "github" - }, - "original": { - "owner": "haskell", - "repo": "haskell-language-server", - "type": "github" - } - }, - "haskell-language-server_32": { - "flake": false, - "locked": { - "lastModified": 1650980856, - "narHash": "sha256-uiwsfh/K3IABZDYj7JUZNIAPRVqH6g/r8X6QKg8DrZE=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b5a37f7fc360596899cb2945f363030f44156415", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, "haskell-language-server_4": { "flake": false, "locked": { @@ -4616,17 +4338,11 @@ "inputs": { "haskell-nix": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", - "plutarch-numeric", "plutarch", "haskell-nix" ], "nixpkgs": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", - "plutarch-numeric", "plutarch", "nixpkgs" ] @@ -4650,11 +4366,13 @@ "inputs": { "haskell-nix": [ "plutarch-safe-money", + "plutarch-numeric", "plutarch", "haskell-nix" ], "nixpkgs": [ "plutarch-safe-money", + "plutarch-numeric", "plutarch", "nixpkgs" ] @@ -4675,36 +4393,6 @@ } }, "haskell-nix-extra-hackage_15": { - "inputs": { - "haskell-nix": [ - "plutarch-safe-money", - "plutarch-numeric", - "plutarch", - "haskell-nix" - ], - "nixpkgs": [ - "plutarch-safe-money", - "plutarch-numeric", - "plutarch", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1655143375, - "narHash": "sha256-yU+HPLwGPf5IeLj9IBQ1zrPBTYEwvYbuMnADs4T8RLQ=", - "owner": "mlabs-haskell", - "repo": "haskell-nix-extra-hackage", - "rev": "03ee7afdc1ad982e059e3941db80f7a5b30a2757", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "ref": "separate-hackages", - "repo": "haskell-nix-extra-hackage", - "type": "github" - } - }, - "haskell-nix-extra-hackage_16": { "inputs": { "haskell-nix": [ "plutarch-script-export", @@ -5408,9 +5096,6 @@ "nix-tools": "nix-tools_13", "nixpkgs": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", - "plutarch-numeric", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -5467,6 +5152,7 @@ "nix-tools": "nix-tools_14", "nixpkgs": [ "plutarch-safe-money", + "plutarch-numeric", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -5522,8 +5208,7 @@ "hydra": "hydra_15", "nix-tools": "nix-tools_15", "nixpkgs": [ - "plutarch-safe-money", - "plutarch-numeric", + "plutarch-script-export", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -5606,62 +5291,6 @@ "type": "github" } }, - "haskell-nix_31": { - "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_16", - "cardano-shell": "cardano-shell_16", - "flake-utils": "flake-utils_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "hackage": "hackage_16", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_16", - "nix-tools": "nix-tools_16", - "nixpkgs": [ - "plutarch-script-export", - "plutarch", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_32", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_16" - }, - "locked": { - "lastModified": 1654068838, - "narHash": "sha256-GHSufC21DSg8Lz2AzIg3DA9DPxGvLqxGFa/4ADoXRhU=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "fa2fa131fe15e630c91ab4078d12eb32c41f934b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_32": { - "flake": false, - "locked": { - "lastModified": 1651151636, - "narHash": "sha256-WdMP9IMB5kByT0zimDuCYZF/dinRB104H8iDTG/c1Eo=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f707aa2e75c0d33473166abc61c0b43ac6e107c0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, "haskell-nix_4": { "flake": false, "locked": { @@ -5905,7 +5534,7 @@ }, "hercules-ci-effects_13": { "inputs": { - "nixpkgs": "nixpkgs_52" + "nixpkgs": "nixpkgs_51" }, "locked": { "lastModified": 1653841712, @@ -5957,24 +5586,6 @@ "type": "github" } }, - "hercules-ci-effects_16": { - "inputs": { - "nixpkgs": "nixpkgs_63" - }, - "locked": { - "lastModified": 1653841712, - "narHash": "sha256-XBF4i1MuIRAEbFpj3Z3fVaYxzNEsYapyENtw3vG+q1I=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "e14d2131b7c81acca3904b584ac45fb72da64dd2", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, "hercules-ci-effects_2": { "inputs": { "nixpkgs": "nixpkgs_8" @@ -6231,22 +5842,6 @@ "type": "github" } }, - "hpc-coveralls_16": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, "hpc-coveralls_2": { "flake": false, "locked": { @@ -6486,9 +6081,6 @@ "nix": "nix_13", "nixpkgs": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", - "plutarch-numeric", "plutarch", "haskell-nix", "hydra", @@ -6514,6 +6106,7 @@ "nix": "nix_14", "nixpkgs": [ "plutarch-safe-money", + "plutarch-numeric", "plutarch", "haskell-nix", "hydra", @@ -6537,32 +6130,6 @@ "hydra_15": { "inputs": { "nix": "nix_15", - "nixpkgs": [ - "plutarch-safe-money", - "plutarch-numeric", - "plutarch", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_16": { - "inputs": { - "nix": "nix_16", "nixpkgs": [ "plutarch-script-export", "plutarch", @@ -7172,38 +6739,6 @@ "type": "github" } }, - "iohk-nix_31": { - "flake": false, - "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_32": { - "flake": false, - "locked": { - "lastModified": 1626953580, - "narHash": "sha256-iEI9aTOaZMGsjWzcrctrC0usmiagwKT2v1LSDe9/tMU=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "cbd497f5844249ef8fe617166337d59f2a6ebe90", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, "iohk-nix_4": { "flake": false, "locked": { @@ -7326,11 +6861,11 @@ "nixpkgs-2205": "nixpkgs-2205_9" }, "locked": { - "lastModified": 1660314706, - "narHash": "sha256-RpFZJXYHAZZ5TNdxTfcHw39Uz7uQ+nSn/yYHweyL4qA=", + "lastModified": 1660580223, + "narHash": "sha256-r1i92rrUjSBdnQZpHLxeCAtVGMHYqKQHm05mzddIte8=", "owner": "Liqwid-Labs", "repo": "liqwid-nix", - "rev": "a103351651ecb17aef96d94419baf43cc7a1fc93", + "rev": "fa1eeba35b37ac2551a00798dffdf053879699c3", "type": "github" }, "original": { @@ -7383,11 +6918,11 @@ "nixpkgs-2205": "nixpkgs-2205_12" }, "locked": { - "lastModified": 1660251224, - "narHash": "sha256-spBrASFpblmQFYuS4GHv9hI3cLRzh6OG5tNikRmUUZA=", + "lastModified": 1660580223, + "narHash": "sha256-r1i92rrUjSBdnQZpHLxeCAtVGMHYqKQHm05mzddIte8=", "owner": "Liqwid-Labs", "repo": "liqwid-nix", - "rev": "6bf26da0cbd1dea4ea275ffb5d05214a7d3e61be", + "rev": "fa1eeba35b37ac2551a00798dffdf053879699c3", "type": "github" }, "original": { @@ -7398,7 +6933,7 @@ }, "liqwid-nix_14": { "inputs": { - "nixpkgs": "nixpkgs_50" + "nixpkgs": "nixpkgs_53" }, "locked": { "lastModified": 1659383708, @@ -7416,25 +6951,7 @@ }, "liqwid-nix_15": { "inputs": { - "nixpkgs": "nixpkgs_57" - }, - "locked": { - "lastModified": 1659383708, - "narHash": "sha256-eenTO5t4ocK7VzorMUdUyKUoup976cCu5dJcVjebY8E=", - "owner": "Liqwid-Labs", - "repo": "liqwid-nix", - "rev": "c261df76dc31b3dc5dfde7030420e0a6be73f615", - "type": "github" - }, - "original": { - "owner": "Liqwid-Labs", - "repo": "liqwid-nix", - "type": "github" - } - }, - "liqwid-nix_16": { - "inputs": { - "nixpkgs": "nixpkgs_61", + "nixpkgs": "nixpkgs_57", "nixpkgs-2205": "nixpkgs-2205_14" }, "locked": { @@ -7639,11 +7156,11 @@ "plutarch-quickcheck": "plutarch-quickcheck" }, "locked": { - "lastModified": 1660750460, - "narHash": "sha256-6iUX781RPY3tjzIPxDEksjFaoIutYpfgyZLUtEsYvWk=", + "lastModified": 1662479424, + "narHash": "sha256-961woBkTSZn0gV070cI96U7I1a1nuWcXYh+ivRtqbRU=", "owner": "Liqwid-Labs", "repo": "liqwid-plutarch-extra", - "rev": "a736fe6e2fd0de9211195501f54d3b31c11727d2", + "rev": "37365afb68c1241df6ea026cb9a69185fd8f1781", "type": "github" }, "original": { @@ -7695,11 +7212,11 @@ "plutarch-quickcheck": "plutarch-quickcheck_3" }, "locked": { - "lastModified": 1660516131, - "narHash": "sha256-7TSAtRrnFLUxtv/JHvdDC83IeEqNCAeumDrI4AbIOqw=", + "lastModified": 1661992545, + "narHash": "sha256-9kHddGZu1LgrIn1lb6DFo5vbIw5bywWrb3EDn/LrU08=", "owner": "Liqwid-Labs", "repo": "liqwid-plutarch-extra", - "rev": "d227950411dd4d5d2d204b38a04bf24f779e99cc", + "rev": "fb573f7e4754abd0c280e979c51db495d9517e67", "type": "github" }, "original": { @@ -7821,22 +7338,6 @@ "type": "github" } }, - "lowdown-src_16": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, "lowdown-src_2": { "flake": false, "locked": { @@ -8098,22 +7599,6 @@ "type": "github" } }, - "nix-tools_16": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, "nix-tools_2": { "flake": false, "locked": { @@ -8308,7 +7793,7 @@ "nix_13": { "inputs": { "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_51", + "nixpkgs": "nixpkgs_50", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -8368,27 +7853,6 @@ "type": "github" } }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_62", - "nixpkgs-regression": "nixpkgs-regression_16" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", @@ -8683,22 +8147,6 @@ "type": "github" } }, - "nixpkgs-2003_16": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2003_2": { "locked": { "lastModified": 1620055814, @@ -8939,22 +8387,6 @@ "type": "github" } }, - "nixpkgs-2105_16": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2105_2": { "locked": { "lastModified": 1645296114, @@ -9357,11 +8789,11 @@ }, "nixpkgs-2111_25": { "locked": { - "lastModified": 1658346836, - "narHash": "sha256-c9BZZbi0tqCQ4j6CMVDlsut3Q3ET1Fezf+qIslCfkhs=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a1fe662eb26ffc2a036b37c4670392ade632c413", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -9389,11 +8821,11 @@ }, "nixpkgs-2111_27": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1658346836, + "narHash": "sha256-c9BZZbi0tqCQ4j6CMVDlsut3Q3ET1Fezf+qIslCfkhs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "a1fe662eb26ffc2a036b37c4670392ade632c413", "type": "github" }, "original": { @@ -9421,11 +8853,11 @@ }, "nixpkgs-2111_29": { "locked": { - "lastModified": 1658346836, - "narHash": "sha256-c9BZZbi0tqCQ4j6CMVDlsut3Q3ET1Fezf+qIslCfkhs=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a1fe662eb26ffc2a036b37c4670392ade632c413", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -9467,38 +8899,6 @@ "type": "github" } }, - "nixpkgs-2111_31": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_32": { - "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2111_4": { "locked": { "lastModified": 1648744337, @@ -9948,11 +9348,11 @@ }, "nixpkgs-latest_17": { "locked": { - "lastModified": 1660409503, - "narHash": "sha256-On0erFmkW9zR0Y4fqvaMRRrjsSbMLpj6WIwFOOYVVx8=", + "lastModified": 1660672087, + "narHash": "sha256-uX5EkXd93LRccal7P/U97PPzLUQF32RySyg48CjgeIA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1504464e994b7fd286785a9346e6ee38488a572d", + "rev": "ce7b4fd5a67118b869abe57803ccd7e7a4ff6a28", "type": "github" }, "original": { @@ -10091,17 +9491,17 @@ }, "nixpkgs-latest_25": { "locked": { - "lastModified": 1653918805, - "narHash": "sha256-6ahwAnBNGgqSNSn/6RnsxrlFi+fkA+RyT6o/5S1915o=", + "lastModified": 1659622790, + "narHash": "sha256-fYelfx2ScXVprcivGPif+hi9cOZPt3/4wV5rC3AwZDs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a0a69be4b5ee63f1b5e75887a406e9194012b492", + "rev": "cf63df0364f67848083ff75bc8ac9b7ca7aa5a01", "type": "github" }, "original": { "owner": "NixOS", "repo": "nixpkgs", - "rev": "a0a69be4b5ee63f1b5e75887a406e9194012b492", + "rev": "cf63df0364f67848083ff75bc8ac9b7ca7aa5a01", "type": "github" } }, @@ -10123,17 +9523,17 @@ }, "nixpkgs-latest_27": { "locked": { - "lastModified": 1659622790, - "narHash": "sha256-fYelfx2ScXVprcivGPif+hi9cOZPt3/4wV5rC3AwZDs=", + "lastModified": 1653918805, + "narHash": "sha256-6ahwAnBNGgqSNSn/6RnsxrlFi+fkA+RyT6o/5S1915o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cf63df0364f67848083ff75bc8ac9b7ca7aa5a01", + "rev": "a0a69be4b5ee63f1b5e75887a406e9194012b492", "type": "github" }, "original": { "owner": "NixOS", "repo": "nixpkgs", - "rev": "cf63df0364f67848083ff75bc8ac9b7ca7aa5a01", + "rev": "a0a69be4b5ee63f1b5e75887a406e9194012b492", "type": "github" } }, @@ -10155,17 +9555,17 @@ }, "nixpkgs-latest_29": { "locked": { - "lastModified": 1653918805, - "narHash": "sha256-6ahwAnBNGgqSNSn/6RnsxrlFi+fkA+RyT6o/5S1915o=", + "lastModified": 1659622790, + "narHash": "sha256-fYelfx2ScXVprcivGPif+hi9cOZPt3/4wV5rC3AwZDs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a0a69be4b5ee63f1b5e75887a406e9194012b492", + "rev": "cf63df0364f67848083ff75bc8ac9b7ca7aa5a01", "type": "github" }, "original": { "owner": "NixOS", "repo": "nixpkgs", - "rev": "a0a69be4b5ee63f1b5e75887a406e9194012b492", + "rev": "cf63df0364f67848083ff75bc8ac9b7ca7aa5a01", "type": "github" } }, @@ -10201,38 +9601,6 @@ "type": "github" } }, - "nixpkgs-latest_31": { - "locked": { - "lastModified": 1659622790, - "narHash": "sha256-fYelfx2ScXVprcivGPif+hi9cOZPt3/4wV5rC3AwZDs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf63df0364f67848083ff75bc8ac9b7ca7aa5a01", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf63df0364f67848083ff75bc8ac9b7ca7aa5a01", - "type": "github" - } - }, - "nixpkgs-latest_32": { - "locked": { - "lastModified": 1653918805, - "narHash": "sha256-6ahwAnBNGgqSNSn/6RnsxrlFi+fkA+RyT6o/5S1915o=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a0a69be4b5ee63f1b5e75887a406e9194012b492", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a0a69be4b5ee63f1b5e75887a406e9194012b492", - "type": "github" - } - }, "nixpkgs-latest_4": { "locked": { "lastModified": 1653918805, @@ -10434,21 +9802,6 @@ "type": "indirect" } }, - "nixpkgs-regression_16": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, "nixpkgs-regression_2": { "locked": { "lastModified": 1643052045, @@ -10681,22 +10034,6 @@ "type": "github" } }, - "nixpkgs-unstable_16": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-unstable_2": { "locked": { "lastModified": 1648219316, @@ -11508,20 +10845,6 @@ } }, "nixpkgs_50": { - "locked": { - "lastModified": 1657292830, - "narHash": "sha256-ldfVSTveWceDCmW6gf3B4kR6vwmz/XS80y5wsLLHFJU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "334ec8b503c3981e37a04b817a70e8d026ea9e84", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_51": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -11536,7 +10859,7 @@ "type": "indirect" } }, - "nixpkgs_52": { + "nixpkgs_51": { "locked": { "lastModified": 1647297614, "narHash": "sha256-ulGq3W5XsrBMU/u5k9d4oPy65pQTkunR4HKKtTq0RwY=", @@ -11552,7 +10875,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_52": { "flake": false, "locked": { "lastModified": 1645493675, @@ -11569,6 +10892,20 @@ "type": "github" } }, + "nixpkgs_53": { + "locked": { + "lastModified": 1657292830, + "narHash": "sha256-ldfVSTveWceDCmW6gf3B4kR6vwmz/XS80y5wsLLHFJU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "334ec8b503c3981e37a04b817a70e8d026ea9e84", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, "nixpkgs_54": { "locked": { "lastModified": 1632864508, @@ -11693,68 +11030,6 @@ "type": "github" } }, - "nixpkgs_61": { - "locked": { - "lastModified": 1657292830, - "narHash": "sha256-ldfVSTveWceDCmW6gf3B4kR6vwmz/XS80y5wsLLHFJU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "334ec8b503c3981e37a04b817a70e8d026ea9e84", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_62": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_63": { - "locked": { - "lastModified": 1647297614, - "narHash": "sha256-ulGq3W5XsrBMU/u5k9d4oPy65pQTkunR4HKKtTq0RwY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "73ad5f9e147c0d2a2061f1d4bd91e05078dc0b58", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_64": { - "flake": false, - "locked": { - "lastModified": 1645493675, - "narHash": "sha256-9xundbZQbhFodsQRh6QMN1GeSXfo3y/5NL0CZcJULz0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "74b10859829153d5c5d50f7c77b86763759e8654", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_7": { "locked": { "lastModified": 1632864508, @@ -11922,23 +11197,6 @@ "type": "github" } }, - "old-ghc-nix_16": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, "old-ghc-nix_2": { "flake": false, "locked": { @@ -12155,16 +11413,16 @@ "plutarch": "plutarch_2" }, "locked": { - "lastModified": 1660151677, - "narHash": "sha256-sUdXtVdCpm7pgmw0f+b0FyF4Bf0VX+1kTY5U8O3H4uk=", + "lastModified": 1660709756, + "narHash": "sha256-L9S9UYtpeTVGFmKNj8c/H3i17Jx8asCiW43xblN5nBo=", "owner": "Liqwid-Labs", "repo": "plutarch-context-builder", - "rev": "7033ca3c18968cfd206afbbd40861a0a778b414c", + "rev": "cc91cd134ce01e280df3b0ce09a25ede54dbf9b6", "type": "github" }, "original": { "owner": "Liqwid-Labs", - "ref": "staging", + "ref": "main", "repo": "plutarch-context-builder", "type": "github" } @@ -12202,11 +11460,11 @@ "plutarch": "plutarch_6" }, "locked": { - "lastModified": 1660709756, - "narHash": "sha256-L9S9UYtpeTVGFmKNj8c/H3i17Jx8asCiW43xblN5nBo=", + "lastModified": 1663071373, + "narHash": "sha256-/qchzXZUDAjdD3efD53QVwiqk/o6MFQT4IDyndE06ec=", "owner": "Liqwid-Labs", "repo": "plutarch-context-builder", - "rev": "cc91cd134ce01e280df3b0ce09a25ede54dbf9b6", + "rev": "ad1ff6d1714dcdee75d7ce3f772960048fd2b07f", "type": "github" }, "original": { @@ -12259,16 +11517,16 @@ "plutarch": "plutarch_10" }, "locked": { - "lastModified": 1660151677, - "narHash": "sha256-sUdXtVdCpm7pgmw0f+b0FyF4Bf0VX+1kTY5U8O3H4uk=", + "lastModified": 1660709756, + "narHash": "sha256-L9S9UYtpeTVGFmKNj8c/H3i17Jx8asCiW43xblN5nBo=", "owner": "Liqwid-Labs", "repo": "plutarch-context-builder", - "rev": "7033ca3c18968cfd206afbbd40861a0a778b414c", + "rev": "cc91cd134ce01e280df3b0ce09a25ede54dbf9b6", "type": "github" }, "original": { "owner": "Liqwid-Labs", - "ref": "staging", + "ref": "main", "repo": "plutarch-context-builder", "type": "github" } @@ -12433,32 +11691,24 @@ "inputs": { "haskell-language-server": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", "plutarch-numeric", "plutarch", "haskell-language-server" ], "haskell-nix": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", "plutarch-numeric", "plutarch", "haskell-nix" ], "haskell-nix-extra-hackage": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", "plutarch-numeric", "plutarch", "haskell-nix-extra-hackage" ], "iohk-nix": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", "plutarch-numeric", "plutarch", "iohk-nix" @@ -12466,67 +11716,13 @@ "liqwid-nix": "liqwid-nix_14", "nixpkgs": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", "plutarch-numeric", "plutarch", "nixpkgs" ], - "nixpkgs-2111": "nixpkgs-2111_25", - "nixpkgs-latest": "nixpkgs-latest_25", - "plutarch": "plutarch_13" - }, - "locked": { - "lastModified": 1659450964, - "narHash": "sha256-jkxeMZ5ZjEl94MG5jWC+ogeh8m5sCpR7FX2Srtedvc4=", - "owner": "liqwid-labs", - "repo": "plutarch-numeric", - "rev": "65a1a5dec3836cf4e3c793bf780a4ee84b0a9331", - "type": "github" - }, - "original": { - "owner": "liqwid-labs", - "ref": "main", - "repo": "plutarch-numeric", - "type": "github" - } - }, - "plutarch-numeric_5": { - "inputs": { - "haskell-language-server": [ - "plutarch-safe-money", - "plutarch-numeric", - "plutarch", - "haskell-language-server" - ], - "haskell-nix": [ - "plutarch-safe-money", - "plutarch-numeric", - "plutarch", - "haskell-nix" - ], - "haskell-nix-extra-hackage": [ - "plutarch-safe-money", - "plutarch-numeric", - "plutarch", - "haskell-nix-extra-hackage" - ], - "iohk-nix": [ - "plutarch-safe-money", - "plutarch-numeric", - "plutarch", - "iohk-nix" - ], - "liqwid-nix": "liqwid-nix_15", - "nixpkgs": [ - "plutarch-safe-money", - "plutarch-numeric", - "plutarch", - "nixpkgs" - ], - "nixpkgs-2111": "nixpkgs-2111_29", - "nixpkgs-latest": "nixpkgs-latest_29", - "plutarch": "plutarch_15" + "nixpkgs-2111": "nixpkgs-2111_27", + "nixpkgs-latest": "nixpkgs-latest_27", + "plutarch": "plutarch_14" }, "locked": { "lastModified": 1659450964, @@ -12582,16 +11778,16 @@ "plutarch": "plutarch_4" }, "locked": { - "lastModified": 1660589321, + "lastModified": 1660591493, "narHash": "sha256-kKku1VDx+KI/+uCAVJITmSpjYEQUEUyFYXulzqRCJQc=", "owner": "liqwid-labs", "repo": "plutarch-quickcheck", - "rev": "c4da1129e04d3ffd731f0363bff9692e852cc512", + "rev": "6388a7b3312273e80026b8ba6daee7504347b00f", "type": "github" }, "original": { "owner": "liqwid-labs", - "ref": "seungheonoh/pq2", + "ref": "main", "repo": "plutarch-quickcheck", "type": "github" } @@ -12684,20 +11880,19 @@ "nixpkgs-2111": "nixpkgs-2111_23", "nixpkgs-2205": "nixpkgs-2205_13", "nixpkgs-latest": "nixpkgs-latest_23", - "plutarch": "plutarch_12", - "plutarch-numeric": "plutarch-numeric_4" + "plutarch": "plutarch_12" }, "locked": { - "lastModified": 1660326419, - "narHash": "sha256-TNnBCxLEWn9RwSI2kOSVn5U8+0KNGr1D2LKKi6/t9Rw=", + "lastModified": 1660591493, + "narHash": "sha256-kKku1VDx+KI/+uCAVJITmSpjYEQUEUyFYXulzqRCJQc=", "owner": "liqwid-labs", "repo": "plutarch-quickcheck", - "rev": "cb20bae55797b4270f7be4eea4925f673ab7706b", + "rev": "6388a7b3312273e80026b8ba6daee7504347b00f", "type": "github" }, "original": { "owner": "liqwid-labs", - "ref": "seungheonoh/pq2", + "ref": "main", "repo": "plutarch-quickcheck", "type": "github" } @@ -12731,17 +11926,17 @@ "plutarch", "nixpkgs" ], - "nixpkgs-2111": "nixpkgs-2111_27", - "nixpkgs-latest": "nixpkgs-latest_27", - "plutarch": "plutarch_14", - "plutarch-numeric": "plutarch-numeric_5" + "nixpkgs-2111": "nixpkgs-2111_25", + "nixpkgs-latest": "nixpkgs-latest_25", + "plutarch": "plutarch_13", + "plutarch-numeric": "plutarch-numeric_4" }, "locked": { - "lastModified": 1660570250, - "narHash": "sha256-7utEofUeO7KnXwIkbVVeitHY8ct8KKXTzSg9teo8Yf0=", + "lastModified": 1662130349, + "narHash": "sha256-htwVesPYmr4YPpe8Sfs65U1hueSJAy1IEFiLpEETdSQ=", "owner": "Liqwid-Labs", "repo": "plutarch-safe-money", - "rev": "9f163130874eabd1325cba4d6b2b943cec331151", + "rev": "3a4a0301b74478fcc476d0d9b0c1d8718fea6703", "type": "github" }, "original": { @@ -12773,15 +11968,15 @@ "plutarch", "iohk-nix" ], - "liqwid-nix": "liqwid-nix_16", + "liqwid-nix": "liqwid-nix_15", "nixpkgs": [ "plutarch-script-export", "plutarch", "nixpkgs" ], - "nixpkgs-2111": "nixpkgs-2111_31", - "nixpkgs-latest": "nixpkgs-latest_31", - "plutarch": "plutarch_16" + "nixpkgs-2111": "nixpkgs-2111_29", + "nixpkgs-latest": "nixpkgs-latest_29", + "plutarch": "plutarch_15" }, "locked": { "lastModified": 1660213721, @@ -12925,11 +12120,11 @@ "secp256k1-haskell": "secp256k1-haskell_12" }, "locked": { - "lastModified": 1660245357, - "narHash": "sha256-Q93Lq6leerCQedmN+3lJQWotyuGAhW6Sn14EKZd2SsA=", + "lastModified": 1660577072, + "narHash": "sha256-FGx86CLJbkzHnhkTHKb4P37WZmPIJuO/0PjvK6VMnrE=", "owner": "Plutonomicon", "repo": "plutarch-plutus", - "rev": "3fe25c2376bca1a563ceecc273ae31771264e089", + "rev": "79127ad4379828c525200f5e5173894246fa6566", "type": "github" }, "original": { @@ -12946,9 +12141,6 @@ "cardano-prelude": "cardano-prelude_13", "emanote": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", - "plutarch-numeric", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -12961,9 +12153,6 @@ "iohk-nix": "iohk-nix_25", "nixpkgs": [ "plutarch-safe-money", - "liqwid-plutarch-extra", - "plutarch-quickcheck", - "plutarch-numeric", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -12974,16 +12163,16 @@ "secp256k1-haskell": "secp256k1-haskell_13" }, "locked": { - "lastModified": 1659381657, - "narHash": "sha256-W0EWY0DV2idbIeqtJnShVHQ83exME8TK2GYQGbVpz8A=", + "lastModified": 1661965997, + "narHash": "sha256-BFWpV7mpYoCCovyyUh5hraenjLI2bIaUS6oSKrNE2e4=", "owner": "Plutonomicon", "repo": "plutarch-plutus", - "rev": "45b7c77a9ee9bd6c7dc25ddebcc3d12c58c4c3a2", + "rev": "a8888d9a42cd2cdc6bcc6a4399aaa27ff5266798", "type": "github" }, "original": { "owner": "Plutonomicon", - "ref": "staging", + "ref": "master", "repo": "plutarch-plutus", "type": "github" } @@ -12995,6 +12184,7 @@ "cardano-prelude": "cardano-prelude_14", "emanote": [ "plutarch-safe-money", + "plutarch-numeric", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -13007,6 +12197,7 @@ "iohk-nix": "iohk-nix_27", "nixpkgs": [ "plutarch-safe-money", + "plutarch-numeric", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -13037,8 +12228,7 @@ "cardano-crypto": "cardano-crypto_15", "cardano-prelude": "cardano-prelude_15", "emanote": [ - "plutarch-safe-money", - "plutarch-numeric", + "plutarch-script-export", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -13050,8 +12240,7 @@ "hercules-ci-effects": "hercules-ci-effects_15", "iohk-nix": "iohk-nix_29", "nixpkgs": [ - "plutarch-safe-money", - "plutarch-numeric", + "plutarch-script-export", "plutarch", "haskell-nix", "nixpkgs-unstable" @@ -13076,49 +12265,6 @@ "type": "github" } }, - "plutarch_16": { - "inputs": { - "cardano-base": "cardano-base_16", - "cardano-crypto": "cardano-crypto_16", - "cardano-prelude": "cardano-prelude_16", - "emanote": [ - "plutarch-script-export", - "plutarch", - "haskell-nix", - "nixpkgs-unstable" - ], - "flat": "flat_16", - "haskell-language-server": "haskell-language-server_31", - "haskell-nix": "haskell-nix_31", - "haskell-nix-extra-hackage": "haskell-nix-extra-hackage_16", - "hercules-ci-effects": "hercules-ci-effects_16", - "iohk-nix": "iohk-nix_31", - "nixpkgs": [ - "plutarch-script-export", - "plutarch", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-latest": "nixpkgs-latest_32", - "plutus": "plutus_16", - "protolude": "protolude_16", - "secp256k1-haskell": "secp256k1-haskell_16" - }, - "locked": { - "lastModified": 1659381657, - "narHash": "sha256-W0EWY0DV2idbIeqtJnShVHQ83exME8TK2GYQGbVpz8A=", - "owner": "Plutonomicon", - "repo": "plutarch-plutus", - "rev": "45b7c77a9ee9bd6c7dc25ddebcc3d12c58c4c3a2", - "type": "github" - }, - "original": { - "owner": "Plutonomicon", - "ref": "staging", - "repo": "plutarch-plutus", - "type": "github" - } - }, "plutarch_2": { "inputs": { "cardano-base": "cardano-base_2", @@ -13281,16 +12427,16 @@ "secp256k1-haskell": "secp256k1-haskell_5" }, "locked": { - "lastModified": 1660670372, - "narHash": "sha256-y126dkKrKlyU2+w91a1iiEK/W4qDENvn7BxBS4ckVIw=", + "lastModified": 1661965997, + "narHash": "sha256-BFWpV7mpYoCCovyyUh5hraenjLI2bIaUS6oSKrNE2e4=", "owner": "Plutonomicon", "repo": "plutarch-plutus", - "rev": "37f34c6b77f2bb9952c680a8cc31c07df70533ef", + "rev": "a8888d9a42cd2cdc6bcc6a4399aaa27ff5266798", "type": "github" }, "original": { "owner": "Plutonomicon", - "ref": "staging", + "ref": "master", "repo": "plutarch-plutus", "type": "github" } @@ -13455,11 +12601,11 @@ "secp256k1-haskell": "secp256k1-haskell_9" }, "locked": { - "lastModified": 1660245357, - "narHash": "sha256-Q93Lq6leerCQedmN+3lJQWotyuGAhW6Sn14EKZd2SsA=", + "lastModified": 1660670400, + "narHash": "sha256-EoPMfaFCXzcHIiUYprCR51yxLb5mlsfuIJ29adBeyEU=", "owner": "Plutonomicon", "repo": "plutarch-plutus", - "rev": "3fe25c2376bca1a563ceecc273ae31771264e089", + "rev": "f0805033ec7ad83643ba3c90902673ba6e5b90c3", "type": "github" }, "original": { @@ -13580,7 +12726,7 @@ "haskell-language-server": "haskell-language-server_26", "haskell-nix": "haskell-nix_26", "iohk-nix": "iohk-nix_26", - "nixpkgs": "nixpkgs_53", + "nixpkgs": "nixpkgs_52", "pre-commit-hooks-nix": "pre-commit-hooks-nix_13", "sphinxcontrib-haddock": "sphinxcontrib-haddock_13" }, @@ -13650,32 +12796,6 @@ "type": "github" } }, - "plutus_16": { - "inputs": { - "cardano-repo-tool": "cardano-repo-tool_16", - "gitignore-nix": "gitignore-nix_16", - "hackage-nix": "hackage-nix_16", - "haskell-language-server": "haskell-language-server_32", - "haskell-nix": "haskell-nix_32", - "iohk-nix": "iohk-nix_32", - "nixpkgs": "nixpkgs_64", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_16", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_16" - }, - "locked": { - "lastModified": 1656595231, - "narHash": "sha256-3EBhSroECMOSP02qZGT0Zb3QHWibI/tYjdcaT5/YotY=", - "owner": "input-output-hk", - "repo": "plutus", - "rev": "b39a526e983cb931d0cc49b7d073d6d43abd22b5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "plutus", - "type": "github" - } - }, "plutus_2": { "inputs": { "cardano-repo-tool": "cardano-repo-tool_2", @@ -13996,22 +13116,6 @@ "type": "github" } }, - "pre-commit-hooks-nix_16": { - "flake": false, - "locked": { - "lastModified": 1624971177, - "narHash": "sha256-Amf/nBj1E77RmbSSmV+hg6YOpR+rddCbbVgo5C7BS0I=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "397f0713d007250a2c7a745e555fa16c5dc8cadb", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, "pre-commit-hooks-nix_2": { "flake": false, "locked": { @@ -14252,22 +13356,6 @@ "type": "github" } }, - "protolude_16": { - "flake": false, - "locked": { - "lastModified": 1647139352, - "narHash": "sha256-JyHAQfTTUswP8MeGEZibx/2/v01Q7cU5mNpnmDazh24=", - "owner": "protolude", - "repo": "protolude", - "rev": "3e249724fd0ead27370c8c297b1ecd38f92cbd5b", - "type": "github" - }, - "original": { - "owner": "protolude", - "repo": "protolude", - "type": "github" - } - }, "protolude_2": { "flake": false, "locked": { @@ -14542,22 +13630,6 @@ "type": "github" } }, - "secp256k1-haskell_16": { - "flake": false, - "locked": { - "lastModified": 1650290419, - "narHash": "sha256-XrjiqCC7cNTFib78gdMPGNettAkwAxQlbC/n+/mRFt4=", - "owner": "haskoin", - "repo": "secp256k1-haskell", - "rev": "3df963ab6ae14ec122691a97af09a7331511a387", - "type": "github" - }, - "original": { - "owner": "haskoin", - "repo": "secp256k1-haskell", - "type": "github" - } - }, "secp256k1-haskell_2": { "flake": false, "locked": { @@ -14798,22 +13870,6 @@ "type": "github" } }, - "sphinxcontrib-haddock_16": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, "sphinxcontrib-haddock_2": { "flake": false, "locked": { @@ -15054,22 +14110,6 @@ "type": "github" } }, - "stackage_16": { - "flake": false, - "locked": { - "lastModified": 1654046327, - "narHash": "sha256-IxX46Dh4OZpF3k7KPMa3tZSScYYGqFxXpCnMc0QRkuQ=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "cc1d778723fcd431f9b2ed632a50c610c3e38b54", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, "stackage_2": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 80bb012..01deac0 100644 --- a/flake.nix +++ b/flake.nix @@ -15,7 +15,7 @@ # Plutarch and its friends plutarch = { - url = "github:Plutonomicon/plutarch-plutus?ref=staging"; + url = "github:Plutonomicon/plutarch-plutus?ref=master"; inputs.emanote.follows = "plutarch/haskell-nix/nixpkgs-unstable";