전제 조건: Helius API 키 (Mainnet LaserStream을 위한 Business 또는 Professional 플랜) 및 Node.js 18+. Account Subscriptions 및 Transaction Monitoring에 대한 이해가 도움이 되지만 필수는 아닙니다.
설정
새로운 프로젝트를 만들고 SDK +bs58 (트랜잭션 서명을 디코딩하는 데 사용)을 설치하고 API 키를 설정하세요:
스크립트
이를index.ts로 저장한 다음 npx ts-node index.ts를 실행하세요:
스크립트가 하는 일
하나의 구독, 두 개의 필터 블록
단일subscribe(...) 호출은 두 개의 이름 있는 필터 그룹을 포함합니다:
accounts필터는 데이터가 변경될 때마다 Pump.fun 프로그램(본딩 곡선, 민트 상태 등)이 소유한 모든 계정을 수신합니다.transactions필터는 Pump.fun 프로그램과 상호 작용하는 모든 트랜잭션을 수신합니다.vote: false, failed: false플래그는 투표와 실패한 트랜잭션을 핸들러에 도달하기 전에 삭제합니다.
원시 필드 읽기
페이로드의 몇 가지 값은 사용하기 전에 약간의 변환이 필요합니다:- **
tx.signature**는Buffer입니다. 이를bs58.encode(...)로 처리하여 탐색기나getTransaction응답에서 볼 수 있는 base58 서명을 얻으세요. - **
tx.meta.fee**는 u64이며 자바스크립트에서 정밀도를 잃지 않도록 문자열로 저장됩니다. 산술을 수행하기 전에Number(...)로 감싸세요. 동일한 문자열-포-u64 관례는 여러 블록 레벨 필드에도 적용됩니다 — 전체 데이터 형식은 Slot & Block Monitoring을 참조하세요.
롤링 통계
setInterval가 60초마다 스냅샷을 출력합니다: 총 트랜잭션, 성공 대 실패, 처리량, 고유 수수료 지불자 및 SOL로 총 수수료. 스크립트 종료 전 마지막 스냅샷을 위해 Ctrl+C를 누르세요.
스크립트 확장
이것을 확장할 몇 가지 방향:- 명령어 디스크리미네이터 디코드하여 거래를
buy/sell/create로 라벨링합니다 — 파싱 패턴은 Decoding Transaction Data를 참조하세요. - 롤링 통계 영구 저장 - 메모리
Set/ 카운터 대신 데이터베이스(Postgres, Redis, ClickHouse)에 저장합니다. - 임계값에 경고 - 큰 수수료 지불자, 갑작스러운 볼륨 급증, 새로운 본딩 곡선 계정에 대해 경고합니다.
- 초기 시작 시 누락된 활동 재생 -
SubscribeRequest에서fromSlot을 설정하여 최대 24시간의 과거 활동을 재생합니다 — Historical Replay를 참조하세요. - Slot & Block Monitoring과 결합하여 블록 레벨 컨텍스트 확보합니다.
다음 단계
트랜잭션 모니터링
이 스크립트가 사용한 일반적인 트랜잭션 필터링 패턴입니다.
트랜잭션 데이터 디코딩
이진 트랜잭션 페이로드를 읽을 수 있는 Solana 트랜잭션으로 파싱합니다.
계정 구독
필터를 사용하여 특정 계정 상태 변경을 모니터링합니다.
히스토리컬 재생
시작 슬롯부터 최대 24시간의 과거 Pump.fun 활동을 재생합니다.