자산의 이전 데이터 요청을 검토하고, 결과를 반환합니다.

📘

PUT

/v1/verification/tx

이미 TXID가 발생되어 입고처리가 필요한 가장자산 전송이나 트래블룰 데이터가 없어 입고 처리 하는 VASP에서 출고 VASP측으로 '자산 이전 데이터'를 요청합니다. 이 데이터 요청을 처리하기 위한 API를 구현합니다.

API 동작 명세

  1. txidtransferId 기준으로 해당 출고건을 찾습니다.
  2. 해당 출고건의 정보를 찾습니다. 찾을 정보는 자산 이전 허가 요청과 같이 다음을 포함합니다. currency, amount, historicalCost, tradePrice, tradeCurrency, isExceedingThreshold.
  3. 암호화된 payload를 자신의 Private Key로 복호화합니다.
  4. 자산 정보와 Beneficiary 정보, BeneficiaryVASP 정보를 통해 상대방 VASP의 요청을 확인합니다.
  5. 자산 이전 허가 요청과 마찬가지로 출고한 고객의 정보로 Originator 정보를 만들고 OriginatingVASP 정보도 만듭니다.
  6. 이 내용을 토대로 자산 이전 정보를 DB에 저장하고, status 값을 부여합니다. normal 또는 error로 지정할 수 있습니다.
  7. 요청 메시지의 내용을 확인한 결과를 토대로 응답(response) 메시지를 생성합니다. 이때, Originator, OriginatingVASP 정보는 자산 이전 허가 요청을 보내는 것 처럼 출고한 사용자의 KYC 정보를 이용하여 객체를 만들고, Beneficiary, BeneficiaryVASP 정보는 요청의 값을 그대로 복사하여 사용합니다.

📘

Originator의 KYC 정보가 없을 때

Originator가 KYC를 완료하지 않아 신원정보가 없는 경우에는 '자산 이전 데이터 요청'에 대한 응답값으로 'reasonType'을 'LACK_OF_INFORMATION'으로 작성하고 'reasonMsg'에 상세 사유를 추가합니다. (예: 'The user did not finish KYC.')

Request

📘

Originator 의 개인정보는 2022.3.25 현재 개인인 경우 개인의 이름, 법인인 경우 법인과 대표자의 이름에 대한 정보만 보내기로 합니다.

이름필수 여부타입
transferId필수string
txid필수string
vout옵션string
payload필수string

transferId: 데이터를 요청하는 Beneficiary VASP에서 전송한 UUID입니다. 상호간의 관리를 위한 값으로 저장해두면 됩니다.


txid: 이미 On-Chain 트랜잭션이 발생한 TXID 입니다. 가상자산 이전을 위해 블록체인 상에 실행된 특정한 트랜잭션을 식별하기 위한 고유한 값입니다. 블록체인에 의해서 생성되며 유일한 값입니다.


vout: utxo타입 코인의 경우 복수의 블록체인 트랜잭션이 하나의 txid 를 공유하면서 그룹을 형성할 수 있습니다. 이때, 고유한 트랜잭션을 식별하기 위해 이 값을 사용합니다.

vout란? https://learnmeabitcoin.com/technical/transaction/input/vout/


payload: IVMS101 메시지를 담기 위한 객체입니다. IVMS101타입 페이지를 참고해 주세요.

{
    "txid" : "311BFF73D9B7969CCF1042186180159C724FAB59013A7A034A93E5FB9D6BAFE6",
    "vout" : "",
    "transferId" : "b09c8d00-8da9-11ec-b909-0242ac120002",
    "payload": "encrypted ivms101 payload(Beneficiary.Object,BeneficiaryVASP.Object)"
}

Response

이름필수 여부타입
result필수string
reasonType옵션string
reasonMsg옵션string
transferId필수string
currency옵션string
amount옵션string
historicalCost옵션string
tradePrice옵션string
tradeCurrency옵션string
isExceedingThreshold옵션String
payload필수string

result: 가상자산의 이전 허가 결과입니다.

-normal: 허가된 경우 반환됩니다.

-error: 자산 이전을 거부한 경우 반환됩니다. reasonType 값으로 상세 내용을 구분할 수 있습니다.


reasonType: result 필드 값이 error 인 경우 이 필드가 추가 됩니다.

-NOT_FOUND_TXID: TXID를 찾을 수 없는 경우입니다.

-LACK_OF_INFORMATION: IVMS101 데이터 구성에 필요한 정보가 없을 경우입니다.

※송신 사용자(Originator)가 KYC를 완료하지 않아 신원정보가 없는 경우에 'reasonType'을 'LACK_OF_INFORMATION'으로 작성하고 'reasonMsg'에 상세 사유를 추가해 주세요. (예: 'The user did not finish KYC.')

-UNKNOWN: 그 밖에 다른 이유입니다.


reasonMsg: reasonType 을 설명하는 상세 메시지를 정의합니다.


transferId: '자산 이전 데이터 요청'의 request 로 부터 받은 transferId입니다.


currency: 출고된 가상자산의 심볼로 대소문자를 구분하지 않습니다.


amount: 출고된 가상자산의 총 볼륨입니다.


historicalCost: 출고된 가상자산의 취득 원가입니다. (국세청 요구 사항이지만, 아직은 사용하지 않습니다.)


tradePrice: 출고 당시 법정 화폐로 환산한 가상자산 전송 금액입니다. 아래의 'tradePrice' 계산법을 참고해 주세요


tradeCurrency: 법정 화폐로 환산할 때 사용한 ISO 4217 표준을 따르는 법정 화폐 코드입니다.


isExceedingThreshold: tradePrice가 법령에서 지정한 트래블룰 적용 기준을 초과하는지 여부로, true 또는false로 입력합니다.


payload(Required): IVMS101 메시지가 담긴 객체입니다. 상세 내용은 IVMS101타입 페이지를 참고해주세요.


📘

'tradePrice' 계산법

'tradePrice'에는 해당 자산의 수량과 가격을 곱하여 법정 화폐로 계산한 값을, tradeCurrency에는 법정 화폐의 종류를 입력해야 합니다. 예를 들어 2 BTC를 이전하는 경우, 그 시점의 가격이 $42,708라고 한다면 총 가격은 42,708*2 = 85,416 달러 입니다. 이 경우 다음과 같이 입력해야 합니다.

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

{
    "result" : "normal",
    "transferId" : "b09c8d00-8da9-11ec-b909-0242ac120002",
    "currency": "BTC",
    "amount": "0.1",
    "historicalCost": "",
    "tradePrice": "10000",
    "tradeCurrency": "KRW",
    "isExceedingThreshold": "true",
    "payload": "encrypted ivms101 payload"
}