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에 있는 민트는 해당 토큰의 모든 전송, 스왑, 민팅 및 소각을 포착합니다. 토큰 민트 필터링 및 아래의 토큰 감시 탭을 참조하세요.
- 프로그램 필터링
- 계정 특정
- 고급 필터링
- 지갑 모니터링
- Watching a Token
특정 프로그램 관련 거래 모니터링관심 있는 프로그램과 관련된 모든 거래 추적:최적의 용도: 프로그램 특정 모니터링, DeFi 프로토콜 추적, 스마트 계약 상호 작용.
실용적인 예시
예시 1: DEX 트랜잭션 모니터링
인기 DEX 프로그램과 관련된 트랜잭션을 추적합니다.예시 2: 실패한 트랜잭션 모니터링
실패한 트랜잭션을 추적하여 애플리케이션 문제를 파악합니다.예시 3: 고액 트랜잭션 모니터링
대규모 SOL 전송이 포함된 트랜잭션을 추적합니다.예시 4: 지갑 감시(토큰 전송 포함)
일반accountInclude 필터에 tokenAccounts을 추가하여 지갑의 자금 이동과 관련된 모든 활동을 모니터링합니다. 여기에는 해당 지갑의 ATA와 관련된 수신 SPL 토큰 전송도 포함됩니다.
트랜잭션 데이터 구조
Transaction Message Structure
Transaction Message Structure
Token Balance Changes
Token Balance Changes
Instruction Details
Instruction Details
필터 논리 참조
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).성능 고려 사항
- Volume Management
- Data Processing
트랜잭션 스트림의 데이터 양이 많을 수 있습니다. 이를 원활하게 처리하려면 다음을 따르세요.
- 구체적인 프로그램 필터부터 사용하세요(“모든 트랜잭션”을 구독하지 마세요).
- 약 1.5초의 추가 지연 시간을 허용할 수 있다면
processed대신confirmed을 사용하세요. - 카운터로 처리 용량을 모니터링하세요.
- 큐 뒤에서 병렬 컨슈머를 실행하는 방안을 고려하세요.
오류 처리
Too Many Transactions
Too Many Transactions
증상: 트랜잭션 양이 너무 많습니다.해결 방법: 더 엄격한 필터(
accountRequired, accountExclude)를 추가하고, 더 높은 확정 수준을 사용하세요. 샘플링 또는 속도 제한을 구현하고 비동기식으로 처리하세요.Missing Transactions
Missing Transactions
증상: 예상한 트랜잭션이 나타나지 않습니다.해결 방법: 프로그램 주소가 올바른지 확인하고 트랜잭션이 실제로 존재하는지 확인하세요. 더 빠른 업데이트를 위해
processed을 사용해 보고, 제한적인 accountRequired/accountExclude 필터의 조건을 완화하세요.Parse Errors
Parse Errors
증상: 트랜잭션 데이터를 파싱할 수 없습니다.해결 방법: 누락된 필드를 적절히 처리하고, 처리 전에 구조를 검증하세요. 파싱을 try/catch로 감싸고 트랜잭션 데이터 디코딩을 참조하세요.
다음 단계
Slot & Block Monitoring
네트워크 합의와 블록 생성을 추적합니다.
Stream Pump AMM Data
실제 사례: Pump.fun AMM 트랜잭션을 모니터링합니다.
Decoding Transaction Data
바이너리 트랜잭션 페이로드를 읽을 수 있는 Solana 트랜잭션으로 파싱합니다.
Yellowstone protocol reference
원시 Yellowstone gRPC 프로토콜에서 동일한 워크플로를 사용합니다.