이 페이지에서는 기본 설정을 넘어서는 릴리스별 및 운영 관련 세부 사항을 다룹니다.
먼저 CDR 클라이언트 설정부터 시작하세요.
DKG 상태와 DATA Foundation API 엔드포인트
SDK는 두 개의 백엔드에서 상태를 읽습니다:
| 백엔드 | 구성 방법 | 읽는 항목 |
|---|
| EVM | publicClient | CDR 컨트랙트 상태: vault, 수수료, maxEncryptedDataSize, 운영 임계값 |
| DATA Foundation API REST | apiUrl | DKG 상태: 활성 라운드, 전역 공개 키, 임계값, 검증자, 증명(attestation) |
apiUrl은 필수 CDRClient 매개변수입니다. 이는 DATA Foundation API REST 엔드포인트의 베이스 URL이며, observer는 모든 DKG 읽기에 이를 사용합니다.
const client = new CDRClient({
network: "testnet",
publicClient,
walletClient,
apiUrl: "http://172.192.41.96:1317",
});
프로덕션 배포의 경우, 공유 엔드포인트가 아닌 본인의 Story 노드의 REST 게이트웨이를 apiUrl로 지정하세요. 네트워크별 값은 DATA Foundation API REST 엔드포인트를 참고하세요.
observer는 안정적인 Active 및 Ended 단계의 라운드에 대해 라운드 키 기반 DKG
스냅샷을 캐시하며, 진행 중인 요청을 중복 제거합니다. 활성 라운드 자체는
언제든 전환될 수 있기 때문에 항상 다시 가져옵니다.
임계값 튜닝
기본적으로 SDK는 부분 복호화를 결합할 때 네트워크 자체의 DKG 임계값을 사용합니다. 선택적 매개변수 minThresholdRatio(범위 [0, 1])를 통해 기준을 높일 수 있습니다:
const client = new CDRClient({
network: "testnet",
publicClient,
walletClient,
apiUrl: "http://172.192.41.96:1317",
minThresholdRatio: 0.67,
});
실효 임계값은 max(network.threshold, ceil(participants * minThresholdRatio))가 됩니다.
1을 초과하는 값은 참여자보다 더 많은 부분 복호화를 요구하므로,
collectPartials / accessCDR이 영원히 타임아웃됩니다. SDK는 이를 거부합니다.
컨트랙트 주소
현재 Aeneid 릴리스는 다음과 같은 핵심 시스템 주소를 사용합니다:
| 컨트랙트 | 주소 |
|---|
| DKG | 0xCcCcCC0000000000000000000000000000000004 |
| CDR | 0xCcCcCC0000000000000000000000000000000005 |
SDK는 이미 이러한 주소를 알고 있습니다. DATA Foundation 라이선스 게이팅 조건 컨트랙트에 대해서는 DATA Foundation 라이선스 읽기 패턴의 작동 방식을 참고하세요.
릴리스 상태 및 가용성
- Aeneid는 SDK의 현재 공개 테스트넷 릴리스입니다.
- 기밀성은 DKG 임계값과 CDR 개요에서 설명된 검증자 / 엔클레이브 신뢰
가정에 의존합니다.
- 가용성은 타임아웃 전에 응답하는 검증자가 충분한지에 따라 결정됩니다. 읽기가
임계값에 도달하지 못하면, 재시도하거나
timeoutMs를 늘리세요.
- DKG 읽기는
apiUrl DATA Foundation API 엔드포인트가 올바르고 접근 가능한지에
따라 결정됩니다. 프로덕션 사용 시에는 신뢰할 수 있는 노드를 지정하세요.
현재 릴리스 노트
- DATA Foundation 라이선스 게이팅 vault는 여전히 수동 조건 인코딩이 필요합니다.
- CDR SDK는 IP를 WIP로 자동 래핑하거나, 라이선스 민팅을 위해 WIP를
자동 승인하지 않습니다.
accessCDR()은 매개변수가 생략된 경우 임시 키페어를 자동으로 생성하고
threshold를 조회할 수 있습니다.
createVault / readVault / createFileVault / readFileVault는
상위 레벨 별칭으로 사용할 수 있습니다.
getRegisteredValidators()는 등록이 완전히 비준된(status = Finalized)
검증자만 포함합니다.
accessCDR() 및 downloadFile()의 경우 timeoutMs: 120_000이 좋은
시작점입니다.