<aside> 📌 Intro

</aside>

이 글은 블록체인 프로젝트 '거래소 & 익스플로러 제작'거래소, 그 중에서도 내가 담당한 매수 & 매도를 구현하는 과정을 설명한다.

거래소의 UI 화면은 리액트 mui 템플릿을 활용했다.

Stack

프론트엔드 : React.js 백엔드 : Express, MongoDB, Axios

Teamwork Tool

MongoDB Compass

요들코인(yordlecoin) 거래소

실시간 차트, 매수 & 매도 창, 호가창, 체결내역, 현재 거래 정보 등의 컴포넌트로 이루어져 있다.

실시간 차트, 매수 & 매도 창, 호가창, 체결내역, 현재 거래 정보 등의 컴포넌트로 이루어져 있다.

거래소의 매수, 매도기능은 크게 2단계를 거쳐 구현된다.

  1. 데이터베이스(MongoDB)에서 데이터 불러오기.

  2. 이벤트(ex 매수, 매도)에 맞게 불러온 데이터를 가공하기. 불러온 데이터를 가공할 때, 5가지 경우의 수로 나뉘어 가공하여 반영한다. (같은 가격으로 거래시 기존 수량이 변경된다)

    2-1. 매수하기. 일반적으로 매도 최저가를 매수하는 경우이다.

    2-2. 매도 최저가보다 높게 매수할 시, 자동으로 매도 최저가로 매수된다.

    2-3. 같은 가격의 주문을 새로 입력시, 수량 중첩

    2-4. 만약 호가창에 없는 가격으로 매도 혹은 매수할 시, 새로 입력된다.

1. 데이터베이스(MongoDB)에서 데이터 불러오기.

1-1. 미리 데이터베이스에 데이터(ex 매수가, 매도가, 매수수량, 매도수량)를 입력해놓는다. 이후 mongoose 라이브러리를 통해 이벤트 발생 시, 미리 짜여진 Schema의 형태로 데이터를 입력한다.

ordersalls라는 컬렉션에 입력된 document들. 하나하나가 미리 입력된 매수주문, 매도주문이다.

ordersalls라는 컬렉션에 입력된 document들. 하나하나가 미리 입력된 매수주문, 매도주문이다.

이벤트가 발생할 시, 위 schema의 형태로 ordersalls이라는 컬렉션에 데이터를 입력한다. 매수 혹은 매도 중 어떤 상황에서도 데이터를 입력할 수 있도록 고려했다.

이벤트가 발생할 시, 위 schema의 형태로 ordersalls이라는 컬렉션에 데이터를 입력한다. 매수 혹은 매도 중 어떤 상황에서도 데이터를 입력할 수 있도록 고려했다.

1-2. 입력된 데이터 불러오기. 컬렉션을 불러와 조회(require(”../models/ordersAll”))하고

필요한 데이터를 저장할 변수들을 선언한다.

스크린샷 2022-04-04 오후 5.28.15.png