跳转到主要内容
getSignaturesForAddress RPC 方法允许您检索涉及特定账户地址的已确认交易签名列表。这对于获取账户的交易历史非常有用。签名按时间倒序返回(最新的在前)。
尝试 getTransactionsForAddress:我们新的 getTransactionsForAddress 方法将 getSignaturesForAddressgetTransaction 合并为一个调用,并包含强大的新功能,包括反向搜索、基于时间的过滤和分页。

常见用例

  • 账户交易历史: 显示用户钱包的过去交易。对于更高级的交易历史解析,考虑使用 Helius 的 增强交易 API
  • 活动审计: 审查与特定智能合约或账户相关的所有交易。
  • 特定交易查找: 如果只知道相关地址,通过遍历账户历史查找特定交易。
  • 数据索引: 构建本地化的交易索引以加快查询和分析。

请求参数

  1. address (string):(必需)要检索交易签名的账户的 base-58 编码公钥。
  2. options (object,可选):一个可选的配置对象,包含以下字段:
  • limit (number,可选):要返回的最大签名数。默认是 1000,最大允许是 1000。
  • before (string,可选):一个 base-58 编码的交易签名。如果提供,查询将从此签名之前开始搜索交易。
  • until (string,可选):一个 base-58 编码的交易签名。如果提供,查询将搜索直到达到此签名(不包括)。
  • commitment (string,可选):指定用于查询的承诺级别。支持的值是 finalizedconfirmedprocessed。如果省略,将使用 RPC 节点的默认承诺(通常是 finalized)。
  • minContextSlot (number,可选):请求可以评估的最小槽。这不是对历史交易的过滤,而是为节点的上下文设置最小槽。
不支持批处理此归档方法不支持批处理。仅进行单独请求。

响应结构

JSON-RPC 响应的 result 字段是一个签名信息对象的数组。每个对象具有以下结构:
  • signature (string):Base-58 编码的交易签名。
  • slot (u64):交易处理的槽位。
  • err (object | null):如果交易失败,则为错误对象;如果成功,则为 null
  • memo (string | null):与交易相关的备注(如果有)。
  • blockTime (i64 | null):包含交易的区块的估计生产时间,以 Unix 时间戳表示(自纪元以来的秒数)。如果不可用,则为 null
  • confirmationStatus (string | null):交易的确认状态(例如,processedconfirmedfinalized)。如果不可用(例如,对于较旧的 Helius 响应),则为 null

示例

1. 获取地址的最新签名

此示例获取给定地址的最近(最多 1000 个)交易签名。
# Replace <api-key> with your Helius API key
# Replace SYSTEM_PROGRAM_ID with the address you want to query
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignaturesForAddress",
    "params": [
      "11111111111111111111111111111111" 
    ]
  }'

2. 获取有限制的签名

此示例获取指定数量的地址的最近交易签名。
# Replace <api-key> with your Helius API key
# Replace TARGET_ACCOUNT_ADDRESS with the address you want to query
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignaturesForAddress",
    "params": [
      "TARGET_ACCOUNT_ADDRESS",
      {
        "limit": 5 
      }
    ]
  }'

3. 分页获取交易历史

此示例演示如何使用 before 参数分批获取交易历史。
# Initial request (get the latest 2)
# Replace <api-key> with your Helius API key
# Replace TARGET_ACCOUNT_ADDRESS with the address you want to query
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignaturesForAddress",
    "params": [
      "TARGET_ACCOUNT_ADDRESS",
      { "limit": 2 }
    ]
  }'

# Suppose the last signature from the above response was LAST_SIGNATURE_FROM_PREVIOUS_BATCH
# Fetch the next 2 transactions before that one
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignaturesForAddress",
    "params": [
      "TARGET_ACCOUNT_ADDRESS",
      { 
        "limit": 2,
        "before": "LAST_SIGNATURE_FROM_PREVIOUS_BATCH" 
      }
    ]
  }'

开发者提示

  • 分页: 要获取一个活跃账户的完整交易历史,您可能需要进行多次请求,使用上一个批次中收到的最后一个签名的before参数和一个limit
  • 速率限制: 在获取大量交易历史时,请注意RPC节点的速率限制。
  • 顺序: 签名总是从最新到最旧返回。
  • limit参数: limit参数可以在1到1000之间。如果未指定,默认为1000。
  • until参数: 此参数可用于在达到已知的较旧签名时停止获取签名,这在您只需要某个时间点之前的交易时很有用。
  • minContextSlot 此参数不筛选历史交易。它指定RPC节点在评估请求时应使用的上下文的最小槽位。如果节点的状态早于此槽位,可能会返回错误。
  • 交易详情: 此方法仅返回签名和基本信息。要获取完整的交易详情,您需要对每个签名使用getTransaction方法。
通过使用getSignaturesForAddress及其分页选项,您可以有效地检索和管理任何Solana地址的交易历史。