为gTFA引入Token账户过滤器

  • Helius
  • 发布于 1天前
  • 阅读 22

Helius发布了getTransactionsForAddress (gTFA) 的新功能,可以通过一个RPC调用查询钱包的token转移历史,开发者无需再为每个token账户调用getTokenAccountsByOwnergetSignaturesForAddress,简化了查询过程,提高了效率并降低了成本。

去年十月,我们发布了 getTransactionsForAddress,这是一个新的 Solana RPC 调用,用于查询历史数据,它将 getSignaturesForAddressgetTransaction 整合到一个方法中。

今天,我们很高兴地宣布 getTransactionsForAddress (gTFA) 现在可以通过单个 RPC 调用来查询钱包的 token 转移历史记录。

新的 tokenAccounts 功能 允许用户包含钱包关联 token 账户的交易——之前从 gTFA 及其前身 getSignaturesForAddress 中省略了这些交易。

以前,开发人员被迫查询 getTokenAccountsByOwner,然后为每个 token 账户查询 getSignaturesForAddress

这既慢又昂贵,通常需要 100 多个额外的 RPC 调用。

现在,只需使用 tokenAccountsgetTransactionsForAddress 进行一次调用即可。

问题

在 Solana 上,你的钱包实际上并不直接持有 token。

相反,你的钱包拥有关联 Token 账户 (ATA),而这些 token 账户持有你的 token。

例如,当有人向你发送 USDC 时,它会发送到你的 USDC token 账户,而不是你的主钱包地址。

这在查询钱包交易历史记录时会造成很大的麻烦:

当你在钱包上调用 getSignaturesForAddress 时,你只能获得直接引用该钱包地址的交易。

与你的 token 账户交互但不提及你的钱包的 Token 转移根本不会显示。

解决方法

在今天之前,开发人员必须实现一个繁琐的解决方法:

  1. 调用 getTokenAccountsByOwner 以获取钱包的 token 账户
  2. 为钱包本身调用 getSignaturesForAddress
  3. 每个 token 账户调用 getSignaturesForAddress
  4. 将所有结果合并在一起
  5. 删除重复项(许多交易触及多个账户)
  6. 按时间顺序排序

这种方法存在以下几个问题:

1. 性能慢

一个有 50 个 token 账户的钱包需要 51+ 个 RPC 调用才能构建完整的历史记录。专业交易员、重度 DeFi 用户或休闲 memecoin 交易员可能拥有数百个 token 账户。

2. 分页效率低

想要最近的 20 笔交易? 你不能只从每个来源获取 20 个并合并——你需要获取所有内容,删除重复项,排序,然后只取前 20 笔交易。

如果没有过度获取,就无法有效地分页。

3. RPC 成本增加

每个 RPC 调用都有开销。 将该开销乘以每个用户请求 100 多个调用会很快变得昂贵,尤其是在规模较大的情况下。

解决方案

使用新的 tokenAccounts 过滤器,你可以在单个 RPC 请求中获得完整的钱包历史记录:

{
    "jsonrpc": "2.0",
    "id": "helius-example",
    "method": "getTransactionsForAddress",
    "params": [\
        "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",\
        {\
            "filters": {\
                "tokenAccounts": "all"\
  },\
            "sortOrder": "asc",\
            "limit": 100\
        }\
    ]
}

就是这样。一个电话。完整的历史。

过滤选项

tokenAccounts 过滤器提供三个选项:nonebalanceChangedall

none (默认)

tokenAccounts 过滤器设置为 none 时,交易必须引用钱包地址。

balanceChanged (推荐)

应用 balanceChanged 后,交易将引用钱包地址,或修改钱包拥有的 tokenAccount 的余额。

all

tokenAccounts 设置为 all 要求交易引用钱包地址或钱包拥有的 token 账户。

用例

这项新功能对于以下方面至关重要:

  • 钱包显示完整的交易历史记录
  • 需要每次 token 移动的投资组合跟踪器
  • 计算所有 token 的收益/损失的税务软件
  • 显示用户活动的分析仪表板

开始使用

tokenAccounts 功能现已推出。

只需将 tokenAccounts: balanceChanged(或 all)添加到你的过滤器对象即可!

还未使用 getTransactionsForAddress 吗?

查看我们的文档SDK 以了解更多信息并开始使用。

  • 原文链接: helius.dev/blog/solana-t...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/