# Blockaid 模拟没有资产变化或 Gas？核对 options、Wei 与状态覆盖

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

排查已有 EVM transaction scan 记录，把缺失输出、模拟失败、风险结果和最终网络费分开。

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

## 前置条件
- 准备已有去敏POST /v0/evm/transaction/scan请求与响应、时间、目标网络和应用期望，不重新提交交易或调用收费API。
- 适用官方SDK1.9.0固定源码EVM交易模型；钱包上的摘要不足以代替完整from/to/data/value字段。

## 1. 确认扫描的是交易参数而不是哈希

从已有调用记录确认路径/v0/evm/transaction/scan，读取chain、account_address、metadata和data。data.from、to及hex calldata是扫描输入；仅有上链hash不能直接代替此模型。account_address决定观察者视角，可与其他交易参与者不同。

先在配置中核对production/api.blockaid.io与client/client.blockaid.io，以及所用鉴权类型，避免把另一环境401/403解释为交易风险；不在公开材料中附鉴权头。

核对结果：输入属于该扫描模型，账户视角与环境明确。
依据：[Blockaid 官方 SDK：交易扫描、金额单位与状态覆盖](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/transaction.ts)
依据：[Blockaid 官方 SDK：环境、鉴权头与客户端选择](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/client.ts)

## 2. 把原生金额和代币调用拆开看

检查data.value是否为十六进制Wei字符串，ETH换算需除以10^18；不要把用户输入的0.1直接当合格value。data.data为hex calldata，ERC20转账/approve的代币额度应从相应调用解释，不把value=0当作没有代币动作。

保存原字符串与解码后的含义，避免浮点数处理大整数；若没有可靠解码或代币精度，记录未知，不按符号和logo猜资产。

核对结果：原生Wei金额、调用内容及代币动作独立记录，原值未丢精度。
依据：[Blockaid 官方 SDK：交易扫描、金额单位与状态覆盖](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/transaction.ts)
依据：[Blockaid 官方 SDK：JSON-RPC 扫描参数、暴露与错误模型](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/json-rpc.ts)

## 3. 先查 options，再判断输出缺失原因

官方模型默认options=['validation']；按原请求逐项看有没有simulation、gas_estimation或events。未请求的区块不要求出现；需要Gas驱动模拟时，simulate_with_estimated_gas只有配合gas_estimation才满足文档条件。

不把缺少gas_estimation显示为0网络费，也不把缺少simulation显示为已模拟通过。需要新增扫描的集成方应先确认权限与当前方案，现有记录核对可停在明确输出缺口。

核对结果：各输出的请求选项和实际出现状态一一对应。
依据：[Blockaid 官方 SDK：交易扫描、金额单位与状态覆盖](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/transaction.ts)

## 4. 检查区块、状态覆盖与模拟视角

记录block是latest还是固定区块，并对照响应block、chain、account_address。latest代表该次请求的状态范围，不能自动视作现在。查看是否设置state_override：balance、code、nonce、state或stateDiff能改模拟条件。

带覆盖的成功可能依赖虚拟余额/存储，报告应保留覆盖项；不要拿它证明原账户已经有钱或交易在真实链上必成功。链、观察账户或区块不一致时先解决差异，再解读资产变化。

核对结果：结果属于明确的区块和状态条件；override结果有显著条件说明。
依据：[Blockaid 官方 SDK：交易扫描、金额单位与状态覆盖](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/transaction.ts)

## 5. 分别核对模拟、风险和估算状态

simulation成功后检查目标账户的assets_diffs与exposures，按资产完整地址、类型和decimals解释raw_value与已缩放value，不能将总USD差额替代每项资产。simulation.Error读取error/error_details，不拼出成功摘要。

validation单独读取result_type，尤其status=Success且result_type=Error的失败情况。gas_estimation成功的used/estimate是估算Gas量字符串，缺少实际价格与执行回执时不能当最终收费；gas_estimation.Error也不等于交易免费。

核对结果：三种状态互不替代；估算、授权暴露和资产差额各有条件。
依据：[Blockaid 官方 SDK：交易扫描、金额单位与状态覆盖](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/transaction.ts)
依据：[Blockaid 官方 SDK：JSON-RPC 扫描参数、暴露与错误模型](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/json-rpc.ts)

## 6. 保存诊断结论与重试边界

将问题归为选项未请求、参数/单位不符、链状态/余额条件、风险判断错误或接口故障。遇401/403查已有授权配置，422查输入，429与超时查重试记录；官方SDK部分故障默认再试2次，不能只按一次调用估计耗时或费用。

交付去敏的请求时间、环境、区块、选项和错误；对没有响应、没有真实执行回执的项目写未知。只有真实链上回执才能判断实际交易与网络费，模拟记录不证明已签名或广播。

核对结果：有可定位的原因或明确未知范围，未用缺失字段补出成功或0费用。
依据：[Blockaid 官方 SDK：使用、错误、重试与日志](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/README.md)
依据：[Blockaid 官方 SDK：固定提交与版本 1.9.0](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/package.json)
依据：[Blockaid 官方 SDK：交易扫描、金额单位与状态覆盖](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/transaction.ts)

## 常见错误
- 把state_override虚拟余额当成账户真实余额。
- 把used/estimate当作最终ETH费用，或把默认validation当成同时跑完全部模拟。

## 完成检查
- 完成输入/选项/区块/状态覆盖/三类结果对照；没有实际回执的收费与执行状态保持未知。
- 文档核验：未调用认证API、连接钱包、签名或广播。

## 相关知识
- [Gas 怎么计算？交易失败为什么仍可能扣费](https://lianxiaozhi.com/learn/gas-and-failed-transactions)
- [代币授权是什么？断开钱包与撤销授权有什么区别](https://lianxiaozhi.com/learn/token-approvals)

## 官方依据
- [Blockaid 官方 SDK：交易扫描、金额单位与状态覆盖](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/transaction.ts)
- [Blockaid 官方 SDK：JSON-RPC 扫描参数、暴露与错误模型](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/resources/evm/json-rpc.ts)
- [Blockaid 官方 SDK：环境、鉴权头与客户端选择](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/src/client.ts)
- [Blockaid 官方 SDK：使用、错误、重试与日志](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/README.md)
- [Blockaid 官方 SDK：固定提交与版本 1.9.0](https://raw.githubusercontent.com/blockaid-official/blockaid-client-node/dc1e58da8a0448a7cf310657d9312e1b161a9acd/package.json)
