How To add Timestamp in DAML contract


By default, there isn’t a timestamp field in DAML contract. If you observe the return of a fetch query, there isn’t a field represents timestamp.

This article will help you create timestamp for your contract so you can have field like this:

Timestamp field in DAML contract
Timestamp field in DAML contract

The getTime function

DAML has a convenient function called getTime that returns ledger’s time. You can read more about it here.

You can use that function to get the current time and assign it in a field when creating the template:

template SomeMessageWithTimestamp with 
    sender: Party
    content: Text
    time: Time
    signatory sender

Later, when creating the contract, you can assign the value to the time field:

    nonconsuming choice SendMessageWithTimestamp: ContractId SomeMessageWithTimestamp with
        sender: Party
        content: Text

      controller sender
        time <- getTime -- pass the current time to the field here
        create SomeMessageWithTimestamp with sender, content, time

When you execute the contract, that field is filled with desired value here:

daml contract with timestamp
daml contract with timestamp


This post showed you how to pass creation time to the smart contract in DAML. Following this example, you can pass multiple, different data to fields of your contract.

Leave a Comment