Enclave 설치 및 실행

VerifyVASP에서 제공하는 Enclave 서버 개발 환경 설정에 대한 문서입니다.

시스템 요구 사항

  • 시스템/인프라 구성도

  • Enclave Server

    • CPU : 최소 2, 권장 4G

    • 메모리 : 최소 2G, 권장 4G

    • 스토리지 : 최소 8G, 권장 16G (도커, 컨테이너 포함)

Enclave 서버 설치

  • Enclave docker 이미지 다운로드

    • Enclave docker 이미지는 Private Registry에 있어, 관리자에게 Docker Hub Credential ID를 전달하여 권한을 받을 수 있습니다.

    • corporate-kr@verifyvasp.com으로 Docker Hub ID를 전달하여 주시면 다운로드 권한을 드리겠습니다.

    • 다운로드

    $ docker pull verifyvasp/enclave:v1.5.6

Enclave 서버 환경 변수

Enclave 실행 방법

환경 변수를 파일에 적어 실행하는 방법.

  • 환경 변수를 파일에 적어 실행합니다. (e.g. stg_env)

;Enclave 서버
VEGA_SERVER_PORT=21117
VEGA_ENCLAVE_PUBLIC_ENDPOINT=<Enclave Server endpoint URL>

;API Keys
VEGA_ALLIANCE_ACCESS_KEY=<issued accessKey>
VEGA_ALLIANCE_SECRET_KEY=<issued secretKey>

;DB Client
VEGA_DATABASE_CLIENT=mysql2
VEGA_DATABASE_USERNAME=vasp
VEGA_DATABASE_PASSWORD=1234
VEGA_DATABASE_HOST=<database endpoint URL>
VEGA_DATABASE_PORT=3306
VEGA_DATABASE_DB=vega
VEGA_DATABASE_POOL_MIN=0
VEGA_DATABASE_POOL_MAX=5

;VASP API
VEGA_VERIFICATION_API_PATH=<VerifyUser API endpoint URL>
VEGA_VERIFICATION_ACCOUNT_API_PATH=<VerifyAccount API endpoint URL>
VEGA_VERIFICATION_TRANSACTION_API_PATH=<Transaction processing state querying API endpoint URL>
VEGA_VERIFICATION_CALLBACK_API_PATH=<Callback API endpoint URL>
VEGA_VERIFICATION_AUTHORIZATION_TOKEN=<Auth Token>
VEGA_VERIFICATION_AUTHORIZATION_KEY=<Auth Token Header Key>

;VerifyVASP Central Server URL
VEGA_API_ENDPOINT=https://api-kr.vega-protocol.xyz

;Log
VEGA_LOG_LEVEL=info

;DB Encryption Key
VEGA_DECRYPT_API_ENDPOINT=<HSM URL>
VEGA_ENCRYPTION_KEY_BASE64=<Public Key on base64>

;Caching
VEGA_PUBLIC_KEY_TTL=1800000

;Risk Assessment
VEGA_CHAINALYSIS_SANCTION_API_KEY=<Chainalysis Public Sanction API Key>
VEGA_CHAINALYSIS_KYT_API_KEY=<Chainalysis KYT API Key>
VEGA_REFINITIV_WCO_API_KEY=<Refinitiv World Check One API Key>
VEGA_REFINITIV_WCO_API_SECRET=<Refinitiv World Check One API Secret>
VEGA_REFINITIV_WCO_GROUP_ID=<Refinitiv World Check One Group ID>
  • 실행

$ docker run -d -p 21117:21117 --env-file=<환경 변수 파일 > --name=enclave verifyvasp/enclave:v1.5.6

환경 변수를 커맨드 명령어 직접 입력하여 실행하는 방법.

$ docker run -d -p 21117:21117 \\\\
-e VEGA_SERVER_PORT=21117 \\\\
-e VEGA_ENCLAVE_PUBLIC_ENDPOINT=<Enclave Server endpoint URL> \\\\
-e VEGA_ALLIANCE_ACCESS_KEY=<issued accessKey> \\\\
-e VEGA_ALLIANCE_SECRET_KEY=<issued secretKey> \\\\
-e VEGA_DATABASE_USERNAME=vasp \\\\
-e VEGA_DATABASE_PASSWORD=1234 \\\\
-e VEGA_DATABASE_HOST=<database endpoint URL> \\\\
-e VEGA_DATABASE_PORT=3306 \\\\
-e VEGA_DATABASE_DB=vega \\\\
-e VEGA_VERIFICATION_API_PATH=<VerifyUser API endpoint URL> \\\\
-e VEGA_VERIFICATION_ACCOUNT_API_PATH=<VerifyAccount API endpoint URL> \\\\
-e VEGA_VERIFICATION_TRANSACTION_API_PATH=<Transaction processing state querying API endpoint URL> \\\\
-e VEGA_VERIFICATION_CALLBACK_API_PATH=<Callback API endpoint URL> \\\\
-e VEGA_VERIFICATION_AUTHORIZATION_TOKEN=<Auth Token> \\\\
-e VEGA_VERIFICATION_AUTHORIZATION_KEY=<Auth Token Header Key> \\\\
-e VEGA_API_ENDPOINT=https://api-kr.vega-protocol.xyz \\\\
-e VEGA_LOG_LEVEL=info \\\\
-e VEGA_PUBLIC_KEY_TTL=1800000 \\\\
-e VEGA_DECRYPT_API_ENDPOINT=<HSM URL> \\\\
-e VEGA_ENCRYPTION_KEY_BASE64=<Public Key on base64> \\\\
-e VEGA_CHAINALYSIS_SANCTION_API_KEY=<Chainalysis Public Sanction API Key> \\\\
-e VEGA_CHAINALYSIS_KYT_API_KEY=<Chainalysis KYT API Key> \\\\
-e VEGA_REFINITIV_WCO_API_KEY=<Refinitiv World Check One API Key> \\\\
-e VEGA_REFINITIV_WCO_API_SECRET=<Refinitiv World Check One API Secret> \\\\
-e VEGA_REFINITIV_WCO_GROUP_ID=<Refinitiv World Check One Group ID> \\\\
verifyvasp/enclave:v1.5.6

Enclave 서버 기동

Enclave 서버 기동 및 기동 여부 확인

  • enclave 서버가 완전히 잘 떴는지 확인하는 방법

    • docker log를 봤을 때 “Listening port at 21117” 와 같이 설정한 포트 번호로 listening 하고 있다는 메시지가 보여야 합니다.

    • (단, 뒤이어 다른 에러 로그가 없어야 합니다.)

Enclave 서버 헬스 체크

  • <enclave endpoint>/healthcheck 경로로 GET 호출합니다.

  • VV central 서버에서 주기적으로 (5~10) 초에 한번 각 VASP enclave 서버의 health를 체크하고 있습니다.

Enclave 서버 재기동

  • Enclave docker가 동작을 멈추면 재기동 해야 합니다.

  • 또는, Enclave docker log에 다음과 같은 로그가 찍히면 재기동 해야 합니다.

    • “Unhandled Rejection detect: <error message>”

    • “Uncaught Exception detect: <error message>”

Last updated