plutus-use-cases-1.1.0.0: Collection of smart contracts to develop the plutus/wallet interface
Safe HaskellNone
LanguageHaskell2010

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

Documentation

contract :: Contract () GameStateMachineSchema GameError () Source #

Top-level contract, exposing both endpoints.

data GameParam Source #

Datatype for creating a parameterized validator.

Constructors

GameParam 

Fields

Instances

Instances details
Show GameParam Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Generic GameParam Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Associated Types

type Rep GameParam :: Type -> Type Source #

ToJSON GameParam Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

FromJSON GameParam Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

ToSchema GameParam Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Lift DefaultUni GameParam Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Typeable DefaultUni GameParam Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep GameParam Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep GameParam = D1 ('MetaData "GameParam" "Plutus.Contracts.GameStateMachine" "plutus-use-cases-1.1.0.0-9kk4ZO09YVFKU77qwQaRsf" 'False) (C1 ('MetaCons "GameParam" 'PrefixI 'True) (S1 ('MetaSel ('Just "gameParamPayeePkh") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Address) :*: S1 ('MetaSel ('Just "gameParamStartTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 POSIXTime)))

data GameState Source #

State of the guessing game

Constructors

Initialised MintingPolicyHash TokenName HashedString

Initial state. In this state only the MintTokens action is allowed.

Locked MintingPolicyHash TokenName HashedString

Funds have been locked. In this state only the Guess action is allowed.

Finished

All funds were unlocked.

Instances

Instances details
Show GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Generic GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Associated Types

type Rep GameState :: Type -> Type Source #

ToJSON GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

FromJSON GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

UnsafeFromData GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

FromData GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

ToData GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Eq GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Lift DefaultUni GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Typeable DefaultUni GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep GameState Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

data GameInput Source #

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

Instances details
Show GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Generic GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Associated Types

type Rep GameInput :: Type -> Type Source #

ToJSON GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

FromJSON GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

UnsafeFromData GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

FromData GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

ToData GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Lift DefaultUni GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Typeable DefaultUni GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep GameInput Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

mkValidator :: GameParam -> ValidatorType GameStateMachine Source #

data LockArgs Source #

Arguments for the "lock" endpoint

Constructors

LockArgs 

Fields

Instances

Instances details
Show LockArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Generic LockArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Associated Types

type Rep LockArgs :: Type -> Type Source #

ToJSON LockArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

FromJSON LockArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

ToSchema LockArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep LockArgs Source # 
Instance details

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))))

data GuessArgs Source #

Arguments for the "guess" endpoint

Constructors

GuessArgs 

Fields

Instances

Instances details
Show GuessArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Generic GuessArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Associated Types

type Rep GuessArgs :: Type -> Type Source #

ToJSON GuessArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

FromJSON GuessArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

ToSchema GuessArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep GuessArgs Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep GuessArgs = D1 ('MetaData "GuessArgs" "Plutus.Contracts.GameStateMachine" "plutus-use-cases-1.1.0.0-9kk4ZO09YVFKU77qwQaRsf" 'False) (C1 ('MetaCons "GuessArgs" 'PrefixI 'True) ((S1 ('MetaSel ('Just "guessArgsGameParam") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GameParam) :*: S1 ('MetaSel ('Just "guessTokenTarget") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Address)) :*: (S1 ('MetaSel ('Just "guessArgsOldSecret") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Just "guessArgsNewSecret") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (SecretArgument String)) :*: S1 ('MetaSel ('Just "guessArgsValueTakenOut") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Value)))))

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.

data GameError Source #

Instances

Instances details
Show GameError Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Generic GameError Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

Associated Types

type Rep GameError :: Type -> Type Source #

ToJSON GameError Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

FromJSON GameError Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

AsContractError GameError Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

AsSMContractError GameError Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep GameError Source # 
Instance details

Defined in Plutus.Contracts.GameStateMachine

type Rep GameError = D1 ('MetaData "GameError" "Plutus.Contracts.GameStateMachine" "plutus-use-cases-1.1.0.0-9kk4ZO09YVFKU77qwQaRsf" 'False) (C1 ('MetaCons "GameContractError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ContractError)) :+: C1 ('MetaCons "GameSMError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SMContractError)))