Skip to main content
有关使用 Helius Rust SDK 的代理的最佳实践和推荐模式。有关安装和入门,请参见概述

代理的建议

使用 get_transactions_for_address 替代两步查找

get_transactions_for_address 将签名查找和交易获取结合为一次调用,并进行服务器端过滤。

使用 send_smart_transaction 进行标准发送

它会自动模拟、估算计算单元、获取优先费用并确认。不要手动构建 ComputeBudget 指令——SDK 会自动添加它们。

使用 Helius Sender 实现超低延迟

对于时间敏感的交易(套利、狙击、清算),使用 send_smart_transaction_with_sender。它通过 Helius 的多区域基础设施和 Jito 路由。

为多个资产使用 get_asset_batch

在获取多个资产时,将它们批量处理。不要在循环中调用 get_asset

使用 webhooks 替代轮询

不要在循环中轮询 get_transactions_for_address。使用 webhooks 进行服务器到服务器的通知。

分页

基于令牌/游标(RPC V2 方法)

基于页面(DAS API)

token_accounts 过滤器

在查询 get_transactions_for_address 时,token_accounts 过滤器控制是否包括代币账户活动:

changed_since_slot — 增量账户提取

changed_since_slot 仅返回给定槽位后被修改的账户。适用于同步或索引工作流程。支持 get_program_accounts_v2, get_token_accounts_by_owner_v2, get_account_info, get_multiple_accounts, get_program_accountsget_token_accounts_by_owner

常见错误

  1. transaction_details: Some(TransactionDetails::Full) 不是默认值 — 默认情况下,get_transactions_for_address 仅返回签名。设置 TransactionDetails::Full 以获取完整的交易数据。
  2. 不要与 send_smart_transaction 添加 ComputeBudget 指令 — SDK 会自动添加。自行添加会导致 HeliusError::InvalidInput 错误。
  3. 优先费用以每计算单元的微 lamports 计 — 不是 lamports。来自 get_priority_fee_estimate 的值已经在正确的单位中。
  4. DAS 分页从 1 开始page: 1 是第一页,不是 page: 0
  5. async_connection() 需要 new_asyncHeliusBuilder — 在通过 Helius::new() 创建的客户端上调用 helius.async_connection() 返回 Err(HeliusError::ClientNotInitialized)
  6. get_asset 返回 Option<Asset> — 如果资产不存在,成功响应可能仍为 None。明确处理 Option
  7. 发送者提示是强制性的send_smart_transaction_with_sender 自动确定和附加提示。最低 0.0002 SOL (双模式)或 0.000005 SOL (仅 SWQOS)。
  8. TLS 特性标志 —— crate 默认使用 native-tls。当 OpenSSL 不可用时,使用 features = ["rustls"](和 default-features = false)进行纯 Rust TLS。

错误处理和重试

SDK 通过 HeliusError 枚举提供类型化错误变体,因此您可以直接匹配它们:

重试策略

RateLimitExceededInternalError 上重试,采用指数退避: