nyancoin

글쎄 말이다. 사람들은 암호화폐가 보이지 않는 허상이라고 하는데, 그 말에 정면으로 반박하듯 관련 산업은 나날이 커지고 있다. 업계가 무르익고 기술이 무르익으며, 이제 클릭 몇 번, 키보드 타이밍 몇 번이면 나만의 암호화폐 거래소도 열 수 있는 시대가 되었다. 이게 무슨 소리냐고? 바로 HollaEx (홀라엑스) 얘기다.

HollaEx는 필자가 몸담아 일하고 있는 bitHolla (비트홀라) 에서 만든 암호화폐 거래소 솔루션이다. 뭐, 기술적으로는 암호화폐 거래소 뿐만 아니라 거래를 필요로 하는 모든 분야에 사용할 수 있지만, 어쨋든 그렇다. HollaEx를 사용하면 암호화폐 거래소를 만들 기술이나 기반이 부족하더라도, 약간의 노력만 기울이면 나만의 거래소를 뚝딱 만들 수 있다는 말씀. HollaEx 자체는 수년 전에도 존재했고, 진작부터 HollaEx를 사용해 만들어진 실제 거래소도 있지만, 이번 리뉴얼을 거치며 그 접근성을 한껏 끌어올렸다.

필자를 포함한 팀원들의 오랜 노력과 쌓인 경험을 기반으로, HollaEx는 거래소를 열기 위한 모든것이 들어있는 키트 형태로 탈바꿈했다. 생존 키트를 열면 깊은 지식이 없는 사람이라도 극한 환경에서 살아남을 수 있는 것처럼, HollaEx 키트를 열면 깊은 지식이 없어도 내 거래소를 만들 수 있다 (사실 비유가 아니라, 정말로 이름이 HollaEx Kit 인건 안비밀).

사용 준비

지금이라도 당장 누구나 GitHub에서 HollaEx Kit를 살펴보고 다운로드 받을 수 있다.

hollaex_kit_main

다운로드를 다 받았다면, 안에 들어있는 여러 파일들 중 install.sh 가 보일건데, 바로 귀염뽀짝한 HollaEx CLI를 설치하는 귀염뽀짝한 인스톨러다. 컴퓨터는 인간을 위해 존재하는 도구라 했던가, 이 CLI는 여러분이 어려워 할 거래소 초기 셋업부터 실제 실행, 이후의 유지보수까지 전부 도맡아서 도와줄 굉장히 엄청난 도구라고 하겠다. 절대 필자가 만들어서 띄워주는거 아니다

지금 이 글을 Linux 혹은 macOS에서 읽고 있다면, 아래 명령어를 통해 인스톨러를 실행시켜 바로 HollaEx CLI를 설치할 수 있다.

bash install.sh

만약, 애석하게도 Windows라면, 이 문서를 참조하자. Windows 10 2004 빌드부터 정식으로 포함된 WSL 2를 사용해 HollaEx Kit을 실행시킬 수 있다.

무언가 주르륵 뜨고 대충 설치가 된 것 같다면, hollaex version 명령어를 실행해 보자. 아래와 같이 이쁜 HollaEx 로고와 버전 넘버가 출력된다면, 제대로 HollaEx CLI가 설치된 것이다.

hollaex_version

여기까지 따라오셨다면 전체 과정의 30%는 끝낸 것이다. 정말이다. 남은 70%는 아래의 것들이 있다.

  • HollaEx 거래소 초기 설정 : 거래소의 관리에 사용할 관리자 계정과 거래소 이름 등을 HollaEx Network에 생성, 등록해야 한다.
  • SMTP 서버 설정 : HollaEx는 유저 회원가입 등의 인증 작업을 위해 표준 SMTP 기술을 사용한다. 만약 기존에 사용하던 SMTP 서버가 있다면 그것을 사용해도 되고, 새로 만들어야 한다면 어떤 SMTP 제공자의 서비스라도 사용할 수 있다. SMTP 서버 주소와 포트번호, 사용자 계정만 준비하면 된다.

HollaEx 거래소 초기 설정하기

가뜩이나 복잡할 것 같은 거래소인데 설정하는 건 얼마나 더 복잡할까 하셨던 분들이라면 걱정을 놓아도 되겠다. 방금 설치한 HollaEx CLI를 통해, 거래소 초기 설정과 실행을 한번해 해결할 수 있다. 채널 고정하고 잘 따라해보자.

진행하기 전 내 컴퓨터에 Docker와 Docker-Compose, 그리고 JQ가 설치되어 있는 지 꼭 확인하자. 만약 Debian (Ubuntu 등) 환경을 사용한다면, 조금 전의 CLI 설치 단계에서 자동으로 인스톨러가 Docker와 같은 의존성 프로그램들을 설치해줬을 것이니 걱정하지 않아도 된다.

hollaex server --setup

hollaex_login

hollaex server --setup을 먼저 CLI가 HollaEx Network를 선택하라고 한다. 여기서 HollaEx Network는, 내 HollaEx Kit 거래소가 연결되어 거래를 진행하고 거래 Liquidity 풀이 연동될, 일종의 중앙 집중 거래 풀이다. 모든 HollaEx Kit은 HollaEx Network에 연결되어 데이터를 주고받고 거래 작업을 처리한다.

만약 프로덕션에서 사용할, 진짜 돈을 가지고 움직이는 거래소를 바로 생성하려면 기본 옵션인 1번, 테스트 목적의 거래소를 생성하려면 테스팅 전용 네트워크인 2번, 마지막으로 나만의 HollaEx Network를 가지고 있을 경우(일반 유저에게는 제공되지 않는 엔터프라이즈 서비스) 3번을 선택해 내 네트워크에 직접 연결할 수 있다.

우리 예제에는 간 크게 프로덕션 네트워크인 1번을 선택해 진행해 보도록 하자.

다음 단계로 CLI가 Docker 이미지를 하나 빌드할 것인데, 이건 내 HollaEx Kit의 모든 코드를 포함하는 나만의 커스텀 HollaEx 이미지가 되겠다. 코드는 완전한 오픈 소스로 공개되어 있어, 나의 입맛에 맞게 얼마든지 커스터마이즈가 가능하다. 물론 지금은 이대로 진행해도 무방하다.

hollaex_setup_image_build_and_push

빌드된 이미지는 원하는 이름을 입혀 자유롭게 Docker 레지스트리에 푸시할 수 있다. 푸시를 하지 않아도 무방하지만, 백업의 목적으로라도 어딘가에 사본을 남겨두는 걸 추천한다. 만약 쿠버네티스에 HollaEx를 배포하고 싶어 한다면, 레지스트리 푸시는 필수다.

빌드가 끝나면 이제 HollaEx CLI가 알아서 필요한 컨테이너를 생성하고, 데이터베이스 작업을 하고, 필요한 모든 것을 구성한 후, 작업이 모두 끝났다고 알려주며 거래소를 종료할 것이다. 유저는 아무것도 안 하고 아래와 같은 메시지가 뜰 때까지 가만히 멍 때리면 된다.

hollaex_setup_all_done

거래소 시작하기

이제 hollaex server --start 명령어를 입력해 완성된 거래소를 시작시킬 수 있다.

hollaex_start

음.. 일단 무언가 시작 되었다고는 떴는데, 이게 제대로 돌아가고 있는 건지 눈에 보이는 게 없다.

걱정 말자. 지금부터 거래소가 제대로 돌고 있다고 찬찬히 확인해볼 것이다.

hollaex status

이 명령어는 현재 내 컴퓨터에서 실행되고 있는 HollaEx 서버 Docker 컨테이너 목록과, 거래소 상태를 체크하는 Health API를 호출해 터미널에 보여줄 것이다. 바로 요렇게.

hollaex_status

아예 직접 거래소 API를 호출해 볼 수도 있다. 브라우저를 띄우고 초기 설정에서 입력한 내 도메인 주소를 쳐보자. 만약 DNS를 설정하지 않았다면, 지금이라도 내 DNS 설정에서 내 컴퓨터 (또는 서버)의 IP를 가르켜 주자. 만약 기본값과 같이 localhost로 설정했다면, http://localhost 주소로 거래소 API에 접근 할 수 있다.

http://<내_도메인>/v2/health 페이지에 접속해 거래소가 정상적으로 동작하는지, 활성화 상태는 어떤지 확인할 수 있다.

hollaex_health_localhost

http://<내_도메인>/v2/constants 주소로 접근하면 지금 내 거래소에 등록된 코인과 거래 페어 리스트를 볼 수 있다.

hollaex_constant_localhost

Constants 정보까지 제대로 출력된다면, 거래소 서버가 정상적으로 동작되고 있다는 소리다. 축하한다. 우리는 방금 거래소 서버를 뚝딱 만들었다. 거래 채결 엔진부터 REST API, 웹소켓까지 전부 말이다. 짝짝짝

그런데, 뭔가 조금 부족하다. 분명 머릿속으로 거래소가 돌고 있다는 건 알지만, 눈에 보이지 않으니 아직 뭔가 빠진 것 같다. 그래서 준비했다. 거래소 웹 클라이언트.

거래소 웹 서버 띄우기

물론 REST API가 제공되니 원한다면 사용자가 처음부터 개발해 웹 클라이언트를 만들 수도 있겠지만, 우리한테 그럴 시간은 없다. 그렇다면? HollaEx Kit에 포함된 기본 웹 클라이언트를 사용하면 된다. 이미 다운로드 받은 HollaEx Kit 폴더의 /web 폴더가 바로 웹 소스가 들어있는 곳이다. 오픈 소스 프로젝트인 만큼 사용자가 코드를 보고 씹고 뜯고 맛보고 즐기며 마음대로 커스터마이징도 가능하다.

다만, 지금은 일단 기본 코드 그대로 띄워보고 거래소가 제대로 동작하는지 느낌부터 받기로 하자.

hollaex web --setup

이 명령어로 /web 폴더의 소스를 빌드해 Docker 컨테이너로 만들고, 서버를 띄울 수도 있다.

혹시라도 빌드 중 “Heap out of memory” 등의 에러가 발생한다면. 컴퓨터의 Docker 데몬에 할당된 메모리 상태를 체크하자. HollaEx 웹 클라이언트는 보기보다 꽤나 복잡한 과정을 거쳐 빌드된다. 이 과정에서 최소 4기가 이상의 메모리가 요구됨으로, 아래와 같이 메모리 할당량을 높혀주도록 하자.

dockerd_memory_allocation_configure

빌드가 끝나고 정상적으로 웹이 실행된다면, 이제 내가 설정한 도메인 혹은 localhost:8080 주소로 접근할 수 있다!

hollaex_web_main

처음 거래소에 접근하는 상황이라, 초기 설정을 진행할 수 있는 설정 마법사가 여러분을 반겨줄 것이다. 버튼을 눌러 차례차례 진행하면 된다.

hollaex_web_main

가장 먼저 생성할 것은 거래소에서 사용할 관리자 계정이다. 사용할 이메일 주소와 비밀번호를 집어넣고, 다음으로 진행하면 된다.

hollaex_web_main

계정을 생성했다면, 이제 거래소의 시스템 설정을 여기저기 만질 수 있다. 거래소의 시간대 (Timezone)부터, 언어나 기본 OTP 설정 등을 진행할 수 있다.

다른 것들도 눈여겨 봐야 하지만, 여기서 가장 중요한 건 바로 이메일 설정이다. SMTP 이메일 설정이 일단 완료되어야 신규 유저가 가입했을 때 인증 이메일을 받을 수 있고, 여러가지 시스템 알림도 날아온다.

hollaex_web_main

미리 준비해둔 SMTP 서버 정보를 입력하고 다음으로 진행하면 끝!

hollaex_signin

가슴이 웅장해지는 로딩 애니메이션을 보고 있으면, 금방 모든 설정이 완료된다. ‘Enter your exchange’ 버튼을 눌러 거래소에 정말로 진입해보자!

web_successful_login

이제 정말로 완전한 거래소가 완성되었다. 만약 내가 생성한 코인 / 페어의 승인까지 완료되었을 경우, 위 스크린샷과 같이 메인 화면에 내 커스텀 코인과 페어도 함께 출력될 것이다.

이제 HollaEx 웹을 커스터마이징 하거나, 거래 채결 기술만 API로 따와 다른 서비스에 사용하거나 하는 등 다양한 용도로 원하는 곳에 사용할 수 있다.

Admin 페이지 둘러보기

hollaex_admin_main

최신 버전의 HollaEx Kit은 거래소 운영과 관련된 설정을 진행하거나, 유저 정보를 조회할 수 있는 어드민 패널 기능을 제공한다.

hollaex_admin_plugins

특히, Plugins 탭에서는 거래소를 위한 추가 기능을 활성화 할 수 있다. 유저를 위한 채팅방 기능부터, 공지 기능, KYC (개인정보 인증), SMS 인증 기능까지 많은 플러그인들을 기본적으로 제공하고 있다. 모두 첫 설치에는 비활성화 되어 있으니, 찬찬히 둘러보고 나에게 필요한 기능을 켜면 끝. 위 스크린샷에는 플러그인 목록이 비어 있지만, 정식 출시 버전에는 문제없이 여러 기본 플러그인들이 보일 것이다.

hollaex_admin_plugins

여기서 재미있는 건 HollaEx는 아주 강력한 커스텀 플러그인 기능을 지원한다는 것인데, 이렇게 ‘My plugins’ 메뉴에서 .json 형태로 된 플러그인 파일을 드롭하면 간단하게 거래소에 내가 원하는 기능을 추가할 수 있다.

이를 잘 활용하면, 각 국가에 맞는 로컬라이징 앱 (대한민국 신용카드 결제 등)을 얼마든지 추가해 경쟁력 있는 거래소로 만들어 나갈 수 있을 것이다. 재미있는 건 덤이고 말이다 :)

그 외 어드민 패널의 각 탭 모두 직관적인 인터페이스를 제공하고 있으니, 하나하나 눌러보며 무엇이 가능한지 살펴보는 시간을 가져보는 것을 추천한다.

외부 접속을 위한 도메인 연결하기

찬찬히 내 거래소를 둘러보며 별 문제 없는 것을 확인했다면, 이제 외부에 거래소를 공개해 다른 사람들도 접근할 수 있게 해보자. HollaEx CLI는 간편하게 거래소에 도메인을 연결하고, 원할 경우 SSL 인증서도 같이 발급할 수 있는 기능을 지원한다.

내 HollaEx Kit 경로에서, 아래 명령어를 실행해 보자.

hollaex prod

hollaex_prod

Y를 입력해 다음으로 진행하면, 내 도메인을 입력할 수 있는 창이 나온다. 예를 들어, 내가 mydomain.com 이라는 도메인을 소유하고 있고, 이걸 거래소 웹 페이지에 사용하고 싶다면 mydomain.com을 입력하자.

입력하고 엔터를 누르면, CLI가 자동으로 내가 입력한 도메인을 바탕으로 거래소 API 서버의 접속 주소도 같이 추천해준다 (거래소 웹페이지가 서버와 통신할 때 사용된다). 대부분의 사용자가 api.mydomain.com / mydomain.com 과 같은 형태로 사용하나, 따로 원하는 API 도메인이 있을 경우 자유롭게 수정할 수 있다.

검토 후 다시 Y를 입력해 진행한다.

hollaex_prod_dns_configurartion

위와 같은 안내를 맞닥뜨렸다면, 이제 DNS 설정이 필요한 때다. 내 도메인의 DNS 설정해 조금 전 입력한 거래소 웹사이트 도메인과 거래소 API 서버 도메인을 내 서버 (컴퓨터)의 IP 주소와 연결시키자. DNS 설정은 주로 내가 도메인을 구입한 사이트에서 진행할 수 있다.

모든 DNS 설정이 완료되었다면 CLI에서 엔터 키를 눌러 진행하자. DNS 설정은 정보가 인터넷 전체로 전파되어야 하는 특성 상 반영에 약간의 지연이 있을 수 있으니, 만약 엔터 키를 눌러도 CLI가 DNS를 감지하지 못한다면 약간의 시간을 들인 후 다시 시도하면 된다.

hollaex_prod_successfully_detected_dns_configuration

CLI가 DNS 설정을 정상적으로 감지했다면, 위와 같은 모습이 될 것이다.

여기서 원할 경우 SSL 인증서도 같이 발급을 할 수 있는데, 원할 경우 Y, 아닐 경우 N 을 입력해주자. 만약 AWS ELB 등 외부 로드밸런서를 통해 SSL을 사용할 경우, CLI를 통해 인증서를 발급받을 필요가 없다. 혹시라도 나중에 마음이 바뀌면, hollaex toolbox --issue_ssl 명령어를 통해 SSL 인증서만 따로 발급받을 수 있으니 걱정은 말고.

hollaex_prod_issue_ssl

위와 같은 모습으로 내 도메인 2개에 SSL 인증서를 각각 발급받을 수 있다. 아쉽게도 SSL 인증서 발급에 사용하는 certbot 도구의 한계로, 한번에 하나의 인증서만 발급받을 수 있어 같은 화면이 2번 반복될 것이다. 당황하지 않고 처음에는 1번, 두번째에는 2번을 선택해 인증서를 모두 발급받으면 된다.

이제 웹 브라우저를 켜고 내 API 서버에 접속해보며 설정이 정말 잘 되었는지 체크하자. 만약 외부 접근이 안될 경우, 서버나 컴퓨터 자체의 방화벽도 꼭 체크하길 바란다. 접근이 잘 될 경우, 도메인과 SSL 설정은 모두 완료된 것이다!

아, 잠깐만 기다리자. 거래소 웹 사이트의 경우 도메인이 변경되거나 SSL 적용 여부가 달라지면 재빌드가 요구된다. 당황하지 않고 아래 명령어를 실행해 웹 이미지를 다시 빌드하자. 어렵지 않다. 만약 이 과정을 빠트릴 경우 웹 사이트가 거래소 API에 제대로 접근하지 못하게 된다. 중요하니까 느낌표 두개!!

hollaex web --build

위 명령어로 새롭게 웹 이미지를 빌드한 후,

hollaex web --apply --tag <MY_IMAGE_TAG>

명령어로 이미지를 적용하면 된다. 입력해야 할 --tag는 빌드 작업 직후에 CLI에 출력되니 참고하길 바란다.

추가 정보

HollaEx Kit와 HollaEx CLI를 다루는 더 자세한 방법, 모든 명령어 목록 등은 HollaEx 공식 Docs를 참고하면 된다. 내용은 실시간으로 업데이트 되니 참고할 것.

만약 진행 중 막히는 부분이 있거나, 추가 질문이 있다면, HollaEx 포럼에서 자유롭게 정보를 탐색하고 질문을 올릴 수 있다. 아무래도 다양한 곳에서 온 사람들이 사용하는 솔루션인 만큼, 더 양질의 정보를 위해 영어로 질문을 남겨야 하는 점은 기억하시라.

마치며

coinpongpong

여기까지 따라오신 분들, 모두 수고하셨다. 이제 다들 거래소 하나씩은 끼고 다닐 수 있게 되었다. 그저 흔하디 흔한 미들웨어 설치 가이드 하나 따라온 것 같은 기분이 들겠지만, 그 결과가 내포하는 의미는 사실 완전히 다르다. 이전까지, 아니 지금까지도 금융이라는 것은 돈 있고 빽 있는 사람들의 체스판이였다. 은행, 주식판, 각종 거래소, 모든 것이 말이다. 우리는 그저 이미 다 짜여진 시스템 속에서 허우적거리고 있었을 뿐이다.

그런데, 암호화폐가 등장하면서 이런 당연한 것 같은 로직이 조금씩 깨지기 시작했다. 발행 주체가 없는 화폐. 그러면서도 누구도 무결성을 손댈 수 없는 화폐. 이 SF같은 이야기가 지난 10여넌 사이 우리에게는 현실이 되었다. 다만, 한가지 아킬레스 건이 있다. 이 자유로울 것 같은 화폐는 범용적으로 사용하기 위해 원화와 같은 기성 통화로 환전할 때 모든 자유가 사라진다. 자유가 사라지는 수준을 넘어 억압을 받고 있다 하는게 맞겠다. 각 국가의 법률, 메이저 거래소들의 정책 등 다양한 이유가 존재하겠지.

기껏 암호화폐라는 지푸라기는 잡았지만 다시금 허우적거리려는 우리에게, HollaEx는 한 줄기 지푸가리를 밧줄 정도로 바꿔줄 수 있는 솔루션이다. 더 쉬운 암호화폐 시장으로의 진입. 이전에는 존재하지 않았을 다양한 비즈니스가 생겨나고, 다양한 거래소도 생겨난다. 이는 곧 우리같은 유저들에게는 더 많은 선택권을 의미한다. 더 많은 거래소, 더 많은 암호화폐 비즈니스. 이로 인해 처음 우리가 암호화폐를 마주했을 때 꿈꿨던 그 자유로움에 한 발자국 더 다가가지 않을까. 지금처럼 논란의 대상이 아닌, 무한한 미래를 가지고 있는 하나의 화폐로서 말이다.