store starting time of the proposal in its datum

... hardcoded to 0 upon creation for now
This commit is contained in:
fanghr 2022-05-18 21:01:14 +08:00
parent 92c64f8d7a
commit e8b87654f3
No known key found for this signature in database
GPG key ID: 35CD9A71CD5D5870
7 changed files with 26 additions and 2 deletions

View file

@ -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'

View file

@ -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 []

View file

@ -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

View file

@ -78,6 +78,7 @@ tests =
, (ResultTag 1, AssocMap.empty)
]
, timingConfig = Shared.proposalTimingConfig
, startingTime = Shared.tmpProposalStartingTime
}
)
(Cosign [signer2])

View file

@ -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.

View file

@ -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
]
)
}

View file

@ -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