1

我想在创建 daml 合同时获取系统日期。有没有办法做到这一点。

例子 :-

模块 ExampleTemplateModule 其中

模板示例模板

with

    admin: Party 

    todayDate: Date     --- In place of this can I use getDate and get today's date
                       
where

    signatory admin

我知道我可以在 script-do 块中执行此操作,但我想在必须创建合同时执行此操作。如果这不可能,是否有其他方法可以在创建 daml 合同时获取系统的日期。

4

1 回答 1

1

您无法直接在创建中获取时间。但是,您可以花时间进行选择,然后从中创建合同。该选择可以是非消耗性的,您只创建一个您调用该选项的辅助合约,或者它可以是消耗性的,您可以通过调用该选项createAndExercise。以下是说明这两个选项的完整示例:

module ExampleTemplateModule where

import DA.Date
import Daml.Script

template ExampleTemplate
  with
    admin: Party
    todayDate: Date     --- In place of this can I use getDate and get today's date
  where
    signatory admin

template Helper
  with
    admin : Party
  where
    signatory admin
    nonconsuming choice CreateExampleTemplate : ContractId ExampleTemplate
      controller admin
      do time <- getTime
         create ExampleTemplate with admin = admin, todayDate = toDateUTC time
    choice CreateExampleTemplate' : ContractId ExampleTemplate
      controller admin
      do time <- getTime
         create ExampleTemplate with admin = admin, todayDate = toDateUTC time


test = script do
  p <- allocateParty "p"
  helper <- submit p $ createCmd (Helper p)
  ex1 <- submit p $ exerciseCmd helper CreateExampleTemplate
  e2 <- submit p $ createAndExerciseCmd (Helper p) CreateExampleTemplate'
  pure ()
于 2021-02-25T07:40:41.417 回答