DAML Script Library

The DAML Script library defines the API used to implement DAML scripts. See DAML Script:: for more information on DAML script.

Module Daml.Script

Data Types

data Commands a

This is used to build up the commands send as part of submit. If you enable the ApplicativeDo extension by adding {-# LANGUAGE ApplicativeDo #-} at the top of your file, you can use do-notation but the individual commands must not depend on each other.

instance Functor Commands

instance Applicative Commands

instance HasField “commands” (SubmitCmd a) (Commands a)

data ParticipantName

ParticipantName

Field Type Description
participantName Text  

instance HasField “participantName” ParticipantName Text

data PartyIdHint

A hint to the backing participant what party id to allocate. Must be a valid PartyIdString (as described in @value.proto@).

PartyIdHint

Field Type Description
partyIdHint Text  

instance HasField “partyIdHint” PartyIdHint Text

data Script a

This is the type of A DAML script. Script is an instance of Action, so you can use do notation.

instance Functor Script

instance CanAbort Script

instance HasTime Script

instance Action Script

instance Applicative Script

Functions

query

: Template t => Party -> Script [(ContractId t, t)]

Query the set of active contracts of the template that are visible to the given party.

allocateParty

: Text -> Script Party

Allocate a party with the given display name using the party management service.

allocatePartyWithHint

: Text -> PartyIdHint -> Script Party

Allocate a party with the given display name and id hint using the party management service.

allocatePartyOn

: Text -> ParticipantName -> Script Party

Allocate a party with the given display name on the specified participant using the party management service.

allocatePartyWithHintOn

: Text -> PartyIdHint -> ParticipantName -> Script Party

Allocate a party with the given display name and id hint on the specified participant using the party management service.

sleep

: RelTime -> Script ()

Sleep for the given duration.

This is primarily useful in tests where you repeatedly call query until a certain state is reached.

Note that this will sleep for the same duration in both wallcock and static time mode.

submit

: Party -> Commands a -> Script a

Submit the commands as a single transaction.

submitMustFail

: Party -> Commands a -> Script ()

Submit the commands as a single transaction but error if it succeeds. This is only useful for testing.

createCmd

: Template t => t -> Commands (ContractId t)

Create a contract of the given template.

exerciseCmd

: Choice t c r => ContractId t -> c -> Commands r

Exercise a choice on the given contract.

exerciseByKeyCmd

: (TemplateKey t k, Choice t c r) => k -> c -> Commands r

Exercise a choice on the contract with the given key.

createAndExerciseCmd

: Choice t c r => t -> c -> Commands r

Create a contract and exercise a choice on it in the same transacton.