什么是内存池及其工作原理?

fffmCQ.jpg

如果您曾经执行过加密货币交易,例如将资金发送到另一个钱包地址,您可能会注意到延迟。这些延迟的交易通常保存在所谓的“内存池”中。

本指南详细介绍了内存池是什么、它如何工作以及为什么它是加密货币交易的重要组成部分。

在本指南中:

  • 什么是内存池?
    • 内存池如何工作?
    • 内存池动态和交易生命周期
    • 内存池拥塞和积压
    • 管理交易优先级和费用
      • Mempool 同步和块空间
      • 内存池大小和驱逐
      • 比特币和以太坊网络中的内存池
        • 内存池是去中心化交易的关键
        • 经常问的问题

        什么是内存池?

        什么是内存池

        内存池是区块链节点上的一种“等候室”,其中存储着未开采的交易。术语“mempool”是两个词的组合——“内存”和“池”,指的是待处理交易在添加到区块链之前排队等待的空间。

        比特币是第一个引入并利用交易内存池(mempool)概念的区块链。其他区块链(例如以太坊)后来也采用了该术语。所有区块链都有某种类型的内存池,尽管它们可能有不同的术语。例如,Parity 区块链使用术语“交易队列”来表示其链上的内存池。

        在区块链交易中的作用

        内存池在区块链节点的运行方式中发挥着重要作用。为了在区块链上完成并记录交易,必须首先将其添加到区块中。然而,并非区块链网络上的所有节点都可以创建新区块。例如,在使用工作量证明机制运行的区块链(例如比特币)上,只有矿工可以将交易添加到新区块中。对于使用权益证明链,例如以太坊,只有验证者或提议者可以将交易添加到区块中。

        发起交易后,用户必须依赖矿工或验证者来批准交易并将其添加到区块链中。这不会立即发生。相反,事务启动时间和完成时间之间存在延迟。在此期间,交易被存储在内存池中等待确认。

        内存池如何工作?

        首先,您应该注意到区块链不仅仅只有一个内存池。相反,特定区块链网络中的每个节点都有自己的交易内存池。例如,比特币区块链中的每个节点都有自己的交易池等待添加到公共分类账中。各个节点中的内存池共同构成了一个集体内存池。

        当用户发起交易时,交易会被发送到节点。然后,节点会将交易添加到其内存池并将其放入队列中,等待验证。一旦交易被验证,它将被标记为“待处理”。矿工只能将标记为“待处理”的交易添加到新区块中。

        内存池动态和交易生命周期

        为了说明内存池动态和交易生命周期,我们假设您想向朋友发送 0.01 BTC 。

        1. 首先,您将输入朋友的钱包地址,接受区块链交易费用,然后点击“发送”。

        2. 该交易将作为“排队”交易添加到最近的内存池中。

        3. 接下来,该交易将被广播到网络中的其他节点,但目前还无法在区块链上使用。相反,每个节点都会执行单独的测试来检查交易是否真实。

        4. 如果节点批准该交易,则其状态从“已排队”更改为“待处理”。

        5. 最终,待处理的交易将被矿工挑选并添加到新的区块中。

        6. 接下来,矿工会将这个区块广播回所有节点。因此,所有节点现在都可以访问新块中包含的所有交易。

        7. 在此阶段,内存池中仍存储有您的交易的节点将删除该交易。

        8. 最后,您的交易完成,您的朋友收到了 0.01 BTC。

        内存池拥塞和积压

        当交易需求超过一个区块所能容纳的交易数量时,交易内存池就会发生拥塞。有几个因素可能会触发内存池积压。这些包括:

        什么是内存池及其工作原理? 每个区块的比特币平均交易量图表: Ycharts.com

        • 事件或新闻:直接影响区块链行业的事件和新闻,例如代币发行、空投或名人的支持,可能会导致交易需求突然激增。这些峰值可能会导致内存池暂时积压。
        • 分叉或网络升级:分叉或区块链网络升级等网络活动可能会导致网络中的节点更新更改时出现短暂的内存池拥塞。

        了解这些因素以及它们如何影响内存池拥塞对于用户和开发人员来说非常重要。它使他们能够预测潜在的延误并做出必要的调整以节省汽油费并避免延误。

        管理交易优先级和费用

        由于许多交易同时发生,有几个因素决定哪些交易在内存池中优先。我们在下面重点介绍其中一些。

        费用估算和交易包含

        决定内存池内交易执行顺序的主要因素之一是每笔交易的费用。矿工和验证者受利润驱动,他们可以选择要将哪些交易添加到新区块中。毫不奇怪,他们更喜欢附加较高费用的交易,因为这意味着更大的回报。

        因此,与交易相关的费用会严重影响其被包含在区块中的机会。矿工通常按照每单位交易数据的费用(通常表示为聪/字节)来组织内存池内的交易。从那里开始,他们会优先考虑费用最高的交易,直到区块填满。

        这种收费方式在内存池内创造了一个竞争市场。它迫使用户做出选择,要么支付更高的费用以快速完成交易,要么支付更低的费用但需要更长的等待时间。

        尽管如此,用户可以估算出一个不太昂贵但仍能得到及时确认的最佳费用。这可以通过考虑一些因素来实现,例如历史数据、交易量、网络拥塞和内存池内的费用分配。大多数流行的平台,如加密钱包和交易所,都有可以分析内存池当前状态并推荐最合适费用的工具。

        尽管如此,准确的费用估算并不是一门精确的科学,挑战仍然存在。例如,网络状况可能会快速变化,导致历史数据不可靠。此外,在高需求期间,费用可能会变得高度波动,从而导致意外的费用波动。

        网络拥塞的影响

        网络拥塞以多种方式影响交易的处理方式和燃气费动态:

        1. 增加确认时间:当出现拥堵时,矿工将开始优先考虑支付较高汽油费的交易。这通常会导致更长的确认时间。如果内存池仍然拥挤,支付最低汽油费的交易可能需要数小时甚至数天才能完成。
        2. 费用竞争:内存池的拥塞通常会导致用户开始竞争将其交易快速添加到区块中。这意味着对于矿工或验证者来说,要优先处理您的交易,您必须支付更高的费用。这会导致高峰时段的费用更高。

        Mempool 同步和块空间

        内存池不必保留所有等待添加到区块的交易的匹配列表。然而,他们必须知道哪些交易已经添加到区块链中,以便他们可以将其从内存池中删除,以防它仍然存储在那里。当矿工向节点广播新块时,他们可以检查该信息,从而实现内存池同步。这确保了只有未开采的交易才会保存在内存池中。

        另一方面,区块空间是可用于在新区块中包含交易的容量。由于这个空间有限,矿工或验证者会优先处理燃气费较高的交易,而其余交易则被发送到内存池等待确认。

        内存池大小和驱逐

        添加到内存池的每笔交易都是一条不超过几千字节 (kb) 的数据。构成交易的所有字节的总和就是内存池的大小。内存池大小越大,表明有大量交易等待确认。这也可能意味着网络流量的激增。

        内存池大小表。资料来源:Blockchain.com内存池大小图表。资料来源: Blockchain.com

        虽然内存池没有预定义的最大大小,但节点可以为其内存池设置大小限制。比特币的大小通常设置为 300MB。当内存池达到此阈值时,节点可以强制执行最低交易费用要求。任何费用率低于此限制的交易都会被从内存池中驱逐。通过这样做,节点可以避免由于待处理事务过载而崩溃。

        了解内存池大小如何影响交易费用和时间非常重要,因为它使用户能够选择执行交易的最佳时间。有几个网站可以跟踪比特币网络上的全球内存池大小,例如mempool.spaceBitcoinTicker.co

        比特币和以太坊网络中的内存池

        现在,让我们看看内存池在比特币和以太坊(全球最大的两个区块链)中如何运作。

        比特币内存池

        通过比特币网络发送的所有有效交易不会立即添加到区块链中。他们必须在比特币内存池中等待。

        最初,比特币的交易费用以每字节交易的聪数来衡量。然而,在 SegWit 升级后,这种情况发生了变化。现在,比特币内存池中的交易以重量单位计量。此次升级引入了所谓的 SegWit 功能。

        “随着使用 segwit 功能的交易开始被使用,这一变化将允许每个区块包含更多数据(100% 的交易使用 segwit 功能,预计每个区块将包含约 2MB 的数据,但在最坏的情况下可能会每个块最多 4MB 数据)。

        就其允许更大的交易量而言,预计可以更快地增加 UTXO 数据库(100% 的交易使用 segwit 功能,预计增长率可能会增加一倍左右;然而,由于 segwit 是一个软分叉,最坏情况下 UTXO 增长不变)。”

        ——通过比特币核心

        升级后,比特币区块现在可以容纳多达四倍的交易。

        以太坊内存池

        与比特币一样,以太坊区块链最初利用以太坊内存池作为等待矿工添加到区块中的交易的临时存储。然而,在以太坊从工作量证明转向权益证明共识机制之后,网络引入了区块构建器的概念。

        区块构建者是专门的第三方实体,它们编译交易以创建可以形成区块的优化交易包。他们通过重新排序或将某些交易包含在交易内存池中的捆绑包中来实现这一点。最终,他们将捆绑包提供给提议者/验证者,以便付费将其包含在区块中。

        区块的价值取决于其包含的交易。因此,它激励区块构建者创建最有利可图的区块,因为它们可能会被验证者更快地优先考虑和确认。因此,与其他区块链一样,您在以太坊上支付的费用越多,您的交易越早得到确认的机会就越大。

        内存池是去中心化交易的关键

        内存池是区块链交易的重要组成部分。它充当“等候室”的一种形式,未确认的交易等待验证并最终包含在新的区块中。了解内存池的机制,例如交易排队、验证和费用优先级,对于加密货币用户至关重要。

        经常问的问题

        比特币内存池在哪里?

        在比特币网络中,每个节点都维护其内存池。当交易被发起并广播到网络时,它会进入接收它的每个节点的内存池。去中心化确保每个节点都有内存池的本地副本,其中包含等待包含在块中的“排队”和“待处理”交易。

        比特币可以在内存池中停留多长时间?

        交易可以在比特币内存池中“卡住”的时间没有具体规定。尽管如此,请务必记住,大多数内存池的大小限制为 300MB。一旦内存池达到此阈值,节点将开始根据费用对交易进行优先级排序。如果您的交易费用较低,它可能会被从内存池中驱逐。

        什么是内存池大小?

        内存池大小是其中所有交易的累积字节数。内存池大小越大,表示等待确认的交易数量越多。此外,它还可能表明网络流量激增。

        当内存池已满时会发生什么?

        一旦内存池已满,节点将开始根据相关费用对交易进行优先级排序。费用未达到此阈值的交易将从内存池中删除。此外,新交易必须支付最低费用才能被接受到内存池中。

        Mempool 的最大大小是多少?

        内存池没有固定的最大大小。但是,节点可以根据其运行的区块链为其各自的内存池设置限制。

        交易可以从内存池中删除吗?

        如果交易被确认并添加到新区块中,则可以从内存池中删除交易。如果出现拥堵,低费用交易也可能面临内存池驱逐。

        声明:该文观点仅代表作者本人,与炒币网无关。炒币网系信息发布平台,仅提供信息存储空间服务。对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,并不对文章观点负责。 提示:投资有风险,入市须谨慎。本资讯仅供参阅,不作为投资理财建议。

        发表评论

        登录后才能评论