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