개요
DAML 2.0에서는 Canton이 도입되면서, 로컬 Sandbox와 Daml Driver for PostgreSQL 2.0과 같은 프로덕션 레저에서 party id가 다르게 보여지고 작동합니다. 이 보고서에서는 이러한 변경 사항에 대한 개요와, 여러분의 애플리케이션에서 새로운 party를 어떻게 다루어야 할지에 대한 실용적인 지침을 제공합니다.
주요 키워드
- Canton
- party id hint
- allocatePartyWithHint
- user management
- IAM
서론
DAML 1.18에서는 Sandbox, Daml Driver for PostgreSQL 1.0 및 VMware Blockchain에서 party가 작동하는 방식을 설명합니다. party id hint를 통해 party를 완전히 사용자가 제어할 수 있습니다. party id hint는 party 할당을 통해 지정할 수 있습니다. 예를 들어, Daml Script의 allocatePartyWithHint를 사용하여 "Alice" (PartyIdHint "alice")를 호출하면 표시 이름이 Alice이고 party id가 alice인 party가 할당됩니다. id가 alice인 party가 이미 존재하는 경우 할당이 실패합니다. 이에는 몇 가지 영향을 미칩니다.
- ledger를 다시 시작하더라도 동일한 party id를 할당할 수 있습니다.
- party id는 인간이 읽을 수 있습니다 (인간이 읽을 수 있는 party id hint를 선택한 경우). 예를 들어, create-daml-app에서 사용자 Bob을 따르는 것은 그들의 party id가 Bob인 경우 쉽습니다.
- Sandbox (하지만 Daml Driver for SQL 1.x는 그렇지 않음)은 암시적으로 parties를 할당합니다. 이는 관찰자 또는 서명자로 Bob을 가진 계약을 만들 경우, 이전에 할당되지 않은 경우라도 id가 Bob인 party가 암시적으로 생성된다는 것을 의미합니다.
분석
DAML 2.0에서는 Canton이 도입되면서 party가 크게 변경되었습니다. 지정된 힌트 Alice로 party를 할당하려고 하면, 이제 Alice::1220f2fe29866fd6a0009ecc8a64ccdc09f1958bd0f801166baaee469d1251b2eb72와 같은 party id를 돌려받게 됩니다. 더블 콜론 앞의 접두사는 party 할당에서 지정된 힌트에 해당합니다. 힌트가 지정되지 않은 경우 party-${randomUUID}로 기본값으로 설정됩니다. 접미사는 이 party에 대한 topology transaction을 승인할 수 있는 공개 키의 fingerprint입니다. 키는 무작위로 생성되므로 접미사는 로컬에서 다르게 보이며 Sandbox를 다시 시작할 때마다 다른 party id를 얻게 됩니다. 이에는 몇 가지 영향을 미칩니다.
- 더 이상 고정된 party id로 party를 할당할 수 없습니다. 접두사에 어느 정도 제어권이 있지만, 이에 의존하지 않는 것이 좋습니다 (아래에서 자세히 설명합니다).
- party id는 더 이상 인간이 쉽게 이해할 수 없습니다. 이는 사용자 인터페이스에서 다른 것을 표시하려고 할 수 있음을 의미합니다.
- 다른 사용자의 party id를 발견하는 것이 까다로워질 수 있습니다. 예를 들어, 사용자 Bob을 따르기 위해 Bob의 party id가 Bob이라고 가정할 수 없습니다.
결론
새로운 party id는 처음에는 어려울 수 있지만, Daml SDK 도구는 이를 처리하기 위해 잘 설정되어 있습니다. Sandbox는 이제 프로덕션 환경처럼 작동하므로 애플리케이션을 개발에서 프로덕션으로 이동시키기가 더 쉽습니다. 또한 user management를 도입하여 IAM과의 통합을 이전보다 쉽게 할 수 있습니다. 여전히 party id를 처리하는 데 문제가 발생하는 경우 Daml 포럼에서 문의해보시기 바랍니다.
시사점
DAML 2.0에서는 party id가 훨씬 다르게 보여지고 작동합니다. 이에 따라, 이전에는 인간이 읽을 수 있었던 party id가 이제는 인간이 이해하기 어려워졌습니다. 이러한 변경 사항에 대처하는 방법은 party id를 불투명한 식별자로 취급하는 것입니다. 특히, party id를 구문 분석하지 마십시오. 그들의 형식에 대해 가정하지 마십시오. 임의의 문자열을 party id로 변환하지 마십시오. 대신, 새로운 party id를 얻는 유일한 방법은 party 할당의 결과로 얻는 것입니다. 애플리케이션은 절대로 특정한 parties를 하드코딩해서는 안됩니다. 대신, 입력으로 받거나 계약 또는 choice 인수에서 읽어와야 합니다.
출처 : Parties and users in Daml 2.0
https://dev.to/damldriven/parties-and-users-in-daml-20-5dmi
'기술자료 > DAML' 카테고리의 다른 글
DAML 애플리케이션 업그레이드 및 확장 (0) | 2020.10.12 |
---|---|
DAML REPL (0) | 2020.10.12 |
DAML 스크립트 (0) | 2020.10.07 |