집돌이 공대남 IT

암호화폐 거래소 기능 확장. 실시간 트레이딩, API 제공, 트랜잭션 로깅 본문

IT/파이썬

암호화폐 거래소 기능 확장. 실시간 트레이딩, API 제공, 트랜잭션 로깅

집공이 2023. 8. 10. 12:00

안녕하세요, 여러분! 공대남입니다!

암호화폐 거래소 구축 실습에 다시 찾아주셔서 감사합니다. 이번에는 이미 기본적인 기능이 구현된 거래소에 추가로 실시간 트레이딩, API 제공, 트랜잭션 로깅 같은 다양한 기능을 추가하는 방법을 알아보려 합니다.

이 기능들은 실제 거래소에서도 매우 중요한 역할을 수행하므로, 이 실습을 통해 거래소의 기능을 더욱 풍부하게 만드는 방법을 배울 수 있습니다.

 

1. 실시간 트레이딩 기능 추가

거래소에서 가장 중요한 기능 중 하나는 실시간으로 거래가 이루어지는 것입니다. 이를 위해 WebSocket 프로토콜을 사용하여 서버와 클라이언트 간의 실시간 통신을 구현할 수 있습니다. Node.js에서 WebSocket 서버를 구축하기 위해 socket.io 라이브러리를 설치하겠습니다.

$ npm install socket.io

그런 다음, 서버에서 WebSocket 연결을 처리하도록 코드를 추가합니다.

const io = require('socket.io')(server, { cors: { origin: "*" } });

io.on('connection', (socket) => {
  console.log('User connected');

  socket.on('disconnect', () => {
    console.log('User disconnected');
  });
});

마지막으로, 주문이 매칭되었을 때 실시간으로 업데이트되는 트레이딩 피드를 구현합니다.

if (match) {
  // 주문 매칭 로직
  io.emit('trade', { /* 거래 정보 */ });
}

 

2. API 제공

암호화폐 거래소는 보통 API를 제공하여 사용자가 프로그래밍 방식으로 거래를 수행할 수 있게 합니다. 이를 위해 REST API를 설계하고 구현합니다.

const express = require('express');
const router = express.Router();

router.get('/orders', /* 주문 목록 반환 */);
router.post('/order', /* 주문 생성 */);
router.delete('/order/:id', /* 주문 취소 */);

module.exports = router;

 

3. 트랜잭션 로깅

마지막으로, 모든 트랜잭션을 기록하는 로깅 기능을 추가합니다. 이를 위해 winston 라이브러리를 설치하겠습니다.

$ npm install winston

그런 다음, winston을 사용하여 로거를 생성하고 트랜잭션을 로그로 기록합니다.

const winston = require('winston');

const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'transaction.log' })
  ]
});

if (match) {
  // 주문 매칭 로직
  logger.info('Order matched', { /* 거래 정보 */ });
}

이로써 실시간 트레이딩, API 제공, 트랜잭션 로깅 등의 기능을 추가하여 거래소를 더욱 발전시켰습니다.

다음 시간에는 이 외에도 거래소에 추가할 수 있는 다양한 기능들을 더 알아보도록 하겠습니다. 감사합니다!