区块链 · 数字资产知识 · 行业资讯
文章库关于本站

风险识别

数字钱包模拟交易器怎样做链上预检查|执行模拟与接收检查各有边界

摘要

链上交易预检查可以帮助解释一次请求可能怎样处理,但不同接口检查的对象并不相同。本文比较eth_call与testmempoolaccept的职责,不把检查通过写成已上链、已成交或投资仿真收益。

区块链量化交易的科技主题配图

本文只讨论链上交易预检查

数字钱包模拟交易器可能指不同工具:有的是行情训练界面,有的是展示资产数字的演示程序,还有的是交易提交前的检查功能。本文仅讨论最后一类,通过两种官方接口的职责说明怎样读结果,不评价任何具体模拟器,也不讨论投资策略回测。

在阅读“通过”提示前,先找出工具实际检查了什么。它是在选定状态上执行一次合约调用,还是在判断一份交易数据是否满足节点的接收条件?二者都可能发生在真实提交之前,却没有相同的输入、验证范围或结果含义。

执行一次调用不等于创建链上交易

以太坊JSON-RPC文档说明,eth_call会执行消息调用,但不会因此在区块链上创建交易。它的参数可以描述调用对象及输入,同时使用区块参数限定查询状态;返回的是合约执行所得的数据,不是一份已经纳入区块的回执。

因此,一次预检查应当连同使用的状态和输入一起保存。换一个调用对象、改变参数,或者之后的链上状态发生变化,都不能直接沿用此前结论。文档中相邻的Gas估算同样不会把交易写入链上,估算数字也不能直接当作已经支付的费用。

区块链量化回测的科技主题配图

接收检查回答另一个问题

比特币开发参考中的testmempoolaccept接受序列化交易资料,检查它是否违反相关共识或交易池策略规则。文档所列allowed结果表达的是能否通过接收测试;它并不表示这笔交易已被插入交易池,更不是区块确认记录。

这与以太坊的合约调用模拟不能互换。若某项工具只展示接收测试通过,不能据此宣称已经预测了另一条链上合约的执行结果。参考页还包含历史参数限制和默认值,阅读具体软件时应再核对对应版本,不能把这些数值当成所有当前节点的统一配置。

把检查结果保存为有条件的结论

核对预检查报告时,可以保留网络名称、方法名称、输入对象、所用状态或观察时刻、客户端版本,以及原始结果的含义。缺少其中关键条件时,先标明未确认范围,而不是补一句看似完整的“全部正常”。展示绿色图标不应替代这些依据。

最终还要把预检查与实际提交、后续网络记录分开:前者回答限定条件下检查得到了什么,后者才涉及真正发生的处理。本文未连接任何账户或节点,也没有签名、广播或真实测试。任何预检查结果都不在这里被解释为项目可信、成交保证或未来利润。

← 返回全部文章

延伸阅读 · 相关栏目

安全防护钱包与账户风险识别信息核验