收据和确认回调之间的区别

Difference between Receipt & Confirmation callbacks

我想以编程方式验证交易是否成功 - 即以太坊网络本身识别出对于给定的交易哈希,它是有效的。

使用 web3.eth.sendSignedTransaction 返回的承诺,有两个事件 - 一个 'confirmation',另一个 'receipt'。

我能否依靠 'receipt' 回调来确定交易是否真实发生?还是我也必须依赖 'confirmation' 回调?如果是 - 如何?

同样,阅读 getTransactionReceipt 时提到 -

收据不适用于待定交易,returns 无效。

那么,如果我确实收到了收据 - 这意味着交易不再是 'pending'?也就是说,成功了?

_So, if I do get a receipt then - it means the transaction is no longer 'pending' ? That is, was successful?

当收据可用时(或者在您的情况下处理了事件),这意味着交易被挖掘到一个块中。

但 tx 可能已被还原(如果它是智能合约的 tx,由于某种原因将其还原)。检查收据字段 status

  • true表示交易成功
  • false 表示已还原

请注意,status 未包含在 Byznatium 之前(2017 年 10 月)的交易中,并且在未来的某些交易类型中也可能会丢失。在 .

中查看有关交易类型的更多信息