calculate GAT's symbol based on gov parameters

This commit is contained in:
fanghr 2022-04-20 16:48:09 +08:00
parent b43171010e
commit b67361e7b4
2 changed files with 9 additions and 14 deletions

View file

@ -21,12 +21,14 @@ import Plutarch.Api.V1 (
PTxInInfo (PTxInInfo), PTxInInfo (PTxInInfo),
PTxInfo (..), PTxInfo (..),
PTxOut (..), PTxOut (..),
PMintingPolicy
) )
import Plutarch.Api.V1.AssocMap (PMap (PMap)) import Plutarch.Api.V1.AssocMap (PMap (PMap))
import Plutarch.Api.V1.Value (PValue (PValue)) import Plutarch.Api.V1.Value (PValue (PValue))
import Plutarch.Builtin (pforgetData) import Plutarch.Builtin (pforgetData)
import Plutarch.Monadic qualified as P import Plutarch.Monadic qualified as P
import Plutus.V1.Ledger.Value (AssetClass (AssetClass)) import Plutus.V1.Ledger.Value (AssetClass (AssetClass))
import Plutarch.Api.V1.Extra (passetClass, passetClassValueOf)
import Prelude import Prelude
@ -39,7 +41,6 @@ import Agora.Utils (
psymbolValueOf, psymbolValueOf,
ptokenSpent, ptokenSpent,
) )
import Plutarch.Api.V1.Extra (passetClass, passetClassValueOf)
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -121,9 +122,7 @@ singleAuthorityTokenBurned gatCs txInfo mint = P.do
] ]
-- | Policy given 'AuthorityToken' params. -- | Policy given 'AuthorityToken' params.
authorityTokenPolicy :: authorityTokenPolicy :: AuthorityToken -> ClosedTerm PMintingPolicy
AuthorityToken ->
Term s (PData :--> PScriptContext :--> PUnit)
authorityTokenPolicy params = authorityTokenPolicy params =
plam $ \_redeemer ctx' -> plam $ \_redeemer ctx' ->
pmatch ctx' $ \(PScriptContext ctx') -> P.do pmatch ctx' $ \(PScriptContext ctx') -> P.do
@ -149,6 +148,6 @@ authorityTokenPolicy params =
authorityTokensValidIn authorityTokensValidIn
# ownSymbol # ownSymbol
# txOut # txOut
pconstant () popaque $ pconstant ()
) )
(pconstant ()) (popaque $ pconstant ())

View file

@ -149,8 +149,6 @@ PlutusTx.makeIsDataIndexed
data Governor = Governor data Governor = Governor
{ stORef :: TxOutRef { stORef :: TxOutRef
-- ^ An utxo, which will be spent to mint the state token for the governor validator. -- ^ An utxo, which will be spent to mint the state token for the governor validator.
, gatSymbol :: CurrencySymbol
-- ^ The symbol of the Governance Authority Token.
} }
governorStateTokenName :: TokenName governorStateTokenName :: TokenName
@ -353,7 +351,7 @@ governorValidator params =
passert "No token should be minted/burnt other than GAT" $ passert "No token should be minted/burnt other than GAT" $
containsSingleCurrencySymbol # mint containsSingleCurrencySymbol # mint
popaque $ singleAuthorityTokenBurned gatSym ctx.txInfo mint popaque $ singleAuthorityTokenBurned (pconstant authorityTokenSymbol) ctx.txInfo mint
where where
stateTokenAssetClass :: AssetClass stateTokenAssetClass :: AssetClass
stateTokenAssetClass = governorStateTokenAssetClass params stateTokenAssetClass = governorStateTokenAssetClass params
@ -389,12 +387,10 @@ governorValidator params =
} }
authorityTokenSymbol :: CurrencySymbol authorityTokenSymbol :: CurrencySymbol
authorityTokenSymbol = undefined authorityTokenSymbol = mintingPolicySymbol policy
where where
policy = authorityTokenPolicy authorityTokenParams policy :: MintingPolicy
policy = mkMintingPolicy $ authorityTokenPolicy authorityTokenParams
gatSym :: Term s PCurrencySymbol
gatSym = pconstant params.gatSymbol
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------