Skip to main content
为使用 Helius TypeScript SDK 的代理提供最佳实践和推荐模式。有关安装和入门,请参阅概览

代理的建议

使用 getTransactionsForAddress 代替两步查找

getTransactionsForAddress 将签名查找和交易获取合并为一个调用,并带有服务器端过滤。它支持时间/插槽范围、代币账户过滤和分页。

使用 sendSmartTransaction 进行标准发送

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

使用 Helius Sender 实现超低延迟

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

对多个资产使用 getAssetBatch

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

使用 webhooks 或 WebSockets 代替轮询

不要在循环中轮询 getTransactionsForAddress。使用 webhooks 进行服务器到服务器的通知或 WebSockets 进行实时客户端流。

分页

SDK 根据方法使用不同的分页策略。

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

基于页面(DAS API)

tokenAccounts 过滤器

当查询 getTransactionsForAddress 时,tokenAccounts 过滤器控制是否包括代币账户活动:

changedSinceSlot — 增量账户获取

changedSinceSlot 仅返回在给定插槽后修改的账户。对于同步或索引工作流很有用。由 getProgramAccountsV2getTokenAccountsByOwnerV2getAccountInfogetMultipleAccountsgetProgramAccountsgetTokenAccountsByOwner 支持。

常见错误

  1. transactionDetails: "full" 不是默认设置 — 默认情况下,getTransactionsForAddress 仅返回签名。设置 transactionDetails: "full" 以获取完整的交易数据。
  2. 不要使用 sendSmartTransaction 添加 ComputeBudget 指令 — SDK 会自动添加。自己添加会导致重复指令和交易失败。
  3. 优先费用单位是每计算单元的微 lamports — 不是 lamports。getPriorityFeeEstimate 的值已经是 SetComputeUnitPrice 的正确单位。
  4. DAS 分页从 1 开始page: 1 是第一页,而不是 page: 0
  5. blockTime 是 Unix 秒,不是毫秒 — 过滤时使用 Math.floor(Date.now() / 1000)
  6. getAsset 默认隐藏可替代代币 — 传递 options: { showFungible: true } 以包括它们。
  7. WebSocket 流需要清理 — 使用 AbortController 信号并在完成时调用 helius.ws.close() 以避免连接泄漏。

错误处理和重试

SDK抛出包含HTTP状态码的原生Error对象在消息字符串中(例如,"API error (429): ...")。错误对象上没有.status属性,因此状态检测需要解析消息。