Skip to main content
거래 모니터링을 통해 거래 실행, 성공/실패 상태, 프로그램 상호 작용 및 토큰 잔액 변경을 Solana 전반에 걸쳐 실시간으로 추적할 수 있습니다. 이 가이드에서는 helius-laserstream SDK를 사용한 필터링 전략 및 실제 구현을 다룹니다.
사전 조건: 이 가이드는 LaserStream gRPC 빠른 시작을 완료하고 API 키를 보유하고 있다고 가정합니다.

거래 필터링 옵션

LaserStream은 Yellowstone gRPC와 동일한 필터 모양을 사용하며 tokenAccounts (ATA 확장) 필터를 포함합니다. 설정할 필드는 다음과 같습니다:
  • accountInclude — 이 계정 중 하나라도 나타나면 일치합니다(논리 OR).
  • accountRequired — 이 계정이 모두 나타나는 경우에만 일치합니다(논리 AND).
  • accountExclude — 이 계정 중 하나라도 나타나면 제외합니다.
  • vote / failed — 투표 및 실패한 트랜잭션에 대한 불리언 플래그입니다.
  • tokenAccounts — 선택적으로 연결 토큰 계정(ATA) 확장을 활성화합니다("balanceChanged", "all" 또는 "none"). 그러면 accountInclude 지갑이 SPL 토큰 잔액을 소유한 트랜잭션과도 일치합니다. 토큰 계정(ATA) 필터링 및 아래의 지갑 감시 탭을 참조하세요.
  • matchMints — 계정 목록을 트랜잭션의 사전/사후 토큰 잔액에 있는 민트와도 대조하도록 선택적으로 활성화하는 플래그입니다. 따라서 accountInclude에 있는 민트는 해당 토큰의 모든 전송, 스왑, 민팅 및 소각을 포착합니다. 토큰 민트 필터링 및 아래의 토큰 감시 탭을 참조하세요.
특정 프로그램 관련 거래 모니터링관심 있는 프로그램과 관련된 모든 거래 추적:
최적의 용도: 프로그램 특정 모니터링, DeFi 프로토콜 추적, 스마트 계약 상호 작용.

실용적인 예시

예시 1: DEX 트랜잭션 모니터링

인기 DEX 프로그램과 관련된 트랜잭션을 추적합니다.

예시 2: 실패한 트랜잭션 모니터링

실패한 트랜잭션을 추적하여 애플리케이션 문제를 파악합니다.

예시 3: 고액 트랜잭션 모니터링

대규모 SOL 전송이 포함된 트랜잭션을 추적합니다.

예시 4: 지갑 감시(토큰 전송 포함)

일반 accountInclude 필터에 tokenAccounts을 추가하여 지갑의 자금 이동과 관련된 모든 활동을 모니터링합니다. 여기에는 해당 지갑의 ATA와 관련된 수신 SPL 토큰 전송도 포함됩니다.

트랜잭션 데이터 구조


필터 논리 참조

Include Logic (OR)

accountInclude: 트랜잭션에 이 계정 중 하나라도 포함되어야 합니다.["A", "B"]은 계정 A 또는 계정 B가 포함된 트랜잭션과 일치합니다.

Required Logic (AND)

accountRequired: 트랜잭션에 이 계정이 모두 포함되어야 합니다.["A", "B"]은 계정 A와 계정 B가 모두 포함된 트랜잭션과 일치합니다.

Exclude Logic (NOT)

accountExclude: 트랜잭션에 이 계정 중 어느 것도 포함되어서는 안 됩니다.

Combined Logic

최종 필터: (accountInclude OR empty) AND (accountRequired AND all) AND NOT (accountExclude OR any).

성능 고려 사항

트랜잭션 스트림의 데이터 양이 많을 수 있습니다. 이를 원활하게 처리하려면 다음을 따르세요.
  • 구체적인 프로그램 필터부터 사용하세요(“모든 트랜잭션”을 구독하지 마세요).
  • 약 1.5초의 추가 지연 시간을 허용할 수 있다면 processed 대신 confirmed을 사용하세요.
  • 카운터로 처리 용량을 모니터링하세요.
  • 큐 뒤에서 병렬 컨슈머를 실행하는 방안을 고려하세요.

오류 처리

증상: 트랜잭션 양이 너무 많습니다.해결 방법: 더 엄격한 필터(accountRequired, accountExclude)를 추가하고, 더 높은 확정 수준을 사용하세요. 샘플링 또는 속도 제한을 구현하고 비동기식으로 처리하세요.
증상: 예상한 트랜잭션이 나타나지 않습니다.해결 방법: 프로그램 주소가 올바른지 확인하고 트랜잭션이 실제로 존재하는지 확인하세요. 더 빠른 업데이트를 위해 processed을 사용해 보고, 제한적인 accountRequired/accountExclude 필터의 조건을 완화하세요.
증상: 트랜잭션 데이터를 파싱할 수 없습니다.해결 방법: 누락된 필드를 적절히 처리하고, 처리 전에 구조를 검증하세요. 파싱을 try/catch로 감싸고 트랜잭션 데이터 디코딩을 참조하세요.

다음 단계

Slot & Block Monitoring

네트워크 합의와 블록 생성을 추적합니다.

Stream Pump AMM Data

실제 사례: Pump.fun AMM 트랜잭션을 모니터링합니다.

Decoding Transaction Data

바이너리 트랜잭션 페이로드를 읽을 수 있는 Solana 트랜잭션으로 파싱합니다.

Yellowstone protocol reference

원시 Yellowstone gRPC 프로토콜에서 동일한 워크플로를 사용합니다.