跳到正文
← 使用教程

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

链小知 · 进阶 · 核验 · 依官方文档整理

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

开始前准备

  • 准备已有去敏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解释为交易风险;不在公开材料中附鉴权头。

检查结果:输入属于该扫描模型,账户视角与环境明确。

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

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

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

检查结果:原生Wei金额、调用内容及代币动作独立记录,原值未丢精度。

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

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

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

检查结果:各输出的请求选项和实际出现状态一一对应。

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

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

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

检查结果:结果属于明确的区块和状态条件;override结果有显著条件说明。

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也不等于交易免费。

检查结果:三种状态互不替代;估算、授权暴露和资产差额各有条件。

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

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

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

检查结果:有可定位的原因或明确未知范围,未用缺失字段补出成功或0费用。

怎样确认完成

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

常见错误与边界

  • 把state_override虚拟余额当成账户真实余额。
  • 把used/estimate当作最终ETH费用,或把默认validation当成同时跑完全部模拟。

本教程根据官方资料整理,尚未完成逐步操作验收。界面、支持范围及费用变化时,先核对官方说明。 纯文本版 · 提交纠错依据