Как найти в приложении Daml-dazl транзакцию по ключу? - PullRequest
0 голосов
/ 28 апреля 2020

Например, в смарт-контракте, подобном следующему:

daml 1.2
module Example where

template Account with
    owner : Party
    number : Text
    money : Int
  where
    signatory owner
    key (owner, number) : (Party, Text)
    maintainer key._1

Можно запросить транзакцию на основе заданного c значения шаблона

import dazl

network = dazl.Network()
def main():

 with dazl.simple_client('http://localhost:6865', 'Alice') as client:
    # wait for the ACS to be fully read
    client.ready()
    allContracts = client.find(template = "Example.Account")
    for contract in allContracts:
      if contract.cdata ["money"] == 10000:
        print("The query is" )
        print(contract.cdata)

if __name__ == '__main__':
    main()

Однако, Как можно сделать запрос на основе ключа?

1 Ответ

0 голосов
/ 28 апреля 2020

Единственный способ сделать это в данный момент - это запросить точно такое же условие, которое есть в вашем ключе (который, к сожалению, дублирует код в модели):

all_contracts = clients.find("Example.Account", {"owner": "blah", "number": "blah"})
if all_contracts:
   # something exists
  ...
else:
   # nothing found
   ...

Я добавил проблему для захвата эта функция будет продолжена: https://github.com/digital-asset/dazl-client/issues/85

...