[개인 프로젝트 리뷰] CryptoTrade.gg - 암호화폐 트레이드 전적 조회 서비스

CryptoTrade.gg 프로젝트 리뷰 - 암호화폐 트레이드 전적 조회 서비스

프로젝트 개요

프로젝트명: CryptoTrade.gg
기간: 2025.02 - 2025.04 (약 2개월)
기술 스택: TypeScript, Next.js
목적: 암호화폐 트레이드 전적 조회 및 데이터 시각화

CryptoTrade.gg는 제가 암호화폐에 관심을 갖게 되면서 시작한 프로젝트입니다. 트레이더들의 전적을 조회하고 시각화하는 서비스를 만들고 싶었습니다.

프로젝트를 시작한 이유

암호화폐 트레이딩을 시작하면서 "이 트레이더가 정말 수익을 내는지 확인하고 싶다"는 생각이 들었습니다. 여러 커뮤니티에서 트레이더들이 자신의 전적을 공유하지만, 실제로 검증하기 어려웠습니다.

그래서 "트레이더의 전적을 투명하게 조회할 수 있는 서비스"를 만들고 싶었습니다.

주요 기능 구현

1. 암호화폐 데이터 수집

블록체인에서 트레이드 데이터를 수집하는 것이 처음에는 어려웠습니다.

처음 접했을 때:

  • "블록체인에서 데이터를 어떻게 가져오지?"라는 생각부터 시작했습니다.
  • 여러 체인(이더리움, BSC 등)의 데이터를 수집해야 했습니다.
  • 대량의 데이터를 효율적으로 처리하는 것이 까다로웠습니다.

구현:

typescript
// 트레이드 데이터 조회
const fetchTradeHistory = async (walletAddress: string) => {
  const response = await fetch(
    `https://api.example.com/trades?address=${walletAddress}`
  );
  const data = await response.json();
  return processTradeData(data);
};

배운 점:

  • 블록체인 데이터는 공개되어 있지만, 효율적으로 가져오는 것이 중요합니다.
  • API를 활용하거나 직접 노드를 운영해야 합니다.
  • 데이터를 캐싱하여 불필요한 요청을 줄여야 합니다.

2. 데이터 시각화

트레이드 데이터를 시각화하는 것이 이 프로젝트의 핵심이었습니다.

사용한 라이브러리:

  • Chart.js
  • Recharts

구현:

  • 수익/손실 차트
  • 거래량 차트
  • 승률 통계
  • 시간대별 거래 패턴

배운 점:

  • 데이터를 시각화하면 사용자가 더 쉽게 이해할 수 있습니다.
  • 적절한 차트 타입을 선택하는 것이 중요합니다.
  • 성능을 고려해야 합니다. 많은 데이터를 한 번에 렌더링하면 느려질 수 있습니다.

3. 지갑 주소 검증

사용자가 입력한 지갑 주소가 유효한지 검증하는 것이 중요했습니다.

구현:

typescript
// 지갑 주소 검증
const isValidAddress = (address: string, chain: string): boolean => {
  if (chain === 'ethereum') {
    return /^0x[a-fA-F0-9]{40}$/.test(address);
  }
  // 다른 체인 검증 로직
  return false;
};

배운 점:

  • 각 블록체인마다 주소 형식이 다릅니다.
  • 체크섬 검증을 통해 오타를 방지할 수 있습니다.
  • 사용자에게 명확한 에러 메시지를 제공해야 합니다.

어려웠던 점

1. 데이터 정확성

블록체인 데이터를 정확하게 해석하는 것이 어려웠습니다.

문제점:

  • 트레이드가 복잡한 경우(스왑, 유동성 공급 등) 정확히 분석하기 어려웠습니다.
  • 가스비를 수익/손실에 포함시켜야 하는지 고민이 많았습니다.
  • 시간대별 가격 변동을 고려해야 했습니다.

해결 방법:

  • 트레이드 타입을 분류하여 각각 다르게 처리했습니다.
  • 가스비를 별도로 표시하여 사용자가 선택할 수 있도록 했습니다.
  • 실시간 가격 API를 활용하여 정확한 수익/손실을 계산했습니다.

2. 성능 최적화

대량의 트레이드 데이터를 처리하는 것이 성능 이슈를 일으킬 수 있었습니다.

문제점:

  • 수천 개의 트레이드를 한 번에 렌더링하면 느려집니다.
  • 차트에 많은 데이터 포인트를 표시하면 렌더링이 느려집니다.

해결 방법:

  • 데이터를 페이지네이션하여 나눠서 표시했습니다.
  • 차트에는 샘플링된 데이터만 표시했습니다.
  • 가상 스크롤을 활용하여 성능을 개선했습니다.

3. 데이터 업데이트

블록체인 데이터는 계속 업데이트되므로, 최신 정보를 유지하는 것이 중요했습니다.

해결 방법:

  • 주기적으로 데이터를 업데이트하도록 스케줄링했습니다.
  • 사용자가 수동으로 새로고침할 수 있는 기능을 추가했습니다.
  • 실시간 업데이트를 위해 WebSocket을 고려했습니다.

개선하고 싶은 점

1. 더 많은 체인 지원

현재는 제한된 체인만 지원합니다. 더 많은 블록체인을 지원하고 싶습니다.

2. 고급 분석 기능

더 상세한 분석 기능을 추가하고 싶습니다. 예를 들어, 거래 패턴 분석, 리스크 분석 등입니다.

3. 커뮤니티 기능

트레이더들이 서로 전적을 공유하고 비교할 수 있는 커뮤니티 기능을 추가하고 싶습니다.

총평

CryptoTrade.gg는 제가 암호화폐와 블록체인 데이터를 다룬 첫 프로젝트입니다. 블록체인에서 데이터를 수집하고, 이를 시각화하는 경험을 할 수 있어서 뿌듯합니다.

특히 데이터 시각화를 구현하면서 "데이터를 어떻게 보기 좋게 표현할까?"를 고민하게 되었고, 성능 최적화를 통해 대량의 데이터를 효율적으로 처리하는 방법을 배울 수 있었습니다.

아쉬운 점도 많지만, 이 프로젝트를 통해 블록체인 데이터 처리에 대한 이해도를 높일 수 있었습니다.

링크