getSignaturesForAddress RPC 方法允许您检索涉及特定账户地址的已确认交易签名列表。这对于获取账户的交易历史非常有用。签名按时间倒序返回(最新的在前)。
常见用例
- 账户交易历史: 显示用户钱包的过去交易。对于更高级的交易历史解析,考虑使用 Helius 的 增强交易 API。
- 活动审计: 审查与特定智能合约或账户相关的所有交易。
- 特定交易查找: 如果只知道相关地址,通过遍历账户历史查找特定交易。
- 数据索引: 构建本地化的交易索引以加快查询和分析。
请求参数
address(string): (必需)要检索交易签名的账户的 base-58 编码公钥。options(object, 可选): 包含以下字段的可选配置对象:limit(number, 可选): 要返回的最大签名数。默认值为 1000,最大允许值为 1000。before(string, 可选): 一个 base-58 编码的交易签名。如果提供,查询将从此签名之前的交易开始。until(string, 可选): 一个 base-58 编码的交易签名。如果提供,查询将在该签名达到之前搜索交易(不包括该签名)。commitment(string, 可选): 指定查询使用的承诺级别。支持的值为finalized或confirmed。不支持processed承诺。如果省略,则使用 RPC 节点的默认承诺(通常为finalized)。minContextSlot(number, 可选): 请求可以被评估的最小 slot。这不是对历史交易的过滤,而是为节点的上下文设置最小 slot。
响应结构
JSON-RPC 响应中的result 字段是一个签名信息对象数组。每个对象的结构如下:
signature(string): base-58 编码的交易签名。slot(u64): 处理交易的槽位。err(object|null): 如果交易失败则为错误对象,成功则为null。memo(string|null): 交易相关的备忘录(如果有)。blockTime(i64|null): 包含交易的块的估计生成时间,Unix 时间戳格式(自纪元以来的秒数)。如果不可用则为null。confirmationStatus(string|null): 交易的确认状态(例如,processed,confirmed,finalized)。如果不可用(例如,对于旧的 Helius 响应)则为null。
示例
1. 获取地址的最新签名
此示例获取给定地址的最近(最多 1000 个)交易签名。2. 获取有限制的签名
此示例获取指定数量的地址的最近交易签名。3. 分页获取交易历史
此示例演示如何使用before 参数批量获取交易历史。
开发者提示
- 分页: 要获取活跃账户的完整交易历史,您可能需要进行多次请求,使用上一个批次中收到的最后签名和一个
limit。 - 速率限制: 在获取大量交易历史时,请注意 RPC 节点的速率限制。
- 顺序: 签名总是从最新返回到最旧。
limit参数:limit参数可以在 1 到 1000 之间。如果未指定,默认值为 1000。until参数: 此参数可用于在达到已知较旧的签名时停止获取签名,如果您只需要获取到某个时间点的交易,这非常有用。minContextSlot: 此参数不过滤历史交易。它指定 RPC 节点在评估请求时应该使用的最小槽位上下文。如果节点的状态早于此槽位,可能返回错误。- 交易详情: 此方法只返回签名和基本信息。要获取完整的交易详情,您需要使用每个签名调用
getTransaction方法。 - 代币账户限制: 此方法仅返回直接引用提供地址的交易。不包括地址拥有的代币账户相关交易。要获取完整的代币历史,包括关联的代币账户,请使用
getTransactionsForAddress结合tokenAccounts过滤器。
getSignaturesForAddress 及其分页选项,您可以有效地检索和管理任何 Solana 地址的交易历史。
相关方法
getTransactionsForAddress
高级过滤、排序和代币账户历史
getTransaction
从签名获取完整的交易详情