You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Starknet上合约的全部failed tx?

获取合约失败交易列表的可行方案

1. 借助节点RPC接口直接查询

  • 核心逻辑:通过区块链节点的RPC接口,筛选目标合约的交易并判断执行状态。以太坊及兼容链中,交易回执的status字段为0代表执行失败。
  • 操作步骤:
    • 调用eth_getLogs,指定address为你的合约地址,设置区块范围(从合约部署区块到最新区块),获取所有与合约交互的交易哈希。
    • 批量调用eth_getTransactionReceipt获取每笔交易的回执,过滤出status为0的记录;若合约有自定义回退事件,也可通过日志签名直接筛选失败交易。
    • 用脚本批量处理能提升效率,避免单次请求数据量过大。

2. 利用链上数据索引工具

  • 使用The Graph、Dune Analytics这类工具,为目标合约创建自定义索引,将交易数据同步到索引库后,用类SQL语法快速筛选失败交易。
  • 优势:无需处理原始链上数据,支持按失败原因、时间区间、调用地址等维度聚合分析,能直接为UX优化提供针对性数据支撑。

3. 合约层面的失败事件监控

  • 未部署的合约:提前定义自定义失败事件,比如TransactionFailed(address caller, bytes4 funcSig, string reason),在revert或require触发时抛出该事件,后续直接监听事件即可获取失败交易。
  • 已部署的合约:解析EVM标准回退日志(签名为0x08c379a0的Error(string)事件),结合合约地址筛选失败交易,同时提取失败原因信息。

4. 自动化脚本批量扫描

  • 编写Python/JavaScript脚本,实现全流程自动化:
    1. 遍历目标合约的所有交互交易哈希(通过eth_getLogs获取)。
    2. 逐个查询交易回执,标记status=0的失败交易。
    3. 将结果存入数据库或CSV文件,便于后续统计分析失败类型(如gas不足、参数错误、逻辑限制等)。

关键注意事项

  • 区分两类失败:交易上链失败(如gas不足被节点拒绝)需监控mempool;上链但执行失败通过回执status判断。
  • 不同公链(BSC、Polygon等)的RPC字段逻辑基本一致,仅需调整部分接口细节。

内容的提问来源于stack exchange,提问作者Rohit Goyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:02:25