Q
SDK 버전 1.0.0부터 계약ID 체계가 변경되었습니다.
계약 식별자는 시퀀스 번호 대신 해시입니다.
사용자 관점에서 볼 때 새로운 체계의 이점은 무엇입니까?
예 :
- 계약 ID로 수행할 수 있는 새로운 작업 (및 이것이 중요한 이유)
- 더 나은 보안 속성
이 변경에 동기를 부여한 다른 우려 사항 (사용자에게 보이지 않음)이 있습니까?
A
- 계약 ID를 불투명한 블록으로 간주하여 계약을 추적할 수 없도록 함으로써 보안성 강화가 주목적
이전 SDK에서 계약 ID는 원장에서 트랜잭션을 커밋하기 전이지만 DAML 평가 후 할당된 원장별 문자열이었습니다. 구체적으로, DAML 프로그램을 평가하는 동안 엔진은 빌드 중인 트랜잭션 내에서 생성된 계약을 식별하기 위해 특수 자리 표시자(상대 계약 ID라고 함)를 사용했습니다. 이러한 상대 계약 ID는 나중에 원장실행으로 의해 최종 값으로 대체되었습니다.
이 접근 방식의 가장 큰 단점은 계약 ID를 안정적인 방식으로 주문할 수 없다는 것입니다. 해석 시점에 상대 계약 ID가 할당될 문자열을 알 수 없었기 때문에 상대 계약 ID를 다른 계약 ID와 안정적으로 비교할 수 없었습니다.
SDK 1.0.0부터 시작되는 계약 ID는 제출시 선택한 초기 높은 엔트로피 번호(제출 시드라고 함)에서 결정론적 유도 체계를 통해 평가 중에 계산되는 암호화 해시(판별 자라고 함)에서 빌드됩니다. 이 체계는 원장이 트랜잭션을 커밋하기 전에 자유롭게 계약 ID를 접미사로 남겨 둘 수 있습니다. 자세한 사항에 너무 많이 입력하지 않고 파생 방식은 제출 시드가 이전에 사용된 적이 없는 경우
(1)트랜잭션에 의해 생성된 계약 ID의 판별자는 전역적으로 고유하며
(2)트랜잭션에 대한 정보는 제공된 판별자 중 하나에서 유추할 수 없음을 보장합니다.
참가자가 정직하고 제출 각각에 대해 적절한 높은 엔트로피 제출 시드를 선택한다고 가정하면, 위에서 설명한 고유성 속성은 생성된 계약의 계약 ID를 주문하는 데 접미사가 아닌 판별자만 필요함을 보장합니다. 향후 SDK는 이를 활용하여 계약 ID를 주문하기 위한 새로운 내장 기능과 키가 계약 ID를 포함하여 임의의 직렬화 가능한 값을 포함할 수 있는 새로운 종류의 정렬된 맵을 제공 합니다.
V1 Contract ID allocation scheme 참고
https://github.com/digital-asset/daml/blob/master/daml-lf/spec/contract-id.rst
원문 : Benefits of the new (hash based) contract ID scheme
https://discuss.daml.com/t/benefits-of-the-new-hash-based-contract-id-scheme/389
'포럼 번역' 카테고리의 다른 글
DAML script createCmd 문법 (0) | 2020.10.07 |
---|---|
유효한 daml 변수 이름 (0) | 2020.09.23 |
잠재적 서명자에 대한 적합한 디자인 패턴 (0) | 2020.09.21 |
플랫 트랜잭션 스트림(flat transaction stream)에서 트랜잭션 내 이벤트 순서 지정 (0) | 2020.09.21 |
DABL은 다른 배포 플랫폼과 어떻게 다릅니까? (0) | 2020.09.21 |