Skip to main content
transactionSubscribe 웹소켓 메서드의 tokenAccounts 필터는 **wallet이 소유한 연관된 토큰 계정 (ATA)**의 활동과 매칭할 수 있도록 구독을 허용합니다. 이는 wallet의 pubkey가 직접 나타나는 거래에만 매칭되는 것이 아닙니다. 동일한 필터는 gRPC에서도 사용할 수 있습니다 — gRPC 버전에 대해서는 토큰 계정 (ATA) 필터링을 참조하세요.

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

accountInclude: [wallet]으로 wallet을 관찰할 때, 해당 wallet pubkey가 거래의 계정 키에 나타나는 거래와만 매칭됩니다. 흔히 발생하는 경우가 있습니다: 누군가가 wallet에 SPL 토큰(예: USDC)을 보낼 때, 전송은 wallet의 연관된 토큰 계정 (ATA) — 별도의 프로그램 유도 주소 — 를 터치하며, 직접적으로 wallet pubkey에 나타나지 않습니다. 따라서 일반 accountInclude: [wallet] 구독은 들어오는 토큰 전송을 절대 볼 수 없습니다. 모든 ATA를 미리 나열하고 필터에 추가해야 할 것이지만, ATA는 수요에 따라 생성됩니다 (각 민트당 하나씩), 따라서 전체 세트를 사전에 알 수 없습니다.

tokenAccounts 확장 작동 방식

구독 중 tokenAccounts을 설정하여 accountInclude wallet이 소유한 토큰 계정을 터치하는 거래와 또한 매칭하도록 확장합니다. 매칭은 소유자 기반입니다: LaserStream은 매칭 시점에 accountInclude 주소가 소유한 토큰 계정을 확인하므로, wallet이 소유한 모든 토큰 계정을 포착합니다 — 정규화되지 않은 계정을 포함하여 — 유도된 ATA 주소뿐만 아니라. 직접 ATA를 나열할 필요가 없습니다. tokenAccounts을 생략한 구독은 이전과 동일하게 작동하므로 기존 필터에 추가해도 안전합니다.

확장 모드

tokenAccounts은 세 가지 문자열 값 중 하나를 가집니다. "balanceChanged"으로 시작하세요. 이는 "all"의 볼륨의 일부에 대한 실제 자금 이동을 포착합니다.

transactionSubscribe에서 사용하기

tokenAccounts는 표준 Solana WebSocket API에 대한 Helius 확장입니다. 잘못된 값을 사용하면 JSON-RPC 오류 -32602: Invalid tokenAccounts value '<x>', expected one of: none, balanceChanged, all이 반환됩니다.

무엇이 매칭되었는지 읽기

ATA 확장을 통해 거래가 매칭되면, wallet의 토큰 이동은 거래의 meta.postTokenBalancesmeta.preTokenBalances에 포함됩니다. 해당 항목들은 owner로 필터링하여 wallet이 실제로 소유한 잔액을 분리한 다음 동일한 accountIndex에서 preTokenBalancespostTokenBalances와 비교하여 각 민트가 얼마나 이동했는지 확인하세요. 위의 예시는 필터링 단계를 보여줍니다.

관련 항목

transactionSubscribe

transactionSubscribe 필터와 옵션을 모두 포함하여, tokenAccounts.

Token Account Filtering (gRPC)

LaserStream gRPC 트랜잭션 필터에 대한 동일한 tokenAccounts 확장.

WebSocket Quickstart

LaserStream WebSocket에 연결하여 첫 번째 이벤트를 스트리밍합니다.