「内存池」掌握内存池(Mempool)[操作指南]

原创 北城凉筑  |  文章来源:币圈达人发布时间:2020-05-24 01:46  阅读 103 次 评论 0 条
众人帮 趣闲赚 牛帮
摘要:

区块链是交易机器。但链上数据代表的是静止价值确认的交易。而前链或内存池中数据探索的价值是在不断移动的。
迄今为止,该行业主要关注的是静止价值。这是Web3难题的一个重要部分。但是,对于要包含在块中的任何交易,它必须通过内存池。与作为最终记录

区块链是交易机器。但链上数据代表的是静止价值确认的交易。而前链或内存池中数据探索的价值是在不断移动的。

迄今为止,该行业主要关注的是静止价值。这是Web3难题的一个重要部分。但是,对于要包含在块中的任何交易,它必须通过内存池。与作为最终记录的区块链不同的是,内存池是混乱的、支离破碎的,而且常常是不可预测的。

在构建用于监视内存池的基础设施的过程中,我们了解了很多它的工作程序。在ETHDenver 2020大会上,Blocknative的首席执行官和联合创始人马特·卡特勒(Matt Cutler)分享了他在演讲《掌握内存池》中的一些重要经验:

我们将这个会议提炼为可操作的经验教训,我们相信每个在Web3中构建的人都应该知道。就让我们一探究竟吧!

一段时间以来,经验丰富的构建人员一直在努力解决内存池的复杂性。鉴于内存池的结构,出现了一些有趣的问题:

没有单一的真理来源。相反,有数千个独立的内存池,每个内存池包含不同的数据。交易数据是不断变化的。原始数据是稀疏的,有时是不一致的。这使得确定的内存池数据很难捕获。交易体系结构的复杂性增加了这些挑战。

虽然区块链作为一个单一的真理来源,但内存池没有确保共识的内在形式。将这种混乱组织成对开发人员友好的预链数据需要大量的资源和专业知识。

1. 区块链交易就像托运的行

当您在Web3上进行交易时,您必须将交易交给网络,并希望它以块的形式到达。这很像在机场托运行李。

接收您交易的节点将它广播出去—然后您等待它得到确认。如果你的交易被卡住或丢失了,没有任何中央机构可以告诉你发生了什么,或者帮助你解决问题。

2. 交易焦虑是真实存在的

考虑到Web3的状态——以及交易是如何被验证的——交易处理会产生焦虑。这种焦虑不仅仅是新用户才会感受到。经验丰富的用户更有可能以真正的价值进行交易,他们通常体验到最明显的交易焦虑。

这种焦虑对我们的生态系统是有问题的。而最终用户通常不会使用那些会引起焦虑的系统。

3.链上是静止的价值

作为一个社区,我们大部分时间都在讨论价值链。根据定义,所有的链上价值都是静止的。相反,内存池总是处于动态状态。

这一点很重要,因为内存池的内部工作机制还没有得到广泛的理解。而内存池操作的工作知识是理解每个交易如何在链上休息的关键。

4. 甚至基本的术语也有争议

Blocknative将内存池定义为:

区块链前的共享暂存区,支持交易排序、交易费用优先级和一般块构造。”

可以将此视为将交易接受到一个块中的“等待区”。但根据你在区块链生态系统中所处的位置,你可能会使用不同的标签:

Geth将其称为TX-POOL

Parity将其称为TX-QUEUE

比特币称之为内存池

Libra称之为“备忘录库”

Tezos称之为内存池

鉴于此,出于清晰和包容的目的,我们倾向于使用通用的“内存池”标签。

5. 不存在所谓的“内存池”

不存在规范的所谓的内存池。相反,有许多地内存池,每个节点都有自己独特的内存池。所以有多少节点就有多少内存池。

节点的内存池内部交易的组成是由许多因素驱动的:

配置设置表示关系拓扑

这些因素都在决定哪些交易进入并在节点的内存池中保持时起作用。

6. 违约问题

Geth和Parity内存池的默认配置(插槽和内存)设置规定了它们的大部分行为。

如果节点中的所有插槽都已满,则当一个新挂起的交易被接受到内存池时,具有最低燃气费的交易将被删除。具有不同设置的不同节点将以不同的速率接受和删除不同的交易。

7. 内存池交易

丢失的交易是在您的内存池版本中从未接受的链上编写的交易。从你的角度来看,这是一笔立即得到确认的交易。

在我们的分析中,单个地理区域中的单个节点的内存池在正常操作条件下将丢失所有交易的约1%。在交易量很大的情况下,丢失交易的百分比可能会有很大的差异。

8. 内存池中的所有内容都可以替换

虽然链上交易是不可变的,但是可以用替换交易覆盖正在运行的交易。这些通常被称为取消和加速交易。

替换交易的百分比随时间而变化。虽然它们通常占所有交易的1%,但在峰值负载下,替换交易可以占内存池的10%。

深入探索 Matt的演讲

在他的演讲中,Matt深入探讨了以太坊交易的混乱现实。想要了解更多的建设者应该观看完整的录音,或查看掌握内存池博客系列。

如何构建内存池数据

Notify是一个强大的框架,它使开发人员能够访问实时捕获和组织内存池的全局节点网络。开发人员可以通过API、SDK或JS库访问Notify。这个实时通知网络受到了40多个生产团队的信任。

使用实时数据提要可以更快地构建

开发人员正在利用内存池数据来减少开发时间和实时调试智能合约。通过在slack或discord中设置一个Notify API数据输送,开发人员可以实时调试Dapps和智能合约。这需要大约5分钟的时间来设置,并且可以使开发人员获得对其代码的即时反馈。

使用交易警报改进用户体验

您的应用程序可以利用Notify API来推送信息,并让用户知道他们的交易中发生了什么,而不是期望用户提取数据并为更新而刷新。你可以在Pillar和Eidoo中看到一个实时推送通知的例子,它们都可以向用户提示传入和传出的交易。这种反馈循环减少了用户的焦虑,并帮助他们在遇到问题时采取行动。

基准协议性能

DeFi协议可以使用内存池数据来了解与其他主要协议相比,交易在其协议上花费的时间。实际情况是,许多协议对交易时间(平均时间或交易开始中断的时间)一无所知。这里的性能很重要。

使用内存池数据构建的一个示例

除了Matt在ETH Denver的演讲外,我们很高兴看到开发者生态系统深入挖掘使用Notify构建下一代应用程序。

在黑客马拉松结束后,有一个项目尤其让我们兴奋——OutFront,它是一种服务,可以监控未授权的ERC20代币从钱包中转移的待处理交易,并以更高的油价发起一场竞争交易,将资金转移到一个救援钱包中。非托管系统使用已签名的权限代币(EIP712)执行恢复。

除了在ETH Denver的主舞台上看到使用Blocknative进行团队建设的兴奋之外,我们还很高兴地看到围绕着内存池的复杂性的讨论,以及前链数据所能提供的机会。

以前,内存池的复杂性使团队无法在其上进行构建。但是现在,有了Blocknative的API和SDK,开发人员可以访问动态的富价值世界。在那个世界里,他们可以看到区块链所有可能的未来状态。

结论

在任何给定的时间,内存池中都有数万到数十万个交易。内部交易的数量可以是外部交易的2到5倍。在内存池中,数据不断地流入和流出。大约每隔15秒,内存池的顶部就会被包含在一个块中。

这就创建了一个混乱的、不断变化的内存池数据环境。随着我们迈向10亿笔交易,我们的生态系统利用内存池数据来改善终端用户体验和创建更健壮的体验是至关重要的。

随着我们推动区块链的主流采用,我们需要创建友好的终端用户体验。交易信心很重要,交易性也能很重要。要知道内存池是创造更健壮的终端用户体验的一个重要部分。

历史上的今天:

本文地址:https://www.u5881.com/7431.html
版权声明:本站推荐的部分活动具有时效性,老淘本人并不能保证当您看到本文时,该项活动是否仍在继续。

发表评论


表情