DAML
[DAML documentation 따라가기] Create Daml Apps - Basic Contracts
scofee
2023. 7. 6. 09:39
Introduction
Daml은 Daml Ledger Model위에서 composable application을 만들기 위한 스마트 계약 언어이다.
여기서 Composable application이란 모듈화, 간단히 말해서 기능 별로 함수를 만들어서 확장성을 좋게 만드는 프로그래밍 방법이라고 생각하면 된다.
앞으로는 DAML Ledger의 구조, 아무 DAML Ledger implementation에서 DAML app을 작성하는 법 등을 알려준다고 한다.
Daml Ledger 기초
기본적으로 아래의 단어의 의미를 먼저 파악하고 가는 것이 이해가 편하다.
transaction : 지금으로써는 contract의 생성과 조회 정도로 생각하면 될듯. 뒤에서 자세히 한다고 한다.
commit : party가 성공적으로 원장(ledger)에 transaction을 제출한 최종 결과를 의미한다.
contract가 active한 생성하는 transaction이 commit된 순간부터 조회하는 transaction이 commit된 순간까지를 의미한다.
각 계약은 active contract는 변할 수 없다는 관점에서 생각해서 immutable하다고 한다.
active contract를 바꿀 수 있는 방법은 새로운 contract를 만들거나, 기존의 계약을 archive하는 방법 뿐이다.
DAML 코드로 DAML Ledger에 적힌 transaction 중 유효한 것을 골라내도록 하는데, 골라내는 규칙을 DAML model 또는 contract model이라고 한다.
Template
contract에 관련된 정보들, 해당 contract에 대한 권한을 가지는 주체들이 모두 적혀있다.
contract의 schema, 즉 틀이다. 이는 contract는 template의 하나의 인스턴스라고 이야기하는 것과 같다.
template Token
with
owner : Party
where
signatory : owner
documetation에서는 Token 이라는 이름의 간단한 template을 예시로 들어주면서 이해를 도와준다.
"template" 키워드로 template을 생성한다.
"with" 키워드로 해당 template을 구성하는 argument(데이터베이스 용어로 필드와 비슷한 느낌)들을 명시한다.
위의 예시에서는 owner이라는 Party type의 필드가 하나 존재한다.
"where" 키워드로 template의 signatory, key, choice 들을 정의한다.
이 단어들은 추후에 설명이 된다고 하니 일단은 넘어가는 걸로 하자.