export alwaysSucceedsPolicy as a standalone builder

This commit is contained in:
Hongrui Fang 2023-01-23 20:16:46 +08:00
parent 563746f1ef
commit c547494c93
3 changed files with 27 additions and 13 deletions

View file

@ -8,13 +8,16 @@
-} -}
module Main (main) where module Main (main) where
import Agora.Bootstrap (alwaysSucceedsPolicyRoledScript)
import Agora.Bootstrap qualified as Bootstrap import Agora.Bootstrap qualified as Bootstrap
import Agora.Linker (linker) import Agora.Linker (linker)
import Data.Aeson qualified as Aeson
import Data.Default (def) import Data.Default (def)
import Plutarch (Config (Config), TracingMode (DoTracingAndBinds)) import Plutarch (Config (Config), TracingMode (DoTracingAndBinds))
import ScriptExport.Export (exportMain) import ScriptExport.Export (exportMain)
import ScriptExport.Types ( import ScriptExport.Types (
Builders, Builders,
insertBuilder,
insertScriptExportWithLinker, insertScriptExportWithLinker,
) )
@ -31,4 +34,9 @@ builders =
(Config DoTracingAndBinds) (Config DoTracingAndBinds)
) )
linker linker
, -- Note: To be compatible with current off-chain setup, we are not using
-- static builder here.
insertBuilder
"alwaysSucceedsPolicy"
(const @_ @Aeson.Value alwaysSucceedsPolicyRoledScript)
] ]

View file

@ -4,7 +4,7 @@
Initialize a governance system Initialize a governance system
-} -}
module Agora.Bootstrap (agoraScripts) where module Agora.Bootstrap (agoraScripts, alwaysSucceedsPolicyRoledScript) where
import Agora.AuthorityToken (authorityTokenPolicy) import Agora.AuthorityToken (authorityTokenPolicy)
import Agora.Effect.GovernorMutation (mutateGovernorValidator) import Agora.Effect.GovernorMutation (mutateGovernorValidator)
@ -18,9 +18,10 @@ import Data.Map (fromList)
import Data.Text (Text, unpack) import Data.Text (Text, unpack)
import Plutarch (Config) import Plutarch (Config)
import Plutarch.Api.V2 (PMintingPolicy) import Plutarch.Api.V2 (PMintingPolicy)
import Ply (TypedScriptEnvelope) import Plutarch.Extra.Compile (mustCompile)
import Ply (ScriptRole (MintingPolicyRole), TypedScriptEnvelope)
import Ply.Plutarch.TypedWriter (TypedWriter, mkEnvelope) import Ply.Plutarch.TypedWriter (TypedWriter, mkEnvelope)
import ScriptExport.ScriptInfo (RawScriptExport (..)) import ScriptExport.ScriptInfo (RawScriptExport (..), RoledScript (..))
{- | Parameterize core scripts, given the 'Agora.Governor.Governor' {- | Parameterize core scripts, given the 'Agora.Governor.Governor'
parameters and plutarch configurations. parameters and plutarch configurations.
@ -42,10 +43,6 @@ agoraScripts conf =
, envelope "agora:noOpValidator" noOpValidator , envelope "agora:noOpValidator" noOpValidator
, envelope "agora:treasuryWithdrawalValidator" treasuryWithdrawalValidator , envelope "agora:treasuryWithdrawalValidator" treasuryWithdrawalValidator
, envelope "agora:mutateGovernorValidator" mutateGovernorValidator , envelope "agora:mutateGovernorValidator" mutateGovernorValidator
, -- NOTE(Emily, Jan 3rd 2023): Adding this in here because it's useful for testnet GT.
-- In reality, it shouldn't be used by anyone on mainnet, but removing it is not
-- productive for off-chain testing.
envelope @PMintingPolicy "agora:alwaysSucceedsPolicy" $ plam $ \_ _ -> popaque $ pcon PUnit
] ]
where where
envelope :: envelope ::
@ -55,3 +52,18 @@ agoraScripts conf =
ClosedTerm pt -> ClosedTerm pt ->
(Text, TypedScriptEnvelope) (Text, TypedScriptEnvelope)
envelope d t = (d, either (error . unpack) id $ mkEnvelope conf d t) envelope d t = (d, either (error . unpack) id $ mkEnvelope conf d t)
{- | A minting policy that always succeeds.
NOTE(Emily, Jan 3rd 2023): Adding this in here because it's useful for testnet GT.
In reality, it shouldn't be used by anyone on mainnet, but removing it is not
productive for off-chain testing.
@since 1.0.0
-}
alwaysSucceedsPolicyRoledScript :: RoledScript
alwaysSucceedsPolicyRoledScript =
RoledScript
{ script = mustCompile @PMintingPolicy $ plam $ \_ _ -> popaque $ pcon PUnit
, role = MintingPolicyRole
}

View file

@ -114,11 +114,6 @@ linker = do
, Tagged AuthorityTokenTag CurrencySymbol , Tagged AuthorityTokenTag CurrencySymbol
] ]
"agora:mutateGovernorValidator" "agora:mutateGovernorValidator"
alwaysSucceedsPolicy' <-
fetchTS
@MintingPolicyRole
@'[]
"agora:alwaysSucceedsPolicy"
governor <- getParam governor <- getParam
@ -185,7 +180,6 @@ linker = do
, ("agora:noOpValidator", toRoledScript noOpVal') , ("agora:noOpValidator", toRoledScript noOpVal')
, ("agora:treasuryWithdrawalValidator", toRoledScript treaWithdrawalVal') , ("agora:treasuryWithdrawalValidator", toRoledScript treaWithdrawalVal')
, ("agora:mutateGovernorValidator", toRoledScript mutateGovVal') , ("agora:mutateGovernorValidator", toRoledScript mutateGovVal')
, ("agora:alwaysSucceedsPolicy", toRoledScript alwaysSucceedsPolicy')
] ]
, information = , information =
AgoraScriptInfo AgoraScriptInfo