概述
getTransactionsForAddress 提供强大的交易历史查询功能,具有高级过滤、灵活排序和高效分页。
主要功能
灵活排序
按时间顺序排序(最早优先)或反向排序(最新优先)
高级过滤
按时间范围、槽位、签名和交易状态进行过滤
完整交易数据
一次调用获取完整的交易详情
简单分页
使用 slot:position 令牌轻松分页
常见用例
此方法在多个场景中特别有用。代币发行分析有助于跟踪新项目的首次铸币交易和早期代币持有者。钱包资金历史允许您识别特定地址的资金来源和交易模式。交易分析让您可以按成功/失败状态进行过滤,专注于已完成的交易并排除失败的尝试。 该 API 还支持 审计与合规 工作流,通过状态过滤为特定时间段生成交易报告。分析仪表板可以利用历史重播功能构建全面的交易分析。最后,投资组合跟踪应用程序可以访问完整的成功交易历史,用于 DeFi 投资组合管理。快速开始
1
获取您的 API 密钥
从 Helius Dashboard 获取您的 API 密钥。
2
使用高级功能查询
获取在两个日期之间按时间顺序排序的钱包的所有成功交易:
3
了解参数
此示例展示了关键特性:
- transactionDetails: 设置为
'full'以在一次调用中获取完整的交易数据 - sortOrder: 使用
'asc'按时间顺序(最早的优先)或'desc'按最新的优先 - filters.blockTime: 使用
gte(大于或等于)和lte(小于或等于)设置时间范围 - filters.status: 仅过滤
'succeeded'或'failed'交易
请求参数
要查询交易历史的账户的Base-58编码公钥
返回的交易详细级别:
signatures: 基本签名信息(更快)full: 完整的交易数据(消除对getTransaction调用的需求,要求限制≤100)
结果的排序顺序:
desc: 最新的优先(默认)asc: 最早的优先(按时间顺序,适合历史分析)
返回的最大交易数:
- 当
transactionDetails: "signatures"时最多1000 - 当
transactionDetails: "full"时最多100
上一个响应的分页令牌(格式:
"slot:position")承诺级别:
finalized, confirmed, 或 processed用于缩小结果范围的高级过滤选项。
使用比较运算符按槽号过滤:
gte, gt, lte, lt示例:{ "slot": { "gte": 1000, "lte": 2000 } }使用比较运算符按Unix时间戳过滤:
gte, gt, lte, lt, eq示例:{ "blockTime": { "gte": 1640995200, "lte": 1641081600 } }使用比较运算符按交易签名过滤:
gte, gt, lte, lt示例:{ "signature": { "lt": "SIGNATURE_STRING" } }按交易成功/失败状态过滤:
succeeded: 仅成功的交易failed: 仅失败的交易any: 成功和失败的交易(默认)
{ "status": "succeeded" }交易数据的编码格式(仅在
transactionDetails: "full"时适用)。与getTransaction API 相同。选项:json, jsonParsed, base64, base58设置返回的最大交易版本。如果省略,则仅返回旧版交易。设置为
0以包含所有版本的交易。请求可以评估的最小槽位
过滤器操作符
使用过滤器时,可以对slot, blockTime或signature使用比较操作符,以及一个特殊的status过滤器。这些操作符的工作方式类似于数据库查询,能够精确控制数据范围。
比较操作符
| 操作符 | 全名 | 描述 | 示例 |
|---|---|---|---|
gte | 大于或等于 | 包含值 ≥ 指定值 | slot: { gte: 100 } |
gt | 大于 | 包含值 > 指定值 | blockTime: { gt: 1641081600 } |
lte | 小于或等于 | 包含值 ≤ 指定值 | slot: { lte: 2000 } |
lt | 小于 | 包含值 < 指定值 | blockTime: { lt: 1641168000 } |
eq | 等于 | 包含值完全等于(仅blockTime) | blockTime: { eq: 1641081600 } |
状态过滤器
| 过滤器 | 描述 | 值 |
|---|---|---|
status | 按成功/失败过滤交易 | succeeded, failed, 或 any |
响应格式
- 签名响应
- 完整交易响应
实用示例
基于时间的分析
生成每月交易报告:代币铸造创建
查找特定代币的铸造创建交易:用例:查找代币铸造或流动性池创建的确切时刻,包括创建者地址和初始参数。
资金交易
查找谁为特定地址提供资金:最初的几笔交易通常会揭示资金来源,并有助于识别相关地址或资金模式。
分页
当交易数量超过限制时,使用响应中的paginationToken获取下一页。该令牌是一个简单的字符串,格式为"slot:position",指示API从何处继续。
如何分页
使用每个响应中的分页令牌获取下一页:多个地址
您不能在单个请求中查询多个地址。要获取多个地址的交易,请在相同的时间或槽窗口中查询每个地址,然后合并和排序:每个地址查询计为一个单独的API请求(每个地址100个积分)。
最佳实践
性能
为了获得最佳性能,当您不需要完整的交易数据时,使用transactionDetails: "signatures"。实现合理的页面大小以获得更好的响应时间,并考虑按时间范围或特定槽进行过滤以进行更有针对性的查询。
过滤
从广泛的过滤器开始,并逐步缩小范围以找到所需的数据。使用基于时间的过滤器进行分析和报告工作流。您可以结合多个过滤器进行精确查询,以定位特定的交易类型或时间段。分页
在需要稍后恢复大型查询时存储分页键。监控分页深度以进行性能规划,并在需要按时间顺序重播历史事件的情况下使用升序。错误处理
使用指数退避策略优雅地处理速率限制。在发出请求之前始终验证地址,并在适当时缓存结果以减少API使用并提高应用程序性能。这与getSignaturesForAddress有何不同?
如果您熟悉标准的getSignaturesForAddress方法,以下是主要区别:
在一次调用中获取完整交易
使用getSignaturesForAddress,您需要两个步骤:
getTransactionsForAddress,只需一次调用:
附加功能
按时间顺序排序
使用
sortOrder: 'asc' 将交易从最早到最新排序基于时间的过滤
使用
blockTime 过滤器按时间范围过滤状态过滤
使用
status 过滤器仅获取成功或失败的交易更简单的分页
使用
paginationToken 代替复杂的 before/until 签名