PTryFrom comment, README badge

This commit is contained in:
Emily Martins 2022-04-04 16:03:25 +02:00
parent 5d01dfb642
commit 6e1726de30
3 changed files with 18 additions and 13 deletions

View file

@ -1,4 +1,5 @@
# Agora # Agora :classical_building:
![integrate.yaml badge](https://github.com/Liqwid-Labs/agora/actions/workflows/integrate.yaml/badge.svg?branch=master)
Agora is a set of Plutus scripts that compose together to form a governance system. Agora is a set of Plutus scripts that compose together to form a governance system.

View file

@ -351,7 +351,7 @@ stakeValidator stake =
txInfo' <- plet ctx.txInfo txInfo' <- plet ctx.txInfo
txInfo <- pletFields @'["mint", "inputs", "outputs"] txInfo' txInfo <- pletFields @'["mint", "inputs", "outputs"] txInfo'
-- Coercion is safe in that if coercion fails we crash hard. -- TODO: Use PTryFrom
let stakeRedeemer :: Term _ PStakeRedeemer let stakeRedeemer :: Term _ PStakeRedeemer
stakeRedeemer = pfromData $ punsafeCoerce redeemer stakeRedeemer = pfromData $ punsafeCoerce redeemer
stakeDatum' :: Term _ PStakeDatum stakeDatum' :: Term _ PStakeDatum

View file

@ -10,7 +10,7 @@ module Agora.Treasury (module Agora.Treasury) where
import GHC.Generics qualified as GHC import GHC.Generics qualified as GHC
import Generics.SOP import Generics.SOP
import Plutarch.Api.V1.Contexts (PScriptContext, PScriptPurpose (PMinting)) import Plutarch.Api.V1.Contexts (PScriptPurpose (PMinting))
import Plutarch.Api.V1.Value (PCurrencySymbol, PValue) import Plutarch.Api.V1.Value (PCurrencySymbol, PValue)
import Plutarch.DataRepr ( import Plutarch.DataRepr (
PDataFields, PDataFields,
@ -23,19 +23,23 @@ import Plutus.V1.Ledger.Value (CurrencySymbol)
import Agora.AuthorityToken (singleAuthorityTokenBurned) import Agora.AuthorityToken (singleAuthorityTokenBurned)
import Agora.Utils (passert) import Agora.Utils (passert)
import Plutarch (popaque)
import Plutarch.Api.V1 (PValidator)
import Plutarch.Unsafe (punsafeCoerce)
{- | Validator ensuring that transactions consuming the treasury {- | Validator ensuring that transactions consuming the treasury
do so in a valid manner. do so in a valid manner.
-} -}
treasuryV :: treasuryValidator ::
CurrencySymbol -> CurrencySymbol ->
ClosedTerm ClosedTerm PValidator
( PAsData PTreasuryDatum treasuryValidator gatCs' = plam $ \datum redeemer ctx' -> P.do
:--> PAsData PTreasuryRedeemer -- TODO: Use PTryFrom
:--> PAsData PScriptContext let treasuryRedeemer :: Term _ (PAsData PTreasuryRedeemer)
:--> PUnit treasuryRedeemer = punsafeCoerce redeemer
) _treasuryDatum' :: Term _ (PAsData PTreasuryDatum)
treasuryV gatCs' = plam $ \_d r ctx' -> P.do _treasuryDatum' = punsafeCoerce datum
-- plet required fields from script context. -- plet required fields from script context.
ctx <- pletFields @["txInfo", "purpose"] ctx' ctx <- pletFields @["txInfo", "purpose"] ctx'
@ -43,7 +47,7 @@ treasuryV gatCs' = plam $ \_d r ctx' -> P.do
PMinting _ <- pmatch ctx.purpose PMinting _ <- pmatch ctx.purpose
-- Ensure redeemer type is valid. -- Ensure redeemer type is valid.
PAlterTreasuryParams _ <- pmatch $ pfromData r PAlterTreasuryParams _ <- pmatch $ pfromData treasuryRedeemer
-- Get the minted value from txInfo. -- Get the minted value from txInfo.
txInfo' <- plet ctx.txInfo txInfo' <- plet ctx.txInfo
@ -55,7 +59,7 @@ treasuryV gatCs' = plam $ \_d r ctx' -> P.do
passert "singleAuthorityTokenBurned" $ singleAuthorityTokenBurned gatCs txInfo' mint passert "singleAuthorityTokenBurned" $ singleAuthorityTokenBurned gatCs txInfo' mint
pconstant () popaque $ pconstant ()
{- | Plutarch level type representing datum of the treasury. {- | Plutarch level type representing datum of the treasury.
Contains: Contains: