본문으로 건너뛰기

04_기술 FAQ

1. Travel Rule 준수를 위해 API 출고는 어떻게 처리해야 합니까?

정책상 사용자나 시스템이 API를 통해 출고를 개시할 수 있도록 허용하는 경우에도 Travel Rule 준수는 필수입니다.

사용자가 API를 통해 출고를 개시할 때, 사용자의 API 입력 매개변수로부터 직접 필수 Travel Rule 데이터를 수집해야 합니다. 먼저 등록된 정보를 사용하여 이 Travel Rule 데이터를 전송하고 검증하는 것을 강력히 권장합니다. 수신자 VASP로부터 유효하고 승인된 응답을 받은 후에만 실제 온체인 거래를 실행해야 합니다.

VASP List API 패턴

API 기반 출고를 지원하는 주요 거래소들은 일반적으로 전용 VASP List API 엔드포인트를 제공합니다. 이를 통해 호출 시스템이 먼저 지원되는 수신자 VASP 목록을 조회한 다음, 선택된 VASP를 출고 요청에서 열거형 값(ENUM)으로 전달할 수 있습니다. 이는 오류가 발생하기 쉬운 자유 텍스트 입력에 의존하지 않고, 정확하고 검증된 VASP 식별자가 항상 Travel Rule 페이로드와 함께 전송되도록 보장합니다.

수신자 정보 매개변수

VASP 식별자 외에도, 주요 거래소들은 거래 시점에서 Travel Rule 데이터를 수집하기 위해 출고 API에 직접 전용 수신자 정보 매개변수를 포함합니다. 다음은 실제 사례입니다:

Bybit — POST /v5/asset/withdraw/create

Bybit은 지원되는 목적지 VASP를 조회하기 위한 전용 VASP list endpoint를 제공합니다. 출고 API는 다음 Travel Rule 관련 매개변수들을 허용합니다:

매개변수필수설명
vaspEntityId✅ 필수 (한국 사용자)VASP 식별자, VASP list API에서 선택. 알 수 없는 경우 "others" 사용.
beneficiaryName✅ 필수 (한국 사용자)목적지 거래소에 등록된 수신자의 전체 이름 (KYC 이름).
beneficiaryWalletType필수 (TR/KZ 사용자)0 = 거래소 지갑, 1 = unhosted/개인 지갑

OKX — POST /api/v5/asset/withdrawal

OKX는 이용 가능한 목적지 거래소를 조회하기 위한 Get Exchange List (public) 엔드포인트를 제공합니다. 출고 API는 수신자 Travel Rule 데이터를 위한 중첩된 rcvrInfo 객체를 허용합니다:

매개변수타입설명
rcvrInfo.walletTypeStringVASP 지갑의 경우 "exchange", unhosted 지갑의 경우 "private"
rcvrInfo.exchIdString목적지 거래소 식별자 (DID 형식, exchange list API에서)
rcvrInfo.rcvrFirstNameString수신자의 이름 (예: "Bruce")
rcvrInfo.rcvrLastNameString수신자의 성 (예: "Wayne")

수신자 정보가 포함된 OKX 페이로드 예시:

{
"amt": "1",
"dest": "4",
"ccy": "BTC",
"chain": "BTC-Bitcoin",
"toAddr": "17DKe3kkkkiiiiTvAKKi2vMPbm1Bz3CMKw",
"rcvrInfo": {
"walletType": "exchange",
"exchId": "did:ethr:0xfeb4f99829a9acdf52979abee87e83addf22a7e1",
"rcvrFirstName": "Bruce",
"rcvrLastName": "Wayne"
}
}

두 거래소 모두 동일한 기본 패턴을 따릅니다: 먼저 VASP/거래소 목록을 조회하여 ENUM 호환 식별자를 얻은 다음, Travel Rule 준수 요구사항을 충족하기 위해 출고 요청에 VASP 식별자와 수신자 이름을 모두 포함합니다.

2. CodeVASP Cipher Module이란 무엇이며, 어떻게 사용해야 합니까?

CodeVASP Cipher Module은 Docker 이미지로 배포되는 선택적 독립형 암호화 및 복호화 서비스입니다. CodeVASP 대시보드를 통해 (인증 자격 증명을 사용하여) 다운로드하고 자체 네트워크 인프라 내에서 완전히 실행할 수 있습니다.

주요 특징:

  • 격리된 환경: 모듈은 완전히 오프라인으로 작동하며 인터넷 연결이 없습니다. 외부 서버와 통신하지 않습니다.
  • 선택 사항: VASP는 내부 아키텍처 및 보안 요구사항에 따라 이 모듈을 사용하거나 완전히 제외할 수 있습니다.
  • 범위: 입력 데이터 검증, 암호화, CodeVASP Travel Rule API에 제출할 수 있도록 적절히 구조화된 페이로드 생성이 유일한 책임입니다.

개발자를 위한 중요 사항: CodeVASP Cipher Module은 CodeVASP Travel Rule API 서버와 혼동해서는 안 됩니다. 모듈 자체는 Travel Rule 데이터를 전송하지 않습니다. 모듈의 출력(암호화된 페이로드)은 CodeVASP API의 입력으로 사용되어야 합니다. 올바른 사용 흐름은 다음과 같습니다:

흐름의 4단계는 다음과 같습니다:

  1. 시작 → Cipher: 송신하는 VASP가 네트워크 내에서 로컬로 실행되는 CodeVASP Cipher 모듈에 원시 이전 데이터를 전송합니다.
  2. Cipher → 요청: Cipher 모듈이 검증, 암호화하여 적절히 구조화된 페이로드를 생성하고, 이를 송신하는 VASP의 프로세스로 다시 전달합니다.
  3. 요청 → CodeVASP: 송신하는 VASP가 암호화된 페이로드를 사용하여 CodeVASP Travel Rule API를 호출하며, 이후 수신자 VASP와 조정합니다.
  4. CodeVASP → 완료: 결과가 송신하는 VASP로 반환되어 흐름을 완료합니다.

3. CodeVASP Cipher 모듈 사용이 필수입니까?

Cipher 모듈은 ID Connect에 대해서는 필수입니다. 다른 모든 통합 유형에 대해서는 선택사항입니다. 하지만 사용할 경우 암호화 로직을 오프로드하여 전체 개발 시간을 크게 단축할 수 있습니다.

4. VASP List Search API는 얼마나 자주 호출해야 합니까?

CodeVASP와 통합된 VASP 목록은 모든 거래마다 실시간 조회가 필요할 정도로 자주 변동하지 않습니다. 비용 효율적인 운영을 위해 요청당 호출하지 말고 목록을 캐시하고 적절한 예약된 간격(예: 일일 또는 필요시)으로 새로 고침하는 것을 권장합니다.

5. accountNumber 필드에는 사용자의 지갑 주소 또는 거래소의 지갑 주소 중 어느 것을 포함해야 합니까?

accountNumber 필드는 사용자의 지갑 주소를 포함해야 합니다. 유효한 Travel Rule 데이터로 인정받으려면, 주소가 송신자 또는 수신자를 자연인 또는 법인으로 명확히 식별해야 합니다. 또한 사용자의 지갑 주소를 사용하면 거래가 취소될 경우 자산을 안전하게 반환할 수 있습니다.

6. currency는 네트워크 심볼 또는 코인 심볼 중 어느 것이어야 합니까?

currency 필드는 코인 심볼(코인 티커라고도 함, 예: BTC, ETH, USDT)이어야 합니다. 값은 대소문자를 구분하지 않습니다.

7. tradePricetradeCurrency는 어떻게 계산하고 입력해야 합니까?

tradePrice는 디지털 자산을 법정화폐로 변환한 총 가치를 의미합니다. 자체 가격 데이터를 사용할 수 없는 경우, 다른 VASP의 가격 API를 사용하여 값을 계산하십시오.

예시: 현재 가격 $42,708에서 2 BTC 이전:

42,708 × 2 = $85,416

"tradePrice": "85416",
"tradeCurrency": "USD"

tradeCurrencyISO 4217 표준에 따른 유효한 법정화폐 코드여야 합니다. 지원되는 통화는 다음과 같습니다:

국가통화
🇺🇸 미국USD
🇰🇷 한국KRW
🇪🇺 유럽연합EUR
🇯🇵 일본JPY
🇨🇳 중국CNY
🇬🇧 영국GBP
🇨🇦 캐나다CAD
🇦🇺 호주AUD
🇭🇰 홍콩HKD
🇸🇬 싱가포르SGD

위에 나열되지 않은 통화를 사용해야 하는 경우 CodeVASP 팀에 문의하시기 바랍니다.

8. IVMS101에서 필수 필드는 무엇입니까?

송신자와 수신자 모두에 대해 모든 개인 유형(자연인 및 법인)에서 필수 및 선택 필드의 전체 분석을 위해 04 - IVMS101-part3 문서를 참조하시기 바랍니다.

9. Request API와 Response API란 무엇입니까?

Request API는 CodeVASP Travel Rule API에 Travel Rule 데이터를 전송하는 데 사용됩니다. 따라서 송신자 VASP에 의해 호출됩니다. Response API는 CodeVASP Travel Rule API로부터 Travel Rule 데이터를 수신하는 데 사용됩니다. 따라서 트래픽은 수신자 VASP로 향하게 됩니다.