Enclave Server API 활용
Enclave Server API에 대한 용도와 호출 순서 가이드입니다.
Last updated
Enclave Server API에 대한 용도와 호출 순서 가이드입니다.
Last updated
사용자가 VASP (가상 자산 거래소)를 통해 출금 신청을 합니다. 위 이미지는 API에 대한 용도를 이해하기 위한 참고용 이미지입니다
예를 들어, 거래소 애플리케이션을 통해 출금 신청을 했을 경우.
사용자는 출금을 어느 거래소의 어느 계좌 번호로, 누구에게, 얼마나 보내야 하는지에 대한 정보를 기입해야 합니다.
Amount: 얼마 보낼지 입력.
Beneficiary VASP: 어느 거래소로 보낼지 입력. 수신 가능한 거래소 목록 중 한 개를 선택한다.
Beneficiary Address: 어느 계좌 번호로 보낼지 입력.
Beneficiary Name: 누구에게 보낼지 입력.
이때 사용자 편의를 위해, Beneficiary VASP의 목록을 VerifyVASP에서 제공합니다.
VASP 백엔드에서 Enclave의 GET /v1/vasps
API를 호출하여, 사용자 화면에 리스트를 제공할 수 있습니다.
VASP에서 자체적으로 VASP 목록을 관리하고, 그 목록을 사용자에게 제공해도 됩니다. (단, VASP 목록에 정의된 VASP의 VaspId가 일치하여야 합니다.)
출금 버튼 클릭한다.
거래소 백엔드에서는 실제 출금에 대한 Transaction을 블록체인에 전송하기 전에, VerifyVASP를 통해 Travel Rule에 의한 검증 작업을 진행합니다.
필수적으로
위 화면에서 입력한 Amount, Beneficiary VASP, Beneficiary Address, Beneficiary Name 등을 모두 포함한 검증 작업을 진행합니다.
트래벌룰 준수를 위해 처음부터 송신인, 수취인의 모든 데이터를 전달하는 게 아니라 사전에 거래소 소유 계좌 인지 확인하는 작업이 필요합니다.
POST /v1/verifications/account
API를 사용하여, 수취 VASP 소유의 지갑 주소인지 확인합니다.
법정 기준 금액 이상인 경우에는, 지갑 주소와 수취인의 이름을 함께 전달하여, 검증합니다.
이때에는, KYC 나 Sanction Screening 과정을 하는 게 아니라, 단순히 거래소 소유 계좌 정보가 맞는지 확인합니다.
수취 VASP의 지갑 주소가 맞는다면, 아래 트래벌룰 준수를 위한 사용자 검증 과정을 진행합니다.
POST /v1/verifications
API를 사용하여 확인할 수 있습니다.
IVMS101 메시지 프로토콜에 따라, 송신인, 수신인에 대한 정보를 함께 전송해야 합니다.
거래소 백엔드에서, Originator(송신인)에 대한 정보를 IVMS101 형태로 제공해야 합니다.
추가적으로 상대 VASP로부터 전송받은 송신자 혹은 수취인 지갑 주소나 개인 정보를 통해 추가적인 위험 평가(risk assessment)를 수행할 수 있습니다.
POST /v1/risk-assessment/chainalysis-sanction
API를 사용하여 상대방 지갑 주소에 대한 위험 평가를 수행할 수 있습니다.
POST /v1/risk-assessment/chainalysis-kyt
API를 사용하여 수신자 지갑 주소에 대한 위험 평가를 수행할 수 있습니다. 또한 전송 트랜잭션에 대한 위험 평가도 수행할 수 있습니다.
POST /v1/risk-assessment/refinitiv-wco
API를 사용하여 송수신자에 대한 위험 평가를 수행할 수 있습니다.
출금 버튼 클릭 이후 검증 작업에 대한 결과를 보고, 실제 전송할지 말지를 선택해야 합니다.
아직 이상적인 작업 흐름은 없지만,
거래소 백엔드 자체적으로 결괏값을 확인하고 실제 전송을 진행하거나,
검증 결과를 사용자 화면에 노출하여, 사용자가 직접 선택적으로 진행을 하도록 합니다.
거래소 백엔드에서 실제 전송을 진행한다.
출금 결과 리포트한다.
거래소 백엔드에서 전송이 완료되면, Transaction Hash를 수신 VASP도 결과를 알 수 있도록 리포트(공유) 합니다.
POST /v1/verifications/tx
API를 사용합니다.
만약 문제가 있어서 트랜잭션을 영구히 보내지 않기로 결정했다면, 해당 에러 내용 또한 수신 VASP가 알 수 있도록 리포트(공유) 합니다.
POST /v1/verifications/error
API를 사용합니다.
수신 VASP 입장에서 검증이 끝난 건에 대해 일정 시간이 지나도록 트랜잭션 처리 결과를 리포트 받지 못했다면, 거꾸로 송신 VASP에게 트랜잭션 처리 상태를 질의할 수 있습니다.
POST /v1/verifications/tx/inquiry
API를 사용합니다.
검증 히스토리를 조회한다.
거래소 백엔드에서 거래소를 통한 트랜잭션 과정 중에 진행되었던 검증 기록을 조회하고 싶을 때,
GET /v1/verifications API
를 사용합니다.
거래소에서 쉽게 확인할 수 있는 화면이 필요하다면, Enclave에서 제공하는 위 Verification 조회 API를 통해 화면을 직접 구성하면 됩니다.
거래소에서 수수료 절감을 위해 여러 명에 대한 출금 신청에 대해 하나의 트랜잭션으로 전송하고 싶을 경우 다음과 같이 처리합니다.
거래소 백엔드에서 각각의 출금 정보에 대해 위와 같은 검증 절차를 N 번 실행합니다.
그러면 각 출금 정보 하나당 verificationUuid 가 각각 생성됩니다.
단일 트랜잭션 전송으로 생성된 txHash 와 vout 값을 리포트 합니다.
각 출금 정보에 대응되는 verificationUuid에 같은 txHash 값과 서로 다른 vout 값으로 N 번 리포트 합니다.
VerifyVASP 자체적으로 다중 출금에 대한 단일 트랜잭션 처리를 자동적으로 처리해 주진 않습니다.