parameterize PST policy only with assetclass of GST
...to resolve the cyclic reference between SST and PST
This commit is contained in:
parent
afa8c7c542
commit
62bd2dee28
3 changed files with 16 additions and 14 deletions
|
|
@ -119,7 +119,7 @@ proposal =
|
||||||
}
|
}
|
||||||
|
|
||||||
proposalPolicySymbol :: CurrencySymbol
|
proposalPolicySymbol :: CurrencySymbol
|
||||||
proposalPolicySymbol = mintingPolicySymbol $ mkMintingPolicy (proposalPolicy proposal)
|
proposalPolicySymbol = mintingPolicySymbol $ mkMintingPolicy (proposalPolicy proposal.governorSTAssetClass)
|
||||||
|
|
||||||
-- | A sample 'PubKeyHash'.
|
-- | A sample 'PubKeyHash'.
|
||||||
signer :: PubKeyHash
|
signer :: PubKeyHash
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ module Agora.Governor.Scripts (
|
||||||
stakeValidatorHashFromGovernor,
|
stakeValidatorHashFromGovernor,
|
||||||
proposalFromGovernor,
|
proposalFromGovernor,
|
||||||
proposalValidatorHashFromGovernor,
|
proposalValidatorHashFromGovernor,
|
||||||
|
proposalSTSymbolFromGovernor,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
@ -698,18 +699,17 @@ atSymbolFromGovernor gov = mintingPolicySymbol policy
|
||||||
at = AuthorityToken $ governorSTAssetClassFromGovernor gov
|
at = AuthorityToken $ governorSTAssetClassFromGovernor gov
|
||||||
policy = mkMintingPolicy $ authorityTokenPolicy at
|
policy = mkMintingPolicy $ authorityTokenPolicy at
|
||||||
|
|
||||||
|
proposalSTSymbolFromGovernor :: Governor -> CurrencySymbol
|
||||||
|
proposalSTSymbolFromGovernor gov = symbol
|
||||||
|
where
|
||||||
|
gstAC = governorSTAssetClassFromGovernor gov
|
||||||
|
policy = mkMintingPolicy $ proposalPolicy gstAC
|
||||||
|
symbol = mintingPolicySymbol policy
|
||||||
|
|
||||||
proposalSTAssetClassFromGovernor :: Governor -> AssetClass
|
proposalSTAssetClassFromGovernor :: Governor -> AssetClass
|
||||||
proposalSTAssetClassFromGovernor gov = AssetClass (symbol, "")
|
proposalSTAssetClassFromGovernor gov = AssetClass (symbol, "")
|
||||||
where
|
where
|
||||||
gstAC = governorSTAssetClassFromGovernor gov
|
symbol = proposalSTSymbolFromGovernor gov
|
||||||
-- JUSTIFICATION: the PST policy doesn't care about the following two fields at all.
|
|
||||||
-- FIXME: refactor PST policy, parameterize it only with GST assetclass or something.
|
|
||||||
sstAC = AssetClass ("", "")
|
|
||||||
mc = -1
|
|
||||||
params = Proposal gstAC sstAC mc
|
|
||||||
|
|
||||||
policy = mkMintingPolicy $ proposalPolicy params
|
|
||||||
symbol = mintingPolicySymbol policy
|
|
||||||
|
|
||||||
stakeSTSymbolFromGovernor :: Governor -> CurrencySymbol
|
stakeSTSymbolFromGovernor :: Governor -> CurrencySymbol
|
||||||
stakeSTSymbolFromGovernor gov = mintingPolicySymbol policy
|
stakeSTSymbolFromGovernor gov = mintingPolicySymbol policy
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,11 @@ import Plutus.V1.Ledger.Value (AssetClass (AssetClass))
|
||||||
|
|
||||||
- This policy cannot be burned.
|
- This policy cannot be burned.
|
||||||
-}
|
-}
|
||||||
proposalPolicy :: Proposal -> ClosedTerm PMintingPolicy
|
proposalPolicy ::
|
||||||
proposalPolicy proposal =
|
-- | The assetclass of GST, see 'Agora.Governor.Scripts.governorPolicy'.
|
||||||
|
AssetClass ->
|
||||||
|
ClosedTerm PMintingPolicy
|
||||||
|
proposalPolicy (AssetClass (govCs, govTn)) =
|
||||||
plam $ \_redeemer ctx' -> P.do
|
plam $ \_redeemer ctx' -> P.do
|
||||||
PScriptContext ctx' <- pmatch ctx'
|
PScriptContext ctx' <- pmatch ctx'
|
||||||
ctx <- pletFields @'["txInfo", "purpose"] ctx'
|
ctx <- pletFields @'["txInfo", "purpose"] ctx'
|
||||||
|
|
@ -69,7 +72,6 @@ proposalPolicy proposal =
|
||||||
|
|
||||||
let inputs = txInfo.inputs
|
let inputs = txInfo.inputs
|
||||||
mintedValue = pfromData txInfo.mint
|
mintedValue = pfromData txInfo.mint
|
||||||
AssetClass (govCs, govTn) = proposal.governorSTAssetClass
|
|
||||||
|
|
||||||
PMinting ownSymbol' <- pmatch $ pfromData ctx.purpose
|
PMinting ownSymbol' <- pmatch $ pfromData ctx.purpose
|
||||||
let mintedProposalST =
|
let mintedProposalST =
|
||||||
|
|
@ -145,7 +147,7 @@ proposalValidator proposal =
|
||||||
ownAddress <- plet $ txOutF.address
|
ownAddress <- plet $ txOutF.address
|
||||||
|
|
||||||
let stCurrencySymbol =
|
let stCurrencySymbol =
|
||||||
pconstant $ getMintingPolicySymbol (proposalPolicy proposal)
|
pconstant $ getMintingPolicySymbol (proposalPolicy proposal.governorSTAssetClass)
|
||||||
valueSpent <- plet $ pvalueSpent # txInfoF.inputs
|
valueSpent <- plet $ pvalueSpent # txInfoF.inputs
|
||||||
spentST <- plet $ psymbolValueOf # stCurrencySymbol #$ valueSpent
|
spentST <- plet $ psymbolValueOf # stCurrencySymbol #$ valueSpent
|
||||||
let AssetClass (stakeSym, stakeTn) = proposal.stakeSTAssetClass
|
let AssetClass (stakeSym, stakeTn) = proposal.stakeSTAssetClass
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue