Skip to main content
Bộ lọc tokenAccounts của LaserStream cho phép gói đăng ký giao dịch gRPC khớp với hoạt động trên các tài khoản token liên kết (ATA) thuộc sở hữu của ví, thay vì chỉ các giao dịch có khóa công khai của ví xuất hiện trực tiếp. Bộ lọc tương tự cũng có trên WebSocket — xem Lọc tài khoản token (ATA) qua WebSocket.

Vấn đề: bộ lọc tài khoản thông thường bỏ sót các giao dịch chuyển token đến

Khi theo dõi một ví bằng accountInclude: [wallet], bạn chỉ khớp được các giao dịch có khóa công khai của ví đó xuất hiện trong danh sách khóa tài khoản của giao dịch. Một trường hợp phổ biến sẽ bị bỏ sót: khi ai đó gửi token SPL (chẳng hạn như USDC) đến ví, giao dịch chuyển sẽ tương tác với tài khoản token liên kết (ATA) của ví — một địa chỉ riêng biệt được dẫn xuất từ chương trình — chứ không phải chính khóa công khai của ví. Do đó, gói đăng ký accountInclude: [wallet] thông thường sẽ không bao giờ thấy các giao dịch chuyển token đến. Bạn sẽ phải liệt kê trước mọi ATA thuộc sở hữu của ví rồi thêm từng tài khoản vào bộ lọc — nhưng ATA được tạo theo nhu cầu (mỗi mint một ATA), nên không thể biết trước toàn bộ danh sách.

Cách hoạt động của tính năng mở rộng tokenAccounts

Đặt tokenAccounts trên bộ lọc giao dịch để mở rộng phạm vi khớp, nhờ đó ví accountInclude cũng khớp với các giao dịch tương tác với tài khoản token thuộc sở hữu của ví. Phép khớp dựa trên chủ sở hữu: LaserStream xác định các tài khoản token thuộc sở hữu của những địa chỉ accountInclude tại thời điểm khớp, nhờ đó phát hiện mọi tài khoản token thuộc sở hữu của ví — kể cả các tài khoản không chuẩn — chứ không chỉ địa chỉ ATA được dẫn xuất. Bạn không bao giờ phải tự liệt kê các ATA. Các gói đăng ký không có tokenAccounts sẽ hoạt động chính xác như trước, vì vậy bạn có thể thêm trường này vào bộ lọc hiện có một cách an toàn. Để khớp theo token thay vì theo ví, hãy xem Lọc mint token. Hai cờ này có thể kết hợp với nhau, vì vậy một bộ lọc có thể theo dõi hoạt động của một ví cụ thể đối với một token cụ thể.

Các chế độ mở rộng

tokenAccounts nhận một trong ba giá trị chuỗi: Hãy bắt đầu với "balanceChanged". Chế độ này ghi nhận chuyển động thực tế của tiền với lưu lượng chỉ bằng một phần nhỏ so với "all".

Sử dụng trong LaserStream gRPC

Thêm tokenAccounts vào bộ lọc giao dịch trong SubscribeRequest. Helius LaserStream SDK sẽ chuyển đổi chuỗi thành enum TokenAccountExpansionControlFlag ở cấp giao thức cho bạn (thuộc yellowstone-grpc-proto 12.5.0+).
Xem hướng dẫn Giám sát giao dịch để tham khảo ví dụ đầy đủ hơn về cách so sánh số dư trước và sau, cũng như tài liệu tham khảo về Yêu cầu đăng ký để xem mọi trường của bộ lọc giao dịch.

Đọc nội dung đã khớp

Sau khi một giao dịch khớp thông qua tính năng mở rộng ATA, chuyển động token của ví nằm trong meta.postTokenBalances và meta.preTokenBalances của giao dịch. Lọc các mục này theo owner để tách riêng số dư thực sự thuộc sở hữu của ví, sau đó so sánh preTokenBalances với postTokenBalances trên cùng một accountIndex để xem lượng token của từng mint đã thay đổi bao nhiêu. Ví dụ trên minh họa bước lọc; hướng dẫn Giám sát giao dịch trình bày toàn bộ phép so sánh.

Nội dung liên quan

Transaction Monitoring

Các chiến lược lọc đầy đủ và một ví dụ có thể chạy để theo dõi ví qua gRPC.

Token Account Filtering (WebSocket)

Trường tokenAccounts tương tự trên phương thức WebSocket transactionSubscribe.

Subscribe Request Reference

Mọi trường của bộ lọc giao dịch, bao gồm tokenAccounts.

Compressed Filters

Theo dõi hàng trăm nghìn tài khoản trong một luồng duy nhất.

Token Mint Filtering

Đăng ký nhận mọi giao dịch cho một mint token bằng matchMints.