# Pimlico操作一直等待：核状态、单项回执与gas费用

整理：链小知（AI 辅助）
资料核对日期：2026-10-14
引用地址：https://lianxiaozhi.com/tools/guides/pimlico-userop-status-receipt-cost-check
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

用已有UserOp记录区分queued、submitted、included和success，避免把过期查询或超时当失败。

## 使用工具
- [Pimlico](https://lianxiaozhi.com/tools/pimlico) · [官方入口](https://www.pimlico.io/)

## 前置条件
- 准备已有脱敏UserOp哈希、链与EntryPoint、时间戳、状态/回执及错误记录；保留原字段和最小单位。

## 1. 固定UserOp身份和查询范围

从原记录取userOpHash、链标识、EntryPoint与查询时间；UserOp哈希和bundle transactionHash是两个对象，不能用同一字段相互替换。主网/测试网、链与EntryPoint支持都应对原配置核。

公共bundler不要求key，但仅作测试/原型、20次/分钟/IP，主网paymaster需key。脱敏材料保留端点链标识，删去真实认证query；当前没有原回执就保持未知。

核对结果：UserOp、链、EntryPoint、端点角色与原查询时点明确。
依据：[Pimlico：链标识与EntryPoint覆盖](https://docs.pimlico.io/guides/supported-chains.md)
依据：[Pimlico：公共bundler范围和请求限制](https://docs.pimlico.io/references/bundler/public-endpoint.md)
依据：[Pimlico：UserOp回执与单项执行结果](https://docs.pimlico.io/references/bundler/endpoints/eth_getUserOperationReceipt.md)

## 2. 解释排队、重模拟失败与过期状态

queued表示nonce过高、尚在进入mempool前排队；not_submitted为已在mempool但未组成交易；submitted是bundle交易仍在等待。rejected是进入mempool后再模拟失败、从未送出该bundle。

not_found可是不认识哈希或初始验证被拒；状态只保存一小时，过期后也返回not_found。因此核原时间和先前记录，不能仅凭当前not_found断言从未送出或失败。

核对结果：状态原因与一小时保存窗口分别核，缺先前记录不猜。
依据：[Pimlico：UserOp状态、排队与一小时保留](https://docs.pimlico.io/references/bundler/endpoints/pimlico_getUserOperationStatus.md)

## 3. 用单项回执核included与success

submitted返回的transactionHash可因bundler换一笔交易重提交而改变，原日志要保留每个时点。included表示已上链；failed表示bundle交易已上链但该bundle回滚，二者与单个UserOp的结果不同。

eth_getUserOperationReceipt无可用回执时返回null。已有回执应对userOpHash、sender、nonce、entryPoint及内层receipt.transactionHash，再看外层success与所需业务日志；bundle的receipt.status为成功不能替代该UserOp成功。

核对结果：bundle哈希变化、UserOp匹配和单项success分开，null不补结果。
依据：[Pimlico：UserOp状态、排队与一小时保留](https://docs.pimlico.io/references/bundler/endpoints/pimlico_getUserOperationStatus.md)
依据：[Pimlico：UserOp回执与单项执行结果](https://docs.pimlico.io/references/bundler/endpoints/eth_getUserOperationReceipt.md)

## 4. 将客户端超时和gas估算错误分开

WaitForUserOperationReceiptTimeoutError表示等待或默认timeout不足，不直接表示链上失败。对既有记录核网络块时长、客户端timeout与后续回执；FAQ的超时示例chain为Sepolia但URL仍8453，不能照搬为正确链配置。

preVerificationGas不足可因估算dummy signature长度不同或bundler承诺已过期。官方承诺估值30秒；核估算/提交时点与签名长度，缺原参数就保留未知，不把加gas视为已修好。

核对结果：timeout、原链配置、估算时点和签名长度分别有记录或未知。
依据：[Pimlico：超时和preVerificationGas错误](https://docs.pimlico.io/references/permissionless/faqs.md)

## 5. 以实际cost核账单而非bundle总gas

保留回执actualGasUsed、actualGasCost的原hex与数值解释；它们属于UserOp，内层receipt.gasUsed/cumulativeGasUsed属于交易，不能直接替代。

Pimlico按UserOperationEvent实际actualGasCost计算主网paymaster加价；10%时gas账单为actualGasCost×1.1，请求credits另计。定价表状态查询5 credits、回执查询10 credits；重复轮询不是免费或单次业务执行。

核对结果：单项gas、bundle gas、paymaster加价和API credits分别列示。
依据：[Pimlico：UserOp回执与单项执行结果](https://docs.pimlico.io/references/bundler/endpoints/eth_getUserOperationReceipt.md)
依据：[Pimlico：套餐、API credits及actualGasCost加价](https://docs.pimlico.io/guides/pricing.md)

## 常见错误
- 状态过期的not_found不等链上不存在；null回执不等执行失败。
- included和交易receipt.status不能替代单项UserOp.success及业务日志。
- 30秒估算承诺、等待timeout和一小时状态保留是三个不同窗口。

## 完成检查
- 得到原UserOp状态、回执匹配与费用对照；官方方法已核，实际执行结果依原账户记录确认。

## 相关知识

## 官方依据
- [Pimlico：UserOp状态、排队与一小时保留](https://docs.pimlico.io/references/bundler/endpoints/pimlico_getUserOperationStatus.md)
- [Pimlico：UserOp回执与单项执行结果](https://docs.pimlico.io/references/bundler/endpoints/eth_getUserOperationReceipt.md)
- [Pimlico：超时和preVerificationGas错误](https://docs.pimlico.io/references/permissionless/faqs.md)
- [Pimlico：套餐、API credits及actualGasCost加价](https://docs.pimlico.io/guides/pricing.md)
- [Pimlico：链标识与EntryPoint覆盖](https://docs.pimlico.io/guides/supported-chains.md)
- [Pimlico：公共bundler范围和请求限制](https://docs.pimlico.io/references/bundler/public-endpoint.md)
