기밀 도매 CBDC 애플리케이션 워크플로우
기밀 도매 중앙 은행 디지털 통화(CBDC) 시나리오는 민감한 정보가 비공개로 저장된 구조화된 금융 기관 계층을 통해 분배되는 통화를 나타냅니다.
도매 CBDC 시나리오의 기밀 버전은 거래 데이터 처리 방법에 따라 다릅니다. 기본 거래 세부정보 및 조직 계정 정보와 같은 중요하지 않은 정보는 공공 원장에 저장됩니다. 민감한 정보(예: 사용자 ID, 실제 잔액 값 및 블라인딩 계수)는 각 조직의 개인 데이터 수집에 저장되고 임시 맵을 통해 체인 코드로 전달되므로 공용 원장에 기록되지 않습니다. 계정 잔액 및 보류 잔액은 공공 원장에서 페더슨 약정 값으로 표시되므로 기본 금액을 노출하지 않고도 지식이 없는 검증을 통해 공개 검증이 가능합니다. 중앙은행 수준에서 계좌 이체에는 executeHoldTokensSender 및 executeHoldTokensReceiver API를 동시에 실행해야 하는 원자 트랜잭션에 대해 2단계 약정 프로세스가 사용되므로 전송 전반에 걸쳐 기밀성이 유지됩니다. 금융 기관 수준의 전송은 표준 단일 executeHoldTokens API를 사용합니다.
다음 표에는 도매 CBDC 시나리오의 비기밀 버전과 기밀 버전 간의 주요 차이점이 요약되어 있습니다.
| 작업/데이터 | 비기밀 CBDC | 기밀 CBDC |
|---|---|---|
| 조직간 이전(중앙 은행 승인자가 보류 실행) | executeHoldTokens API(단일 호출)
|
executeHoldTokensSender 및 executeHoldTokensReceiver API(2단계 커밋으로 두 번의 동시 호출 수행)
|
| 조직내 이전(금융 기관 승인자가 보류 실행) | executeHoldTokens API(단일 호출)
|
executeHoldTokens API(단일 호출, 차이 없음)
|
| 원장의 트랜잭션 데이터 | 데이터 분리 없이 공공 원장에 일반 형식으로 저장된 모든 데이터 | 각 조직의 개인 데이터 수집에 저장된 공공 원장, 민감한 데이터(사용자 ID, 실제 잔액, 블라인딩 요소)에 대한 중요하지 않은 데이터 |
| 누계 표시 | 직접 저장된 실제 누계 값 | 페더슨 약정 값으로 표시되는 잔액, 공공 원장에 노출되지 않은 실제 금액 |
| 확인 방법 | 직접: 원장에서 값을 읽을 수 있습니다. | 영(0) 지식 검증을 통해 기본 금액 공개 없이 공개 검증 가능 |
| 중요한 데이터 처리 | 공공 원장에 저장됨 | 체인 코드에 대한 임시 맵을 통해 전달되었으며 퍼블릭 원장에 기록되지 않음 |
주:
executeHoldTokensSender 및 executeHoldTokensReceiver API는 2단계 커밋 프로세스의 일부로 동시에 호출되어야 합니다. 다른 하나가 없으면 하나만 호출하면 오류가 발생합니다.
다음 표에는 이 시나리오의 수행자가 요약되어 있습니다.
| 작업자 | 롤 | 설명 |
|---|---|---|
| 관리자(Administrator) | 토큰 관리 | 시스템을 초기화하고 역할을 지정합니다. |
| 생성자 | 최소 | 토큰의 주조를 요청하고 주조된 토큰을 수신합니다. |
| 중앙 은행 승인자 | 공증인 | 중앙 은행 레벨에서 모든 작업을 승인합니다. |
| 발행자 | 없음 | 생성자로부터 토큰을 받고, 토큰을 금융 기관 책임자 또는 퇴직자에게 라우팅합니다. |
| 금융 기관 담당자 | 없음 | 발행자로부터 토큰을 수신하고 금융 기관 사용자에게 토큰을 분배합니다. |
| 금융 기관 승인자 | 공증인 | 금융 기관 책임자로부터 금융 기관 사용자로의 보류 이전을 승인합니다. |
| 금융 기관 사용자 | 없음 | 금융 기관에서 이전된 토큰의 최종 수신자입니다. |
| 퇴직자 | 버너 | 발행자로부터 토큰을 수신하고 중앙 은행 승인자에게 레코딩 요청을 전송합니다. |
관리자는 시스템 초기화를 위해 다음 단계를 완료합니다.
initializeCBDCTokenAPI를 사용하여 CBDC 시스템을 초기화합니다.registerOrgAPI를 사용하여 조직을 등록합니다.createAccountAPI를 사용하여 계정을 생성합니다.associateTokenToAccountAPI를 사용하여 계정에 토큰을 연관시킵니다.addRoleAPI를 사용하여 생성자에게 광부 역할, 중앙 은행 승인자에게 공증 역할, 퇴직자에게 버너 역할을 지정합니다.
시스템이 초기화되면 일반적인 프로세스 흐름이 이러한 기본 단계를 따릅니다.
- 민트 통화입니다.
- 토큰 생성자는
requestMintAPI를 사용하여 보증금 토큰 민트 요청을 제출합니다. - 중앙 은행 승인자는
approveMintAPI를 사용하여 민트 요청을 검토하고 승인합니다. 토큰은 생성자의 계정에 대변 기입됩니다. 또는 중앙 은행 승인자는rejectMintAPI를 사용하여 요청을 거부할 수 있습니다.
- 토큰 생성자는
- 발행자에게 토큰을 전송합니다.
- 생성자는 발행자에게
transferTokensAPI 전송 토큰을 사용합니다.
- 생성자는 발행자에게
- 토큰을 재무 담당자에게 전송합니다.
- 발행자는
holdTokensAPI 전송 토큰을 금융 기관 책임자에게 사용합니다. - 중앙 은행 승인자는 2단계 커밋의 일부로
executeHoldTokensSender및executeHoldTokensReceiverAPI를 사용하여 이전 요청을 검증하고 승인합니다. 또는 중앙 은행 승인자는releaseHoldAPI를 사용하여 이전을 거부할 수 있습니다.
- 발행자는
- 사용자에게 토큰을 발행합니다.
- 금융 기관 책임자는
holdTokensAPI 전송 토큰을 금융 기관 사용자에게 사용합니다. - 금융 기관 승인자는
executeHoldTokensAPI를 사용하여 이전 요청을 검증하고 승인합니다. 또는 금융 기관 승인자는releaseHoldAPI를 사용하여 이전을 거부할 수 있습니다.
- 금융 기관 책임자는
- 토큰을 굽습니다.
- 발행자는
transferTokensAPI를 사용하여 토큰을 retirer로 전송합니다. - retirer는
requestBurnAPI를 사용하여 중앙 은행 승인자에게 레코딩 요청을 전송합니다. - 중앙 은행 승인자는
approveBurnAPI를 사용하여 레코딩 요청을 승인하고 토큰이 삭제됩니다. 또는 중앙 은행 승인자는rejectBurnAPI를 사용하여 요청을 거부할 수 있습니다.
- 발행자는
- 토큰 잔액을 확인합니다.
- 사용자는
getAccountBalanceAPI를 사용하여 보유한 총 통화 수를 확인할 수 있습니다.
- 사용자는