본문으로 건너뛰기

04 - IVMS101-part1

CodeVASP는 디지털 자산 거래와 관련된 개인정보를 교환하기 위해 IVMS101 표준을 사용합니다. https://intervasp.org/

  • 메시지의 필드 이름은 첫 글자가 소문자로 시작하는 camelCase로 표현됩니다. 단, ivms101의 Entity에 해당하는 Originator, Beneficiary, OriginatorVASP, BeneficiaryVASP 객체는 PascalCase로 표현됩니다.
  • 별도로 명시되지 않는 한 모든 필드의 값은 대소문자를 구분하지 않습니다.
  • 모든 필드의 값은 항상 UTF-8로 인코딩된 문자열로 표현됩니다. (boolean, integer, real number 등 포함)
  • 원칙적으로 Local Language가 허용되는 경우를 제외하고는 모든 필드의 값을 영어로 작성해야 합니다.
  • complete-example.json 파일에서 완전한 자연인 예제 json을 참고하십시오.
  • complete-example-legal-person.json 파일에서 완전한 법인 예제 json을 참고하십시오.
  • json-schema.json 파일에서 완전한 json 스키마를 제공합니다.
  • json 형식을 검증하기 위해 https://www.jsonschemavalidator.net/을 사용할 수 있습니다.
    • 스키마 선택: IVMS101 by CodeVASP Protocol

자산 이전 승인

송신자 VASP로부터의 초기 IVMS101

송신자 VASP로서 수신자 VSAP에게 다음을 전송해야 합니다. CodeVASP로부터 수신자의 entityId를 알고 있어야 하지만, 아직 그들의 VASP 정보는 알지 못하므로, 다음 객체들만 전송합니다.

{
"Originator": {...},
"Beneficiary": {...},
"OriginatingVASP": {...}
}

수신자 VASP로부터의 응답 IVMS101

수신자 VASP가 송신자에게 응답할 때는 다음과 같이 IVMS101 형식을 완성해야 합니다.

{
"Originator": {...},
"Beneficiary": {...},
"OriginatingVASP": {...},
"BeneficiaryVASP": {...}
}

customerIdentification과 같은 추가적인 수신자 정보를 Beneficiary 객체에 포함시킬 수도 있습니다.

자산 이전 승인 IVMS101 요청

  • ivms101(필수): 이는 디지털 자산 이전에 참여하는 각 주체에 대해 IVMS101 국제 표준에 따라 정의된 객체로서, IVMS101 메시지 표준에 따른 Beneficiary, BeneficiaryVASP, Originator, OriginatorVASP 등을 의미합니다. '자산 이전 승인 요청'에서 Originator의 이름, 자산 주소, Beneficiary의 자산 주소, OriginatingVASP 정보가 포함되어야 하며, Beneficiary 이름은 선택사항입니다.
    • Originator(필수): 해당 계정에서 디지털 자산(VA) 이전을 허용하는 계정 보유자, VA 이전을 수행하기 위해 송신 VASP에게 주문을 하는 자연인 또는 법인을 의미합니다.
      • originatorPersons(필수): naturalPerson(개인)과 legalPerson(법인) 두 가지 유형의 객체가 있으며, legalPerson의 경우 legalPerson(법인)과 naturalPerson(대표자) 정보를 모두 설정해야 합니다. 이는 배열 객체이며, 배열의 요소는 naturalPerson 또는 legalPerson 중 하나를 정의해야 합니다. 자세한 내용은 [IVMS101 part2]를 참고하십시오.
        • naturalPerson(필수): 자연인에 대한 정보를 설정하는 객체로, name 정보를 필수로 설정해야 합니다.
          • name(필수):
            • nameIdentifier: 법적 이름을 입력합니다. 한국 내 VASP 간 거래인 경우 한국어로 입력하고, 한국 외 VASP와 거래인 경우 영어로 입력합니다. [IVMS101 part2]를 참고하십시오.
              • primaryIdentifier: 성을 입력하거나 구분할 수 없는 경우, 성과 이름을 순서대로 함께 입력합니다.
              • secondaryIdentifier: 이름을 입력합니다. 성과 이름을 구분할 수 없는 경우 생략합니다.
              • nameIdentifierType: LEGL(법적)으로 고정
            • localNameIdentifier: 한국 외 VASP와 거래인 경우, 현지 이름을 추가로 전송하기 위해 정의됩니다.
              • primaryIdentifier: 성과 이름으로 구분된 현지 이름에서 성을 입력합니다. 구분할 수 없는 경우, 성과 이름을 순서대로 함께 입력합니다.
              • secondaryIdentifier: 성과 이름으로 구분된 현지 이름에서 이름을 입력합니다. 구분할 수 없는 경우 생략합니다.
              • nameIdentifierType: LEGL(법적)으로 고정
          • dateAndPlaceOfBirth (필수):
            • dateOfBirth: 생년월일을 1990-01-01 형식으로 입력합니다.
          • customerIdentification(선택): 이는 VASP가 자산을 이전하는 송신자를 식별할 수 있는 식별자(UID 또는 IDX)입니다
        • legalPerson(선택): 법인에 대한 정보를 설정하는 객체로, name 객체를 필수로 설정해야 합니다.
          • name(필수):
            • nameIdentifier: 등록된 법인의 이름을 입력합니다. 국내 VASP 간 거래인 경우 한국어 또는 영어로 입력하고, 한국 외 VASP와 거래인 경우 영어로 입력합니다.
              • legalPersonName: 법인명
              • legalPersonNameIdentifierType: LEGL(법적)으로 고정
          • customerIdentification(선택): 이는 VASP가 자산을 이전하는 송신자를 식별할 수 있는 고유 식별자(UID 또는 IDX)입니다
      • accountNumber(필수): 자산을 이전하는 지갑 주소입니다. tag 또는 memo 값이 필요한 경우, :로 구분하여 하나의 문자열로 만듭니다. [지갑 주소 검증]을 참고하십시오.
    • Beneficiary(필수): 자산을 받을 개인 또는 법인 및 그 대표자에 대한 정보를 입력합니다. 요청을 전송할 때는 이름과 지갑 주소로 구성된 Beneficiary 정보를 반드시 포함해야 합니다. 지갑 주소 정보는 필수이며, 이름 정보는 tradePrice가 Travel Rule 임계값을 초과하지 않는 경우 선택사항이지만 초과하는 경우 필수입니다. isExceedingThreshold가 true일 때는 이름 정보가 필수이고, isExceedingThreshold가 false일 때는 선택사항입니다. ※ 시장 변동성과 글로벌 규제를 고려하여 모든 거래에 Travel Rule을 적용하는 것을 권장합니다. 이 경우 isExceedingThreshold를 False로 설정하고 수신자의 이름을 입력하십시오.
      • beneficiaryPersons(필수): Beneficiary 객체는 beneficiaryPersons라는 하위 객체를 포함해야 합니다. beneficiaryPersons의 구조는 originatorPersons와 동일합니다. naturalPerson 또는 legalPerson으로 구분할 수 있습니다. 입력된 이름을 수신자의 실제 이름과 비교할 때, 이름이 일치하지 않으면 수신 VASP는 거부 응답을 전송합니다.
        • naturalPerson(필수 또는 선택): 개인에 대한 정보를 설정하는 데 사용되는 객체입니다. isExceedingThreshold가 true일 때는 필수이고, isExceedingThreshold가 false일 때는 선택사항입니다.
        • legalPerson(필수 또는 선택): 법인에 대한 정보를 설정하는 데 사용되는 객체입니다. isExceedingThreshold가 true일 때는 필수이고, isExceedingThreshold가 false일 때는 선택사항입니다.
      • accountNumber(필수): 자산이 이전될 지갑 주소입니다. tag 또는 memo 값이 필요한 경우, :로 구분하여 하나의 문자열로 만듭니다.
    • OriginatingVASP(필수): 송신자를 대신하여 디지털 자산(VA) 이전 요청을 받아 VA 이전을 시작하고 VA를 이전하는 VASP를 의미합니다.
      • originatingVASP(필수):
        • legalPerson(필수): 자산을 이전하려는 VASP의 법인에 대한 정보입니다
          • name(필수):
            • nameIdentifier: 국제 표기법을 따르는 이름 정보입니다. (영문명)
              • legalPersonName: 영문 법인명
              • legalPersonNameIdentifierType: LEGL(법적)으로 고정
          • geographicAddress(선택): 법인 등록 서류상의 위치입니다. 법인의 등록번호와 주소 중 하나를 입력해야 합니다.
            • addressType: GEOG를 입력합니다.
            • townName: 시/도명을 입력합니다.
            • addressLine: 문자열 배열 형식으로 townName 하위 주소를 입력합니다.
            • country: ISO-3166-1 alpha-2에 의해 결정된 2글자 국가 코드입니다. 예) KR, JP, US 등.
          • nationalIdentification(선택): 국가에서 인증된 법인 식별번호, 즉 사업자등록번호입니다. 법인의 주소 또는 등록번호 중 하나를 입력해야 합니다.
            • nationalIdentifier: 사업자등록번호
            • nationalIdentifierType: RAID(등록 기관 식별자)
            • registrationAuthority: 8자리 코드입니다. [등록 기관 섹션][IVMS101 part2]를 참고하십시오
          • countryOfRegistration(필수): 등록 국가입니다. ISO-3166-1 alpha-2에 의해 결정된 2글자 국가 코드입니다. 예) KR, JP, US 등.

자산 이전 승인 IVMS101 응답

  • ivms101(필수): 이는 디지털 자산 이전에 참여하는 각 주체에 대해 IVMS101 국제 표준에 따라 정의된 객체로서, IVMS101 메시지 표준에 따른 Beneficiary, BeneficiaryVASP, Originator, OriginatorVASP 등을 의미합니다. '자산 이전 승인 응답'에서 Originator, OriginatingVASP 정보는 요청의 데이터를 복사하고, BeneficiaryBeneficiaryVASP 데이터를 입력합니다.
    • Originator(필수): 자산을 이전하려는 송신자(개인) 또는 법인 및 대표자에 대한 정보로, 요청값을 복사하여 사용합니다.
    • Beneficiary(필수): 자산이 이전될 송신자(개인) 또는 법인 및 대표자에 대한 정보입니다. '자산 이전 승인 응답'에서 자산의 이름과 주소를 입력하여 전송해야 합니다.
      • beneficiaryPersons(필수): 상위 객체인 Beneficiary 객체에 포함되어야 하며, originatorPersons와 구조가 동일하므로 요청에서의 originatorPersons 설명을 참고하십시오.
        • naturalPerson(필수): 개인에 대한 정보를 설정하는 객체로, name 정보를 필수로 설정해야 합니다.
        • legalPerson(선택): 법인에 대한 정보를 설정하는 객체로, name 정보를 필수로 설정해야 합니다.
      • accountNumber(필수): 자산을 이전하는 지갑 주소입니다. tag 또는 memo 값이 필요한 경우, :로 구분하여 하나의 문자열로 만듭니다. [지갑 주소 검증]을 참고하십시오.
    • OriginatingVASP(필수): 자산을 이전하려는 송신 VASP에 대한 정보로 요청값을 복사하여 사용합니다.
    • BeneficiaryVASP(필수): 자산이 이전될 수신자 VASP에 대한 정보입니다. OriginatingVASP와 구조가 동일하므로 요청에서의 OriginatingVASP 설명을 참고하십시오.

자산 이전 데이터 요청

자산 이전 데이터 요청은 자산 이전 승인 요청과 달리, 이미 실행된 온체인 거래에 따른 익명 입고가 발생했을 때 상대방으로부터 Travel Rule 데이터를 얻는 방법입니다.

수신자 VASP로부터의 초기 IVMS101

수신자 VASP로서 송신자 VASP에게 다음 객체를 전송해야 합니다. TXID 조회를 통해 송신자 VASP의 entityId는 이미 알고 있지만, 발신자의 정보는 알지 못하므로 다음과 같이 전송됩니다.

{
"Beneficiary": {...},
"BeneficiaryVASP": {...}
}

송신자 VASP로부터의 응답 IVMS101

송신자 VASP로서 수신자 VASP의 요청에 OriginatorOriginatorVASP 객체를 추가하여 응답합니다.

{
"Originator": {...},
"OriginatingVASP": {...},
"Beneficiary": {...},
"BeneficiaryVASP": {...}
}

자산 이전 데이터 요청 IVMS101 요청

  • ivms101(필수): 이는 디지털 자산 이전에 참여하는 각 주체에 대해 IVMS101 국제 표준에 따라 정의된 객체로서, IVMS101 메시지 표준에 따른 Beneficiary, BeneficiaryVASP, Originator, OriginatorVASP 등을 의미합니다. '자산 이전 데이터 요청'에서 BeneficiaryBeneficiaryVASP 정보가 포함되어야 합니다.
    • Beneficiary(필수): 자산을 수신하는 수신자(개인) 또는 법인 및 그 대표자에 대한 정보를 입력합니다. 요청을 전송할 때는 ① 이름과 ② 지갑 주소로 구성된 Beneficiary 정보를 반드시 포함해야 합니다. 지갑 주소 정보는 필수입니다.
      • beneficiaryPersons(필수): naturalPerson(개인)과 legalPerson(법인) 두 가지 유형의 객체가 있습니다. 법인의 경우 legalPerson(법인)과 naturalPerson(대표자) 정보를 모두 설정해야 합니다. 배열 객체이며, 배열의 각 요소는 naturalPerson 또는 legalPerson 중 하나를 정의해야 합니다.
        • naturalPerson(필수): 자연인에 대한 정보를 설정하는 객체로, name 정보를 필수로 설정해야 합니다.
          • name(필수):
            • nameIdentifier: 법적 이름을 입력합니다. 한국 내 VASP 간 거래인 경우 한국어로 입력하고, 한국 외 VASP와 거래인 경우 영어로 입력합니다. [IVMS101 part2]를 참고하십시오.
              • primaryIdentifier: 성을 입력하거나 구분할 수 없는 경우, 성과 이름을 순서대로 함께 입력합니다.
              • secondaryIdentifier: 이름을 입력합니다. 성과 이름을 구분할 수 없는 경우 생략합니다.
              • nameIdentifierType: LEGL(법적)으로 고정
            • localNameIdentifier: 한국 외 VASP와 거래인 경우, 현지 이름을 추가로 전송하기 위해 정의됩니다.
              • primaryIdentifier: 성과 이름으로 구분된 현지 이름에서 성을 입력합니다. 구분할 수 없는 경우, 성과 이름을 순서대로 함께 입력합니다.
              • secondaryIdentifier: 성과 이름으로 구분된 현지 이름에서 이름을 입력합니다. 구분할 수 없는 경우 생략합니다.
              • nameIdentifierType: LEGL(법적)으로 고정
          • customerIdentification(선택): 이는 VASP가 자산을 수신한 수신자를 식별할 수 있는 식별자(UID 또는 IDX)입니다.
        • legalPerson(선택): 법인에 대한 정보를 설정하는 객체로, name 객체를 필수로 설정해야 합니다.
          • name(필수):
            • nameIdentifier: 등록된 법인의 이름을 입력합니다. 국내 VASP 간 거래인 경우 한국어 또는 영어로 입력하고, 한국 외 VASP와 거래인 경우 영어로 입력합니다.
              • legalPersonName: 법인명
              • legalPersonNameIdentifierType: LEGL(법적)으로 고정
          • customerIdentification(선택): 이는 VASP가 자산을 수신한 수신자를 식별할 수 있는 고유 식별자(UID 또는 IDX)입니다.
      • accountNumber(필수): 자산을 수신한 지갑 주소입니다. tag 또는 memo 값이 필요한 경우, :로 구분하여 하나의 문자열로 만듭니다.
    • BeneficiaryVASP(필수): 자산을 수신한 VASP의 정보입니다.
      • beneficiaryVASP(필수):
        • legalPerson(필수): 자산을 수신한 VASP의 법인 정보입니다.
          • name(필수):
            • nameIdentifier: 국제 표기법을 따르는 이름 정보입니다. (영문명)
              • legalPersonName: 영문 법인명
              • legalPersonNameIdentifierType: LEGL(법적)으로 고정
          • geographicAddress(선택): 법인 등록 서류상의 위치입니다. 법인의 등록번호와 주소 중 하나를 입력해야 합니다.
            • addressType: GEOG를 입력합니다.
            • townName: 시/도명을 입력합니다.
            • addressLine: 문자열 배열 형식으로 townName 하위 주소를 입력합니다.
            • country: ISO-3166-1 alpha-2에 의해 결정된 2글자 국가 코드입니다. 예) KR, JP, US 등.
          • nationalIdentification(선택): 국가에서 인증된 법인 식별번호, 즉 사업자등록번호입니다. 법인의 주소 또는 등록번호 중 하나를 입력해야 합니다.
            • nationalIdentifier: 사업자등록번호
            • nationalIdentifierType: RAID(등록 기관 식별자)
            • registrationAuthority: 8자리 코드입니다. [등록 기관 섹션][IVMS101 part2]를 참고하십시오
          • countryOfRegistration(필수): 등록 국가입니다. ISO-3166-1 alpha-2에 의해 결정된 2글자 국가 코드입니다. 예) KR, JP, US 등.

자산 이전 데이터 요청 IVMS101 응답

  • ivms101(필수): 응답 객체에서 OriginatorOriginatingVASP 정보는 TXID를 통해 찾은 데이터로 생성됩니다. BeneficiaryBeneficiaryVASP 데이터는 요청 객체에서 그대로 사용됩니다.
    • Originator(필수): 해당 계정에서 디지털 자산(VA) 이전을 허용하는 계정 보유자, VA 이전을 수행하기 위해 송신 VASP에게 주문을 하는 자연인 또는 법인을 의미합니다.
      • originatorPersons(필수): naturalPerson(개인)과 legalPerson(법인) 두 가지 유형의 객체가 있으며, legalPerson의 경우 legalPerson(법인)과 naturalPerson(대표자) 정보를 모두 설정해야 합니다. 이는 배열 객체이며, 배열의 요소는 naturalPerson 또는 legalPerson 중 하나를 정의해야 합니다. 자세한 내용은 [IVMS101 part2]를 참고하십시오.
        • naturalPerson(필수): 자연인에 대한 정보를 설정하는 객체로, name 정보를 필수로 설정해야 합니다.
          • name(필수):
            • nameIdentifier: 법적 이름을 입력합니다. 한국 내 VASP 간 거래인 경우 한국어로 입력하고, 한국 외 VASP와 거래인 경우 영어로 입력합니다. [IVMS101 part2]를 참고하십시오.
              • primaryIdentifier: 성을 입력하거나 구분할 수 없는 경우, 성과 이름을 순서대로 함께 입력합니다.
              • secondaryIdentifier: 이름을 입력합니다. 성과 이름을 구분할 수 없는 경우 생략합니다.
              • nameIdentifierType: LEGL(법적)으로 고정
            • localNameIdentifier: 한국 외 VASP와 거래인 경우, 현지 이름을 추가로 전송하기 위해 정의됩니다.
              • primaryIdentifier: 성과 이름으로 구분된 현지 이름에서 성을 입력합니다. 구분할 수 없는 경우, 성과 이름을 순서대로 함께 입력합니다.
              • secondaryIdentifier: 성과 이름으로 구분된 현지 이름에서 이름을 입력합니다. 구분할 수 없는 경우 생략합니다.
              • nameIdentifierType: LEGL(법적)으로 고정
          • customerIdentification(선택): 이는 VASP가 자산을 이전하는 송신자를 식별할 수 있는 식별자(UID 또는 IDX)입니다
        • legalPerson(선택): 법인에 대한 정보를 설정하는 객체로, name 객체를 필수로 설정해야 합니다.
          • name(필수):
            • nameIdentifier: 등록된 법인의 이름을 입력합니다. 국내 VASP 간 거래인 경우 한국어 또는 영어로 입력하고, 한국 외 VASP와 거래인 경우 영어로 입력합니다.
              • legalPersonName: 법인명
              • legalPersonNameIdentifierType: LEGL(법적)으로 고정
          • customerIdentification(선택): 이는 VASP가 자산을 이전하는 송신자를 식별할 수 있는 고유 식별자(UID 또는 IDX)입니다
      • accountNumber(필수): 송신자의 지갑 주소입니다. tag 또는 memo 값이 필요한 경우, :로 구분하여 하나의 문자열로 만듭니다.
    • OriginatingVASP(필수): 송신자를 대신하여 디지털 자산(VA) 이전 요청을 받아 VA 이전을 시작하고 VA를 이전하는 VASP를 의미합니다.
      • originatingVASP(필수):
        • legalPerson(필수): 자산을 이전하려는 VASP의 법인에 대한 정보입니다
          • name(필수):
            • nameIdentifier: 국제 표기법을 따르는 이름 정보입니다. (영문명)
              • legalPersonName: 영문 법인명
              • legalPersonNameIdentifierType: LEGL(법적)으로 고정
          • geographicAddress(선택): 법인 등록 서류상의 위치입니다. 법인의 등록번호와 주소 중 하나를 입력해야 합니다.
            • addressType: GEOG를 입력합니다.
            • townName: 시/도명을 입력합니다.
            • addressLine: 문자열 배열 형식으로 townName 하위 주소를 입력합니다.
            • country: ISO-3166-1 alpha-2에 의해 결정된 2글자 국가 코드입니다. 예) KR, JP, US 등.
          • nationalIdentification(선택): 국가에서 인증된 법인 식별번호, 즉 사업자등록번호입니다. 법인의 주소 또는 등록번호 중 하나를 입력해야 합니다.
            • nationalIdentifier: 사업자등록번호
            • nationalIdentifierType: RAID(등록 기관 식별자)
            • registrationAuthority: 8자리 코드입니다. [등록 기관 섹션][IVMS101 part2]를 참고하십시오
          • countryOfRegistration(필수): 등록 국가입니다. ISO-3166-1 alpha-2에 의해 결정된 2글자 국가 코드입니다. 예) KR, JP, US 등.
    • Beneficiary(필수): 자산을 수신한 수신자의 정보입니다. 요청의 객체가 그대로 복사되어 사용됩니다.
    • BeneficiaryVASP(필수): 자산을 수신한 VASP의 정보입니다. 요청의 객체가 그대로 복사되어 사용됩니다.