| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Plutus.Contracts.GameStateMachine
Description
A guessing game that
- Uses a state machine to keep track of the current secret word
- Uses a token to keep track of who is allowed to make a guess
Synopsis
- contract :: Contract () GameStateMachineSchema GameError ()
- typedValidator :: GameParam -> TypedValidator GameStateMachine
- data GameParam = GameParam {}
- data GameState
- = Initialised MintingPolicyHash TokenName HashedString
- | Locked MintingPolicyHash TokenName HashedString
- | Finished
- data GameInput
- data GuessToken
- mkValidator :: GameParam -> ValidatorType GameStateMachine
- mintingPolicy :: GameParam -> MintingPolicy
- data LockArgs = LockArgs {}
- data GuessArgs = GuessArgs {}
- type GameStateMachineSchema = Endpoint "lock" LockArgs .\/ Endpoint "guess" GuessArgs
- data GameError
- token :: MintingPolicyHash -> TokenName -> Value
- covIdx :: CoverageIndex
Documentation
contract :: Contract () GameStateMachineSchema GameError () Source #
Top-level contract, exposing both endpoints.
typedValidator :: GameParam -> TypedValidator GameStateMachine Source #
Datatype for creating a parameterized validator.
Constructors
| GameParam | |
Fields
| |
Instances
State of the guessing game
Constructors
| Initialised MintingPolicyHash TokenName HashedString | Initial state. In this state only the |
| Locked MintingPolicyHash TokenName HashedString | Funds have been locked. In this state only the |
| Finished | All funds were unlocked. |
Instances
| Show GameState Source # | |
| Generic GameState Source # | |
| ToJSON GameState Source # | |
| FromJSON GameState Source # | |
| UnsafeFromData GameState Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods | |
| FromData GameState Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods | |
| ToData GameState Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods toBuiltinData :: GameState -> BuiltinData Source # | |
| Eq GameState Source # | |
| Lift DefaultUni GameState Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods lift :: GameState -> RTCompile DefaultUni fun (Term TyName Name DefaultUni fun ()) Source # | |
| Typeable DefaultUni GameState Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods typeRep :: Proxy GameState -> RTCompile DefaultUni fun (Type TyName DefaultUni ()) Source # | |
| type Rep GameState Source # | |
Defined in Plutus.Contracts.GameStateMachine | |
Inputs (actions)
Constructors
| MintToken | Mint the "guess" token |
| Guess Address ClearString HashedString Value | Make a guess, extract the funds, and lock the remaining funds using a new secret word. |
Instances
| Show GameInput Source # | |
| Generic GameInput Source # | |
| ToJSON GameInput Source # | |
| FromJSON GameInput Source # | |
| UnsafeFromData GameInput Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods | |
| FromData GameInput Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods | |
| ToData GameInput Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods toBuiltinData :: GameInput -> BuiltinData Source # | |
| Lift DefaultUni GameInput Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods lift :: GameInput -> RTCompile DefaultUni fun (Term TyName Name DefaultUni fun ()) Source # | |
| Typeable DefaultUni GameInput Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods typeRep :: Proxy GameInput -> RTCompile DefaultUni fun (Type TyName DefaultUni ()) Source # | |
| type Rep GameInput Source # | |
Defined in Plutus.Contracts.GameStateMachine | |
data GuessToken Source #
The token that represents the right to make a guess
Instances
| Show GuessToken Source # | |
Defined in Plutus.Contracts.GameStateMachine | |
| UnsafeFromData GuessToken Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods | |
| FromData GuessToken Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods | |
| ToData GuessToken Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods | |
| Eq GuessToken Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods (==) :: GuessToken -> GuessToken -> Bool Source # | |
| Lift DefaultUni GuessToken Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods lift :: GuessToken -> RTCompile DefaultUni fun (Term TyName Name DefaultUni fun ()) Source # | |
| Typeable DefaultUni GuessToken Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods typeRep :: Proxy GuessToken -> RTCompile DefaultUni fun (Type TyName DefaultUni ()) Source # | |
mkValidator :: GameParam -> ValidatorType GameStateMachine Source #
Arguments for the "lock" endpoint
Constructors
| LockArgs | |
Fields
| |
Instances
| Show LockArgs Source # | |
| Generic LockArgs Source # | |
| ToJSON LockArgs Source # | |
| FromJSON LockArgs Source # | |
| ToSchema LockArgs Source # | |
Defined in Plutus.Contracts.GameStateMachine Methods | |
| type Rep LockArgs Source # | |
Defined in Plutus.Contracts.GameStateMachine type Rep LockArgs = D1 ('MetaData "LockArgs" "Plutus.Contracts.GameStateMachine" "plutus-use-cases-1.1.0.0-9kk4ZO09YVFKU77qwQaRsf" 'False) (C1 ('MetaCons "LockArgs" 'PrefixI 'True) (S1 ('MetaSel ('Just "lockArgsGameParam") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GameParam) :*: (S1 ('MetaSel ('Just "lockArgsSecret") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (SecretArgument String)) :*: S1 ('MetaSel ('Just "lockArgsValue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)))) | |
Arguments for the "guess" endpoint
Constructors
| GuessArgs | |
Fields
| |
Instances
type GameStateMachineSchema = Endpoint "lock" LockArgs .\/ Endpoint "guess" GuessArgs Source #
The schema of the contract. It consists of the two endpoints "lock"
and "guess" with their respective argument types.