Stablecoin 애플리케이션 워크플로우

Stablecoin은 규정 준수가 내장 된 디지털 통화를 나타내는 재미있는 토큰입니다.

Stablecoin 시나리오는 고객 (KYC) 및 자금 세탁 방지 (AML) 정책, 전송 제한 사항 및 다자간 승인을 시행합니다. 시스템에서는 이전이 발생하기 전에 승인이 필요한 직접 이전 및 보류 기반 이전을 지원합니다.

  • 최소, 버너 및 공증인 역할이 필요합니다.
  • 계정 정책은 KYC/AML 및 제한 플래그를 강제 적용합니다.
  • 승인 정책은 보류 기반 이전에 대한 임계값 및 순차 승인자 요구사항을 정의합니다.
  • 전송 제한은 선택 사항이며 언제든지 구성할 수 있습니다.
  • 승인 정책 일치는 holdTokens API가 사용될 때 승인이 필요한지 여부를 결정하는 데 사용됩니다.
  • 트랜잭션 기록 API는 감사 및 모니터링을 지원합니다.
다음 표에는 이 시나리오의 수행자가 요약되어 있습니다.
작업자 설명
관리자(Administrator) 토큰 관리 시스템을 초기화하고, 역할을 지정하고, 계정 및 승인 정책을 생성합니다.
최소 최소 토큰의 연동을 요청합니다.
민트 승인자 공증인 민트 요청을 승인 또는 거부합니다.
번 승인자 공증인 레코딩 요청을 승인하거나 거부합니다.
발신자 없음 직접 또는 보류 기반 이전을 시작합니다.
승인자 없음 정의된 순서로 트랜잭션을 승인합니다. 승인자는 지정된 역할이 아닌 승인 정책에서 승인자로 지정된 일반 계정 소유자입니다.
공증인 공증인 승인 후 보류 기반 이전을 완료하거나 해제합니다.
수신자 없음 전송된 토큰을 수신합니다.
감사자 토큰 감사자 준수 및 보고 목적으로 트랜잭션 내역을 질의합니다.
관리자는 시스템 초기화를 위해 다음 단계를 완료합니다.
  1. initializeStablecoinToken API를 사용하여 Stablecoin을 초기화합니다.
  2. registerOrg API를 사용하여 조직을 등록합니다.
  3. createAccountassociateTokenToAccount API를 사용하여 계정을 생성합니다.
  4. addRole API를 사용하여 광부, 버너 및 공증인 역할을 해당 계정에 지정합니다.
  5. createStablecoinAccountPolicyCheck API를 사용하여 계정 정책을 생성합니다.
  6. createApprovalPolicyCheck API를 사용하여 승인 정책을 생성합니다.
시스템이 초기화되면 일반적인 프로세스 흐름이 이러한 기본 단계를 따릅니다.
  1. 민트 Stablecoins
    1. Minter는 requestMint API를 사용하여 Stablecoins에 대한 요청을 제출합니다.
    2. 민트 승인자는 approveMint API를 사용하여 Stablecoins를 민트하기 위한 요청을 검토하고 승인합니다. 또는 민트 승인자는 rejectMint API를 사용하여 요청을 거부할 수 있습니다.
  2. 승인없이 스테이블 코인을 전송합니다.
    • 발신자는 transferTokens API를 사용하여 사용자에게 Stablecoins를 전송합니다.
  3. 승인과 함께 안정 동전을 전송합니다.
    1. 발신기는 holdTokens API를 사용하여 토큰 전송을 요청합니다.
    2. 필요한 경우 승인자는 승인 정책에 지정된 대로 approveTransaction API를 사용하여 이전을 승인합니다.
    3. 공증인은 executeHoldTokens API를 사용하여 전송 요청을 승인합니다. 또는 공증인은 releaseHold API를 사용하여 전송을 거부할 수 있습니다.
  4. 토큰 잔액을 확인합니다.
    • 사용자는 getAccountBalance API를 사용하여 보유하는 안정적인 동전의 양을 얻을 수 있습니다.
  5. 토큰을 굽습니다.
    1. 사용자는 requestBurn API를 사용하여 스테이블코인을 구울 요청을 제출할 수 있습니다.
    2. 레코딩 승인자는 approveBurn API를 사용하여 요청을 검토하고 승인합니다. 또는 레코딩 승인자는 rejectBurn API를 사용하여 요청을 거부할 수 있습니다.
  6. 트랜잭션 내역을 감사합니다.
    • 감사자와 사용자는 getAccountTransactionHistorygetAccountTransactionHistoryWithFilters API를 사용하여 감사 및 보고를 위한 트랜잭션 기록을 얻을 수 있습니다.

계정 정책 검증

Stablecoins를 이전하거나 보유하는 모든 계정에 대해 계정 정책은 필수입니다. 계정 정책은 transferTokens, holdTokens, approveTransaction, executeHoldTokens API에서 검증됩니다.

각 계정 정책에는 KYC, AMLrestrictionFlag의 세 가지 매개변수가 포함됩니다. 토큰이 전송되기 전에 발신자와 수신자 모두에 대해 검증됩니다.

KYC(고객 알기 제도)
KYC 값이 발신자 및 수령인 계정 모두에 대해 true인 경우에만 이전이 허용됩니다.
AML(금융 세탁 방지)
전송은 발신자 및 수신자 계정 모두에 대해 AML 값이 true인 경우에만 허용됩니다.
restrictionFlag
발신자 및 수신자 계정 모두에 대해 제한 플래그가 false로 설정된 경우 검증이 통과됩니다. holdTokens, approveTransactionexecuteHoldTokens API에 대해 발신자 또는 수신자 계정에 대해 제한 플래그가 true로 설정된 경우 사용 가능한 가장 낮은 승인 정책이 있고 금액이 정책 한도 내에 있는 경우에만 전송이 허용됩니다. 그렇지 않으면 전송이 차단됩니다. transferTokens 메소드의 경우 금액이 전송 제한 한도의 하한 및 상한에 있는 경우에만 전송이 허용됩니다.

승인 정책 일치

holdTokens API에 대한 호출 후 승인 정책 일치가 트리거됩니다. 승인 정책은 트랜잭션 임계값, 필요한 승인 수 및 승인자 세부정보를 정의하고 다중 레벨 승인에 대한 순서를 설정합니다. 보류 작업의 경우 승인 정책은 필수입니다. 승인 정책이 없으면 제한이 적용되는 경우 사용자가 토큰을 보유하거나 전송할 수 없습니다.

승인 정책 대응은 공증인이 보류 이전을 완료하기 전에 승인이 필요한지 여부를 결정합니다. 승인이 필요한 경우 승인 정책 일치에 따라 필요한 승인자와 순서가 결정됩니다.

발신자와 수신자 모두에 대해 제한 플래그가 설정되지 않은 경우 일치 항목을 찾기 위해 구성된 모든 승인 정책 임계값과 보류 금액을 비교합니다. 일치 항목이 발견되면 해당 승인자 및 순서가 사용됩니다. 일치하는 항목이 없으면 승인이 필요하지 않으며 거래가 공증으로 직접 진행됩니다.

발신자 또는 수신자에 대해 제한 플래그가 설정된 경우 사용 가능한 가장 낮은 승인 정책이 사용됩니다. 사용 가능한 정책이 없으면 트랜잭션이 차단됩니다.

정책 일치가 결정되면 승인 프로세스에 사용할 수 있도록 정책에서 다음 세부정보가 추출됩니다.
  • 필수 승인자입니다.
  • 승인 순서
  • 필요한 승인 수입니다.

거래 승인

트랜잭션 승인 검증은 approveTransaction API 호출 후 트리거됩니다. 검증은 holdTokens API 호출 중 일치된 승인 정책에 정의된 모든 승인 규칙을 강제 적용합니다. 다음 단계에 따라 각 승인자에 대해 순서대로 검증이 실행됩니다.

  1. 승인자 ID 검증: 현재 사용자가 승인 정책의 필수 승인자 목록에 있는지 확인합니다.
  2. 순번 순서 검증: 현재 승인자가 현재 순번 위치에서 예상 승인자인지 확인합니다.
  3. 중복 승인 확인: 동일한 승인자가 동일한 트랜잭션을 두 번 이상 승인하지 못하도록 합니다.
  4. 계정 정책 검증: 계정 정책 검증을 다시 실행하여 보류가 생성된 이후 발신자 및 수신자 계정 상태가 변경되지 않았는지 확인합니다.
  5. 레코드 승인: 시간 기록으로 승인을 기록하고, 승인 수를 늘리고, 필요한 모든 승인이 완료되었는지 확인합니다.
모든 승인이 기록되면 공증인이 트랜잭션을 완료할 준비가 된 것으로 표시합니다. 추가 승인이 필요한 경우 순차적으로 다음 승인자가 대기됩니다.