add changelog entry for Credential change

This commit is contained in:
Emily Martins 2022-08-17 17:17:30 +02:00
parent 4ca1f5933b
commit 566d1a3b9d
4 changed files with 28 additions and 26 deletions

View file

@ -6,6 +6,17 @@ This format is based on [Keep A Changelog](https://keepachangelog.com/en/1.0.0).
### Modified
- Use `Credential` instead of `PubKeyHash`
Included by [#158](https://github.com/Liqwid-Labs/agora/pull/158).
NOTE: This changes the representation of the following types:
- `PStakeDatum`
- `PStakeRedeemer`
- `PProposalDatum`
- `PProposalRedeemer`
- Use plutus v2 types.
Included by [#156](https://github.com/Liqwid-Labs/agora/pull/156).

View file

@ -5,30 +5,21 @@ Description: Functions for dealing with generalized credentials.
Functions for dealing with generalized credentials.
-}
module Agora.Credential (PAuthorizationCredential, AuthorizationCredential, pauthorizedBy, authorizationContext) where
module Agora.Credential (
pauthorizedBy,
authorizationContext,
) where
import GHC.Records (HasField)
import Plutarch.Api.V1 (PCredential (..), PPubKeyHash)
import Plutarch.Api.V2 (PTxInInfo (..))
import Plutarch.Api.V1 (PCredential (PPubKeyCredential, PScriptCredential), PPubKeyHash)
import Plutarch.Api.V2 (PTxInInfo)
import Plutarch.Extra.ScriptContext (ptxSignedBy)
import Plutarch.Extra.TermCont (pmatchC)
import PlutusLedgerApi.V2 (Credential)
{- | This type represents a general purpose authority which can be used
to check for approval.
The most basic case is simply a PubKeyCredential.
@since 1.0.0
-}
type AuthorizationCredential =
Credential
type PAuthorizationCredential =
PCredential
{- | Context required in order to check 'AuthorizationCredential'.
Construct using 'authorizationContext'.
@since 1.0.0
-}
data PAuthorizationContext (s :: S) = PAuthorizationContext
@ -55,7 +46,7 @@ instance DerivePlutusType PAuthorizationContext where
@since 1.0.0
-}
authorizationContext ::
forall {r} {s :: S}.
forall (s :: S) r.
( HasField "inputs" r (Term s (PBuiltinList PTxInInfo))
, HasField "signatories" r (Term s (PBuiltinList (PAsData PPubKeyHash)))
) =>
@ -68,7 +59,7 @@ authorizationContext f =
@since 1.0.0
-}
pauthorizedBy :: forall (s :: S). Term s (PAuthorizationContext :--> PAuthorizationCredential :--> PBool)
pauthorizedBy :: forall (s :: S). Term s (PAuthorizationContext :--> PCredential :--> PBool)
pauthorizedBy = phoistAcyclic $
plam $ \ctx credential -> unTermCont $ do
ctxF <- pmatchC ctx

View file

@ -42,7 +42,6 @@ module Agora.Proposal (
pisProposalThresholdsValid,
) where
import Agora.Credential (AuthorizationCredential, PAuthorizationCredential)
import Agora.Plutarch.Orphans ()
import Agora.Proposal.Time (
PProposalStartingTime,
@ -53,7 +52,7 @@ import Agora.Proposal.Time (
import Agora.SafeMoney (GTTag)
import Data.Tagged (Tagged)
import Generics.SOP qualified as SOP
import Plutarch.Api.V1 (PMap, PValidatorHash)
import Plutarch.Api.V1 (PCredential, PMap, PValidatorHash)
import Plutarch.Api.V1.AssocMap qualified as PAssocMap
import Plutarch.Api.V2 (
KeyGuarantees (Unsorted),
@ -347,7 +346,7 @@ data ProposalRedeemer
-- provided enough GT is shared among them.
--
-- This list should be sorted in ascending order.
Cosign [AuthorizationCredential]
Cosign [Credential]
| -- | Allow unlocking one or more stakes with votes towards particular 'ResultTag'.
Unlock
| -- | Advance the proposal, performing the required checks for whether that is legal.
@ -617,7 +616,7 @@ newtype PProposalDatum (s :: S) = PProposalDatum
'[ "proposalId" ':= PProposalId
, "effects" ':= PMap 'Unsorted PResultTag PProposalEffectGroup
, "status" ':= PProposalStatus
, "cosigners" ':= PBuiltinList (PAsData PAuthorizationCredential)
, "cosigners" ':= PBuiltinList (PAsData PCredential)
, "thresholds" ':= PProposalThresholds
, "votes" ':= PProposalVotes
, "timingConfig" ':= PProposalTimingConfig
@ -656,7 +655,7 @@ deriving via (DerivePConstantViaDataList ProposalDatum PProposalDatum) instance
-}
data PProposalRedeemer (s :: S)
= PVote (Term s (PDataRecord '["resultTag" ':= PResultTag]))
| PCosign (Term s (PDataRecord '["newCosigners" ':= PBuiltinList (PAsData PAuthorizationCredential)]))
| PCosign (Term s (PDataRecord '["newCosigners" ':= PBuiltinList (PAsData PCredential)]))
| PUnlock (Term s (PDataRecord '[]))
| PAdvanceProposal (Term s (PDataRecord '[]))
deriving stock

View file

@ -10,7 +10,7 @@ module Agora.Proposal.Scripts (
proposalPolicy,
) where
import Agora.Credential (PAuthorizationCredential, authorizationContext, pauthorizedBy)
import Agora.Credential (authorizationContext, pauthorizedBy)
import Agora.Proposal (
PProposalDatum (PProposalDatum),
PProposalRedeemer (..),
@ -40,6 +40,7 @@ import Agora.Stake (
import Agora.Utils (
pltAsData,
)
import Plutarch.Api.V1 (PCredential)
import Plutarch.Api.V2 (
PDatumHash,
PMintingPolicy,
@ -299,7 +300,7 @@ proposalValidator as maximumCosigners =
Term
_
( ( PInteger
:--> PBuiltinList (PAsData PAuthorizationCredential)
:--> PBuiltinList (PAsData PCredential)
:--> PUnit
)
:--> PUnit