03_일반 FAQ
1. 기술 통합 및 개발을 시작하기 전 중요한 전제 조건은 무엇입니까?
개발 단계에 진입하기 전 명확한 내부 정책을 수립하는 것이 필수적입니다. 모든 기술 개발 및 시스템 설계는 VASP(디지털 자산 서비스 제공업체)의 내부 정책과 컴플라이언스 규칙을 준수해야 합니다.
따라서 컴플라이언스 관리자, 프로젝트 관리자, 제품 관리자는 다음 사항에 대한 포괄적인 이해를 공유해야 합니다:
- FATF(금융행동전담기구) 가이드라인
- 특정 관할권의 법률, 가이드라인 및 규제 프레임워크 (예: 한국 금융정보분석원(KoFIU)이 시행하는 엄격한 규칙 또는 EU의 암호자산 시장 규제(MiCA))
- IVMS101 데이터 표준
- VASP의 특정 내부 컴플라이언스 및 리스크 정책
워크플로우에서의 정책 구현 실무 사례:
A. 인바운드 이전 (자산 입고)
사용자가 지갑에 자산을 입고할 때, 수신 VASP는 다음과 같은 프로세스를 마련해야 합니다:
- 수신 자금과 관련된 리스크를 평가하고 완화하기 위한 KYT (Know Your Transaction) 또는 온체인 분석 실행
- 동반되는 Travel Rule 데이터의 가용성, 완전성 및 정확성 검증
B. 아웃바운드 이전 (자산 출고)
사용자가 외부 지갑(예: 다른 VASP)으로 자산 출고를 요청할 때, 송신 VASP는 다음을 수행해야 합니다:
- 대상 주소가 블록체인 인텔리전스 또는 컴플라이언스 도구에 의해 플래그되지 않았는지 확인
- 온체인 이전을 승인하기 전에 올바르고 필요한 Travel Rule 데이터가 수신자 VASP에 의해 안전하게 전송되고 검증되었는지 확인
2. CodeVASP는 사용자의 개인정보와 거래 데이터를 저장합니까?
CodeVASP는 사용자의 개인정보 및 거래 데이터를 모니터링하거나 저장할 수 없습니다. VASP들은 데이터를 암호화된 형태로 이전합니다. CodeVASP는 데이터 전송 프로세스를 지원하며 데이터를 복호화하거나 접근할 수 없습니다.
3. 통합에 소요되는 시간은 얼마나 됩니까?
회원사의 상황과 프로세스에 따라 차이가 있습니다. 기록상 가장 빠른 경우는 3일입니다.
4. 통합 후 바로 모든 CodeVASP 회원사와 입고 및 출고가 가능합니까?
상대방 VASP의 정책에 따라 추가적인 DD (Due Diligence)가 필요할 수 있습니다. CodeVASP가 자체적인 초기 DD 검토를 수행하므로 리드타임을 단축할 수 있습니다.
5. 커뮤니케이션 채널은 무엇입니까?
CodeVASP는 Slack, Email 또는 Lark를 통해 회원사를 지원합니다. 계약 체결 후 별도의 Slack 채널을 개설하여 회원사를 초대할 수 있습니다.
6. 수신자 VASP 검증이 중요한 이유는 무엇이며, 어떻게 수행됩니까?
정확한 수신자 VASP 정보 검증은 Travel Rule 인증에 있어 중요하지만 어려운 과제입니다.
- 컴플라이언스 실패: 수신자 VASP 정보가 누락되면 해당 거래는 Travel Rule을 준수하는 것으로 간주될 수 없습니다.
- 정보 유출: 잘못된 상대방 VASP로 자산을 이전하려고 시도하면 민감한 사용자 정보 유출 위험이 발생합니다.
- 데이터 누락: 부정확한 수신자 VASP 정보는 이전에 필수적임에도 불구하고 Travel Rule 데이터 전송을 완전히 누락시킬 수 있습니다.
- 운영 오버헤드: 수신 VASP를 올바르게 인증하지 못하면 고객 지원 문의 증가와 운영 마찰이 발생할 가능성이 높습니다.
Travel Rule의 가장 중요한 부분 중 하나인 수신자 VASP 정보를 획득하는 방법은 두 가지가 있습니다: 사용자에게 직접 요청 또는 CodeVASP에 질의. 선택한 방법에 따라 프로세스 플로우가 변경됩니다. 아래 시퀀스 다이어그램은 사용자로부터 직접 수신자 VASP 정보를 획득하는 프로세스를 보여줍니다.
또는 VASP가 지갑 주소를 기반으로 수신자 VASP를 자동으로 검색하기 위해 CodeVASP에 질의하는 방법을 선택할 경우, Search VASP by wallet API 요청을 활용하도록 플로우가 변경됩니다:
주소를 찾을 수 없는 경우 (NOT_FOUND_ADDRESS) 처리
디지털 자산 주소 검색 단계(상대방 VASP와 지갑 주소가 확인되는 단계)에서 NOT_FOUND_ADDRESS의 reasonType과 함께 invalid 응답을 받을 수 있습니다. 이는 질의된 지갑이 대상 거래소에 속하지 않음을 나타냅니다.
일반적으로 이 시점에서 자산 이전 프로세스는 종료됩니다. 그러나 CodeVASP의 Search VASP by Wallet API 요청을 활용하여 사용자 경험을 원활하게 연결하는 두 가지 전략을 사용할 수 있습니다:
- 옵션 1 (알림 및 재시작): CodeVASP의 응답을 기반으로 지갑 주소가 실제로 속한 거래소를 사용자에게 알립니다. 그 후 현재 이전 프로세스를 종료하고 올바른 VASP를 선택하여 다시 시작하도록 사용자에게 안내합니다.
- 옵션 2 (재정의 및 계속): 사용자가 제공한 VASP 정보를 CodeVASP가 제공한 정보로 재정의하여 자산 이전 프로세스를 계속 진행합니다. '자산 이전 승인'을 자동으로 진행하기 전에 CodeVASP가 제공한 새로운 VASP 정보를 사용자에게 제시하여 최종 확인을 받는 UI 단계를 추가하는 것을 강력히 권장합니다.
사용자가 수신 거래소를 확실하지 않을 때
디지털 자산 출고 시 사용자가 잘못된 수신 거래소를 선택하는 경우가 흔합니다. 이는 일반적으로 제공된 준수 거래소 목록이 너무 길거나 사용자가 목적지 거래소의 정확한 법적 명칭을 모르기 때문에 발생합니다.
이를 원활하게 처리하고 오류를 줄이기 위해 드롭다운 목록을 단순화하는 "기타" 옵션을 제공하거나 "확실하지 않음" 선택지를 포함하는 것을 권장합니다.
사용자가 이러한 옵션 중 하나를 선택하면 백그라운드에서 CodeVASP의 Search VASP by Wallet Request API를 호출할 수 있습니다. 이 API 호출이 비동기적으로 작동하므로 출고 프로세스 초기(예: 사용자가 목적지 지갑 주소를 입력하자마자)에 이 옵션을 배치하면 불필요한 지연 없이 사용자 경험을 크게 개선할 수 있습니다.
지갑 검색에 대한 참고사항:
Search VASP by Wallet Request는 회원 VASP와 연결된 입고를 받을 수 있는 사용자 지갑만을 대상으로 합니다. VASP의 내부 핫월렛은 포함되지 않습니다.
7. 수신자 정책: 위험 최소화, 기회 극대화
VASP들은 글로벌 규제 동향과 내부 리스크 평가 기준에 따라 입고 및 출고 정책을 설정합니다. 이 과정에서 특정 VASP와의 통합을 이진 방식(전부 또는 전무)으로 결정하는 경우가 많습니다. 그러나 보다 유연한 접근 방식을 고려할 수 있습니다.
컴플라이언스 관점에서 위험을 줄이면서 동시에 비즈니스 관점에서 확장성을 추구하는 한 가지 방법은 **사용자 본인의 지갑과의 거래만 허용(당사자간 이전)**하는 것입니다.
거래 제한에 따른 두 가지 정책 옵션을 비교해보겠습니다:
1. 제3자와의 거래
CodeVASP의 Travel Rule은 개인 및 제3자 거래 모두에 대해 거래 정보 검증을 요구합니다. 사용자가 자산을 자유롭게 이전할 수 있는 환경을 제공하는 VASP는 시장 접근성을 향상시킬 뿐만 아니라 수익 증대에 기여할 수 있습니다.
2. 당사자간 거래(동일 개인 또는 법인)
VASP가 엄격한 실사(DD) 조건을 모두 충족하지 않더라도, 사용자 본인의 지갑과의 거래만 신중하게 허용하는 정책을 수립할 수 있습니다.
이를 구현하기 위해 별도의 추가 개발이 크게 필요하지 않습니다. 그러나 원활한 사용자 경험을 보장하기 위해 다음과 같은 UX/UI 및 입고/출고 프로세스 수정이 권장됩니다:
A. 출고 UX 조정
출고 화면에서 사용자가 본인에게만 자산을 송금하도록 선택할 경우, 수신자 정보를 자동으로 잠글 수 있습니다. UI를 설정하여 수신자 정보를 송신자의 세부사항으로 자동 입력하고 편집을 방지합니다.
B. 입고 데이터 검증
인바운드 입고 중에는 수신 페이로드에서 신원을 검증해야 합니다:
Asset Transfer AuthorizationAPI 데이터(payload)에서 송신자와 수신자의nameIdentifier정보가 완벽하게 일치하는지 검증합니다.- 송신자의 이름이 플랫폼에서 수신 지갑 소유자의 KYC 이름과 일치하는지 확인합니다.
이러한 엄격한 요구사항은 송신 VASP가 전송하는 송신자 및 수신자 정보가 수신 VASP가 보유한 KYC 정보와 정확히 일치하도록 보장합니다. 이러한 세부사항이 완벽히 일치할 때만 입고가 처리되어야 합니다.
일치하지 않을 경우 다음과 같은 페이로드 구조를 사용하여 'denied' 응답을 반환해야 합니다:
{
"result": "denied",
"reasonType": "INPUT_NAME_MISMATCHED",
"reasonMsg": "Only self-transfer allowed from the originator"
}
8. 온체인 분석 vs. Travel Rule 검증
VASP(디지털 자산 서비스 제공업체) 간에 디지털 자산을 이전할 때, 거래를 평가하고 상대방 정보를 식별하는 주요 방법은 두 가지입니다: Travel Rule 솔루션 사용 또는 제3자 온체인 분석 서비스 활용.
현재 많은 VASP가 다양한 컴플라이언스 목적으로 두 방법을 동시에 사용합니다. 그러나 이렇게 할 경우 지갑 주소 검증 과정에서 불필요한 혼란이나 마찰이 실수로 발생할 수 있습니다.
전략적 요약 및 권장사항
교차 검증 충돌을 줄이기 위해 다음과 같은 표준화를 강력히 권장합니다:
- Travel Rule 데이터를 먼저 검증: 디지털 자산 이전 시 원시 온체인 데이터보다 Travel Rule 페이로드 데이터 검증을 항상 우선시하십시오.
- 교차 검증을 위한
txid기반 질의: CodeVASP Travel Rule 회원사 간 데이터를 교차 확인할 때는 원시 지갑 주소보다 거래 ID(txid)를 표준 참조 소스로 활용하는 것을 강력히 권장합니다.
지갑 기반 리스크 평가의 잠재적 문제
암호화폐 거래소 지갑 인프라는 크게 두 가지 유형으로 분류할 수 있습니다:
- 집단적 보안, 효율성 및 가스 절약을 위해 사용자 자산을 통합하는 지갑(예: 거래소가 직접 소유하거나 제3자 커스터디언이 제공하는 핫월렛)
- 개별 최종 사용자에게 고유하게 할당된 입고 지갑
실제로 출고는 "물리적" 통합 핫월렛에서 발생할 수 있지만, "논리적" 사용자 지갑은 거래 결과를 기록하는 데 사용되는 데이터베이스 원장 항목에 불과합니다. 이때 실제로 출고가 발생하는 지갑이 제3자 커스터디언 소유일 경우 한 가지 중요한 고려사항이 있습니다: 여러 독립적인 사업체가 단일 지갑을 사용할 수 있다는 것입니다.
온체인 분석 도구는 종종 특정 사용자보다 지갑 주소를 기준으로 위험을 결정론적으로 평가하므로, 공유 커스터디 지갑은 위양성 위험을 제시합니다. 예를 들어, 커스터디 서비스가 보유한 지갑 주소 1a2b3c를 사업체 A, 사업체 B, 사업체 C가 개별적으로 사용하고 있고, 사업체 B가 AML 관점에서 위험 요소를 가지고 있다면, 온체인 분석 서비스는 오염된 주소를 공유한다는 이유로 사업체 A와 C에서 발생하는 모든 거래를 의심스러운 것으로 무분별하게 플래그할 수 있습니다.
이러한 경우 완전히 정상적이고 준수된 입고 조건하에서도 수신 VASP의 내부 심사 프로세스가 잘못 결정되어 자산이 동결되거나 반환될 수 있으며, 이는 최종 사용자에게 큰 혼란을 야기합니다.
이상적인 사용 사례
CodeVASP의 Travel Rule 데이터는 거래 당사자(거래소의 실제 사용자)와 거래소 자체에 대한 풍부하고 세분화된 신원 정보를 포함합니다. 이는 Travel Rule 페이로드를 디지털 자산 이전과 관련된 세부사항을 검증하는 가장 신뢰할 수 있는 단일 소스로 만들어줍니다—물리적 주소에만 의존하는 것보다 훨씬 정확합니다.
따라서 포괄적인 Travel Rule 데이터가 가용할 경우, Report Transfer Result (TX Hash) API에서 반환된 txid를 질의하여 송신자 VASP를 검증하십시오. 데이터가 정확하다면 공유 커스터디 지갑 주소 때문에 무분별하게 거래를 차단하기보다는 이 승인을 우선시하고 논리적이고 원활한 사용자 경험을 보장하기 위해 입고를 진행하십시오.
9. VASP를 위한 UI 가이드
Travel Rule 솔루션을 통합할 때, 송신 VASP는 수신자의 지갑 주소와 관련 VASP 세부사항을 기록해야 합니다. 일반적으로 이 데이터는 출고 프로세스 중에 사용자가 수신 VASP를 입력(또는 선택)할 수 있도록 하여 수집되며, 이는 사용자 인터페이스의 필요한 변경을 초래할 수 있습니다.
입고 화면
고객이 수신 자산을 받기 위해 필요한 정보를 표시합니다.
특히 고객의 이름(KYC 정보)을 보여주는 것은 송신 VASP의 사용자가 송신 VASP의 출고 화면에서 수신자 정보를 올바르게 입력하는 방법을 이해하는 데 도움이 됩니다.
이름이 잘못 등록된 경우에 대비하여 "KYC 업데이트" 옵션을 제공하는 것을 권장합니다.
출고 화면
출고 시 정확한 지갑 주소뿐만 아니라 상대방 VASP 정보도 확보하는 것이 중요합니다.
사용자가 정확한 선택을 할 수 있도록 CodeVASP 및 기타 Travel Rule 프로토콜을 포함한 별도의 VASP 목록을 유지하시기 바랍니다.
목록이 너무 길어지는 것을 원하지 않는 경우, "Search VASP by Wallet" 기능과 결합하여 "기타" 옵션을 제공할 수도 있습니다.