Skip to content

Commit

Permalink
Introduce a MockInitial script
Browse files Browse the repository at this point in the history
  • Loading branch information
ch1bo committed Oct 28, 2021
1 parent cd1de20 commit 9b1c075
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
1 change: 1 addition & 0 deletions hydra-plutus/hydra-plutus.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ library
Hydra.Contract.Head
Hydra.Contract.Initial
Hydra.Contract.MockCommit
Hydra.Contract.MockInitial
Hydra.Data.ContestationPeriod
Hydra.Data.HeadParameters
Hydra.Data.Party
Expand Down
2 changes: 1 addition & 1 deletion hydra-plutus/src/Hydra/Contract/MockCommit.hs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ instance Scripts.ValidatorTypes Commit where
type DatumType Commit = (Party, Utxo)
type RedeemerType Commit = ()

validator :: (Party, Utxo) -> () -> ScriptContext -> Bool
validator :: DatumType Commit -> RedeemerType Commit -> ScriptContext -> Bool
validator _datum _redeemer _ctx = True

compiledValidator :: CompiledCode (ValidatorType Commit)
Expand Down
54 changes: 54 additions & 0 deletions hydra-plutus/src/Hydra/Contract/MockInitial.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}
{-# OPTIONS_GHC -fno-specialize #-}

-- | A mock script to focus on the off-chain datum types without having to worry
-- about on-chain validation.
module Hydra.Contract.MockInitial where

import Ledger hiding (validatorHash)
import PlutusTx.Prelude

import Ledger.Typed.Scripts (TypedValidator, ValidatorType, ValidatorTypes (..))
import qualified Ledger.Typed.Scripts as Scripts
import PlutusTx (CompiledCode)
import qualified PlutusTx
import PlutusTx.IsData.Class (ToData (..))

data Initial

instance Scripts.ValidatorTypes Initial where
type DatumType Initial = PubKeyHash
type RedeemerType Initial = ()

validator :: DatumType Initial -> RedeemerType Initial -> ScriptContext -> Bool
validator _datum _redeemer _ctx = True

compiledValidator :: CompiledCode (ValidatorType Initial)
compiledValidator = $$(PlutusTx.compile [||validator||])

{- ORMOLU_DISABLE -}
typedValidator :: TypedValidator Initial
typedValidator = Scripts.mkTypedValidator @Initial
compiledValidator
$$(PlutusTx.compile [|| wrap ||])
where
wrap = Scripts.wrapValidator @(DatumType Initial) @(RedeemerType Initial)
{- ORMOLU_ENABLE -}

-- | Get the actual plutus script. Mainly used to serialize and use in
-- transactions.
validatorScript :: Script
validatorScript = unValidatorScript $ Scripts.validatorScript typedValidator

validatorHash :: ValidatorHash
validatorHash = Scripts.validatorHash typedValidator

datum :: DatumType Initial -> Datum
datum a = Datum (toBuiltinData a)

redeemer :: RedeemerType Initial -> Redeemer
redeemer a = Redeemer (toBuiltinData a)

address :: Address
address = scriptHashAddress validatorHash

0 comments on commit 9b1c075

Please sign in to comment.