概述
账户监控让您可以实时跟踪 Solana 上的余额变化、数据修改、所有权转移以及账户创建/删除事件。本指南涵盖了不同用例的过滤策略和实现模式。先决条件: 本指南假设您已完成 Yellowstone gRPC 快速入门 并已设置好工作流。
账户过滤选项
- 特定账户
- 按所有者
- 高级过滤器
通过公钥监控单个账户当您确切知道要监控哪些账户时使用:
最佳用途: 监控特定代币铸造、已知钱包或关键程序账户
数据切片
通过请求账户数据的特定字节范围来优化带宽:实用示例
示例 1:监控大额代币持有者
跟踪具有大量余额的 USDC 账户:示例 2:跟踪程序账户变化
监控由特定程序拥有的所有账户:示例 3:新账户创建监控
跟踪新账户创建的时间:过滤逻辑参考
了解过滤器如何组合:过滤器组合规则
过滤器组合规则
账户级过滤器(AND 逻辑):
- 如果指定,
account
和owner
和filters
必须全部匹配
account
数组中的任何账户匹配owner
数组中的任何所有者匹配
- 所有 dataSize 和 memcmp 过滤器必须匹配
常见过滤器模式
常见过滤器模式
特定铸币的代币账户:具有最低余额的 SPL 代币账户:程序派生账户:
性能注意事项
带宽优化
使用数据切片 仅请求所需字节应用严格过滤器 以减少不必要的更新选择适当的承诺 水平以适应您的用例
规模管理
从特定账户开始 然后使用所有者过滤器监控订阅量 并根据需要调整过滤器实现背压处理 以应对高流量流
错误处理
常见账户监控错误及解决方案:过滤器过于宽泛
过滤器过于宽泛
错误: 接收到过多数据或达到速率限制解决方案: 添加更具体的过滤器:
- 使用
dataSize
匹配精确账户类型 - 添加
memcmp
过滤器以匹配特定数据模式 - 考虑使用
accountsDataSlice
以减少带宽
未收到更新
未收到更新
错误: 流连接但没有账户更新出现解决方案:
- 验证账户地址是否正确
- 检查账户是否实际频繁更改
- 尝试使用
PROCESSED
承诺以获得更频繁的更新 - 首先测试已知活跃账户