Skip to main content
LaserStream의 tokenAccounts 필터는 gRPC 트랜잭션 구독이 지갑의 퍼브키가 직접 나타나는 트랜잭션뿐만 아니라 **지갑이 소유한 연관된 토큰 계정(ATA)**의 활동을 매칭할 수 있게 합니다. 동일한 필터가 WebSocket에서도 사용 가능합니다 — 토큰 계정 (ATA) 필터링 over WebSocket을 참조하세요.

문제점: 단순 계정 필터는 들어오는 토큰 전송을 놓칩니다

accountInclude: [wallet]으로 지갑을 감시할 때, 해당 지갑의 퍼브키가 트랜잭션의 계정 키에 나타나는 트랜잭션만 매칭됩니다. 일반적인 사례는 놓치기 쉽습니다: 누군가 지갑에 SPL 토큰(예: USDC)을 전송할 때, 전송은 지갑의 연관된 토큰 계정(ATA) — 별도의 프로그램 파생 주소 — 을 터치하지만 지갑의 퍼브키 자체는 아닙니다. 따라서 단순 accountInclude: [wallet] 구독은 들어오는 토큰 전송을 절대 보지 못합니다. 사전에 지갑이 소유한 모든 ATA를 열거하고 각각을 필터에 추가해야 합니다 — 그러나 ATAs는 필요에 따라 생성되므로(하나의 민트당 하나씩), 사전에 전체 세트를 알 수 없습니다.

tokenAccounts 확장 작동 방식

트랜잭션 필터에 tokenAccounts를 설정하여 매칭을 확장하면 accountInclude 지갑이 소유한 토큰 계정을 터치하는 트랜잭션도 매칭됩니다. 매칭은 소유자 기반입니다: LaserStream은 매칭 시점에 accountInclude 주소가 소유한 토큰 계정을 해결하므로 지갑이 소유한 모든 토큰 계정을 포착합니다 — 비정형도 포함하여, 파생된 ATA 주소만이 아닙니다. 직접 ATA를 나열할 필요가 없습니다. tokenAccounts를 생략한 구독은 정확히 이전과 동일하게 작동하므로, 기존 필터에 안전하게 추가할 수 있습니다.

확장 모드

tokenAccounts는 세 개의 문자열 값 중 하나를 취합니다: "balanceChanged"로 시작하세요. 이는 "all" 볼륨의 일부로 실질적인 자금 이동을 포착합니다.

LaserStream gRPC에서 사용하기

SubscribeRequest의 트랜잭션 필터에 tokenAccounts를 추가하세요. Helius LaserStream SDK는 문자열을 와이어 수준의 TokenAccountExpansionControlFlag 열거형으로 변환해줍니다 (yellowstone-grpc-proto 12.5.0+의 일부).
잔액 전후를 비교하는 전체 예제는 트랜잭션 모니터링 가이드를 참조하세요, 각 트랜잭션 필터 필드는 Subscribe Request reference를 확인하세요.

매칭된 내용 읽기

ATA 확장을 통해 트랜잭션이 매칭되면, 지갑의 토큰 이동은 트랜잭션의 meta.postTokenBalancesmeta.preTokenBalances에 존재합니다. 해당 항목을 owner로 필터링하여 실제로 소유한 잔액을 분리한 다음, 동일한 accountIndexpreTokenBalancespostTokenBalances를 비교하여 각 민트가 얼마나 이동했는지 확인하세요. 위의 예에서 필터링 단계를 보여줍니다; 전체 비교는 트랜잭션 모니터링 가이드를 참조하세요.

관련 항목

트랜잭션 모니터링

전체 필터링 전략과 grpc를 통한 실행 가능한 지갑 감시 예제입니다.

토큰 계정 필터링 (WebSocket)

WebSocket transactionSubscribe 메서드의 동일한 tokenAccounts 필드입니다.

구독 요청 참조

tokenAccounts를 포함한 모든 트랜잭션 필터 필드입니다.

압축 필터

하나의 스트림에서 수십만 개의 계정을 추적하세요.