什么是区块链未确认交易?

  • cyfrin
  • 发布于 2024-12-04 14:54
  • 阅读 23

区块链未确认交易是指已发送到网络但尚未被纳入区块的交易。交易可能因未被节点选择或处于分叉链中而未确认。交易在生命周期中经历多个阶段,最常见的原因是低交易费用或网络分叉,最终确认需要等网络达成共识。

区块链未确认交易是在区块链网络中发送但尚未包含在区块中的交易。

什么是区块链未确认交易?

区块链 未确认交易 是发送到区块链网络但尚未包含在区块中的交易。这是每个区块链交易生命周期中的正常阶段。

交易未确认的常见原因有两种:

  1. 它尚未被节点选择以包含在区块中
  2. 该交易位于一个未达成共识的分叉链中

区块链交易生命周期

交易如何被包含在区块中的技术细节因链而异。在这里,我们将描绘一个适用于采用工作量证明共识(PoW)的区块链(例如 Bitcoin)和采用权益证明共识(PoS)的区块链(例如 Ethereum)的广泛图景。

1. 交易存储在 mempool 中

当用户提交交易时,交易会在区块链网络中传播。节点( PoW 的矿工和 PoS 的验证者)获取这些交易并临时存储在一个存放其他未确认交易的地方。

所有未确认区块链交易存储的地方称为 mempool。每个节点都有自己独特的 mempool,所有节点的 mempool 统称为“mempool”。

用户未确认交易广播到节点的示意图。

节点的 mempool 中未确认交易的插图

2. 节点验证交易

节点选择并验证 mempool 中的未确认交易,以将其包含在下一个 区块 中。一般来说,节点选择交易并以最大化利润的方式排列它们,如果拟议的区块被接受。

有时,如果没有节点决定将交易包含在拟议的区块中,交易可能会保持未确认。最常见的原因是交易费用低。

节点为最大化利润而采用的两种最常见策略是:

  1. 按最高交易费用排序交易
  2. MEV(最大可提取价值)。这个主题超出了本文的范围。

未确认交易在 mempool 中被添加到区块的插图。

PoW 链中,矿工执行密集的数字计算以找到下一个区块。在 PoS 链中,验证者只是提出新块。

区块被广播到网络,网络中的每个节点验证此区块并将其附加到他们认为的区块链最新状态上。未确认的交易现在包含在区块链中。

那么它现在被确认了,对吗?没错,这笔交易被确认了。目前是这样。也许。但是它可能也会变回未确认。你需要等待,直到你的区块链交易真正被确认。

传输到网络的包含未确认交易的区块的插图。

确认的交易如何变成未确认的区块链交易?

简短的回答是,链中的 分叉 可能导致交易在一个链中被确认而不在另一个链中。一旦达成共识,交易的状态便会变为最终确定。更多信息请查看这里

什么是 分叉

分叉 是链中的裂变,因节点对区块链的当前状态存在分歧。然而,区块链的设计旨在最终汇聚为单一链,或至少使链的分裂在长时间内无法保持未解决。例如,Bitcoin 在数学设计上使得分叉随着时间的推移解决为单一链。在 Ethereum 中,区块通常在 2 到 3 个 epoch(1 个 epoch 为 32 个区块)后最终确定。我们不会深入研究不同协议如何在区块链状态上达成共识。

假设你提交的交易包含在区块 A 中。设想网络正在经历链的 分叉。网络中的一半节点声称区块 A 是最新的,而另一半节点声称区块 B 是最新的。让我们假设随着时间的推移,包含区块 B 的链获得了共识。区块 A 被丢弃,任何在区块 A 中而不在区块 B 中的交易返回到 mempool。这些交易变回未确认状态。

示意图说明在分叉链中指示不同区块被选择以供包含的情况。

维恩图说明在分叉链中多个区块中不同交易的情况以及它们可能的不同。

尽管存在这种情况,通常确认的交易认为在附加足够数量的区块到链后已最终确定。在 Bitcoin 中,至少在包含你的交易的区块后再生成 6 个区块(大约 60 分钟)被认为是足够安全的。在 Ethereum 中,至少是 64 个区块(大约 12.8 分钟)。

区块链未确认交易的常见原因

1. 交易尚未被节点选择以供区块包含

如果交易仍在 mempool 中而没有节点决定将其包含在拟议的区块中,则交易将保持未确认。最常见的原因是交易费用低。节点优先处理费用最高的交易。费用低的交易没有吸引力,因此它们保持在 mempool 中。

2. 来自分叉链的交易

链的分叉可能导致交易在一条链上被确认而在另一条链上未确认。你可以采取的最安全的措施是等待。等待分叉链达成共识。在此时,你的交易要么会被包含在一个区块中,要么会保持未确认。

如果你发送了一笔转移代币的交易,而它保持未确认,不用担心。你的代币并未丢失。只要交易未确认,它就不会影响你的钱包或代币余额。

如果你的区块链交易未确认,你可以做什么?

如果交易未确认时间过长,你有几个选择。通常,你可以选择等待更长时间,或以更高的费用重新提交相同的交易。在某些情况下,可能可以取消你的未确认交易。具体步骤因区块链而异。例如,在 Ethereum 上,你可以通过向自己的钱包发送零值交易(例如 0 ETH),使用与原交易相同的 nonce,但费用更高,来取消交易。

总结

未确认区块链交易 是提交到网络但尚未包含在区块中的交易。在交易包含到一个区块后,交易的状态变化为确认。然而,通常在一段时间内交易状态未最终确定,并可能退回为未确认。请稍等片刻,直到链稳定并交易被视为确认和最终确定。

  • 原文链接: cyfrin.io/blog/what-is-a...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论