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

新手Dec 03, 2023
本文介绍了内存池在加密货币交易中的关键作用,帮助大家深入了解其概念和运作原理,重点关注内存池处理的交易的动态和生命周期,探讨导致网络拥塞和延迟的原因。
什么是内存池及其工作原理?

您如果执行过加密货币交易(如将资金发送给另一个钱包地址),那么应该注意到这个过程可能产生的延迟。延迟的交易通常会保存在一个叫“内存池”的地方。

本文详细介绍了内存池的概念和运作原理,并探讨了它为什么是加密货币交易的重要组成部分。

什么是内存池?

内存池(Mempool)是区块链节点上的一种“等候室”,用于存储未经挖掘的交易。“内存池”这一术语由“内存”和“池”两个词组合而成,指的是待处理交易在添加到区块链之前排队等待的空间。

比特币是第一个引入并利用交易内存池概念的区块链。其他区块链(例如以太坊)后来也采用了这一概念。所有区块链都有某种形式的内存池,只不过叫法可能不尽相同。例如,Parity 区块链使用“交易队列”一词来表示链上的内存池。

内存池在区块链交易中的作用

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

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

内存池如何工作?

需要注意的是,区块链不只有一个内存池。在特定的区块链网络中,每一个节点都有自己的交易内存池。例如,比特币区块链中的每个节点都有自己的等待加入公共账本的交易池。各个节点中的内存池共同构成了一个集体内存池。

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

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

为了更好地理解内存池动态和交易生命周期,我们假设您向朋友发送 0.01BTC。

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

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

  3. 接下来,该交易将被广播到网络中的其他节点,但它暂时不会出现在区块链上。每个节点都会执行独立测试,以验证交易的真实性。

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

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

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

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

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

内存池拥塞和积压

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

  • 网络拥塞:如果区块链网络的交易量很高,将给可用的区块空间带来压力,最终导致内存池拥塞。例如,在比特币区块链中,一个区块的平均交易数目前约为2800笔。如果待处理交易的数量在几个小时内大大超过这个数量,网络就会变得拥塞,内存池也会随之拥堵。

图:比特币每个区块的平均交易数量。来源: Ycharts.com

  • 事件或新闻:直接影响区块链行业的事件和新闻,如代币发行、空投或知名人士的支持,可能会导致交易需求突然激增,从而导致内存池暂时积压。
  • 分叉或网络升级:分叉或区块链网络升级等活动中,节点在更新相关变化时可能导致短暂的内存池拥塞。

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

管理交易优先级和费用

由于许多交易会同时发生,内存池中交易的处理顺序将受到多个因素的影响。我们将重点介绍其中一些因素。

费用估算和交易入块情况

决定内存池内交易执行顺序的主要因素之一是每笔交易的费用。矿工和验证者受利润驱动,他们可以选择要将哪些交易添加到新区块中。毋庸置疑,他们更倾向于具有更高费用的交易,因为这意味着更大的回报。

因此,与交易相关的费用会严重影响其被纳入区块的机会。矿工通常按照每单位交易数据的费用(通常表示为聪/字节)来整理内存池中的交易。他们会优先处理费用最高的交易,直到区块被填满。

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

然而,用户可以估算出一个既不太昂贵又能得到及时确认的最佳费用。这就需要考虑多个因素,包括历史数据、交易量、网络拥塞和内存池内的费用分配。大多数热门平台,如加密货币钱包和交易所,都拥有可以分析内存池当前状态并推荐最合适费用的工具。

尽管如此,准确估算费用并不是一门精确的科学,仍然面临一些挑战。例如,网络状况可能会快速变化,导致历史数据不太可靠。此外,在需求量大的阶段,费用可能会高度波动,难以预测。

网络拥塞的影响

网络拥塞通过多种方式影响交易的处理方式和gas费用:

  1. 增加确认时间:当出现拥堵时,矿工将优先处理支付较高gas费的交易。这通常会导致确认时间延长。如果内存池一直拥挤,支付最低gas费的交易可能需要数小时甚至数天才能完成。
  2. 费用竞争:内存池的拥塞通常会导致用户开始竞争,希望尽快将其交易添加到区块中。这样一来,要使矿工或验证者优先处理您的交易,您必须支付更高的费用。这会导致高峰时段的费用上升。

内存池同步和区块空间

内存池不必保留所有等待被添加到区块的交易列表。然而,他们需要知道哪些交易已经添加到区块链中,以便将其从内存池中删除,而不必一直存储这些交易。当矿工向节点广播新区块时,他们可以检查这些信息,从而实现内存池同步。这确保了只有尚未确认的交易才会保存在内存池中。

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

内存池大小和交易驱逐

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

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

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

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

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

接下来,我们来看看比特币和以太坊这两个全球最大的区块链的内存池是如何运作的。

比特币内存池

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

最初,比特币交易费以每字节交易的聪(satoshi)的数量来衡量。然而,在 SegWit 升级之后,这种方式发生了变化。现在,比特币内存池中的交易以权重单位计量。此次升级引入了称作 SegWit 的功能。

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

以太坊内存池

与比特币一样,以太坊区块链最初利用以太坊内存池来存储待矿工加入区块的交易。然而,在以太坊从工作量证明机制转向权益证明机制后,以太坊引入了区块构建者(builder)的概念。

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

一个区块的价值取决于它所包含的交易。这种机制激励区块构建者创建利润最丰厚的区块,因为这些区块可能会被验证者优先处理和确认。因此,与其他区块链一样,您在以太坊上支付的费用越多,您的交易越早得到确认的机会就越大。

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

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

声明:

  1. 本文转载自[Beincrypto],著作权归属原作者[Alex Lielacher],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
Empieza ahora
¡Regístrate y recibe un bono de
$100
!
Crea tu cuenta