From e8b87654f3cce9f8c3300061bcdc2c9a377b74ca Mon Sep 17 00:00:00 2001 From: fanghr Date: Wed, 18 May 2022 21:01:14 +0800 Subject: [PATCH] store starting time of the proposal in its datum ... hardcoded to 0 upon creation for now --- agora-sample/Sample/Governor.hs | 3 +++ agora-sample/Sample/Proposal.hs | 2 ++ agora-sample/Sample/Shared.hs | 6 ++++++ agora-test/Spec/Proposal.hs | 1 + agora/Agora/Governor/Scripts.hs | 8 +++++++- agora/Agora/Proposal.hs | 5 ++++- agora/Agora/Proposal/Scripts.hs | 3 +++ 7 files changed, 26 insertions(+), 2 deletions(-) diff --git a/agora-sample/Sample/Governor.hs b/agora-sample/Sample/Governor.hs index f1c8f38..27d867b 100644 --- a/agora-sample/Sample/Governor.hs +++ b/agora-sample/Sample/Governor.hs @@ -80,6 +80,7 @@ import Sample.Shared ( stake, stakeAddress, stakeAssetClass, + tmpProposalStartingTime, ) import Test.Util (datumPair, toDatumHash) @@ -236,6 +237,7 @@ createProposal = , thresholds = defaultProposalThresholds , votes = emptyVotesFor effects , timingConfig = proposalTimingConfig + , startingTime = tmpProposalStartingTime } ) proposalOutput :: TxOut @@ -411,6 +413,7 @@ mintGATs = , thresholds = defaultProposalThresholds , votes = proposalVotes , timingConfig = proposalTimingConfig + , startingTime = tmpProposalStartingTime } proposalInputDatum :: Datum proposalInputDatum = Datum $ toBuiltinData proposalInputDatum' diff --git a/agora-sample/Sample/Proposal.hs b/agora-sample/Sample/Proposal.hs index 7853606..329d862 100644 --- a/agora-sample/Sample/Proposal.hs +++ b/agora-sample/Sample/Proposal.hs @@ -75,6 +75,7 @@ proposalCreation = , thresholds = defaultProposalThresholds , votes = emptyVotesFor effects , timingConfig = proposalTimingConfig + , startingTime = tmpProposalStartingTime } ) @@ -169,6 +170,7 @@ cosignProposal newSigners = , thresholds = defaultProposalThresholds , votes = emptyVotesFor effects , timingConfig = proposalTimingConfig + , startingTime = tmpProposalStartingTime } stakeDatum :: StakeDatum stakeDatum = StakeDatum (Tagged 50_000_000) signer2 [] diff --git a/agora-sample/Sample/Shared.hs b/agora-sample/Sample/Shared.hs index 71f2192..1f30fb0 100644 --- a/agora-sample/Sample/Shared.hs +++ b/agora-sample/Sample/Shared.hs @@ -37,6 +37,7 @@ module Sample.Shared ( proposalValidatorHash, proposalValidatorAddress, proposalTimingConfig, + tmpProposalStartingTime, -- ** Authority authorityToken, @@ -76,6 +77,7 @@ import Agora.Proposal ( ProposalThresholds (..), ) import Agora.Proposal.Time ( + ProposalStartingTime (..), ProposalTimingConfig (..), ) import Agora.Stake (Stake (..)) @@ -197,6 +199,10 @@ proposalTimingConfig = , executingTime = 3000 } +-- FIXME: should be removed. +tmpProposalStartingTime :: ProposalStartingTime +tmpProposalStartingTime = ProposalStartingTime 0 + ------------------------------------------------------------------ treasuryOut :: TxOut diff --git a/agora-test/Spec/Proposal.hs b/agora-test/Spec/Proposal.hs index a9caafb..646d96e 100644 --- a/agora-test/Spec/Proposal.hs +++ b/agora-test/Spec/Proposal.hs @@ -78,6 +78,7 @@ tests = , (ResultTag 1, AssocMap.empty) ] , timingConfig = Shared.proposalTimingConfig + , startingTime = Shared.tmpProposalStartingTime } ) (Cosign [signer2]) diff --git a/agora/Agora/Governor/Scripts.hs b/agora/Agora/Governor/Scripts.hs index d424db5..d1b176e 100644 --- a/agora/Agora/Governor/Scripts.hs +++ b/agora/Agora/Governor/Scripts.hs @@ -126,7 +126,7 @@ import Plutarch.TryFrom (ptryFrom) -------------------------------------------------------------------------------- -import Agora.Proposal.Time (ProposalTimingConfig (..)) +import Agora.Proposal.Time (ProposalStartingTime (..), ProposalTimingConfig (..)) import Plutus.V1.Ledger.Api ( CurrencySymbol (..), MintingPolicy, @@ -579,6 +579,8 @@ governorValidator gov = .& #votes .= proposalInputDatumF.votes -- FIXME: copy from the governor datum .& #timingConfig .= pdata (pconstant tmpTimingConfig) + -- FIXME: calculate from 'txInfoValidRange' + .& #startingTime .= pdata (pconstant tmpProposalStartingTime) ) tcassert "Unexpected output proposal datum" $ @@ -740,6 +742,10 @@ governorValidator gov = , executingTime = 3000 } + -- TODO: remove this. + tmpProposalStartingTime :: ProposalStartingTime + tmpProposalStartingTime = ProposalStartingTime 0 + -------------------------------------------------------------------------------- -- | Get the 'CurrencySymbol' of GST. diff --git a/agora/Agora/Proposal.hs b/agora/Agora/Proposal.hs index 21407d3..0da7627 100644 --- a/agora/Agora/Proposal.hs +++ b/agora/Agora/Proposal.hs @@ -45,7 +45,7 @@ import PlutusTx.AssocMap qualified as AssocMap -------------------------------------------------------------------------------- -import Agora.Proposal.Time (PProposalTimingConfig, ProposalTimingConfig) +import Agora.Proposal.Time (PProposalStartingTime, PProposalTimingConfig, ProposalStartingTime, ProposalTimingConfig) import Agora.SafeMoney (GTTag) import Agora.Utils (pkeysEqual, pnotNull) import Control.Applicative (Const) @@ -190,6 +190,8 @@ data ProposalDatum = ProposalDatum -- ^ Vote tally on the proposal , timingConfig :: ProposalTimingConfig -- ^ Timing configuration copied over on initialization. + , startingTime :: ProposalStartingTime + -- ^ The time upon the creation of the proposal. } deriving stock (Eq, Show, GHC.Generic) @@ -359,6 +361,7 @@ newtype PProposalDatum (s :: S) = PProposalDatum , "thresholds" ':= PProposalThresholds , "votes" ':= PProposalVotes , "timingConfig" ':= PProposalTimingConfig + , "startingTime" ':= PProposalStartingTime ] ) } diff --git a/agora/Agora/Proposal/Scripts.hs b/agora/Agora/Proposal/Scripts.hs index d56e146..44ab890 100644 --- a/agora/Agora/Proposal/Scripts.hs +++ b/agora/Agora/Proposal/Scripts.hs @@ -152,6 +152,7 @@ proposalValidator proposal = , "thresholds" , "votes" , "timingConfig" + , "startingTime" ] proposalDatum @@ -255,6 +256,7 @@ proposalValidator proposal = .& #thresholds .= proposalF.thresholds .& #votes .= pdata expectedNewVotes .& #timingConfig .= proposalF.timingConfig + .& #startingTime .= proposalF.startingTime ) tcassert "Invalid output proposal" $ proposalOut #== expectedProposalOut @@ -345,6 +347,7 @@ proposalValidator proposal = .& #thresholds .= proposalF.thresholds .& #votes .= proposalF.votes .& #timingConfig .= proposalF.timingConfig + .& #startingTime .= proposalF.startingTime ) ) in foldr1