关于区块链:以太坊事务状态-Pending-Mined-Dropped-Replaced

47次阅读

共计 2215 个字符,预计需要花费 6 分钟才能阅读完成。

解释以太坊和其余区块链上不同事务状态的含意,以及如何解决每个状态,以确保您的交易及时被开掘。


什么是内存池?

内存池是指一个节点中期待验证的未确认交易的汇合,这些交易在提交给区块链上的新块之前必须通过验证。简略来说,内存池是节点中未确认交易的暂存区。网络中的每个区块链节点都有一个内存池,并互相通信以共享无关最新待处理交易的信息。

内存池存在的起因是每个区块只能确认约 200 个交易,而每 15 秒左右能力开掘一个新的区块。

因而,未确认交易会通过网络中所有内存池播送,并附带一个关联的燃气价格(即发送方违心领取的燃气费用,以实现其交易)。当一个新块被开掘时,领有最高燃气价格的约 200 个未确认交易将被开掘该块的节点确认到区块链上。

如果交易未能通过一系列验证查看或提交的燃气过少,这些交易将最终从内存池中删除。

什么是 nonce?

Nonce 是一个 0 索引数字,对应于特定地址发送的已确认交易数量。也就是说,如果一个地址没有已确认的交易,它会将第一笔交易标记为 0 的 nonce,并将心愿发送的后续交易标记为 1 的 nonce。

特定发送地址的每个已确认交易都必须具备惟一的 nonce 值。例如,如果发送者提交两个 nonce 值为 1 的交易,只有一个能够胜利。

为什么须要设置 nonce?

Nonce 存在的目标是为了避免重放攻打。

例如,如果没有 nonce,A 向 B 发送 20 个硬币的交易能够被 B 一遍又一遍地重放,以继续耗尽 A 的余额。因为交易被提交为哈希值,所以 B 能够简略地复制公布到区块链的哈希交易并重复运行它。

然而,如果在创立哈希事务之前设置惟一的 nonce,它将避免重放攻打,因为每个确认的交易必须具备惟一的 nonce 值,随后的雷同交易将失败。

发送方正确设置 nonce 值十分重要,以确保交易有机会失去确认,因为应用无序或反复 nonce 值提交的交易将从内存池中删除。

Nonce 还有助于保障交易的程序。例如,如果发送方能够提交 5 个 nonce 从 0 - 4 的交易,他们能够冀望交易将严格依照它们的 nonce 程序执行。

一个内存池交易能够处于哪些交易生命周期状态?

传统上,mem 池交易能够分为以下三类:

未确认交易

已提交到 mem 池中,期待被矿工蕴含在下一个块中。理解更多无关调试未确认以太坊交易的信息。

已开掘交易

已被抉择并蕴含在最新的块中。而后将这些交易的后果播送到整个网络。已开掘的交易能够有两种状态:

胜利

这些交易已胜利执行并批改了链上的状态。胜利交易的 status 字段为0x1

失败 / 执行被撤销

这些交易未胜利执行,但仍蕴含在块中。如果执行过程出错、用光 gas 或遇到其余问题,就会产生这种状况。失败交易的 status 字段为0x0

要查看开掘的交易是胜利还是失败,能够调用 eth_getTransactionReceipt 并传递您的交易哈希。在有效载荷中,您将找到一个 status 字段,对于失败交易,该字段为0x0,对于胜利交易,该字段为0x1

已删除交易

未能确认的交易。这可能是因为交易未通过某些验证测试、nonce 不正确、提交的 gas 价格太低并超时,或产生了许多其余谬误。已删除的交易将其资产和 gas 费退还给发送方,就像交易从未产生过一样。

须要帮忙解决已删除交易吗?观看咱们的教程,理解如何应用 Alchemy 的 Mempool 监视器来修复未确认或挂起的交易。

什么是 Dropped & Replaced 交易?

这是开发者们广泛申请的一个新类别。当一个交易被回绝时,发送者通常会发送一个具备雷同 nonce 值的代替交易来“替换”失败的交易。

如果第二个交易被确认到区块链上(例如通过发送一个具备雷同 nonce 和更高 gas 价格的新交易),那么“被回绝”的交易将被挪动到新的交易状态类别,即“Dropped & Replaced”。

同样地,如果同时发送多个具备雷同 nonce 值的交易,通常具备更高交易费的交易将被抉择确认到一个块上。其余交易将进入“Dropped & Replaced”类别。

这个交易状态对于智能合约开发者十分有用,因为它容许他们跟踪哪些交易曾经胜利地从新播送到区块链网络(“被回绝和替换”),哪些被回绝的交易依然须要从新播送(“被回绝”)。

如何追踪已放弃和替换的交易

如果您通过 Alchemy 提交交易,咱们提供了一个不便的 web3 开发工具来疾速过滤和摸索您最近提交的交易:Mempool Watcher。

在公布 Mempool Watcher 工具之前,开发人员必须通过 Etherscan(通常不牢靠)或手动查问其节点来检索 mempool 的以后状态并解析响应以获取相干交易状态详细信息。

应用 Mempool Watcher,应用 Alchemy 的 web3 开发人员当初能够在单个 UI 中看到所有交易,并按已开掘、待处理、已放弃和已放弃并替换的交易进行过滤。构建者还能够按以下过滤器搜寻交易:

  • 提交日期
  • 发送方地址
  • 相干交易哈希

Web3 开发人员还能够应用 Alchemy Notify API(交易流动的 Webhook 警报):

  • 创立已放弃和已开掘交易的告诉
  • 应用 Zapier 发送交易状态告诉
  • 将交易告诉与 dApp 集成

如何开始应用 Mempool Watcher?

立刻注册收费的 Alchemy 帐户 以拜访 Mempool Watcher,开始跟踪您的抛弃和替换交易,并拜访一系列弱小的区块链开发工具!依据咱们目前的定价,您将可能在咱们的收费层级中每月向 mempool 发送 120 万笔交易 – 这是 Web3 生态系统中最慷慨的。

本文由 mdnice 多平台公布

正文完
 0