
提交只是传播的起点
钱包把一笔交易发送给节点后,节点可以继续向网络传播。交易可能先进入等待处理的交易池,再被选择纳入区块。拿到交易哈希,意味着有了追踪这笔请求的标识,并不能仅凭这一串字符判断执行已经完成。
想象你提交了一次合约里的留言更新。提交页面上的提示、节点接受请求、区块收录请求,以及合约完成更新,是不同的观察点。把这几个阶段按时间写下来,比只记录成功或失败两个词更容易定位疑问。
收录与执行结果要分开
对于以太坊交易,收录进区块和执行成功也需要分别检查。回执提供所属区块、消耗的计算资源、日志等信息,并包含执行状态。合约调用可能在执行时失败,因此,仅找到区块号不能替代对回执状态的阅读。
查询回执暂时得到空值时,应把结论限定为当前查询没有取得回执。可能还在等待,也可能需要检查网络或查询条件。一个稳妥的阅读习惯是保留问题,而不是立刻把缺少结果写成资产消失或交易完成。
把观察写成可以复查的记录
练习时可以建立三行记录:第一行保存网络与交易哈希,第二行记录所属区块和执行状态,第三行记下与目标动作有关的字段。若目标是修改留言,应继续核对留言状态;若只是查执行过程,就把结论停在回执所支持的范围。
页面显示还可能晚于链的更新,所以每次观察都附上查询时间。不要把一次查询的结果当作永久快照,也不要把页面提示当作协议定义。这样整理之后,后来的人可以沿着相同标识重查,并理解每个判断来自哪里。