메인 콘텐츠로 건너뛰기
ChainStream은 현재 Solana(sol), Ethereum(eth), BSC(bsc)를 지원합니다. 지원 DEX는 Jupiter, Raydium, PumpFun, Moonshot, Candy(Solana), KyberSwap(Ethereum/BSC)입니다. 아래 일부 예시는 개념 설명을 위해 추가 프로토콜을 참조합니다. 현재 지원 범위는 지원 체인에서 확인하세요.
Coming Soon - 이 기능은 현재 개발 중입니다. 계속 지켜봐 주세요!
본 문서에서는 ChainStream을 사용하여 DeFi 프로토콜 활동을 모니터링하는 방법을 소개합니다. 유동성 변화, 대규모 거래, 수익률 추적, 리스크 알림을 포함합니다.

지원 DeFi 프로토콜

DEX (탈중앙화 거래소)

프로토콜체인지원 기능
JupiterSolana어그리게이트 거래
RaydiumSolana거래, LP, 풀 데이터
PumpFunSolana런치/본딩, 거래
MoonshotSolana거래
CandySolana거래
KyberSwapEthereum, BSC거래, 견적

기타 DeFi 분야

대출, 수익률 애그리게이터, 리퀴드 스테이킹은 DeFi에서 일반적인 모니터링 대상입니다. ChainStream의 인덱싱된 스왑 및 DEX 분석은 Solana, Ethereum, BSC 위의 상기 프로토콜에 초점을 맞추고 있습니다. 대출이나 볼트 관련 알림을 구축하기 전에 API 레퍼런스와 지원 체인에서 배포 환경이 제공하는 내용을 확인하세요.

모니터링 차원

1. 유동성 모니터링

감시 이벤트

이벤트설명중요성
pool_created새 풀 생성새로운 기회 발견
liquidity_add유동성 추가신뢰도 지표
liquidity_remove유동성 제거⚠️ 러그풀 경고
pool_update풀 파라미터 변경프로토콜 거버넌스

핵심 지표

지표설명건전성 기준
TVL총 잠긴 가치안정적이거나 성장
TVL 변동률24h/7d TVL 변화> -10%/일
LP 홀더 수LP 토큰 홀더 분포분산될수록 좋음
유동성 깊이±2% 가격대 내 유동성깊을수록 좋음

러그풀 리스크 시그널

  • 단일 인출 > 풀의 30%
  • 24h 누적 인출 > 50%
  • LP가 소수 주소에 집중 (< 5)

2. 거래 모니터링

실시간 거래 흐름

WebSocket을 통한 실시간 거래 구독:
이벤트 타입설명데이터 필드
swapDEX 거래token_in, token_out, amount, price
large_trade대규모 거래threshold, trade_details
arbitrage차익거래profit, path
mevMEV 관련 거래type, extracted_value
// DEX 거래 흐름 구독
ws.subscribe('defi_trades', {
  protocol: 'kyberswap',
  chain: 'eth',
  min_amount_usd: 10000
}, (trade) => {
  console.log(`${trade.type}: ${trade.token_in}${trade.token_out}`);
});

거래 분석 차원

분석 차원지표의미
매수/매도 압력매수량/매도량 비율> 1 강세
거래량 추세거래량 이동평균활성도
고래 행동대규모 거래 비율시장 영향
페어 인기도거래 빈도 순위시장 관심도

3. 수익률 추적

추적 내용

수익률 타입설명계산 방법
LP 마이닝유동성 제공에 따른 거래 수수료수수료 × 지분 비율
대출 이자예금/차입 이자원금 × APY
스테이킹 보상프로토콜 토큰 보상스테이킹량 × 보상률
에어드롭 수익프로토콜 에어드롭스냅샷 보유량

수익률 지표

지표설명비고
APY연간 복리 수익률실제 수익률 참고
APR연간 단리 수익률기본 수익률
비영구적 손실단순 보유 대비 LP 손실중요한 리스크 요소
순수익률수익률 - 가스비 - 비영구적 손실최종 수익률

비영구적 손실 추정

비영구적 손실 공식
비영구적 손실 = 2 × √(가격 비율) / (1 + 가격 비율) - 1
가격 변동비영구적 손실
±10%-0.11%
±25%-0.64%
±50%-2.02%
±100%-5.72%
±200%-13.4%

4. 리스크 알림

프로토콜 레벨 리스크

리스크 유형설명알림 트리거
대규모 인출큰 규모의 유동성 감소단일 > 풀의 5%
TVL 급락프로토콜 TVL의 급격한 하락1h 내 > 20% 하락
플래시론 공격플래시론 패턴 감지자동 감지
거버넌스 공격비정상적 제안이나 투표자동 감지
오라클 이상비정상적 가격 데이터편차 > 5%

포지션 레벨 리스크

리스크 유형설명알림 트리거
청산 리스크대출 포지션 청산 임박건전성 비율 < 1.2
비영구적 손실LP 비영구적 손실 확대손실 > 5%
수익률 하락APY의 큰 폭 하락하락 > 50%

알림 설정 예시

{
  "alert_type": "liquidity_remove",
  "protocol": "kyberswap",
  "pool": "0x...",
  "threshold": {
    "type": "percentage",
    "value": 10
  },
  "notification": {
    "webhook": "https://your-server.com/webhook",
    "email": "alert@example.com"
  }
}

모니터링 시나리오

시나리오 1: 신규 풀 발견

목표: 새로 생성된 트레이딩 풀을 가능한 빨리 발견
ws.subscribe('pool_created', {
  chain: 'sol',
  min_liquidity_usd: 10000
}, async (pool) => {
  // 토큰 안전성 확인
  const risk = await checkTokenRisk(pool.token_address);
  if (risk.score > 60) {
    notify(`신규 풀 발견: ${pool.pair_name}, 유동성: $${pool.liquidity_usd}`);
  }
});

시나리오 2: 러그풀 경고

목표: 보유 중인 풀의 러그풀 리스크 모니터링
1

모니터링 추가

대상 풀을 모니터링 목록에 추가
2

임계값 설정

인출 임계값 설정 (예: 단일 > 10%)
3

알림 수신

실시간 알림 수신
4

포지션 조정

신속하게 포지션 조정
ws.subscribe('liquidity_remove', {
  pool: '0x...',
  threshold_percentage: 10
}, (event) => {
  alert(`⚠️ 러그풀 경고: ${event.percentage}%의 유동성이 제거되었습니다`);
});

시나리오 3: 차익거래 기회 발견

목표: DEX 간 가격 차이 발견
1

가격 피드 구독

여러 DEX의 가격 피드 구독
2

스프레드 계산

스프레드 비율 계산
3

비용 평가

가스비와 슬리피지 비용 고려
4

알림 전송

순이익 > 임계값일 때 알림
// 여러 DEX의 가격 모니터링
const prices = {};

ws.subscribe('token_price', { 
  token: 'SOL',
  dex: ['jupiter', 'raydium', 'pumpfun']
}, (data) => {
  prices[data.dex] = data.price;
  checkArbitrage(prices);
});

function checkArbitrage(prices) {
  const maxPrice = Math.max(...Object.values(prices));
  const minPrice = Math.min(...Object.values(prices));
  const spread = (maxPrice - minPrice) / minPrice;
  
  if (spread > 0.005) {  // 0.5% 스프레드
    notify(`차익거래 기회: ${spread * 100}% 스프레드`);
  }
}

시나리오 4: 청산 모니터링

목표: 대출 포지션 건전성 모니터링
1

포지션 조회

대상 주소의 대출 포지션 조회
2

건전성 비율 계산

실시간 건전성 비율 계산
3

경고

건전성 비율 < 1.5일 때 경고
4

긴급 알림

건전성 비율 < 1.2일 때 긴급 알림
async function monitorLiquidationRisk(address: string) {
  // 배포 환경이 제공하는 대출 API에 연결 (DEX 한정이 아님)
  const position = await getLendingPosition(address);

  if (position.health_factor < 1.2) {
    urgentAlert(`🚨 청산 리스크! 건전성 비율: ${position.health_factor}`);
  } else if (position.health_factor < 1.5) {
    warnAlert(`⚠️ 낮은 건전성 비율: ${position.health_factor}`);
  }
}

데이터 지연시간

데이터 유형지연시간설명
실시간 거래< 3초블록 확인 후 푸시
TVL 데이터< 1분분 단위 업데이트
APY 데이터< 5분최근 거래로부터 계산
홀더 데이터< 1시간시간별 스냅샷

API 엔드포인트

기능엔드포인트
프로토콜 TVL 조회GET /v1/defi/{protocol}/tvl
풀 정보 조회GET /v1/defi/{protocol}/pools/{pool_id}
사용자 포지션 조회GET /v1/defi/{protocol}/positions/{address}
수익률 데이터 조회GET /v1/defi/{protocol}/yields

관련 문서

차익거래 스캐너

차익거래 스캐닝 도구 구축

가격 알림 봇

가격 알림 시스템 구축